A real-world benchmark problem for hydropower optimization with dynamic operational constraints
Data files
Jan 15, 2026 version files 2.22 MB
Abstract
The related paper tests the ability of different reservoir operation models to represent a relatively simple water rationing policy through a multi-year simulation of the Upper Krishna River Basin in India. The tested policies involve reductions in water demand as a function of storage levels. The models that were tested include Mike Hydro Basin, the Water Evaluation and Planning (WEAP) model, HEC-ResSIM model, and the WEB.BM model. Two more simulation models were tested by their vendors, who subsequently declined joint participation in this publication. The models utilized single-timestep progression and assumed steady-state flows, implying an expectation of similar solutions among the models. The results show that Mike Hydro Basin and HEC-ResSIM fail to allocate water according to the prescribed rules. The paper provides a problem description and downloadable input and output data. Modelling practitioners can test the performance of their models by using the benchmark solution presented in this paper.
The spreadsheet contains the input data and several model solutions for the test problem outlined in this paper. The purpose of the test is to enable water resources simulation model vendors and users to test the performance of various models. Also, the database contains an additional document with accompanying information provided by Dr. Becker.
Dataset DOI: 10.5061/dryad.r7sqv9ss3
Description of the data and file structure
This evaluation spreadsheet is associated with the open-access publication titled “A benchmark test problem for reservoir simulation models and comparison of their results”, Hydrological Sciences Journal, https://doi.org/10.1080/02626667.2025.2596274. The spreadsheet contains the input data and several model solutions for the test problem outlined in this paper.
Model vendors can test their models using the input data located in the “Complete input data” worksheet, based on the explanation of the problem in the relevant publication. This includes the inflow data series for 13 years on a weekly basis, storage capacity curve, maximum turbine flow as a function of storage, tailwater rating curve, and the minimum required weekly power demands.
The use of the spreadsheet involves copying the turbine flows and reservoir spills from the vendor’s solution into columns G and H, respectively. The spreadsheet will immediately recalculate the turbine flows based on the mass balance and check all model constraints. The worksheets in the spreadsheet are explained in more detail below.
The “Karun Reservoir RTC tools” pdf file provides additional information related to the RTC solution approach and its homotopy method. This is a stand-alone, self-explanatory document that may be of interest to individuals with a solid background in Operations Research.
Description of the Excel Evaluation Spreadsheet
Final_Evaluation_Spreadsheet_13yrs_14112025_flow_avg_option.xlsx
Model vendors can test their models using the input data located in the “Complete input data” worksheet, based on the explanation of the problem in the relevant publication. The worksheets provided in the evaluation spreadsheet as explained below:
Worksheet “Input”
This worksheet has four columns, which are explained below:
Column A: The cumulative number of the simulated week starting from 1 to 704, which accounts for the total for 13. 5 years. Only the first 13 years (676 weeks) were used in the simulation.
Column B: This column contains the time series of average weekly inflows which are used as model input for the first 676 weeks.
Column C: Minimum weekly power demands that have to be produced in each simulated week are given for one year (52 values). These minimums are to be maintained for all years in the same sequence (i.e. the minimum power demand in week 1 in the first year is the same for week 1 in all other simulated years, and the same goes for weeks 2, 3, etc.)
Column D: Minimum River Maintenance flows that have to be maintained in each simulated week. These are also given for one year and repeated from year to year without changing the individual weekly values, which remain the same from year to year.
Worksheet “Complete Input Data”
Columns A, B and C contain the year, week and the value of average reservoir inflow in m3/s
Columns D, F and G contain the week number, the minimum power demand in MW and the minimum environmental flow target (or river maintenance target) flow (m3/s).
Columns I, J and K contain the elevation (m), area (ha) and Volume (1000 m3)
Columns M and N contain the pairs of elevation (m) and Maximum Turbine flow (m3/s)
Columns P and Q contain the Rating curve for the hydropower plant, i.e. Elevation (m) versus downstream river flow (m3/s), which is used to calculate hydropower.
Cells M12, M13, M18 and M19 contain the starting and minimum ending storage levels (m), the maximum and minimum operating levels (m).
Worksheet “quadratic representation”
This spreadsheet shows the quadratic representation of the Tail Water Curve for hydropower plant (water elevation as a function of total outflow from the dam), as well as the elevation vs volume curve. The functional representations are given in the excel plots using the trendline polynomial fits.
Worksheet “Summary Table” summarizes the results of all model solutions listing the number of the model used (column ), the names of the authors (column B), Model Name (column C), number of the minimum storage violations (column D), number of maximum operating storage violations (column E), number of maximum turbine flow violations (column F), number of m number of minimum weekly hydropower violations (column G), agerve generated power for all simulated weeks in MW (column H), total generated energy in TWh (column I), execution time and processor specifications (column J) and the name of the solver package and coding approach (column K).
Worksheet “Non-Lin. RTC Bernhard” (and all other subsequent worksheets)
Column A: simulated year
Column B: length of week in days (the last week of the year is 8 or 8 days, depending on whether the year is a regular year or a leap year)
Cell C3: initial volume at the start of the simulation in millions m3
Column D: week number
Column E: average weekly inflow in m3/s
Column F: weekly flow volume in millions of m3 (values from column E converted to volume)
Column G: turbine flows copied from various model solutions (m3/s)
Column H: reservoir spills copied from various model solutions (m3/s)
Column I: total reservoir outflow (sum of columns G and H)
Column J: tail water elevation calculated as a function of total outflow in column
Column K: minimum end-of-week storage in million m3
Column L: violation of minimum storage [0 for non-violation, 1 for violation] calculated by comparing the end-of-week storage in column M with the minimum storage in column K
Column M: calculated end-of-week storage based on inflow in column F, turbine outflows in column G and spills in column H (millions of m3)
Column N: violation of maximum storage [0 for non-violation, 1 for violation] calculated by comparing the end-of-week storage in column M with the minimum storage in column O
Column O: maximum end-of-week storage in million m3
Column P: end-of-week storage converted from end-of-week volume in column M to elevation by linear interpolation using the volume vs elevation table in cells AC4:AD22
Column Q: average storage level over each simulated week calculated as the average of the two consecutive values in column P.
Column R: weekly power calculated as a product of the net head (mean weekly reservoir levels minus the tailwater elevation), turbine flows, gravitational constant, water density and the efficiency factor assumed to be 0.89 (MW)
Column S: Maximum turbine flows calculated as a function of the storage levels and the maximum turbine flow vs elevation function given in cells M3:N6 of the “Complete Input Data” worksheet
Column T: violation of maximum turbine flow constraint [0 for non-violation, 1 for violation] calculated by comparing turbine flow in column G with the maximum turbine flow in column S
Column U: maximum power calculated as a function of maximum turbine flow in column S and the net head (mean weekly reservoir levels minus the tailwater elevation), turbine flows, gravitational constant, water density and the efficiency factor assumed to be 0.89 (MW)
Column V: violation of the minimum environmental flow constraints (turbine flow compared to the minimum flow of 20 m3/s) [0 for non-violation, 1 for violation]
Column W: violation of the minimum power constraint. Generated power in column R is compared to the minimum required power in column X [0 for non-violation, 1 for violation]
Column X: Minimum weekly power requirements (MW). Copied from column F in the “Complete Input Data” worksheet.
Column Z: total outflow from the reservoir (turbine + spill combined) given as coordinates of the rating curve for the tailwater levels
Column AA: corresponding water levels in the downstream river for each river flow given in column Z.
Column AC: Volume of water stored by the reservoir (millions of m3)
Column AD: Corresponding water surface elevations (m) for each volume point given in column AC.
Note: all other worksheets that evaluate individual model solutions are a copy of the “Non-Lin. RTC Bernhard” worksheet. They differ in terms of the values of the turbine flows and spills that were copied from an outside model solution and pasted into columns G and H.
Instructions for using the evaluation spreadsheet:
Copy and paste the turbine flows and spills from your original model solution into columns G and H, starting in row 4. The evaluation spreadsheet will check all constraints, and it will calculate the value of the generated power for all weeks and average it in cell R682. Total generated energy over the 13 simulated years is calculated in cell R685.
Instructions for using the “Frontline large scale GRG”, “Excel Sol. GRG with lin. const” and “Excel Solver Lin-QP” (see full details and screenshot in Supplemental information-Zenodo):
1. Ensure the Premium Analytic Solver from Frontline Systems is installed
2. Click on cell R682, click on Data/ Solver, build the model using the Excel solver procedures available from the Frontline Systems, and run the solver.
