skip to main content
Optimization
Multiple Run Management
Multiple Run Management is now working, but the testing on realistic models has been limited. To truly test MRM TVA should develop DMIs for MRM. If the DMIs are correct, we would expect that MRM will get the same results as manually running consecutively, and calling the single run DMIs between runs.
Lambda Cuts
Writing constraints on single variables that are part of a lambda representation now cause RiverWare to automatically add cuts to eliminate lambda variables and reduce linearization error. For example, writing the policy constraint Wheeler.Outflow >= 10 leads to cut constraints that will gradually reduce and eventually eliminate all lambda points with Outflow less than 10 as this constraint is satisfied. In our testing, these constraints have added about 25% to the run time of a model. The cut constraints can be turned off at a reservoir by selecting an appropriate method. We suggest this be tested for excessive run time on current models. In addition, this improvement in the lambda approximations suggests that it now makes sense to selectively increase the number of lambda points used in the lambda approximations. This will require a change in DMIs.
Marginal Cost
We have added a Previous Marginal Cost slot. If the generation is between blocks, the Previous Marginal Cost slot will reflect the block cost as generation is reduced while the original Marginal Cost slot will reflect the cost of increasing generation. If the generation is in the middle of a block both costs should be the same. We also added a table slot, Block End Tolerance. If the generation is within this value of the end of a block it will be considered to be at the end in terms of the marginal costs reported. If this value is NaN, it is replaced with zero which will cause the Previous Marginal Cost and Marginal Cost to be identical.
Performance Improvement
Performance improvements were made which are particularly noticeable in models with long run times on “No Spill” constraints. However, the gains have been somewhat offset by the increased run times of the Lambda cuts.
Smoothed Energy
The original smoothed energy task is completed and functional, but the results indicate that some modifications need to be made before it is useful for river scheduling.
Spill Input
Spill (or any type of spill) can be set to input for optimization and the result will be preserved in post-optimization simulation. Also, all of the simulation spill categories now have optimization counterparts.
Linearization Zero Terms
When linearization generates a term with a zero coefficient that term is not added. Previously this led to additional unnecessary linearizations and data demands.
Diagnostics
CPLEX diagnostics are now directed to the RiverWare diagnostics window. This change led to fixing several bugs that previously had gone undetected.
A number of warnings have been rewritten to be more clear and additional warnings have been added.
Bug Fix Highlights
When an expression slot divides by zero, the user now receives an error message to indicate the cause.
The value -0.0 appears to have been eliminated. Two independent sources were fixed.
The model no longer aborts if an entire priority is eliminated implicitly by use of the BY operator and slots with NaN. Additionally, the error message associated with this error has been improved.
Several problems with the optimization parameter dialogs were fixed.
Revised: 07/05/2022