Vous êtes sur la page 1sur 10

PyPSA: Python for Power System Analysis

Tom Brown, Jonas Hörsch, David Schlachtberger


Frankfurt Institute for Advanced Studies, Ruth-Moufang-Straße 1, 60438 Frankfurt am Main, Germany
Email: brown@fias.uni-frankfurt.de

Abstract— infrastructure capacities over representative load and weather


Python for Power System Analysis (PyPSA) is a free software situations. Several tools have subsets of these capabilities,
toolbox for simulating and optimising modern electrical power such as calliope [11], minpower [12], MOST [13], oemof
systems over multiple periods. PyPSA includes models for con-
ventional generators with unit commitment, variable renewable [14], OSeMOSYS [15], PLEXOS [16], PowerGAMA [17],
generation, storage units, coupling to other energy sectors, and PRIMES [18], TIMES [19] and urbs [20], but their repre-
mixed alternating and direct current networks. It is designed sentations of electrical grids are often simplified.
to be easily extensible and to scale well with large networks Python for Power System Analysis (PyPSA), the tool
arXiv:1707.09913v3 [physics.soc-ph] 17 Jan 2018

and long time series. In this paper the basic functionality


presented in this paper, was developed at the Frankfurt
of PyPSA is described, including the formulation of the full
power flow equations and the multi-period optimisation of Institute for Advanced Studies to bridge the gap between
operation and investment with linear power flow equations. power system analysis software and general energy system
PyPSA is positioned in the existing free software landscape as a modelling tools. PyPSA can model the operation and optimal
bridge between traditional power flow analysis tools for steady- investment of the energy system over multiple periods.
state analysis and full multi-period energy system models.
It has models for the unit commitment of conventional
The functionality is demonstrated on two open datasets of
the transmission system in Germany (based on SciGRID) and generators, time-varying renewable generators, storage units,
Europe (based on GridKit). all combinations of direct and alternating current electricity
networks, and the coupling of electricity to other energy
I. I NTRODUCTION sectors, such as gas, heating and transport. It can perform
Power system tools model the interactions between the full load flow calculations and linearised optimal load flow,
electrical grid and the consumers and generators which use including under consideration of security constraints. It was
the grid. The importance of software modelling of the grid written from the start with variable renewables, storage and
has risen in recent years given the increase in distributed sector-coupling in mind, so that it performs well with large
and fluctuating wind and solar generation, and the increasing networks and long time series.
electrification of all energy demand. On the generation side, Given the complexity of power system tools and the
variable renewable generation causes loading in parts of different needs of different users, it is crucial that such tools
the grid where it was never expected, and introduces new are both transparent in what they do and easily extendable
stochastic influences on the flow patterns. On the demand by the user. To this end, PyPSA was released as free
side, the need to decarbonise the transport and heating software under the GNU General Public Licence Version 3
sectors is leading to the electrification of these sectors and (GPLv3) [21]. This means that the user is free to inspect, use
hence higher electrical demand, replacing internal combus- and modify the code, provided that if they redistribute the
tion engines with electric motors in the transport sector, software, they also provide the source code. Free software
and replacing fossil fuel boilers with heat pumps, resistive and open data also guarantee that research results can be
heaters and cogeneration for low-temperature space and reproduced by any third party, which is important given the
water heating. In addition, the increasing deployment of large investment decisions that will need to be made on the
storage technologies introduces many network users which basis of energy system modelling to reduce greenhouse gas
are both consumers and generators of energy. emissions and combat global warming [22], [23].
The increasing complexity of the electricity system re- PyPSA is available online in the Python Package Index
quires new tools for power system modelling. Many of (PyPI), on GitHub [24] and is archived on Zenodo [25]. Doc-
the tools currently used for power system modelling were umentation and examples are available on PyPSA’s website
written in the era before widespread integration of renew- [26]. PyPSA is already used by more than a dozen research
able energy and the electrification of transport and heating. institutes and companies worldwide, 70 people are registered
They therefore typically focus on network flows in single on the forum [27] and the website [26] has been visited
time periods. Examples of such tools include commercial by people from over 160 countries. As of October 2017 it
products like DIgSILENT PowerFactory [1], NEPLAN [2], has been used in six research papers [28], [29], [30], [31],
PowerWorld [3], PSS/E [4] and PSS/SINCAL [5], and open [32], [33]. Users have already extended PyPSA for integer
tools such as MATPOWER [6], PSAT [7], PYPOWER [8] transmission expansion [28], [34] and in the grid planning
and pandapower [9] (see [10] for a full list of power system tool open eGo [35].
analysis tools). This paper describes version 0.11.0 of PyPSA [25]. In
The consideration of multiple time periods is important Section II the mathematical functionality of PyPSA is de-
on the operational side for unit commitment of conventional scribed, while in Section III the focus shifts to the imple-
generators and the optimisation of storage and demand side mentation in software. Quality control is discussed in Section
management, and on the investment side for optimising IV; the computational performance of PyPSA is described
in Section V; and then its functionality is compared with TABLE I
other software in Section VI. Several example applications N OMENCLATURE
are given in VII before conclusions are drawn in VIII.
Variable Units Definition
II. F UNCTIONALITY n, m Bus labels
r Generator energy carrier labels (e.g.
In this section the basic components, power flow, linear wind, solar, gas, etc.)
optimal power flow, energy system optimisation, unit com- s Storage energy carrier labels (e.g. bat-
mitment, contingency modelling and other functionality of tery, hydrogen, etc.)
PyPSA are described. The definitions of the main variables k, ` Branch labels
c Cycle labels
used in this section can be found in Table I, along with units t Snapshot / time point labels
where applicable. er/s tCO2 eq/MWhth CO2 -equivalent emissions of energy
carrier r or s
A. Components wt h Weighting of snapshot in objective
function
PyPSA’s representation of the power system is built by gn,r,t MW Dispatch of generator at bus n with
connecting the components listed in Table II. carrier r at time t
Buses are the fundamental nodes to which all other com- Gn,r MW Power capacity of generator n, r
ḡn,r,t MW/MW Power availability per unit of generator
ponents attach. Their mathematical role is to enforce energy capacity
conservation at the bus at all times (essentially Kirchhoff’s ηn,r MWel /MWth Efficiency of generator
Current Law). un,r,t On/off binary status for generator unit
commitment
Loads, generators, storage units, stores and shunt min down
Tn,r h Generator minimum down time
impedances attach to a single bus and determine the power min up
Tn,r h Generator minimum up time
balance at the bus. Loads represent a fixed power demand; run,r (MW/MW)/h Generator ramp up limit per unit of
a generator’s dispatch can be optimised within its power capacity
availaiblity; stores can shift power from one time to another rdn,r (MW/MW)/h Generator ramp down limit per unit of
capacity
with a standing loss efficiency for energy leakage; storage cn,r e/MW Generator capital (fixed) cost
units behave like stores, but they can also have efficiency on,r e/MWh Generator operating (variable) cost
losses and power limits upon charging and discharging; sucn,r(,t) e Generator start up cost (in time t)
sdcn,r(,t) e Generator shut down cost (in time t)
finally shunt impedances have a voltage-dependent power
hn,s,t MW Dispatch of storage at bus n with car-
consumption. rier s at time t
Lines and transformers connect two buses with a given Hn,s MW Power capacity of storage n, s
impedance. Power flows through lines and transformers en,s,t MWh Storage state of charge (energy level)
En,s MWh Storage energy capacity
according to the power imbalances at the buses and the cn,s e/MW Storage power capacity cost
impedances in the network. Lines and transformers are ĉn,s e/MWh Storage energy capacity cost
referred to collectively as ‘passive branches’ to distinguish on,s e/MWh Storage dispatch cost
them from controllable link branches. The impedances of the dn,t MW Electrical load at bus n at time t
λn,t e/MWh Marginal price at bus n at time t
passive branches are modelled internally using the equiva- Vn kV Complex voltage at bus n
lent PI model. The relation between the series impedance θn rad Voltage angle at bus n
z = r + jx, the shunt admittance y = g + jb, the transformer In kA Complex current at bus n
Pn MW Total active power injection at bus n
tap ratio τ , the transformer phase shift θshift , and the complex
Qn MVAr Total reactive power injection at bus n
currents I0 , I1 and complex voltages V0 , V1 at the buses Sn MVA Total apparent power injection at bus n
labelled 0 and 1 is given by f`,t MW Branch active power flow
! F` MW Branch active power rating
1 y
− z1 τ e−jθ
1 e/MW
  
z + 2
I0 shift V0 c` Branch capital cost
= y (1) x` Ω Branch series reactance
− z1 τ ejθ1 shift 1 1

I1 z + 2 τ2 V1 r` Ω Branch series resistance
z` Ω Branch series impedance
(For lines, for which neither the tap ratio or the phase shift y` S Branch shunt admittance
are relevant, set τ = 1 and θshift = 0 in this equation.) τ` Transformer tap ratio
The equivalent circuit is shown in Figure 1. This circuit θ`shift rad Transformer phase shift
is for the case where the tap-changer is on the primary η`,t MW/MW Efficiency loss of a link
Kn` N × L incidence matrix
side; a similar equation and figure for the case where C`c L × (L − N + 1) cycle matrix
the tap-changer is on the secondary side is given in the Ynm S Bus admittance matrix
documentation [26]. The line model defaults to the PI model, B`k S Diagonal L × L matrix of branch sus-
ceptances
while the transformer model defaults to the more accurate T BODF`k Branch Outage Distribution Factor
model, which is converted to the PI model using the standard
delta-wye transformation. For convenience standard types for
lines and transformers in networks at 50 Hz are provided
following the conversion formula from nameplate parame- Links connect two buses with a controllable active power
ters to impedances and the typical parameters provided in dispatch that can be set by the user or optimised by PyPSA.
pandapower [9], so that the user does not have to input the Links can be used to represent point-to-point high volt-
impedances manually. The typical parameters in pandapower age direct current (HVDC) lines, import-export capacities
are based on [36], [37], [38]. in transport models such as Net-Transfer-Capacity (NTC)
TABLE II B. Power flow without optimisation
P Y PSA COMPONENTS
In a power flow calculation, the user specifies the power
Network Container for all other network components. dispatch of all dispatchable components (loads, generators,
Bus Fundamental nodes to which all other components storage units, stores and links) and then PyPSA computes
attach. the resulting voltages in the network and hence the power
Carrier Energy carrier (e.g. wind, solar, gas, etc.).
Load A consumer of energy.
flows in passive branches (lines and transformers) based on
Generator Generator whose feed-in can be flexible subject to their impedances.
minimum loading or minimum down and up times, 1) Power flow equations for AC networks: A power flow
or variable according to a given time series of power
availability.
calculation for an alternating current (AC) network ensures
Storage Unit A device which can shift energy from one time to that for all buses labelled by n we have
another, subject to efficiency losses. X
Store A more fundamental storage object with no restric- Sn = Vn In∗ = ∗
Vn Ynm Vm∗ (2)
tions on charging or discharging power. m
Shunt Impedance An impedance in shunt to a bus.
Line A branch which connects two buses of the same where Sn = Pn + jQn is the apparent power injected at
voltage. the bus, In is the complex current and Vn = |Vn |ejθn
Transformer A branch which connects two buses of different is the complex voltage, whose rotating angle is measured
voltages.
Link A branch with a controllable power flow between
relative to a chosen slack bus. Ynm is the bus admittance
two buses. matrix, which is constructed for all buses based on the
contributions from the individual branch admittance matrices
from equation (1) and any shunt impedances at the nodes,
z following the example of MATPOWER [6].
I0 I00 = N ∗ I0 I1
The inputs and outputs for the buses are given as follows:
• For the chosen slack bus n = 0, it is assumed that the
voltage magnitude |V0 | and the voltage angle θ0 are
y y
given. PyPSA must find the powers P0 and Q0 .
V0
V0 V00 = N 2 2 V1 • For P Q buses, Pn and Qn are given; |Vn | and θn are
to be found.
• For P V buses, Pn and |Vn | are given; Qn and θn are
to be found.
shift
The non-linear equation system (2) is then solved using
τ ejθ =N :1 the Newton-Raphson algorithm [39] and, by default, an
initial ‘flat’ guess of θn = θ0 and |Vn | = 1 (per unit). The
Fig. 1. Electrical property definitions for passive branches (lines and
transformers).
initial guess can also be specified (‘seeded’) by the user,
using for example the linearised power flow solution.
2) Power flow equations for DC networks: A power flow
calculation for a direct current (DC) network ensures that
models, or general energy conversion processes with a given
for all buses labelled by n we have
efficiency, such as resistive heaters or heat pumps (from X
electricity to heat) or gas boilers (from gas to heat). Their Pn = Vn In = Vn Gnm Vm (3)
efficiency can also be time-varying (e.g. to represent the m
ambient temperature dependence of a heat pump’s coefficient where Pn is the active power injected at the bus and the
of performance). Networks of links implement Kirchoff’s voltage, current and the conductance matrix Gij are now all
Current Law (energy conservation at each bus), but not real quantities. This non-linear equation is also solved with
Kirchoff’s Voltage Law, which is obeyed by networks of the Newton-Raphson algorithm.
passive branches. 3) Linearised power flow equations for AC networks: In
A generator can also be represented in terms of more basic some circumstances a linearisation of the AC power flow
components: a bus is added for the fuel source with a store to equations (2) can provide a good approximation to the full
represent the amount of fuel available. It is then connected non-linear solution [40], [41]. The linearisation is restricted
to the electricity bus with a link to represent the energy to calculating active power flows based on voltage angle
conversion loss. Similarly a storage unit can be represented differences and branch series reactances. It assumes that
with an additional bus for the storage medium with a store reactive power flow decouples from active power flow, that
attached, and then two links connected to the electricity bus there are no voltage magnitude variations, voltage angles
to represent charging and discharging. differences across branches are small enough that sin θ ∼ θ
Energy enters the model in generators; in storage units and branch resistances are negligible compared to branch
or stores with higher energy levels before than after the reactances. This makes it suitable for short overhead trans-
simulation; and in any components with efficiency greater mission lines close to their natural loading.
than 1 (such as heat pumps). Energy leaves the model in In this case it can be shown [6] that the voltage angles
loads; in storage units or stores with higher energy levels are related to the active power injections by a matrix
after than before the simulation; and in lines, links or storage Pn =
X
(KBK T )nm θm −
X
Kn` b` θ`shift (4)
units with efficiency less than 1. m `
where K is the incidence matrix of the network, B is The dispatch can also be limited by ramp rate constraints
the diagonal matrix of inverse branch series reactances x` run,r and rdn,r per unit of the generator nominal power:
multiplied by the tap ratio τ` , i.e. B`` = b` = x`1τ` , and
θ`shift is the phase shift for a transformer. The matrix KBK T −rdn,r ·Gn,r ≤ (gn,r,t −gn,r,t−1 ) ≤ run,r ·Gn,r ∀ n, r, t > 0
is singular with a single zero eigenvalue for a connected (7)
network and can be inverted by first deleting the row and Unit commitment for conventional generators is described in
column corresponding to the slack bus. Section II-E.
4) Linearised power flow equations for DC networks: The power capacity Gn,r can also be optimised within
For DC networks the equation (3) is linearised by positing minimum G̃n,r and maximum Ḡn,r installable potentials:
Vn = 1 + δVn and assuming that δVn is small. The resulting
equations mirror the linearised AC approximation with the G̃n,r ≤ Gn,r ≤ Ḡn,r ∀ n, r (8)
substitutions θn → δVn and x` → r` .
The dispatch of storage units hn,s,t , whose energy carriers
C. Optimisation with linear power flow equations are labelled by s, is constrained by a similar equation to that
PyPSA is a partial equilibrium model that can optimise for generators in equation (6):
both short-term operation and long-term investment in the
energy system as a linear problem using the linear power h̃n,s,t · Hn,s ≤ hn,s,t ≤ h̄n,s,t · Hn,s ∀ n, s, t (9)
flow equations.
PyPSA minimises total system costs, which include the except h̃n,s,t is now negative, since the dispatch of storage
variable and fixed costs of generation, storage and transmis- units can be both positive when discharging into the grid
sion, given technical and physical constraints. The objective and negative when absorbing power from the grid. The
function is given by power capacity Hn,s can also be optimised within installable
potentials.
The energy levels en,s,t of all storage units have to be
"
X X
min c` · F` + cn,r · Gn,r consistent between all hours and are limited by the storage
F` ,Gn,r ,Hn,s ,En,s
f`,t ,gn,r,t ,hn,s,t ,sucn,r,t ,sdcn,r,t ` n,r energy capacity En,s
X
+ (wt · on,r · gn,r,t + sucn,r,t + sdcn,r,t ) (5) wt
en,s,t = ηn,s,0 en,s,t−1
n,r,t
+ −1 −
X X X
# +ηn,s,+ · wt [hn,s,t ] − ηn,s,− · wt [hn,s,t ]
+
+ cn,s · Hn,s + ĉn,s · En,s + wt · on,s · [hn,s,t ] +wt · hn,s,t,inflow − wt · hn,s,t,spillage
n,s n,s n,r,t
ẽn,s,t · En,s ≤ en,s,t ≤ ēn,s,t · En,s ∀ n, s, t (10)
It consists of the branch capacities F` for each branch ` and
their annuitised fixed costs per capacity c` , the generator Positive and negative parts of a value are denoted as
capacities Gn,r at each bus n for technology r and their [·]+ = max(·, 0), [·]− = − min(·, 0). The storage units can
annuitised fixed costs per capacity cn,r , the dispatch gn,r,t have a standing loss (self-discharging leakage rate) ηn,s,0 , a
of the unit at time t and the associated variable costs charging efficiency ηn,s,+ , a discharging efficiency ηn,s,− ,
on,r , the start up and shut down costs sucn,r,t and sdcn,r,t inflow (e.g. river inflow in a reservoir) and spillage. The
when unit commitment is activated, the storage unit power initial energy level can be set by the user, or it is assumed
capacities Hn,s and store energy capacities En,s at each bus to be cyclic, i.e. en,s,t=0 = en,s,t=T .
n for storage technology s and their associated fixed costs The store component is a more basic version of the
cn,s and ĉn,s , and finally the positive part of the storage storage unit: its charging and discharging power cannot be
dispatch [hn,s,t ]+ and the associated variable costs on,s . limited and there are no charging and discharging efficiencies
The branch flows f`,t are optimisation variables but do not ηn,s,+ , ηn,s,− . The energy levels of the store can also be
appear in the objective function. The optimisation is run over restricted by time series ẽn,s,t , ēn,s,t given per unit of the
multiple time periods t representing different weather and energy capacity En,s ; this allows the demand-side man-
demand conditions. Each period can have a weighting wt ; agement model of [42] to be implemented in PyPSA. The
the investment
P costs must then be annuitised for the total energy capacity En,s can also be optimised within installable
period t wt (typically a full year). potentials.
The dispatch of generators gn,r,t is constrained by their Global constraints related to primary energy consumption,
capacities Gn,r and time-dependent availabilities g̃n,r,t and such as emission limits, can also be implemented. For
ḡn,r,t , which are given per unit of the capacities Gn,r : example, CO2 emissions can be limited by a cap CAPCO2 ,
g̃n,r,t · Gn,r ≤ gn,r,t ≤ ḡn,r,t · Gn,r ∀ n, r, t (6) implemented using the specific emissions er in CO2 -tonne-
per-MWhth of the fuel r and the efficiency ηn,r of the
For conventional generators the availabilities are usually generator:
constant; a fully flexible generator would have g̃n,r,t = 0
X 1
and ḡn,r,t = 1. For variable renewable generators such wt · gn,r,t · er ≤ CAPCO2 ↔ µCO2 (11)
as wind and solar, ḡn,r,t represents the weather-dependent η
n,r,t n,r
power availability, while curtailment may also be limited by
introducing a lower bound on the dispatch g̃n,r,t . µCO2 is the shadow price of this constraint.
The (inelastic) electricity demand dn,t at each bus n must
grid connection
be met at each time t by either local generators and storage electric bus
or by the flows f`,t from the branches `
storage

electrolysis
discharge

fuel cell
X X X

charge
gn,r,t + hn,s,t + α`,n,t · f`,t = dn,t (12) generators
heat pump;
r s resistive heater
`
↔ wt · λn,t ∀ n, t transport hydrogen heat

generator/CHP

boiler/CHP
Sabatier
battery
where α`,n,t = −1 if ` starts at n, α`,n,t = 1 if ` is a store hot water tank

line or transformer and ends at n, and α`,n,t = η`,t if ` is methane solar thermal
a link and ends at n (note that for lines and transformers,
store
α`,n,t is the incidence matrix of the network, α`,n,t = Kn` ).
η`,t represents an efficiency loss for a link (it can be
time-dependent for efficiency that, for example, depends Fig. 2. Example of the coupling in PyPSA between electricity (at top) and
on the outside temperature, like for a heat pump). λn,t is other energy sectors: transport, hydrogen, natural gas and heating. There is
the marginal price at the bus. This equation implements a bus for each energy carrier, to which different loads, energy sources and
converters are attached.
Kirchhoff’s Current Law (KCL), which guarantees energy
conservation at each node.
The flows in all passive branches are constrained by their the bilinearity with a disjunctive big-M relaxation [44]; this
capacities F` will be incorporated into the main code base of PyPSA soon.
|f`,t | ≤ F` ∀ `, t (13)
D. Coupling to other energy sectors
For links, the flows can be more finely controlled with time-
dependent per unit availabilities f˜`,t , f¯`,t PyPSA can also optimise operation and investment in
other energy sectors, such as natural gas, heating and
f˜`,t · F` ≤ f`,t ≤ f¯`,t · F` ∀ `, t (14) transport. These sectors can be modelled using a network
which allows, for example, time-dependent demand-side of links with efficiencies for energy conversion losses; an
management schemes to be modelled [42]. For both passive example from a recent paper [29] is shown in Figure 2. For
branches and links, the upper and lower limits are associated example, links from electricity to heat buses can represent
with KKT multipliers µ̄`,t and µ`,t . resistive heaters and/or heat pumps (the latter can also be
¯
The flows in links are fully controllable. modelled with a time-dependent coefficient of performance,
Power flows in networks of passive branches (lines and given the importance of capturing the dependence of heat
transformers) according to the linear power flow equations. pump performance on outside temperature [45]). Combined
It is assumed that the network is lossless, so that η`,t = 1 for Heat and Power plants (CHPs) can also be modelled by
passive branches. To guarantee the physicality of the network adding additional constraints for the back pressure and fuel
flows, in addition to KCL, Kirchhoff’s Voltage Law (KVL) consumption (see the PyPSA examples [26]). Depletable
must be enforced in each connected network. KVL states resources such as natural gas are modelled with stores.
that the voltage differences around any closed cycle in the
network must sum to zero. If each independent cycle c is E. Unit Commitment
expressed as a directed combination of passive branches ` Unit commitment can be turned on for any generator.
by a matrix C`c then KVL becomes the constraint This introduces a times series of new binary status variables
X un,r,t ∈ {0, 1}, which indicates whether the generator is
C`c · x` · f`,t = 0 ∀c, t (15)
running (1) or not (0) in period t. The restrictions on
`
generator output now become:
where x` is the series inductive reactance of branch `. In a
recent paper it is demonstrated that this formulation of the un,r,t · g̃n,r,t · Gn,r ≤ gn,r,t ≤ un,r,t · ḡn,r,t · Gn,r ∀ n, r, t
linear load flow using cycles solves up to 20 times faster (16)
than standard formulations using the voltage angles [30]; so that if un,r,t = 0 then also gn,r,t = 0.
min up
voltage angle and PTDF formulations are also implemented If Tn,r is the minimum up time then we have
in PyPSA and deliver identical results.
min up
t+Tn,r
Since branch capacities F` can be continuously expanded X
min up
to represent the addition of new circuits to an aggregated un,r,t0 ≥ Tn,r (un,r,t − un,r,t−1 ) ∀ n, r, t (17)
transmission corridor `, the impedances x` of the branches t0 =t
would also decrease. In principle this would introduce a (i.e. if the generator has just started up (un,r,t −un,r,t−1 = 1)
bilinear coupling in equation (15) between the x` and the then it has to run for at least Tn,rmin up
periods). Similarly for
f`,t . To keep the optimisation problem linear and therefore a minimum down time of Tn,r min down
computationally fast, x` can be left fixed in each optimi-
sation problem, updated and then the optimisation problem min down
t+Tn,r
rerun, in up to 5 iterations to ensure convergence, following
X
min down
(1−un,r,t0 ) ≥ Tn,r (un,r,t−1 −un,r,t ) ∀ n, r, t
the methodology of [43]. Another author has implemented an t0 =t
integer transmission expansion in PyPSA [34] that bypasses (18)
For non-zero start up costs sucn,r a new variable • An implementation of the non-linear power flow solu-
sucn,r,t ≥ 0 is introduced for each time period t and added tion using analytic continuation in the complex plane
to the objective function. The variable satisfies [47], following the implementation in GridCal [48];
• Short-circuit analysis, following the implementation in
sucn,r,t ≥ sucn,r (un,r,t − un,r,t−1 ) ∀ n, r, t (19)
pandapower [9];
so that it is only non-zero if un,r,t − un,r,t−1 = 1, i.e. the • OPF with the full non-linear network equations, fol-
generator has just started, in which case the inequality is lowing the implementations in PYPOWER and MAT-
saturated sucn,r,t = sucn,r . Similarly for the shut down POWER;
costs sdcn,r,t ≥ 0 we have • An interactive web-based GUI for analysing and ma-
nipulating the network topology.
sdcn,r,t ≥ sdcn,r (un,r,t−1 − un,r,t ) ∀ n, r, t (20)
III. I MPLEMENTATION AND ARCHITECTURE
The ramp-rate limits in equation (7) can also be suplemented PyPSA was written in the Python programming language
by ramping limits at start-up and shut-down. [49] because it is widely used in the modelling community,
F. Security-Constrained LOPF it is easy to learn and its implementation is also free. It
is available for every major operating system, including
PyPSA has functionality to examine the steady state of
GNU/Linux, Mac OSX and Windows. PyPSA has been
the power system after outages of passive branches, based
tested with versions 2.7 and 3.5 of Python.
on an analysis of the linear power flow.
PyPSA stores all data about network components in
PyPSA calculates the Branch Outage Distribution Fac-
the DataFrame objects of the Python library pandas [50].
tor (BODF) from the Power Transfer Distribution Factors
This enables easy and efficient indexing of the data, while
(PTDF) (see [46]). The BODF gives the change in linearised
mantaining the fast calculation speeds of the underlying
power flow on passive branch ` given the outage of passive
array objects of the Python library NumPy [51]. For each
branch k
(k) of the components listed in Table II (except the overall
f` = f` + BODF`k · fk (21)
Network container component) there is a DataFrame listing
(k) the static attributes (such as line impedance or capital cost)
Here f` is the flow before the outage and f` is the flow
after the outage of branch k. and a dictionary of DataFrames containing the time-varying
The BODF can then be used in Security-Constrained attributes (such as wind power availability or consumer
Linear Optimal Power Flow (SCLOPF). SCLOPF builds on demand) that are in addition indexed by the list of snapshots.
the LOPF by including additional constraints that branches The specification of some attributes (such as generator
may not become overloaded after the outage of a selection maximum output) can be either static or time-varying; if the
of branches. For each potential outage of a branch k, a set of time series is not specified, then the static value is taken.
constraints for all other branches ` is included, guaranteeing All matrix calculations and solutions of linear equation
that they do not become overloaded beyond their capacity systems are carried out either with NumPy [51] or, in the
F` case of sparse matrices, with SciPy [52]. These Python
(k)
libraries interface with lower-level programming language li-
|f`,t | = |f`,t + BODF`k · fk,t | ≤ |F` | ∀`, t (22) braries to benefit from the speed of strongly-typed languages.
G. Network clustering Optimisation problems are formulated using the Python-
based optimization modeling language Pyomo [53], [54],
PyPSA also implements a variety of network clustering which is solver agnostic and intuitive to extend. The use of
algorithms to reduce the number of buses in a network while Pyomo also allows inter-operability with other energy system
preserving important transmission lines. For example, the frameworks that use Pyomo, such as calliope [11], oemof
k-means clustering algorithm was recently used in [32] to [14] and urbs [20]. In PyPSA lower-level functions in Pyomo
examine the effect of clustering on investment optimisation have been exploited to improve computational performance.
results. PyPSA has no graphical user interface, but integrates
H. Planned new features closely with the IPython [55] interactive notebooks, where
networks and their properties can be visualised using the
PyPSA is currently in version 0.11.0. PyPSA has been
Python library Matplotlib [56] (see Figures 4 and 5) or the
designed to be modular, so that it is possible to develop the
interactive JavaScript-based library plotly [57].
code for many other types of calculations. Currently features
Internally PyPSA converts all power system quantities
being considered by the development team include, in rough
(voltage, power, current, impedances) to per unit values. Set
order of priority:
points for loads and generation are stored separately from
• Integer transmission expansion, following an existing
the power values which are actually dispatched.
implementation in PyPSA [34] using the disjunctive
big-M relaxation [44]; IV. Q UALITY CONTROL
• Multi-horizon dynamic investment optimisation over PyPSA comes with a large test suite that covers all of its
several years, following for example the implementation major functionality. Tests are implemented using the Python
in OSeMOSYS [15]; library pytest [58]. Tests are also included that compare
• Transient analysis using the Root-Mean-Square (RMS) PyPSA’s results with other software such as PYPOWER [8]
values of phasor quantities, following the implementa- and pandapower [9]. Users can and do report bugs by raising
tion in PSAT [7]; issues in the GitHub repository [24] or on the forum [27].
1.4 Selected features for a selection of different software tools
MATPOWER
1.2 PyPSA are compared in Table III. Many of the tools have specialised
features that are not shown in the table, so this table should
1.0
Calculation time [s]

only be treated as an indicative overview of their features in


0.8 relation to PyPSA’s features.
Many power system tools concentrate on steady-state,
0.6
dynamic (i.e. short-term transient) and single-period OPF
0.4 analysis of power networks. They neglect the multi-period
unit commitment, investment optimisation and energy sys-
0.2
tem coupling which PyPSA offers. In Python we focus our
0.0 comparison on two tools: PYPOWER and pandapower.
ase ase118 ase300 pega
se 383wp
pega
se
pega
se
8 9peg c c 1354 case2 ase2869 ase9241
PYPOWER [8] is a port of an older version of MAT-
case case c c POWER [6] from Matlab to Python. It does not make strong
Fig. 3. Calculation times for performing a full load flow on the MAT- use of Python’s object-oriented interface and structures data
POWER [6] standard cases using MATPOWER versus PyPSA. using NumPy arrays, which makes it difficult to track com-
ponent attributes. It has no functionality to deal with multi-
period OPF, which makes it unsuitable for unit commitment,
V. P ERFORMANCE storage optimisation or investment optimisation. This reflects
In this section some examples of PyPSA’s computational the functionality of older versions of MATPOWER, but the
performance are given. latest version 6.0 of MATPOWER includes the MATPOWER
In Figure 3 computation times are given for a full power Optimal Scheduling Tool (MOST) [13], which does multi-
flow on the MATPOWER [6] test cases (the IEEE standard period OPF, but no investment optimisation. Unlike PyPSA,
cases as well as snapshots from the French TSO RTE and PYPOWER has the ability to do full non-linear OPF for
European networks [59]) using MATPOWER and PyPSA. In single snapshots.
both cases the complete execution of the load flow function pandapower [9] provides a pandas [50] interface to PY-
(‘runpf’ for MATPOWER and ‘network.pf’ for PyPSA) was POWER [8], which makes it easier to use, and adds useful
timed on a computer with Intel Core i5-2520M processors functionality such as standard types (on which PyPSA’s
at 2.50GHz each with a tolerance of 10−8 for the summed standard types are based), short circuit calculations, state
error in the apparent power S from equation (2). The timings estimation, and modelling of switches and three-winding
were averaged over 10 attempts for each network. The transformers. The last four functions are currently missing
computation times are similar, thanks to the fact that both in PyPSA, along with non-linear OPF, but like PYPOWER,
MATPOWER and PyPSA (via the SciPy library [52]) use pandapower does not have multi-period OPF functionality.
the same C library umfpack [60] for solving sparse linear pandapower is under active development and the PyPSA
equation systems, but PyPSA is in all cases slightly slower team stays in contact with the pandpower team to exchange
due to the overhead of preparing the admittance matrices tips and features, which is a clear benefit for both developers
in pure Python code. If the admittance matrix remains the and users of free software.
same for several calculations, PyPSA has the option to PyPSA differs from more general energy system models
avoid recalculating it, which can save some of this time; such as calliope [11], oemof [14], OSeMOSYS [15] and
further acceleration is possible by using the just-in-time (jit) urbs [20] by offering more detailed modelling of power
compiler numba [61], as has been done in the pandapower networks, in particular the physics of power flow according
project [9] with success for larger networks. to the impedances in the network. PyPSA can model a
For the linear optimal power flow (LOPF) the computation more general energy network using link components (see
performance depends strongly on the choice of linear solver. Section II-D), but cannot, for example, yet do the multi-
To give an indication of typical calculation times, if dispatch year dynamic investment that OSeMOSYS does. The non-
in the SciGRID model of the German transmission network free PLEXOS software [16] comes the closest to matching
described in Section VII (585 buses, 1423 generators in- PyPSA’s functionality, but PLEXOS is missing non-linear
cluding curtailable wind and solar at each node, 38 pump power flow.
storage units, 852 lines, 96 transformers) is optimised over These differences with other software tools are the reason
4 snapshots, it takes 5 seconds using the COIN-OR Clp free that it was decided to develop a new tool rather than to
solver on the computer described above. Extensive timings extend an existing one. Existing tools for power flow such as
for different formulations of the LOPF problem can be found PYPOWER did not have the internal code and data structures
in [30]. for economic optimisation over multiple time periods with
many inter-temporal actors, whereas the energy system tools
VI. C OMPARISON TO OTHER POWER SYSTEM TOOLS were missing the tight integration with power flow analysis
Given the proliferation of software tools available for that we believe is necessary for future research.
modelling power systems, a guide is provided here that
briefly compares PyPSA to other power system tools, with a VII. D EMONSTRATION OF FEATURES ON THE S CI GRID
AND G RID K IT DATASETS
particular focus on free software in the Python programming
language. The advantages of Python are discussed above in On the PyPSA website [26] a large number of examples
Section III. of code using PyPSA is linked for reference and to help
Grid Analysis Economic Analysis

Unit Commitment
Transport Model

Nonlinear OPF
Free Software

Other Energy
Continuation

Optimisation

Optimisation
Multi-Period
Power Flow

Power Flow

Linear OPF

Investment
SCLOPF
Dynamic
Analysis
Citation
Version

Sectors
Software
MATPOWER 6.0 [6] 3 3 3 3 3 3
NEPLAN 5.5.8 [2] 3 3 3 3 3 3 3
Power system tools

pandapower 1.4.0 [9] 3 3 3 3 3


PowerFactory 2017 [1] 3 3 3 3 3
PowerWorld 19 [3] 3 3 3 3 3 3
PSAT 2.1.10 [7] 3 3 3 3 3 3 3 3
PSS/E 33.10 [4] 3 3 3 3 3
PSS/SINCAL 13.5 [5] 3 3 3 3
PYPOWER 5.1.2 [8] 3 3 3 3 3
PyPSA 0.11.0 3 3 3 3 3 3 3 3 3
calliope 0.5.2 [11] 3 3 3 3 3
minpower 4.3.10 [12] 3 3 3 3 3
MOST 6.0 [13] 3 3 3 3 3 3 3 3 3
Energy system tools

oemof 0.1.4 [14] 3 3 3 3 3 3


OSeMOSYS 2017 [15] 3 3 3 3 3
PLEXOS 7.400 [16] 3 3 3 3 3 3 3
PowerGAMA 1.1 [17] 3 3 3 3
PRIMES 2017 [18] 3 3 3 3 3 3
TIMES 2017 [19] 3 3 3 3 3 3
urbs 0.7 [20] 3 3 3 3 3 3
TABLE III
A COMPARISON OF SELECTED FEATURES OF SELECTED SOFTWARE TOOLS THAT ARE SIMILAR TO P Y PSA.

70
90 +ve Q
60 −ve Q
Locational Marginal Price (EUR/MWh)

50 75
Line loading [%]

40 60
30 45
20
30
10
15
0
0

Fig. 4. Left: Locational marginal prices (λn,t from equation (12)) for Germany in an hour with high wind and low load; Middle: Line loading during
this hour: highly loaded lines in the middle of Germany prevent the transport of cheap wind energy to consumers in the South; Right: Reactive power
feed-in (positive in red, negative in blue) necessary to keep all buses at unit nominal voltage.

users just starting out with the software. These range from North of Germany. Transmission bottlenecks in the middle of
basic small-scale networks demonstrating the features of Germany prevent the transportation of this cheap electricity
PyPSA, to a one-node-per-country model of the European to the South, where more expensive conventional generators
power system with high shares of renewables [62], to full set the price. The linearly-optimised dispatch was then fed
transmission network models available as open data from into a full non-linear power flow calculation where each bus
the SciGRID [63] and GridKit projects [64], [65] which we was set to maintain nominal voltage; the resulting reactive
demonstrate here. power feed-in is also shown in Figure 4.
The SciGRID model of Germany provides geo-referenced The data quality for the transmission grid in Open-
data for substations and transmission lines (220 kV and StreetMap outside Germany is not of uniform quality, so for
above). In one code example, data from openly-available the European grid, an extract of the ENTSO-E interactive
sources on power plant locations and capacities, load dis- map [66] was made [64] using GridKit [65]. The details
tribution and time series are added to the SciGRID data so of how load, conventional power plants and renewable
that load flow calculations can be carried out. The results generation time series and expansion potentials were added
of one such simulation for Germany with nodal pricing to the grid data are provided in a forthcoming paper [67].
is shown in Figure 4. In this snapshot there was a large The result of generation and storage investment optimisation
amount of zero-marginal-cost wind feed-in suppressing the for a clustering of the network from 5000 buses down to
locational marginal prices (λn,t from equation (12)) in the 256 buses, allowing no grid expansion and assuming a CO2
CoNDyNet project, which is supported by the German
Federal Ministry of Education and Research under grant no.
03SF0472C. The responsibility for the contents lies solely
with the authors.
R EFERENCES
[1] DIgSILENT GmbH, “PowerFactory,” http://digsilent.de/, 2017.
[2] NEPLAN AG, “PowerFactory,” http://www.neplan.ch/, 2017.
[3] PowerWorld Corporation, “PowerWorld,” https://www.powerworld.
com/, 2017.
[4] Siemens AG, “PSS/E,” http://w3.siemens.com/smartgrid/
global/en/products-systems-solutions/software-solutions/
planning-data-management-software/planning-simulation/Pages/
PSS-E.aspx, 2017.
[5] ——, “PSS/SINCAL,” http://w3.siemens.com/smartgrid/
global/en/products-systems-solutions/software-solutions/
planning-data-management-software/planning-simulation/pss-sincal/
pages/pss-sincal.aspx, 2017.
[6] R. D. Zimmerman, C. E. Murillo-Sanchez, and R. J. Thomas,
“MATPOWER: Steady-state operations, planning and analysis
offshore wind solar battery storage gas tools for power systems research and education,” IEEE Trans.
onshore wind run of river hydrogen storage Power Syst., vol. 26, p. 12, 2011. [Online]. Available: https:
//doi.org/10.1109/TPWRS.2010.2051168
[7] F. Milano, “An open source power system analysis toolbox,” IEEE
Fig. 5. Results of optimisation of generation and storage capacities in Transactions on Power Systems, vol. 20, no. 3, pp. 1199–1206,
Europe to reduce CO2 emissions in the European electricity sector by 95% Aug 2005. [Online]. Available: https://doi.org/10.1109/TPWRS.2005.
compared to 1990 levels [32]. The grid topology is based on the GridKit 851911
network for Europe, clustered from 5000 buses to 256 buses. [8] Richard Lincoln, “PYPOWER,” https://github.com/rwl/PYPOWER,
2017.
[9] L. Thurner, A. Scheidler, F. Schäfer, J.-H. Menke, J. Dollichon,
reduction of 95% compared to 1990 levels, is shown in F. Meier, S. Meinecke, and M. Braun. (2017) pandapower -
an Open Source Python Tool for Convenient Modeling, Analysis
Figure 5. The lack of grid expansion forces some balancing and Optimization of Electric Power Systems. Preprint. [Online].
of renewable variability locally with storage. Short-term Available: https://arxiv.org/abs/1709.06743
battery storage (grey) combines with solar power (yellow) [10] Open Electrical Wiki, “Power Systems Analysis Software,”
http://www.openelectrical.org/wiki/index.php?title=Power Systems
in Southern Europe, while longer-term hydrogen storage Analysis Software, 2017.
(purple) pairs with wind power (blue) in Northern Europe. [11] S. Pfenninger, “Dealing with multiple decades of hourly wind and
This system has an average cost of e 82/MWh. If the grid is PV time series in energy models: A comparison of methods to
reduce time resolution and the planning implications of inter-annual
optimally expanded, much of the storage can be eliminated variability,” Applied Energy, vol. 197, pp. 1 – 13, 2017. [Online].
and costs are as low as e 65/MWh [32]. Available: https://doi.org/10.1016/j.apenergy.2017.03.051
[12] A. Greenhall and R. Christie, “Minpower: A power systems
VIII. C ONCLUSIONS optimization toolkit,” in 2012 IEEE Power and Energy Society
General Meeting, July 2012, pp. 1–6. [Online]. Available: https:
In this paper a new toolbox has been presented for //doi.org/10.1109/PESGM.2012.6344667
simulating and optimising power systems. Python for Power [13] C. E. Murillo-Sanchez, R. D. Zimmerman, C. L. Anderson, and R. J.
Thomas, “Secure planning and operations of systems with stochastic
System Analysis (PyPSA) provides components to model sources, energy storage and active demand,” IEEE Transactions
variable renewable generation, conventional power plants, on Smart Grid, vol. 4, pp. 2220–2229, 2013. [Online]. Available:
storage units, coupling to other energy sectors and multiply- https://doi.org/10.1109/TSG.2013.2281001
[14] S. Hilpert, S. Günther, C. Kaldemeyer, U. Krien, G. Plessmann,
connected AC and DC networks over multiple periods for F. Wiese, and C. Wingenbach, “Addressing energy system modelling
the optimisation of both operation and investment. Tools are challenges: The contribution of the open energy modelling
also provided for steady-state analysis with the full load flow framework (oemof),” Preprints, 2017. [Online]. Available: https:
//doi.org/10.20944/preprints201702.0055.v1
equations. PyPSA’s performance for large datasets, com- [15] M. Howells, H. Rogner, N. Strachan, C. Heaps, H. Huntington,
parisons with other software packages and several example S. Kypreos, A. Hughes, S. Silveira, J. DeCarolis, M. Bazillian, and
applications are demonstrated. A. Roehrl, “Osemosys: The open source energy modeling system: An
introduction to its ethos, structure and development,” Energy Policy,
As free software, the code of PyPSA can easily be vol. 39, no. 10, pp. 5850 – 5870, 2011, sustainability of biofuels.
inspected and extended by users, thereby contributing to [Online]. Available: https://doi.org/10.1016/j.enpol.2011.06.033
further research and also transparency in power system mod- [16] Energy Exemplar, “PLEXOS,” http://energyexemplar.com/, 2017.
[17] H. G. Svendsen and O. C. Spro, “PowerGAMA: A new simplified
elling. Given that public acceptance of new infrastructure modelling approach for analyses of large interconnected power
is often low, it is hoped that transparent modelling can systems, applied to a 2030 Western Mediterranean case study,”
contribute to public understanding of the various options we Journal of Renewable and Sustainable Energy, vol. 8, no. 5,
p. 055501, 2016. [Online]. Available: http://dx.doi.org/10.1063/1.
face when designing a sustainable energy system. 4962415
[18] “The PRIMES Model,” http://www.e3mlab.ntua.gr/, NTUA, Tech.
ACKNOWLEDGMENTS Rep., 2009.
[19] R. Loulou, U. Remne, A. Kanudia, A. Lehtila, and G. Goldstein,
We thank Stefan Schramm for supporting the development “Documentation for the TIMES Model - PART I 1–78,” ETSAP,
of PyPSA. We thank the community of PyPSA users for bug Tech. Rep., 2005. [Online]. Available: http://iea-etsap.org/index.php/
reports, improvement suggestions and their general friendly documentation
[20] J. Dorfner, M. Dorfner, S. Candas, S. Müller, Y. Özsahin, T. Zipperle,
support and encouragement for the further development S. Herzog, Icedkk, and WYAUDI, “urbs: v0.6,” Aug. 2016. [Online].
of PyPSA. This research was conducted as part of the Available: https://doi.org/10.5281/zenodo.60484
[21] “GNU General Public Licence,” Free Software Foundation. [Online]. [45] S. N. Petrović and K. B. Karlsson, “Residential heat pumps in the
Available: http://www.gnu.org/licenses/gpl.html future Danish energy system,” Energy, vol. 114, pp. 787 – 797, 2016.
[22] S. Pfenninger, J. DeCarolis, L. Hirth, S. Quoilin, and I. Staffell, “The [Online]. Available: https://doi.org/10.1016/j.energy.2016.08.007
importance of open data and software: Is energy research lagging [46] B. Wollenberg and A. Wood, Power Generation, Operation, and
behind?” Energy Policy, vol. 101, pp. 211 – 215, 2017. [Online]. Control. John Wiley & Sons, 1996.
Available: https://doi.org/10.1016/j.enpol.2016.11.046 [47] A. Trias, “The holomorphic embedding load flow method,” in Power
[23] S. Pfenninger, “Energy scientists must show their workings,” and Energy Society General Meeting, 2012 IEEE, July 2012, pp. 1–8.
Nature, vol. 542, p. 393, 2017. [Online]. Available: https: [48] S. P. Vera, “Gridcal,” 2017, https://github.com/SanPen/GridCal.
//doi.org/10.1038/542393a [49] “Python programming language, version 3.5,” https://www.python.
[24] “Python for Power System Analysis (PyPSA) GitHub Repository.” org/, 2017.
[Online]. Available: https://github.com/PyPSA/PyPSA
[25] T. Brown, J. Hörsch, and D. Schlachtberger, “Python for Power [50] W. McKinney, “Data structures for statistical computing in Python,”
System Analysis (PyPSA) Version 0.11.0,” Oct. 2017. [Online]. in Proceedings of the 9th Python in Science Conference, 2010, pp.
Available: https://doi.org/10.5281/zenodo.1034551 51–56. [Online]. Available: http://conference.scipy.org/proceedings/
[26] ——, “Python for Power System Analysis (PyPSA) Website.” scipy2010/mckinney.html
[Online]. Available: https://pypsa.org/ [51] S. van der Walt, S. C. Colbert, and G. Varoquaux, “The NumPy
[27] “Python for Power System Analysis (PyPSA) Forum.” [Online]. array: A structure for efficient numerical computation,” Computing
Available: https://groups.google.com/forum/#!forum/pypsa in Science & Engineering, vol. 13, pp. 22–30, 2011. [Online].
[28] J. G. Dedecca, R. A. Hakvoort, and P. M. Herder, “Transmission Available: https://doi.org/10.1109/MCSE.2011.37
expansion simulation for the European Northern Seas offshore [52] E. Jones, T. Oliphant, P. Peterson et al., “SciPy: Open source scientific
grid,” Energy, vol. 125, pp. 805 – 824, 2017. [Online]. Available: tools for Python,” 2001–. [Online]. Available: http://www.scipy.org/
https://doi.org/10.1016/j.energy.2017.02.111 [53] W. E. Hart, J.-P. Watson, and D. L. Woodruff, “Pyomo: modeling
[29] T. Brown, D. Schlachtberger, A. Kies, and M. Greiner, “Sector and solving mathematical programs in Python,” Mathematical
coupling in a simplified model of a highly renewable European energy Programming Computation, vol. 3, no. 3, pp. 219–260, 2011.
system,” in Proceedings of 15th Wind Integration Workshop, 2016. [Online]. Available: https://doi.org/10.1007/s12532-011-0026-8
[30] J. Hörsch, H. Ronellenfitsch, D. Witthaut, and T. Brown, “Linear [54] W. E. Hart, C. Laird, J.-P. Watson, and D. L. Woodruff, Pyomo–
Optimal Power Flow Using Cycle Flows,” ArXiv e-prints, Apr. 2017. optimization modeling in python. Springer Science & Business
[Online]. Available: https://arxiv.org/abs/1704.01881 Media, 2012, vol. 67. [Online]. Available: https://doi.org/10.1007/
[31] D. Schlachtberger, T. Brown, S. Schramm, and M. Greiner, “The 978-1-4614-3226-5
benefits of cooperation in a highly renewable European electricity [55] F. Pérez and B. E. Granger, “IPython: A System for Interactive
network,” Energy, vol. 134, pp. 469 – 481, 2017. [Online]. Available: Scientific Computing,” Computing in Science & Engineering, vol. 9,
https://doi.org/10.1016/j.energy.2017.06.004 pp. 21–29, 2007. [Online]. Available: https://doi.org/10.1109/MCSE.
[32] J. Hörsch and T. Brown, “The role of spatial scale in joint 2007.53
optimisations of generation and transmission for European highly [56] J. D. Hunter, “Matplotlib: A 2d graphics environment,” Computing in
renewable scenarios,” in Proceedings of 14th International Conference Science & Engineering, vol. 9, pp. 90–95, 2007. [Online]. Available:
on the European Energy Market (EEM 2017), 2017. [Online]. https://doi.org/10.1109/MCSE.2007.55
Available: https://arxiv.org/abs/1705.07617
[33] M. Groissböck and A. Gusmao, “Impact of high renewable [57] P. T. Inc. (2015) Collaborative data science. Montréal, QC. [Online].
penetration scenarios on system reliability: two case studies in the Available: https://plot.ly
Kingdom of Saudi Arabia,” ArXiv e-prints, Sep. 2017. [Online]. [58] H. Krekel et al., “pytest,” 2017. [Online]. Available: https://pytest.org/
Available: https://arxiv.org/abs/1709.03761 [59] C. Josz, S. Fliscounakis, J. Maeght, , and P. Panciatici, “Data
[34] J. G. Dedecca, “Mixed integer modification of the PyPSA package,” in MATPOWER and QCQP Format: iTesla, RTE Snapshots,
2017, https://github.com/jdedecca/MILP PyPSA. and PEGASE,” ArXiv e-prints, Mar. 2016. [Online]. Available:
[35] “open eGo GitHub Repository,” 2017. [Online]. Available: https: https://arxiv.org/abs/1603.01533
//github.com/openego [60] T. A. Davis, “Algorithm 832: Umfpack v4.3—an unsymmetric-pattern
[36] K. Heuck, K.-D. Dettmann, and D. Schulz, Elektrische Energiever- multifrontal method,” ACM Trans. Math. Softw., vol. 30, no. 2, pp.
sorgung, 9th ed. Berlin Heidelberg New York: Springer-Verlag, 2013. 196–199, Jun. 2004. [Online]. Available: http://doi.acm.org/10.1145/
[37] B. Oswald and D. Oeding, Elektrische Kraftwerke und Netze., 6th ed. 992200.992206
Berlin Heidelberg New York: Springer-Verlag, 2004. [61] S. K. Lam, A. Pitrou, and S. Seibert, “Numba: A llvm-based
[38] B. Oswald, “Vorlesung Elektrische Energiever- python jit compiler,” in Proceedings of the Second Workshop on
sorgung I: Skript Transformatoren,” 2005. [On- the LLVM Compiler Infrastructure in HPC, ser. LLVM ’15. New
line]. Available: http://antriebstechnik.fh-stralsund.de/1024x768/ York, NY, USA: ACM, 2015, pp. 7:1–7:6. [Online]. Available:
Dokumentenframe/Versuchsanleitungen/EMA/Trafo.pdf http://doi.acm.org/10.1145/2833157.2833162
[39] J. J. Grainger and W. D. Stevenson Jr., Power System Analysis. New [62] D. Schlachtberger, T. Brown, S. Schramm, and M. Greiner,
York: McGraw-Hill, 1994. “Supplementary Data: The Benefits of Cooperation in a Highly
[40] K. Purchala, L. Meeus, D. V. Dommelen, and R. Belmans, “Usefulness Renewable European Electricity Network,” Jun. 2017. [Online].
of DC power flow for active power flow analysis,” in IEEE Power Available: https://doi.org/10.5281/zenodo.804338
Engineering Society General Meeting, June 2005, pp. 454–459 Vol. [63] C. Matke, W. Medjroubi, and D. Kleinhans, “SciGRID - An Open
1. [Online]. Available: https://doi.org/10.1109/PES.2005.1489581 Source Reference Model for the European Transmission Network
[41] B. Stott, J. Jardim, and O. Alsac, “Dc power flow revisited,” IEEE (v0.2),” Jul. 2016. [Online]. Available: http://www.scigrid.de
Trans. Power Syst., vol. 24, no. 3, p. 1290, 2009. [Online]. Available:
https://doi.org/10.1109/TPWRS.2009.2021235 [64] B. Wiegmans, “GridKit extract of ENTSO-E interactive map,” Jun.
[42] D. Kleinhans, “Towards a systematic characterization of the potential 2016. [Online]. Available: https://doi.org/10.5281/zenodo.55853
of demand side management,” ArXiv e-prints, Jan. 2014. [Online]. [65] ——, “Improving the topology of an electric network
Available: https://arxiv.org/abs/1401.4121 model based on open data,” Master’s thesis, Energy and
[43] S. Hagspiel, C. Jägemann, D. Lindenburger, T. Brown, S. Chere- Sustainability Research Institute, University of Groningen,
vatskiy, and E. Tröster, “Cost-optimal power system extension under 2015. [Online]. Available: https://www.scigrid.de/publications/16
flow-based market coupling,” Energy, vol. 66, pp. 654–666, 2014. 1 BWiegmans Master Thesis 2015.pdf
[Online]. Available: https://doi.org/10.1016/j.energy.2014.01.025 [66] “ENTSO-E Interactive Transmission System Map,” Jan. 2016.
[44] L. Bahiense, G. C. Oliveira, M. Pereira, and S. Granville, “A mixed [Online]. Available: https://www.entsoe.eu/map/Pages/default.aspx
integer disjunctive model for transmission network expansion,” IEEE [67] J. Hörsch, F. Hofmann, D. Schlachtberger, and T. Brown, PyPSA-Eur:
Transactions on Power Systems, vol. 16, no. 3, pp. 560–565, Aug An open optimization model of the European transmission system,
2001. [Online]. Available: https://doi.org/10.1109/59.932295 2017, in preparation.

Vous aimerez peut-être aussi