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.

Deprecated functionality and planned changes

iLab Assistant

SHOP is an old program that has been under active development since the middle of the 1990s. From time to time it is necessary to remove deprecated functionality to keep the code base maintainable. This page lists functionality that is deprecated and scheduled for removal from the SHOP code, and also displays command and name changes.

SHOP 18.0.0 – Q2 2026

Name changes

BestProfit command changes

The command print bp_curves will result in an error if the command create bp_curves has not been called before the print bp_curves command. In addition, the options

will be removed from the print bp_curves command, as they are only used when the BP curves are created. Similarly, the “discharge” command will be removed from the create bp_curves command since it is only used when writing the BP curves to file.

C API change

The function

SHOP 19.0.0 – Q3 2027

Deprecated objects

The following objects are deprecated and will be removed in SHOP 19:

Object typeRecommended modelling approach
junctionReplace a junction with two or more tunnel objects, see the junction and junction_gate example.
junction_gateReplace a junction_gate with two or more tunnel objects. One or more of the tunnels should include a gate description to allow the tunnel to be closed, see the junction and junction_gate example. The interlock_constraint object can also be used to limit the number of tunnels that can be open or closed simultaneously
creek_intakeReplace a creek_intake with a small reservoir object connected to a tunnel object, see the creek modelling example for best practices.
gateA gate should be replaced with either a tunnel object or a river object, depending on what the gate was used to model. See the Replacing gate objects section below for more details

Replacing gate objects

Note that the gate object required special information when connecting them to reservoirs as either spill or bypass gates. This is not necessary with the tunnel and river modelling.

Deprecated ASCII structures

The SHOP ASCII format contains old structures that are no longer needed due to the existence of the API. The following specialized ASCII structures will be removed in SHOP 19:

ASCII structureRecommended modelling approach
MULTI_OBJECT_DATAThe MULTI_OBJECT_DATA structure that only exists in the ASCII format will be removed as it is not possible to map directly to the API. The various constraints have been moved to other objects, mostly the discharge_group and production_group objects
MARKETThe old MARKET structure should be modelled using the new market object available in the API and in the ASCII format
PLANT_OUTLETThe PLANT_OUTLET structure can be replaced by modelling a tunnel network below the plants
STARTRESThe STARTRES structure can be replaced by setting the start_vol or start_level for each reservoir object as a regular double value in the ASCII file
INITIAL_STATEThe INITIAL_STATE structure can be replaced by setting the initial_state or initial_state for each generator and pump object as a regular int value in the ASCII file
NETWORKThe old NETWORK structure should be modelled using the new busbar object available in the API and in the ASCII format

Changed attributes

Object typeAttribute nameChanges
reservoirpenaltyThe attribute will be renamed to water_balance_violation, while the old name is kept as an alias.
reservoirpenalty_nokThe attribute will be renamed to water_balance_penalty, while the old name is kept as an alias.
reservoirend_valueThe datatype will change from timeseries to double.
reservoirchange_in_end_valueThe datatype will change from timeseries to double.
objectivevow_in_transitThe attribute will be renamed to value_of_water_in_transit, while the old name is kept as an alias.

New attributes

Object typeAttribute nameDescription
rivervalue_of_water_in_transitThe value of remaining water in the river at the end of the optimization horizon.

Deprecated attributes

The following object attributes will be removed in SHOP 19:

Object typeAttribute nameRecommended modelling approach
generatorprod_areaThe busbar object should be used to model multiple load areas with ac_line or dc_line objects connecting the busbars together. See the power flow example for grid modelling. Each generator can be connected to a specific busbar.
plantprod_areaThe busbar object should be used to model multiple load areas with ac_line or dc_line objects connecting the busbars together. See the power flow example for grid modelling. Each generator and pump can be connected to a specific busbar.
plantprod_area_flagThe busbar object should be used to model multiple load areas with ac_line or dc_line objects connecting the busbars together. See the power flow example for grid modelling. Each generator and pump can be connected to a specific busbar.
planttime_delayThe river object should be used to model all forms of time delay. See the advanced time delay example for more information
plantshape_dischargeThe river object should be used to model all forms of time delay. See the advanced time delay example for more information
marketloadThe busbar object should be used to model the load, while the market object only models the prices and volumes traded in the market. See the battery example for a simple illustration.
marketload_penaltyThe busbar object should be used to model the load, and reports power_deficit, and power_excess
marketprod_areaThe busbar object should be used to model multiple load areas with ac_line or dc_line objects connecting the busbars together. See the power flow example for grid modelling.
marketreserve_obligation_penaltyThe reserve_group object is already used to model the reserve capacity obligation (such as frr_up_obligation), and already reports the violation of the obligation (such as frr_up_violation).
reservoirendpoint_penaltyUse the final point in the timeseries attribute penalty (to be renamed to water_balance_violation).
reservoirend_penaltyUse the final point in the timeseries attribute penalty_nok (to be renamed to water_balance_penalty).
reservoirvow_in_transitUse instead the new value_of_water_in_transit attribute on the river object, which represents the value of remaining water in a river at the end of the optimization horizon.

Deprecated commands

The effect of the following commands have already been removed from the SHOP code and will be deleted in SHOP 19:

Renaming commands

The following commands will be renamed, though the old name will still function as an alias:

Current command nameNew command name
start simstart optimization
start shopsimstart simulation

The documentation and API will only use the new command names after they have been renamed.

Name changes