SimulationProcedure

Procedure

Maon simulates electricity wholesale markets by deriving the following three key outputs.

  • Short-term equilibrium: Determining dispatch schedules and wholesale prices using generation, grid, and consumption capacities as inputs through single and serial runs.
  • Uncertainty distribution: Calculating uncertainties in short-term equilibria, along with associated outcomes like facility-specific costs and revenues with the help of Monte Carlo simulations.
  • Long-term equilibrium: Deriving investment decisions in generation, grid, and consumption facilities based on anticipated prices, volumes, and emerging technologies via investment simulations.

All derivations rely on the same market simulation procedure. Single runs execute it once. Serial runs apply it to a sequence of years. Monte Carlo runs repeat it with varying inputs to generate output distributions. Investment runs use it iteratively to derive economically viable investment decisions.

Single

The procedure for single runs is applied at the single dispatch page by clicking on Run simulation.

Overview

Upfront input data is processed (see preprocessing).

The three-stage optimization procedure is illustrated in the following figure. First, on-off dispatch decisions are neglected, and nonlinear equations are linearized to solve the overall linear optimization problem. Second, unit states are fixed at the start and end of sub-time ranges (e.g., daily), and these subproblems are solved successively. Third, on-off dispatch decisions are fixed, and the overall optimization problem is linearized and optimized. Numerical issues are handled internally through automatic optimization solver restarts and recalibrations.

After the simulation procedure, the raw results like unit commitments and price estimates are processed for further usage (see postprocessing).

Three-staged market simulation procedure
Figure 0: Three-staged market simulation procedure

Procedure steps

The overall mixed-integer linear problem is solved through three successive procedure steps, each building on the previous one.

Linear optimization

In the first procedure step, on-off dispatch decisions are neglected and nonlinear equations are linearized. The resulting total linear optimization problem is solved. The barrier method is used by default for solving. The optimization solving method can be set for linear problems in the project configuration with the parameter solver_optimizer_linear_problem.

Mixed-integer optimization

After the total linear optimization problem is solved in the first step, determined unit states are fixed each simulation sub time range begin and end. The subproblems (e.g., daily) are solved successively via a branch-and-cut method by default.

The following image depicts the mixed-integer approach and its hand-overs used as presets in the subsequent simulations.

Time decomposition to derive binary on-off dispatch decisions
Figure 0: Time decomposition to derive binary on-off dispatch decisions

The total time horizon is set in the scenario settings (default is 8760 hours). The sub time range is configurable in the project settings (default is 24 hours). Longer sub-time ranges require more processing time, and the increase in time is disproportionate due to the combinatorial complexity of the mixed-integer optimization problem.

The mixed-integer problem solving algorithm can be set in the project configuration with the parameter solver_optimizer_mixed_integer_problem.

For large exchange combinations, such as those involving numerous bidding zones or nodal pricing, system decomposition can be applied in addition to time decomposition in 90_grid_bidding_zones.csv. This approach fixes groups of bidding zones or nodes with their net balances (exchange sums), effectively reducing the mixed-integer problem complexity to practical levels.

Reoptimization

After the mixed-integer optimization procedure step, derived on-off dispatch decisions are fixed. Lastly, based on the derived operation points, the global optimization problem is linearized and solved. The solving algorithm equals the linear solving method (see linear optimization).

Submodels

The submodels considered vary depending on the selected steps in the simulation procedure. Each subsequent step includes the features of the previous step. Detailed information about submodels can be found in the input data definition.

Inflexible demand

SubmodelLinearMixed-integerReoptimization
Spot
FCR
aFRR positive
aFRR negative
mFRR positive
mFRR negative

Inflexible supply

SubmodelLinearMixed-integerReoptimization
Bioenergy power plants
Solar power plants
Wind onshore power plants
Wind offshore plants
Hydro run of river power plants
Thermal cogeneration plants
Grid external export
Grid external import

Flexible demand-side response

SubmodelLinearMixed-integerReoptimization
Consumer maximum load-increase
Consumer maximum load-decrease
Consumer maximum shift
Consumer maximum FCR power
Consumer maximum aFRR positive power
Consumer maximum aFRR negative power
Consumer maximum mFRR positive power
Consumer maximum mFRR negative power
Consumer load-shift efficiency
Consumer cost
Potential maximum load-increase
Potential maximum load-decrease
Potential maximum shift
Potential maximum FCR power
Potential maximum aFRR positive power
Potential maximum aFRR negative power
Potential maximum mFRR positive power
Potential maximum mFRR negative power
Potential load-shift efficiency
Potential cost
Mustrun, outage, revision maximum load-increase
Mustrun, outage, revision minimum load-increase
Mustrun, outage, revision maximum load-decrease
Mustrun, outage, revision minimum load-decrease
Work restriction maximum load-increase
Work restriction minimum load-increase
Availability
Availability event duration expectation
Availability event duration deviation

Flexible battery

SubmodelLinearMixed-integerReoptimization
Storage capacity
Storage maximum charge power
Storage maximum discharge power
Storage maximum FCR power
Storage maximum aFRR positive power
Storage maximum aFRR negative power
Storage maximum mFRR positive power
Storage maximum mFRR negative power
Storage efficiency charge
Storage efficiency discharge
Storage self-discharge
Storage state of charge start
Storage state of charge end
Storage cost
Mustrun, outage, revision maximum charge
Mustrun, outage, revision minimum charge
Mustrun, outage, revision maximum discharge
Mustrun, outage, revision minimum discharge
States of charge maximum
States of charge minimum
Availability
Availability event duration expectation
Availability event duration deviation

Flexible hydro

SubmodelLinearMixed-integerReoptimization
Power plant maximum power
Power plant height of fall
Power plant minimum power
Power plant maximum FCR power
Power plant maximum aFRR positive power
Power plant maximum aFRR negative power
Power plant maximum mFRR positive power
Power plant maximum mFRR negative power
Power plant efficiency
Power plant cost
Mustrun, outage, revision maximum charge
Mustrun, outage, revision minimum charge
Mustrun, outage, revision maximum discharge
Mustrun, outage, revision minimum discharge
Reservoir capacity
Reservoir leakage
Reservoir filling level start
Reservoir filling level end
Reservoir inflow
Reservoir filling level maximum
Reservoir filling level minimum
Availability
Availability event duration expectation
Availability event duration deviation

Flexible thermal

SubmodelLinearMixed-integerReoptimization
Power plant maximum power
Power plant maximum power efficiency
Power plant minimum power
Power plant minimum power efficiency
Power plant cost work
Power plant cost time
Power plant cost start
Power plant cost fuel cold start
Power plant cooling time constant
Power plant minimum time on
Power plant minimum time off
Power plant maximum FCR power
Power plant maximum aFRR positive power
Power plant maximum aFRR negative power
Power plant maximum mFRR positive power
Power plant maximum mFRR negative power
Power plant maximum mFRR positive power off-mode
Power plant state before type
Power plant state before time
Power plant state after type
Power plant state after time
Power plant unit upstream
Fuel price
Fuel emission intensity
Fuel price transport
Emission price
Mustrun, outage, revision maximum power
Mustrun, outage, revision minimum power
Fuel restriction maximum
Fuel restriction minimum
Emission restriction maximum
Emission restriction minimum
Availability
Availability event duration expectation
Availability event duration deviation

Flexible grid

SubmodelLinearMixed-integerReoptimization
Bidding zone spot
Bidding zone FCR
Bidding zone aFRR positive
Bidding zone aFRR negative
Bidding zone mFRR positive
Bidding zone mFRR negative
Bidding zone DSR
Bidding zone battery
Bidding zone thermal
Bidding zone hydro
Bidding zone onshore
Bidding zone offshore
Bidding zone solar
Bidding zone run of river
Bidding zone bioenergy
Bidding zone cogeneration
Bidding zone spot import extern
Bidding zone spot export extern
Bidding zone group
Bidding zone aggregation battery
Bidding zone aggregation hydro
Bidding zone aggregation thermal
Bidding zone aggregation DSR
NTC capacity
NTC cost
NTC bidding zone from
NTC bidding zone to
CNTC capacity
CNTC bidding zone from
CNTC bidding zone to
FBMC CNEC RAM
FBMC CNEC PTDF
FBMC AHC bidding zone from
FBMC AHC bidding zone to
FBMC AHC PTDF
FBMC AHC evolved
Reserve exchange capacity
Reserve exchange bidding zone from
Reserve exchange bidding zone to
Reserve exchange cost
Reserve exchange NTC competition
Mustrun, outage, revision maximum power
Mustrun, outage, revision minimum power
Availability
Availability event duration expectation
Availability event duration deviation

Fast mode

The total runtime for the three-step procedure is approximately 12 hours (for ENTSO-E region, 8760 hours, and 50000 components). Maon offers a fast mode that significantly reduces this time while still respecting all market equilibrium constraints, achieved by aggregating components. When battery, DSR, thermal, hydro, and grid components are aggregated to the maximum levels in all bidding zones, the procedure time drops to under five minutes. The higher the aggregation level, the faster the simulation. Intermediate aggregation levels allow choosing a specific trade-off between accuracy and speed.

Original and aggregated model data can be combined, if needed. For example, the aggregation method can be applied to all bidding zones except those in the focus region of the analysis. The aggregation level can be set in 90_grid_bidding_zones.csv. To further reduce simulation runtime, certain restrictions and functionalities (e.g., minimum down times, operation times, ramping constraints, or frequency reserve provision) can be disabled in the project configuration.

Serial

The procedure for serial runs is applied at the serial dispatch page by click on Run simulation.

Parametrizing multiple years can be done through annual scenarios and single runs (see single run). However, gapless simulations over longer periods (e.g., 2020 to 2040) require considerable effort, especially for many years (e.g., 21 years). To minimize this effort, serial runs can be applied. This approach utilizes the inheritance.

Serial runs require one initial scenario (e.g., 2020) and a derived scenario for a later year (e.g., 2040). The procedure automatically generates annual scenarios for each year in between (e.g., from 2021 to 2039), significantly reducing parametrization efforts. The following figure illustrates how the intermediate scenarios are created.

Automatic creation of scenarios in between via time interpolation and component inheritance
Figure 0: Automatic creation of scenarios in between via time interpolation and component inheritance

The serial run procedure is available in derived scenarios, where users can select the years in between and manage the runs. By default, the procedure starts with all years between the base and derived scenario.

Monte Carlo

The procedure for Monte Carlo runs is applied at the Monte Carlo simulation page by click on Run simulation. The procedure is available in base scenarios, where users can select the availability and climate years as well as manage the runs.

Parametrization

Parametrizing Monte Carlo runs can be done with the same data-sets as for single runs. However, the creation of single combinations of, for example, climate and outage years can require considerable effort, especially for many combinations (e.g., 1000 samples). To minimize this effort, Monte Carlo runs can be applied. This approach utilizes the inheritance.

Sampling

Monte Carlo runs require one base scenario (e.g., 2050) and at least one therefrom derived scenario for a climate year (e.g., 2012). The procedure automatically creates availability scenarios in the preprocessing as in single runs. Further, it combines climate and availability scenarios for all selected years, significantly reducing parametrization efforts.

Sampling is performed by creating and merging availability and climate scenarios. Availability scenarios are created with the availability preprocessing module in the base scenario. Climate scenarios represent other impact factors, such as climate impacts, found in the derived scenarios.

The components and their availabilities are sourced from the base scenario. All other data, including climate dependent impact factors, are loaded from the derived scenario, as illustrated in the table below.

FileBase scenarioDerived scenario
10_demands_spot.csv
11_demands_fcr.csv
12_demands_afrr_positive.csv
13_demands_afrr_negative.csv
14_demands_mfrr_positive.csv
15_demands_mfrr_negative.csv
20_dsr_consumers.csv
21_dsr_potentials.csv
22_dsr_mustruns_outages_revisions.csv
23_dsr_restrictions_work.csv
24_dsr_availabilities.csv
30_battery_storages.csv
31_battery_mustruns_outages_revisions.csv
32_battery_states_of_charge.csv
33_battery_availabilities.csv
40_bioenergy_power_plants.csv
50_solar_power_plants.csv
60_wind_onshore_power_plants.csv
61_wind_offshore_power_plants.csv
70_hydro_power_plants.csv
71_hydro_mustruns_outages_revisions.csv
72_hydro_reservoirs.csv
73_hydro_reservoir_inflows.csv
74_hydro_reservoir_filling_levels.csv
75_hydro_availabilities.csv
79_hydro_run_of_river_power_plants.csv
80_thermal_power_plants.csv
81_thermal_prices_fuel.csv
82_thermal_prices_emission.csv
83_thermal_mustruns_outages_revisions.csv
84_thermal_restrictions_fuel.csv
85_thermal_restrictions_emission.csv
86_thermal_availabilities.csv
89_thermal_cogeneration_plants.csv
90_grid_bidding_zones.csv
91_grid_ntcs.csv
92_grid_cntcs.csv
93_grid_fbmc_cnecs.csv
94_grid_fbmc_ahcs.csv
95_grid_reserve_exchanges.csv
96_grid_mustruns_outages_revisions.csv
97_grid_availabilities.csv
98_grid_external_exports.csv
99_grid_external_imports.csv

Investment

The procedure for investment runs is applied at the investment page by click on Run simulation.

Investment simulation runs through an iterative approach can be performed through the available interfaces. The documentation here is currently under development. For more information, please contact the Maon-Team.