Economic Dispatch
Description
Optimises dispatch of energy purchase and energy storage units given predictions on consumption and production.
Data
Input for optimisation
Subscription | Topic | Payload |
---|---|---|
ResourceForecast.Load.# and ResourceForecast.Generator.# | ResourceForecastState.(ResourceCategory).(ResourceId) | Forecasts for (non-controllable) resource utilisation |
PriceForecastState.# | PriceForecastState.(MarketId).(ResourceId) | Electricity price forecasts for each hour |
ResourceState.Storage.# | ResourceState.Storage.(ResourceId) | Resource initial state (battery state of charge) |
Request.(MarketId) | Flexibility needs from LFM | |
LFMMarketResult.(MarketId) | Flexibility results from LFM |
Scenario/configuration parameters:
ED and resource parameters given at startup as declared in Start message blocks:
- ED component name from environment variable SIMULATION_COMPONENT_NAME
At least the following in the environment variables:
- Forecast horizon and optimisation time step length (or defaults)
- List of resources to be included
- LFM market id (if applicable)
Some resource parameter values are read from Start message blocks
- At least storage resource initial kwh, max capacity
- ( Defaults are implemented internally in the Economic Dispatch - note this if defaults change! )
Outside initialisation, the following is needed for flexibility implementation:
- CustomerId relation to resource names (for connection to PGO flexibility Request) is read from Init.CIS.CustomerInfo message
Example configuration file:
EconomicDispatch:
EconomicDispatchA:
Horizon: PT23H
Timestep: PT1H
Resources:
- - StaticTimeSeriesResource
- Load1
- - StaticTimeSeriesResource
- Load2
- - StaticTimeSeriesResource
- Load3
- - StaticTimeSeriesResource
- Load4
- - PriceForecaster
- MarketA
- - StaticTimeSeriesResource
- EV
- - StaticTimeSeriesResource
- PV_large
- - StaticTimeSeriesResource
- PV_small
- - StorageResource
- StorageA
Publish
Topic | Payload |
---|---|
ResourceForecastState.Dispatch | The dispatch/schedule |
Offer.(MarketId) | Flexibility bids to LFM (if applicable) |
Optimised Resources
The following units are included:
-
Static loads and generators
-
Forecasts from Static time series resource, message ResourceForecastState.Power
- Includes predictions for consumption and production
-
Electricity markets
-
Forecasts from PriceForecaster, message PriceForecastState
- Includes predictions on the price of power to the ED units
-
Storages
-
Initial state from Storage resource, message ResourceState
- Max storage, charge/discharge efficiencies, etc read from start message
Dispatch includes:
- Amount to charge/discharge storage per time interval
- Amount of energy bought from markets per time interval
Workflow
ED component functionality is message triggered. The optimisation relies on input data and therefore we have a barrier for execution; all input data needs to be received before executing/solving the ED problem:
- Simulation is started
- Initialisation as declared above in "Scenario/configuration parameters"
- Epoch message is received for a new epoch. ED resets barrier arrive counter.
- ED waits for input data. Arrive counter keeps track of what has arrived. When all input data that is needed has arrived ED solves its optimisation problem. (Input data: Power, Price (, etc) forecasts involved resources.)
- LFM: If accepted Offers from previous epochs, will receive LFMMarketResult for those
- ED sends its results in Dispatch message.
- ED receives state information (StorageResources, state for start of next epoch)
- LFM: Flexibility Request received → Publish Offer (multiple / if none → publish Offer with zero count)
- LFM: LFMMarketResult received
- Status: "Ready" (If LFM status = "Ready")
- Repeat steps 3-9.
- Resource receives a SimState message "stopped" from SimulationManager.
- Resource closes itself.