Sienna-Platform / Sienna-Platform/PowerOperationsModels.jl
The penalty for the cycling slack variable is too small and there is no implementation without the slack variable
@rodrigomha is already working on this.
Since Sep 16, 2025.
- Dominant language
- Julia
- Stars
- 2
- Forks
- 1
- Avg merge
- 1d 16h
- Merged PRs (30d)
- 26
Description
The problem is two fold:
- the use_slacks = false as indicated in https://nrel-sienna.github.io/StorageSystemsSimulations.jl/stable/formulation_library/StorageDispatchWithReserves/
StorageDispatchWithReserves · StorageSystemsSimulations.jl
Documentation for StorageSystemsSimulations.jl.
won't work because there's no implementation for the no slack version of the constraint - The const CYCLE_VIOLATION_COST = 5e3 is effective 50 when using p.u. which make the cycle violation to be huge when the overall energy cost for the system is high.
Proof for NREL-Sienna/StorageSystemsSimulations.jl#2 is:
1000 ActivePowerInVariable_EnergyReservoirStorage_{VPP_BESS,_22} + 1000 ActivePowerInVariable_EnergyReservoirStorage_{VPP_BESS,_23} + 1000 ActivePowerInVariable_EnergyReservoirStorage_{VPP_BESS,_24} + 5000 StorageChargeCyclingSlackVariable_{VPP_BESS} + 5000 StorageDischargeCyclingSlackVariable_{VPP_BESS} + 1000000 slack_{SystemBalanceSlackDown,_2502,_1} + 1000000 slack_{SystemBalanceSlackUp,_2502,_1} + 1000000 slack_{SystemBalanceSlackDown,_25023,_1} + 1000000 slack_{SystemBalanceSlackUp,_25023,_1}
We have 10$/MW for charging, which is showing up right, which makes the penalty for slack variable 50$/cycle.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.