Storages¶
Storages allow to represent the management of any short-term storage with the following main characteristics :
- Storages managed on cycles that are sub-multiples of the Antares optimization window (week or day) - by cycle we mean that at the end of the cycle the stock must return to the level at the start of the cycle.
- Rule curves that frame the admissible levels hour by hour, the authorized range is a subset of the 0-100 range
- Maximum power chronicles for storage and releasing
- Natural inflows (case of open cycle Pump-Storage Plants)
In order to control the trajectory of each storage and discriminate between equivalent solutions, it is possible since v9.2 to add:
Multiple short-term storages can be created by considering the following relationships :
- Each storage belongs to a given node
- Each node can contain several storages
Parameters¶
Operating parameters¶
Group¶
enum The type of storage for aggregation in the general values output:
psp_openpsp_closedpondagebatteryother1other2other3other4other5
Name¶
string User defined name for the cluster.
Enabled¶
bool Whether to enable this cluster.
Stock (MWh)¶
float The storage maximum capacity \(S_\text{max}\) (linked to an hourly modulation of min and max capacities time series).
Initial level optimized¶
bool Whether to allow each week to reoptimize the initial storage level. In this case the level is discontinuous between weeks. Otherwise, the initial level is imposed by the user and is identical each week.
Initial level (%)¶
int To be considered only if Initial level optimized is disabled (\(p_0\)). In this case corresponds to the ratio of the storage level between empty 0 and full 100.
Stored parameters¶
Stored (MW)¶
float Maximum possible power injection \(P_\text{stored}^\text{max}\) in the storage linked to hourly modulation of the maximum injection power time series.
Stored efficiency (%)¶
int Efficiency \(e_\text{stored}\) of the process of injecting power inside the storage.
Penalty on injection variation¶
bool Whether to penalize the variation in the injection flowrate.
Released parameters¶
Released (MW)¶
float Maximum possible power withdrawal \(P_\text{released}^\text{max}\) from the storage (linked to an hourly modulation of the maximum withdrawal power).
Released efficiency (%)¶
int Efficiency \(e_\text{released}\) of the process of withdrawing power from the storage.
Penalty on withdrawal variation¶
bool Whether to penalize the variation in the withdrawal flowrate.
Info
Antares Web doesn't use the terms Max Injection for Stored and Max withdrawal for Released because it depends whether you do a study from the point of view of the grid or from the point of view of the storage.
Time series¶
Modulation¶
Stored modulation¶
matrix The values \(\text{mod}_\text{stored}(h)\) entered are dimensionless decimal numbers, between 0 and 1. This involves modulation of the injection capacity each hour in the storage, reflecting lower availability of the storage at certain times (planned or forced outages).
Released modulation¶
matrix The values \(\text{mod}_\text{released}(h)\) entered are dimensionless decimal numbers, between 0 and 1. This involves modulation of the withdrawal capacity each hour from the storage, reflecting lower availability of the storage at certain times (planned or forced outages).
Rule curves¶
Lower rule curve¶
matrix The values \(S_\text{lower}(h)\) entered are dimensionless decimal numbers, between 0 and 1. This is the lower limit for filling the stock, expressed as a filling rate, imposed each hour.
Upper rule curve¶
matrix The values \(S_\text{upper}(h)\) entered are dimensionless decimal numbers, between 0 and 1. This is the upper limit for filling the stock, expressed as a filling rate, imposed each hour.
Info
Implicit rule for all hours : modulation of min capacity \(\leq\) modulation of max capacity
Inflows¶
Time series (MW)¶
matrix Natural inflows \(I(h)\) in MW that enters into the storage. The values for this file can be negative, corresponding to withdrawals imposed on the stock for other uses (for example agricultural withdrawals or imposed discharging of EV batteries).
Costs¶
Stored cost (€/MW)¶
matrix Penalizes the injection flowrate at each hour (\(c_\text{stored}(h)\)). This penalty must be positive. This penalty will add an injection cost in the model.
Released cost (€/MW)¶
matrix Penalizes the withdrawal flowrate at each hour (\(c_\text{released}(h)\)). This penalty must be positive. This penalty will add a withdrawal cost in the model.
Variation costs¶
Stored variation cost (€/MW/h)¶
matrix Penalizes the injection flowrate variation every hour (\(c_\text{var, stored}(h)\)). This penalty must be positive. This penalty is only enabled if the boolean parameter penalty on injection variation is enabled. This penalty will penalize proportionally any injection flowrate variation between 2 hours.
Released variation cost (€/MW/h)¶
matrix Penalizes the withdrawal flowrate variation every hour (\(c_\text{var, released}(h)\)). This penalty must be positive. This penalty is only enabled if the boolean parameter penalty on withdrawal variation. This penalty will penalize proportionally any withdrawal flowrate variation between 2 hours.
Level cost (€/MWh)¶
matrix Penalizes the volume of stored energy at each hour (\(c_S (h)\)). A negative penalty is allowed for this cost. If the penalty is positive, it will favor lower-level trajectories. If the penalty is negative, it will favor higher-level trajectories.
Additional constraints¶
When solving the problem of short-term storages, Antares then finds the evolution of 3 variables:
- Level \(S(h)\) (in MWh) of the storage
- Charge \(P_\text{stored}(h)\) (in MW): incoming power
- Discharge \(P_\text{released}(h)\) (in MW): outgoing power
You can set additional constraints on these variables to restrict the solutions of the problem.
Additional constraints are a powerful feature that allow to couple a set of time steps to apply the constraint on (see the constraint equation). For example, additional constraints allow to model a daily constraint on a range of hours such as the amount of power injection in the storage should be bounded between 10am and 2pm.
Name¶
string Name of the additional constraint.
Variable¶
enum The different variable on which you can apply the additional constraint:
- Level variation \(S(h) - S(h-1) - I(h)\).
- Charge \(P_\text{stored}(h)\).
- Discharge \(P_\text{released}(h)\).
Bounds¶
enum The different possibilities of bounds for the constraint:
- \(=\)
- \(<\)
- \(>\)
Enabled¶
bool Whether to enable this additional constraint for the simulation.
Occurences¶
matrix Boolean matrix of the hours where there the constraint applies (see more in the additional constraint equation).
Time series¶
matrix Right-hand side $\text{RHS}" of the constraint.
Equations¶
General model¶
The goal of Antares is to find the variables:
- \(P_{\text{stored}}(h)\) the power injection inside the storage at each hour.
- \(P_{\text{released}}(h)\) the power withdrawal from the storage at each hour.
- \(S(h)\) the stock level at each hour.
These variables are bounded by:
Finally, these variables are related in the dynamical equation:
Info
The implicit convention is that the stock level at the end of the week is equal to the initial level if the parameter initial level optimized is disabled.
Penalty model¶
Penalties can be added to the objective function.
- On level: \(S(h) \, c_{S}(h)\)
- On injection flowrate: \(P_\text{stored} \, c_\text{stored}(h)\)
- On withdrawal flowrate: \(P_\text{released} \, c_\text{released}(h)\)
When there is penalization on the stored/released variation there are two new variables introduced:
- \(P_\text{var, stored}(h)\)
- \(P_\text{var, released}(h)\)
Then the penalty is:
- \(P_\text{var, stored}(h) \, c_\text{var, stored}(h)\)
- \(P_\text{var, released}(h) \, c_\text{var, released}(h)\)
Additional constraint model¶
For a given constraint, with hours \((h_{i,j})\) such as:
Let \(s \in [1,52]\) a week of an Antares sub-problem to solve, and \(H_s\) the hour in the annual reference frame that preceded the first hour of week \(s\), such as \(H_s = 168 \times (s - 1)\) for the week \(s.\)
The constraint \(i\) corresponding to the \(i\)-th block or occurrence of the hours \((h_{i,j})\) is
where \(\text{variable}\) corresponds to the variable charge, discharge or level, and \(\text{bounded by}\) corresponds to one of the following operators \(\{\leq, =, \geq\}\).