Release Notes#
17.14.0 (2026-03-27)#
Technical chores#
Ticket 1387: Return model error if a plant with pump(s) is connected directly to a river downstream. (af139e8d)
Updated description for the p_rr_min attribute on pump and generator and the associated rr_up_stop_mip_flag/rr_down_stop_mip_flag and rr_up_stop_mip/rr_down_stop_mip (on global_settings) attributes. (c28e93d1)
Updated the SHOP Gurobi interface to be compatible with Gurobi v13.0.1 (7e4124d9)
Bug Fixes#
Ticket 1378: Avoid numerical issues when calculating q from p and head for generators with a low maximum turbine efficiency (5fd4e923)
Ticket 1391: Make sure the internal shop_network object is serialized properly when doing a partial serialization (55b97be6)
Updated the rr_up_stop_mip functionality on pumps in connection with the p_rr_min attribute, so that it works just as the rr_down_stop_mip functionality on generators. (daa7dd07)
Make sure that XYT attributes are also resampled when changing time resolution between iterations in SHOP (f8243921)
Features#
Ticket 1392: Front and back fill timeseries when they are resampled after time resolution has changed (33a40521)
Online SHOP: Implement REST API endpoints to save and load binary states through SHOP server, see the documentation: https://docs.shop.sintef.energy/examples/shop_server/shop_server_endpoints.html#utility-commands (a63e6b65)
User prioritized development: Implemented start and stop costs for flow in rivers (284c5301)
Implement a function call in the API to reset an attribute to its default value. Exposed in pyshop (commit 7775f67b) as: shop.model.generator.max_p_constr.reset() (f24dbbfc)
17.13.1 (2026-03-18)#
Bug Fixes#
Ticket 1384: Avoid a hard crash when a river with a up_head_flow_curve and a gate_opening_curve is not connected to an upstream reservoir (b6872686)
Ticket 1379: Allow needle combination objects to be connected to the generator object in arbitrary order. SHOP previously expected the needle combinations to be connected in order from lowest to highest production capability (837af9fc)
Technical chores#
Ticket 1383: Print a warning to the log instead of throwing an exception if the steps in the time resolution are too long compared to the time steps (187bf208)
Enforce first y-value to be zero in the up_head_flow_curve attribute on the river object, that is, no flow at the upstream_elevation river floor, and print warning if the user input is nonzero. (e18db7d2)
17.13.0 (2026-03-12)#
Bug Fixes#
Ticket 1371: Update the attribute description of the load_value attribute to specify which price is used to valuate the load (b9314938)
Ticket 1375: Increase the numerical tolerance in the BP algorithm to 1e-3 MW when selecting valid sets of needle_combinations for pelton units (4fb83039)
Features#
User prioritized functionality: Add documentation of NaN attributes and ensure consistent error handling (423af027)
User prioritized functionality: Implemented constraints to avoid delivering FRR reserves into forbidden operating regions of pelton units (156082d5)
Online SHOP functionality: Implemented an option for saving/loading only the internal (“partial”) SHOP session state, assuming that the model with both input and output attributes (the external state) have already been set by the user. (2512b78f)
Online SHOP functionality: Add the “update water_value_calculations” command to manually specify that energy conversion factors and global water values should be recalculated in the next iteration (46c9ba68)
Online SHOP functionality: Enable going back from incremental to full iterations when the online SHOP functionality is activated (8d08055a)
Expose the “set lp_info” command that can be used to minimize the data copied over to CPLEX for large SHOP models with long time horizons (60d728e8)
Technical chores#
Change “Future deprecation” to “Deprecated” in attribute documentation for clarity, and update time_delay_unit documentation (ab8d616c)
17.12.0 (2026-03-03)#
Bug Fixes#
Ticket 1370: Allow running SHOP with binary generators that only have a single point on each turbine efficiency curve (e21e4b66)
Ticket 1369: Avoid printing out warnings if the gen_eff_curve goes beyond the p_max of the generator (1e61ec4e)
Features#
Implement support for (de)seriailization of a full SHOP run with the online optimization license (72a8395b)
Make it possible to update the time resolution between iterations with the online optimization license (34a0eea3)
17.11.0 (2026-02-18)#
Bug Fixes#
Ticket 1367: Avoid infeasible models if a river has a gate_opening_curve but only one up_head_flow_curve (df404236)
Ticket 1363: The command “set stop_cost_from_start_cost” crashes if the startcost timeseries are not specified for all units (2f5109bc)
Ticket 1365: Print the attribute name instead of index when trying to set an attribute without the proper license in JSON (84fc708b)
XY_arrays are not correctly parsed in JSON format due to duplicate ref values (42c74a64)
Ticket 1362: Make variable time resolution work properly in the JSON format (c0761125)
Fix incorrect parsing of stochastic TXYs in ascii format, an incorrect connection from plant to needle_combination when reading ascii files, and an error when the nonphysical overflow warning is printed (ad35df8b)
Technical chores#
Add model testing warnings if river upstream_elevation is above upstream plant outlet_line or different from upstream tunnel end_height. (0ee2ec7a)
Various internal restructuring to enable serialization
Features#
Implement the input attribute disable_rsv_penalties on the reservoir object which can be used to disable reservoir penalties individually (ec6f1e4c)
Core internal functionality for full and partial serialization of the state of SHOP objects, with preliminary testing. (cc9b4dba)
Ticket 1351: Expose the “test case” command that can be used to run input data consistency tests without running a full optimization/simulation (79f52611)
Reduce the number of tunnel network simulations and reimplement the tunnel network flow equations for a tighter formulation (6ec7fb73)
17.10.1 (2026-02-17)#
Bug Fixes#
Ticket 1358: Avoid checking the SHOP license file twice when loading in a JSON model from pyshop (ac61b744)
Ticket 1359: Throw an understandable error if less than two points are given on the gen_eff_curve and turb_eff_curves on generator objects (87422280)
Fix errors in the bidding example in the documentation, and a crash if no sale price is defined on a market (5efda8ec)
Ticket 1357: The /mc_format option in the print bp_curves command may cause a segfault with pelton units if turbine efficiency curves are not reset properly (1d8128db)
Technical chores#
internal preparations for full serialization related to the Online SHOP project
17.10.0 (2026-01-28)#
Features#
Ticket 1339: Re-implement the gate optimization functionality for rivers to be more stable (8ccde379)
Bug Fixes#
Ticket 1322: Added computation of local water and energy values for pure pumping storages, i.e. the energy_conversion_factor is negative. The local water value is the global water value minus the global water value of the upstream reservoir. The local energy value is the local water value divided by energy_conversion_factor. (6d0cc073)
Fix a bug where the simulated river flow can be slightly negative, and make sure simulated reservoir penalties (sim_water_surplus and sim_water_deficit) are consistent when changing time resolution in the simulator (81facbb9)
Technical chores#
Various internal modernizations related to the Online SHOP functionality
Update Windows build to use Visual Studio Build Tools 18 (Visual Studio 2026) (1aaef76e)
Remove non-functioning “start shopsim” command options (/plant_mw, /plant_m3s, /optimize) (6d503a94)
Implement automatic and improved release notes generation (db9fdf8c)
17.9.1 (2025-12-29)#
Technical chores#
Add back double quotes in command documentation for correct python parsing (f174a98f)
17.9.0 (2025-12-19)#
Features#
Implement new command “activate online_optimization” which allows setting output attributes and objects so that a SHOP run may be continued with the Online SHOP license (b48cf096)
Implement new constraints for min gross startup head on generators and pumps (9cf817f9)
Technical chores#
Switch out almost all lib attributes definitions with a nicer version hiding the lambda functions (db4f596d)
Create a new function to loop over and allocate all output TXYs on all objects using the API (b8ce1464)
Bump nodejs version in vlab image to 22 (e200edbd)
17.8.4 (2025-12-03)#
Bug Fixes#
Ticket 1324: Moved handling of logging endpoint in SHOP Server from Session to Server to increase the lifetime of response-objects (7c69b246)
Lock Jupyter books to v1.0.4 because v2.x have a lot of breaking changes and requires rewrite of the documentation repository (9675caa8)
Technical chores#
Update discharge schedule description to include min/max/best flag values (6085c75f)
Add the Cereal package and start serialization of the SHOP core for the Online SHOP project (4ff28e96)
17.8.3 (2025-12-02)#
Technical chores#
Update fedora build with correct signing keys (19bab5cf)
17.8.2 (2025-12-01)#
Bug Fixes#
Ticket 1299: Make sure FCR-N and FCR-D have individual extra reserve capacity limits if both p_fcr_n_min/max and p_fcr_d_min/max are specified at the same time (169bd4b1)
Features#
Add packaging support for Fedora. (291ddb94)
Add signing of rpm packages. (311ecea1)
Add component based packaging. (462aa978)
Add project to repackage cplex as an rpm package. (59fd8caf)
Technical chores#
Avoid setting output-dirs or build-rpath on linux & use bundle-dir. (782f8933)
Add ccache to GitLab CI/CD for improved compilation times (e863baff)
Remove shop_linker_test. (204674c2)
17.8.1 (2025-11-26)#
Technical chores#
Clean up some raw pointers. Potential fix for ticket 1324 (b228ad75)
Give a warning for invalid options to the set method command (56adf3a7)
17.8.0 (2025-11-21)#
Bug Fixes#
Ticket 1323: The marginal cost calculated in the BP algorithm is incorrect for plants connected to a downstream tunnel going into a river (93c19c24)
Make sure CPLEX does not overwrite logfile in each iteration. Free additional memory capacity after LP model has been built (e91f4d03)
Make sure the correct unit on/off variable is retrieved when flex_mip is not used (b3a1bad0)
The water value of reservoirs only connected with rivers is not calculated in the simulator (d795bdfd)
Features#
Implement the Online SHOP license (c7ffd183)
Implemented min and max plant consumption and upflow constraints (fe9c74eb)
Technical chores#
Fix some compiler warnings (22aec29b)
Convert most char* stored in various SHOP objects to std::string (4030e033)
Modernise solver interface with vectors, unique_ptrs and member functions/constructors. (1d1dc739)
Store external arrays as std::vector internally (6cca210e)
17.7.0 (2025-11-11)#
Bug Fixes#
Ticket 1315: Incorrect negative plant head warning for plants connected to tunnel networks with constant downstream pressure (63d6b229)
Technical chores#
Add internal hardware as build runner (bce2e297)
Features#
Ticket 1313: Implemented new input to specify which direction the ramping_steps constraints should be built (3de3289b)
17.6.0 (2025-10-21)#
Bug Fixes#
Ticket 1253: Make the ramping_steps functionality more consistent with the old ASCII implementation (7cfac7ca)
Ticket 1307: Calculating q from p fails in BP algorithm if turbine efficiency curves go far below p_min (f928ebe5)
Features#
Ticket 1167: Implemented gross_head_min/max constraints for generators and pumps (aa24fa39)
Added output TXYs for the potentially fractional result of the on/off variable for pump, generator, and needle_combination (c6cb28dd)
Improve tunnel network solver slightly by improving initial solution guess (206980b5)
Technical chores#
Removed Python 3.9 and bumped default Python version to 3.14 (aec8a3be)
17.5.0 (2025-10-03)#
Bug Fixes#
Ticket 1281: Allow use of p_rr_min > 0 at the same time as rr_down_stop_mip is active (d1fcfd90)
Ticket 1306: Make sure BP uploading works for pelton units with the command option /mc_format (f1b67d2f)
Ticket 1304 and 1305: Implement use of Newton’s method for calculating Q from P in BestProfit (3c512936)
Ticket 1296: Fix the calculation of the maximum unbalance reported in the SHOP log (c494916f)
Features#
Implemented new constant double attribute versions of the TXY attributes startcost, stopcost, flow_cost, and max_flow. (5d42d13d)
Technical chores#
Add some internal debugging features for tunnel networks (a3b6f80b)
17.4.0 (2025-09-19)#
Technical chores#
Remove the unused log_file parameter from SHOP Server (93331d71)
Update SHOP internal readme (b96800ff)
Features#
Ticket 927 and 1244: Implement CPLEX termination via SHOP Server (885f4514)
17.3.0 (2025-09-12)#
Bug Fixes#
Ticket 1290: Vectorise the building of the LP model in SHOP to avoid insufficient memory allocation errors (aefbb4cc)
Ticket 1288: Pelton uploading in BP is incorrect when multiple pelton units are in the same unit combination (f9a3418c)
17.2.0 (2025-08-29)#
Bug Fixes#
Ticket 1265: Reimplement BP bid matrix code to avoid errors about adding empty XYs (9ed3b07d)
Ticket 1283: Fix potential crash when printing PQ curves to an xml file from the print_bp_curves command with the /mc_format option (5945fc38)
Technical chores#
Ticket 1286: Split out Armadillo + MKL into a separate shop_utility library (1a30724c)
Update armadillo to v15 and include the armadillo and intel MKL version numbers in the SHOP version number. (a7ae4fe5)
Split objective function into multiple parts for better clarity and less boiler-plate code (e85aee18)
17.1.0 (2025-08-18)#
Code restructuring#
Use the Armadillo linear algebra library to solve the tunnel network equations for increased speed and reliability (720db1ec)
Bug Fixes#
Ticket 1277: Removed automatic re-commitment of generators delivering FRR-up when MIP is off, even when p is below the cutoff limit. (02dcc89e)
Ticket 1194: Improve clarity of attribute units in the documentation (1f1aea14)
Ticket 1276: Create a default busbar object for models without any energy markets and user-defined busbars to avoid fatal model building errors (a3ac68bf)
Features#
Implementation of dynamic reservoir level constraints that limit the difference between min and max reservoir level within fixed time periods in the optimization (01510147)
Technical chores#
Fix technical dept related to type forward declarations and null pointer handling (5cc8fa6b)
Remove old and deprecated thermal unit description from code base (f66e3ffc)
Print a warning to the log if turbine or generator efficiency curves are given as numbers between 0 and 1 instead of 0 and 100 (685f1670)
17.0.0 (2025-07-04)#
Technical chores#
Added openblas and armadillo packages and updated vcpkg to newest version (1d4b3497)
Fix crashes in the bulk tester (7e0647dd)
Code restructuring#
Restructure building of PQ curves in full model with and without MIP (9c75d6bb)