Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

penalty cost

iLab Assistant

Change various global penalty costs. Note that the SOFT_CONSTRAINTS_FUNCTIONALITY license is required for the options soft_p_penalty and soft_q_penalty.

Options/reservoir, /endpoint, /ramping, /load, /overflow, /overflow_time_adjust, /gate, /discharge, /all, /powerlimit, /reserve, /soft_p_penalty, /soft_q_penalty
Value
LicenseSHOP_OPEN
Release version13.0.0.a

Penalty Costs

The cost of each penalty variable can be changed with the command:

penalty cost /<option1> (/<option2>) <value>
Comment
allSet all penalty costs
reservoir
rampingSet reservoir ramping penalty cost
endpointSet reservoir penalty cost, including endpoint
gate
rampingSet gate ramping penalty cost
loadSet load penalty cost
powerlimitSet power limit penalty cost
dischargeSet production penalty cost, name confusion due to historical reasons
overflowSet overflow penalty cost
overflow_time_adjustSet overflow time adjustment factor
reserveSet reserve penalty cost
soft_p_penaltySet all plant production penalty costs
soft_q_penaltySet all plant and gate discharge penalty costs

If command not set: Penalty values according to the table below will be used.

PenaltyCostUnit
Reservoir ramping penalty100NOK/Mm3
Reservoir penalty10000000NOK/Mm3
Gate ramping penalty360NOK/(h∙m3/s)
Load penalty5000NOK/MWh
Power limit penalty10∙load penalty (=50000)NOK/MWh
Production penalty (/discharge)100NOK/MWh
Overflow penalty50000NOK/Mm3
Overflow time adjustment-1.0e-6NOK/(Mm3∙h)
Reserve penalty1000NOK/MWh
Soft production penalty100NOK/MWh
Soft discharge penalty100000NOK/Mm3

The default penalty costs can be seen in the table above. The values are referred to as the number of basis units in the currency used in SHOP, not necessarily NOK as listed in the table above. The reservoir endpoint values are also the one used for the reservoirs penalties, if no individual values are given.

The overflow_time_adjust requires a bit more explanation. Its purpose is to give an incentive to delay overflow towards the end of the optimization period. For a given time step, this value is multiplied by the number of hours since the start of optimization and added to the overflow cost. The default value may be too small in some cases, especially if head optimization gives strong incentives to fill up buffer reservoirs.