You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#3133 got me thinking about how the allocation optimization problems can be simplified to increase performance when needed.
Looking at that issue, we see that we can use all the equality constraints to reduce the problem to only a small number of unknowns, namely all the flows that are controlled by allocation. The remaining complexity comes from the bounds, where there are 2 categories:
Bounds for goal programming (relatively small amount)
Others: non-negative storage, storage upper bounds, etc.
So here is my idea:
Get rid of all non-goal programming bounds (but keep the ones on the controlled flows);
Investigate whether HiGHS is then able to reduce the problem to only the allocation controlled flows. If not, we can do our own problem transformation;
Enforce the non-goalprogramming bounds with an isoutofdomain-type mechanism as it exists in the physical layer: check the bounds after the whole allocation solve, if any of the bounds are not met, run allocation again with a smaller timestep.
The performance gain here really depends on how cheap the new formulation is and how often allocation timesteps get rejected because of bound violations.
@jarsarasty I'm really interested in your take on this!
The problem transformation
The equations in #3133 yield the following linear system in $\Delta S$:
This linear system is similar to the ones discussed #3113, #3125 and #3127, but note that the second term in the right hand side is expressed in terms of $S_\text{c}Q$ and $S_\text{UD, in}Q$, precisely the flows to be optimized by the allocation algorithm. Now we can solve this linear system to express the storage changes in terms of the to be optimized flows. This has 2 goals:
Some storage changes are needed in the optimization problems; for level demand and for putting bounds so that the to be optimized flows do not cause negative storage in their directly upstream Basin;
After the optimization we want to know $\Delta S$ for output and bounds checking (also the physical flows which can be directly computed with the expression for $S_\text{p}Q$ in Systematic linearization for allocation #3133).
For the route optimization objective we can also express the cost in terms of the to be optimized flows.
The idea
#3133 got me thinking about how the allocation optimization problems can be simplified to increase performance when needed.
Looking at that issue, we see that we can use all the equality constraints to reduce the problem to only a small number of unknowns, namely all the flows that are controlled by allocation. The remaining complexity comes from the bounds, where there are 2 categories:
So here is my idea:
isoutofdomain-type mechanism as it exists in the physical layer: check the bounds after the whole allocation solve, if any of the bounds are not met, run allocation again with a smaller timestep.The performance gain here really depends on how cheap the new formulation is and how often allocation timesteps get rejected because of bound violations.
@jarsarasty I'm really interested in your take on this!
The problem transformation
The equations in #3133 yield the following linear system in$\Delta S$ :
Here:
This linear system is similar to the ones discussed #3113, #3125 and #3127, but note that the second term in the right hand side is expressed in terms of$S_\text{c}Q$ and $S_\text{UD, in}Q$ , precisely the flows to be optimized by the allocation algorithm. Now we can solve this linear system to express the storage changes in terms of the to be optimized flows. This has 2 goals:
For the route optimization objective we can also express the cost in terms of the to be optimized flows.