Optimization
The following changes have been made to RiverWare optimization.
Optimization Units
When RiverWare formulates the internal representation of the optimization problem, values are represented in optimization units. The optimization units are similar to RiverWare standard units but with scaling factors specific to optimization applied. Proper scaling of the optimization problem is important for numeric stability. Improper scaling can result in improper freezing and, subsequently, infeasible solutions.
Previously, the optimization unit scaling factors were hard-coded in RiverWare. Now, you can modify the scaling factors in the Optimization Run Parameters. Modifying the optimization unit scaling can be important for maintaining proper scaling in models with a 5 Minute or 15 Minute timestep. See
Optimization Units and Scaling in Optimization for more information.
Objective Function Coefficient Warning
When coefficients on variables in the internal representation of a Minimize or Maximize objective function are too small, improper freezing and, subsequently, infeasible solutions can result. RiverWare now issues a warning message if any coefficients in a Minimize or Maximize objective function are below a specified threshold value. The default threshold is 0.0001, and you can modify this in the Optimization Run Parameters. The warning message also indicates the minimal multiplier that must be applied in the RPL objective function expression so all coefficients will be larger than the threshold.
CPLEX LP Method
The default setting in RiverWare for the Optimization LPMETHOD parameter is “Automatic: let CPLEX choose.” With this setting, CPLEX can potentially select a solution method that utilizes multi-threading. CADSWES discovered an issue that can occur related to the multi-threading that can cause the optimization to stop executing. This issue has been filed as RW-6435. CADSWES is in communication with CPLEX regarding a long-term solution to this issue. As a temporary solution for RiverWare 8.2, if the LPMETHOD parameter setting is “Automatic: let CPLEX choose” or “Concurrent,” both of which potentially use multi-threading, RiverWare will automatically switch the setting to “Primal simplex,” which is always single-threaded. A warning will be issued to the diagnostic output at the beginning of the optimization run to alert you of this change. This change will not cause differences in objective values. In some test cases, CADSWES observed a small increase in solution time. In other test cases, the solution time decreased. This change will not affect models that use a setting other than “Automatic: let CPLEX choose” or “Concurrent.”