There is a Monte Carlo function in the 2‐D Optimization Examples VBA program that simulates the stochastic outcome of a reservoir—Function 18. Reservoir capacity and nominal level are the decision variables. The models are described in Appendix E.
The larger the reservoir and associated dam, the greater the initial cost. Cost is the objective function. So, superficially, the solution is to build a small dam to reduce cost.
However, if the reservoir is too small, and/or it is maintained nearly full, it does not have enough capacity to absorb a flood due to exceptionally heavy upstream rainfall and it will transmit the flood downstream. Downstream flooding incurs a cost of damaged property. But the chance of a flood and the magnitude of the flood depend on the upstream rainfall. So, the simulator models a day‐to‐day status with a lognormal rainfall distribution for a time period. I set it to 20 years, but you can change it.
Contrasting flooding conditions are drought conditions. If the reservoir is too small, and/or maintained with little reserve of water, an upstream drought will require stopping the water release, which stops downstream river flow. Downstream dwellers, recreationists, or water users will not like this. There is also a cost related to zero downstream flow.
There is a fixed cost of the structure and a probabilistic or stochastic penalty cost of extreme events.
Since one 20‐year simulation will not reveal the confluence of “100‐year events,” the simulator runs 50 reservoirs for 20 years each—50 realizations of the 20‐year period. You can change the number of realizations.
The function is set up to return either the maximum cost for the 50 realizations or the estimated 99% probable upper limit on the cost. You could choose another performance indicator.
An excessively large reservoir kept half full will have ample reserve (to keep water flowing in a drought) and open capacity (to absorb excess rainfall and prevent downstream flooding), but it will cost a lot. A smaller reservoir will have less cost. But too small a reservoir will not prevent problems with drought or flood. So, there is an in‐between optimum size.
If the nominal reservoir volume is near the full mark, then the reservoir will not be able to absorb floods, but it will have plenty of capacity for a drought. If the nominal level is too low, it will be able to absorb water and prevent a flood, but not keep water flowing for a drought event. So there is an in‐between set point capacity that is best. The optimum set point for the level might not be at 50%. It depends on whether the vagaries of rainfall make floods a bigger event than droughts.
For any given sized reservoir, the fuller it is kept, the greater is the fresh water reserve (for supply to cities) and recreational area. So, other benefits are added as a negative penalty to the cost.
There is a fixed cost of the structure, a probabilistic or stochastic cost of extreme events, and a negative penalty for reserve and recreation benefits.
Figure 40.1 is a plot of the OF versus DV1 and DV2. The left‐front axis represents reservoir size. The right‐front axis represents level set point. Both are scaled 0–10 and the cost (vertical axis) is also scaled 0–10.
Figure 40.2 reveals a contour plot with size as the horizontal and level set point as the vertical axis.
Notice that for very large reservoir sizes, the set point level is irrelevant to upstream floods or droughts. The diagonal contours in the central region reflect a preference for lower cost tempered by the benefits of larger reservoir capacity and water levels. The optimum in this simulation is around x1 = 2 and x2 = 3.
Notice that the large central region of the function is planar. Cost is not affected by flood or drought events and scaled linearly with size and set point. Second‐order optimizers will encounter a divide by zero EXE error when a trial solution is on the central plane.
Notice that the optimum and disaster‐free region of diagonal contours is surrounded by a noisy boundary, and every realization gives different values, depending on the outcome of the realizations. How will you define stopping criteria? What optimizer should you choose?
Because this “realistic” simulation takes computational time, I added Function 20 (Stochastic Boot Print) to provide a computationally rapid surrogate with the same linear and stochastic features.