Model formulation
This page collects all information about the core components of IESopt, their properties (and default values), their internal mathematical formulations, and some examples of how to use them. See the API for a complete list of all available functions and types.
IESopt.Connection
— TypeA Connection
is used to model arbitrary flows of energy between Node
s. It allows for limits, costs, delays, ...
IESopt.Decision
— TypeA Decision
represents a basic decision variable in the model that can be used as input for various other core component's settings, as well as have associated costs.
IESopt.Node
— TypeA Node
represents a basic intersection/hub for energy flows. This can for example be some sort of bus (for electrical systems). It enforces a nodal balance equation (= "energy that flows into it must flow out") for every Snapshot
. Enabling the internal state of the Node
allows it to act as energy storage, modifying the nodal balance equation. This allows using Node
s for various storage tasks (like batteries, hydro reservoirs, heat storages, ...).
Basic Examples
A Node
that represents an electrical bus:
bus:
type: Node
carrier: electricity
A Node
that represents a simplified hydrogen storage:
store:
type: Node
carrier: hydrogen
has_state: true
state_lb: 0
state_ub: 50
IESopt.Profile
— TypeA Profile
allows representing "model boundaries" - parts of initial problem that are not endogenously modelled - with a support for time series data. Examples are hydro reservoir inflows, electricity demand, importing gas, and so on. Besides modelling fixed profiles, they also allow different ways to modify the value endogenously.
Basic Examples
A Profile
that depicts a fixed electricity demand:
demand_XY:
type: Profile
carrier: electricity
node_from: grid
value: demand_XY@input_file
A Profile
that handles cost of fuel:
fuel_gas:
type: Profile
carrier: gas
node_to: country_gas_grid
mode: create
cost: 100.0
A Profile
that handles CO2 emission costs:
co2_cost:
type: Profile
carrier: co2
node_from: total_co2
mode: destroy
cost: 150.0
A Profile
that handles selling electricity:
sell_electricity:
type: Profile
carrier: electricity
node_from: internal_grid_node
mode: destroy
cost: -30.0
IESopt.Unit
— TypeA Unit
allows transforming one (or many) forms of energy into another one (or many), given some constraints and costs.
Basic Examples
A Unit
that represents a basic gas turbine:
gas_turbine:
type: Unit
inputs: {gas: gas_grid}
outputs: {electricity: node, co2: total_co2}
conversion: 1 gas -> 0.4 electricity + 0.2 co2
capacity: 10 out:electricity
A Unit
that represents a basic wind turbine:
wind_turbine:
type: Unit
outputs: {electricity: node}
conversion: ~ -> 1 electricity
capacity: 10 out:electricity
availability_factor: wind_factor@input_data
marginal_cost: 1.7 per out:electricity
A Unit
that represents a basic heat pump, utilizing a varying COP:
heatpump:
type: Unit
inputs: {electricity: grid}
outputs: {heat: heat_system}
conversion: 1 electricity -> cop@inputfile heat
capacity: 10 in:electricity