Skip to main content

An optimal power flow framework for hybrid AC/DC power systems.

Project description

Welcome to hynet

hynet is a package for the computation of the optimal power flow (OPF) in hybrid AC/DC power systems, i.e., the cost- or loss-minimizing allocation of generation resources and the corresponding system state to serve a given load while satisfying the system's technical boundary conditions. hynet supports power systems that comprise an arbitrary interconnection of AC grids and radial DC grids, i.e., point-to-point and radial multi-terminal HVDC systems. With respect to OPF methods, it supports the solution of the nonconvex quadratically constrained quadratic program (QCQP) as well as its semidefinite relaxation (SDR) and second-order cone relaxation (SOCR). For more information, please refer to hynet's documentation (HTML/PDF) for a description the software and this publication (preprint) for the mathematical background. hynet uses SQLite-based SQL databases to store grid infrastructure and scenario information. A library with several grid databases is provided here.

Installation

hynet was developed for Python 3.5 and higher and requires NumPy, SciPy, pandas, SQLAlchemy, Matplotlib, tqdm, h5py as well as at least one of the supported solvers. For a convenient installation, the Python distribution Anaconda (or the stripped-down Miniconda) may be used, where the included package manager Conda supports a straightforward installation of the supported solvers.

To install hynet using Python's package management system, run

pip install hynet

The installation of hynet and the installed solvers can be tested with

python -m hynet test

To install hynet from its sources, get the latest source code by cloning the hynet repository with Git via

git clone https://gitlab.com/tum-msv/hynet.git

and initiate the installation with

python setup.py install

Solvers

In the following, the supported solvers are listed. Currently, the utilization of the following solvers is recommended: IPOPT for the QCQP, MOSEK for the SDR, and MOSEK or CPLEX for the SOCR. Regarding the latter, it was found empirically that CPLEX is more robust while MOSEK is computationally more efficient. Please note that even if only QCQPs are solved, it is recommended to install MOSEK or CPLEX, as they enable the efficient computation of an initial point for QCQP solvers.

IPOPT

IPOPT is an open-source software package for large-scale nonlinear optimization and CYIPOPT is a Python wrapper for IPOPT. With Conda, both can be installed as follows.

  • Linux and MAC OS X:
conda install -c conda-forge cyipopt
  • Windows:
conda install -c pycalphad cyipopt

MOSEK

MOSEK is an interior-point optimizer for large-scale conic optimization problems. It is commercial, but offers a free academic license. With Conda, MOSEK can be installed with

conda install -c mosek mosek

hynet's SDR solver interface for MOSEK supports a chordal conversion of the semidefinite program to enable the computation of the SDR for medium- and large-scale systems with a viable computational effort. To utilize the chordal SDR, CHOMPACK, a library for chordal matrix computations, and CVXOPT, a Python package for convex optimization, are required. With Python's package management system, both can be installed with

pip install chompack cvxopt

IBM ILOG CPLEX

CPLEX is a high-performance mathematical programming solver for linear, mixed integer, quadratic, and quadratically constrained programming problems. It is commercial, but offers a free academic license through the IBM Academic Initiative. For the installation, please refer to the instructions provided with CPLEX as well as the section "Setting up the Python API of CPLEX" of the CPLEX documentation.

PICOS

hynet supports the solution of the SDR and SOCR with PICOS. However, the additional modeling layer causes a performance drawback. PICOS is an open-source Python-based modeling language for linear and conic optimization problems. It supports several solvers, including the open-source solver CVXOPT. With Python's package management system, PICOS and CVXOPT can be installed with

pip install picos cvxopt

PYOMO

hynet supports the solution of the QCQP with Pyomo. However, the additional modeling layer causes a performance drawback. Furthermore, the import of Pyomo is demanding and slows down the import of hynet significantly, thus the installation is only recommended if Pyomo is actually utilized. Pyomo is an open-source optimization modeling language and includes support for the solver IPOPT. With Conda, both can be installed with

conda install -c conda-forge pyomo libgfortran
conda install -c cachemeorg ipopt_bin

Usage

Open a terminal, navigate to the directory that contains the grid databases, and start a Python shell, either the standard shell (python) or a more convenient one like IPython or ptpython. At the Python command prompt, import hynet via

import hynet as ht

To access the data of the system in the file pjm_hybrid.db, connect to this database using

database = ht.connect('pjm_hybrid.db')

The optimal power flow for the default scenario of this system can then be calculated with

result = ht.calc_opf(database)

The object result contains all result data. For example, to print a summary, print details of the solution, and access the determined bus voltages, type

print(result)
print(result.details)
result.bus['v']

By default, hynet selects the most appropriate QCQP solver among those installed. To specify the type of solver explicitly, set the solver_type as illustrated below.

ht.calc_opf(database, solver_type=ht.SolverType.QCQP)
ht.calc_opf(database, solver_type=ht.SolverType.SDR)
ht.calc_opf(database, solver_type=ht.SolverType.SOCR)

In case that the scenario shall be modified prior to the OPF calculation, it can be loaded explicitly via

scenario = ht.load_scenario(database)

For example, to set the load at bus 2 to 100MW and 50Mvar, use

scenario.bus.at[2, 'load'] = 100 + 50j

The optimal power flow for this modified scenario can be calculated with

ht.calc_opf(scenario)

For more information and usage examples, please refer to the tutorials in USAGE.md, hynet's documentation (HTML/PDF), and this publication (preprint).

Contributing

Contributions to hynet are very welcome. Please refer to CONTRIBUTING.md for more information. In case that hynet is useful to you, we would appreciate if you star this project.

Credits

This software was developed at the Professur für Methoden der Signalverarbeitung, Technische Universität München (TUM). The principal developer and project maintainer is Matthias Hotz (@matthias_hotz), who would like to recognize the highly appreciated support of the following contributors:

  • Vincent Bode (TUM): Database management, network graph export
  • Michael Mitterer (TUM): Distributed computation, MATPOWER import, database management
  • Christian Wahl (TUM): Capability region visualizer, CI configuration
  • Yangyang He (TUM): CVXPY and PICOS solver interface
  • Julia Sistermanns (TUM): Feature- and structure-preserving network reduction

Citation

In case that hynet is used in the preparation of a scientific publication, we would appreciate the citation of the following work:

M. Hotz and W. Utschick, "hynet: An Optimal Power Flow Framework for Hybrid AC/DC Power Systems," IEEE Transactions on Power Systems, vol. 35, no. 2, pp. 1036-1047, Mar. 2020.

The corresponding BibTeX entry is provided below.

@article{Hotz2020,
    Author = {Matthias Hotz and Wolfgang Utschick},
    Journal = {IEEE Transactions on Power Systems},
    Title = {\textit{{hynet}:} {A}n Optimal Power Flow Framework for Hybrid {AC}/{DC} Power Systems},
    Year = {2020},
    Month = {March},
    Volume = {35},
    Number = {2},
    Pages = {1036-1047},
    Doi = {10.1109/TPWRS.2019.2942988}}

Furthermore, in case that the feature- and structure-preserving network reduction functionality in hynet is utilized, we would appreciate the citation of the following work:

J. Sistermanns, M. Hotz, D. Hewes, R. Witzmann, and W. Utschick, "Feature- and Structure-Preserving Network Reduction for Large-Scale Transmission Grids," 13th IEEE PES PowerTech Conf., Milano, Italy, Jun. 2019.

License

BSD 3-clause license

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hynet-1.2.2.tar.gz (197.1 kB view details)

Uploaded Source

File details

Details for the file hynet-1.2.2.tar.gz.

File metadata

  • Download URL: hynet-1.2.2.tar.gz
  • Upload date:
  • Size: 197.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200330 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7

File hashes

Hashes for hynet-1.2.2.tar.gz
Algorithm Hash digest
SHA256 9e985546784a46f9d6480f16799dbf9db5aaa6d100386dc8d9b2c3235ab85848
MD5 220e20f27d3b9081608d1ad52e27c920
BLAKE2b-256 1c6f94bfec8fc593be354b8f1a6e782ddb60b63afb55c5179b444452a89454aa

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page