Nile

The Nile River is a critical resource in northeastern Africa, serving as a water source for hydropower, agriculture, and domestic use across multiple nations. Water rights issues, particularly between Egypt, Sudan, and Ethiopia, have intensified with Ethiopia’s construction of the Grand Ethiopian Renaissance Dam (GERD), intended for hydropower generation to boost its economic development.

Originally, the simulation starts at (2025, 1, 1) and the decisions are taken on a monthly basis over a 20-year period, resulting in 240 time steps for each episode. It also has 4 following objectives, we provide reference points for each for hypervolume calculation:

  1. Ethiopia power (max), ref point: 0.0

  2. Sudan deficit (min), ref point: -240

  3. Egypt deficit (min), ref point: -240

  4. HAD minimum level (max), ref point 0.0

Where max/main signifies whether an objective is to be maximised or minimised. The reference point is used for calculating hypervolume as the worst case scenario in terms of acquired rewards by the agent at the end of the simulation.

Where in all cases:

  • Observation space: Storage in 4 reservoirs, month (5 dimensions)

  • Action space: Release per each reservoir (4 dimensions)

Here you can see a picture visualising Nile river structure: Alt text

Running Nile

import mo_gymnasium
import morl4water.examples

water_management_system = mo_gymnasium.make('nile-v0')

def run():
    #reset
    obs, info = water_management_system.reset()
    print(f'Initial Obs: {obs}')
    final_truncated = False
    final_terminated = False
    for t in range(10):
        if not final_terminated and not final_truncated:
            action = water_management_system.action_space.sample()
            print(f'Action for month: {t}: {action}')

            (
                        final_observation,
                        final_reward,
                        final_terminated,
                        final_truncated,
                        final_info
                    ) = water_management_system.step(action)
            # print(f'Final final_info: ', final_info)
            print(f'Observation: {final_observation}')
            print(f'Reward: {final_reward}')         
        else:
            break
    return final_observation
run()

Taken from: Sari, Y. (2022). Exploring Trade-offs in Reservoir Operations through Many-Objective Optimization: Case of the Nile River Basin (Master’s thesis). Delft University of Technology.

Data & Data Sources

Data

Facility

Value

Source

inflow

Catchments in Sudan

Monthly time series

Stochastic data generated by Wheeler et al. (2016)

efficiency

GERD Power Plant

93%

Abdelazim et al. (2020)

head start level

GERD Power Plant

507 m

Eldardiry and Hossain (2021)

max capacity

GERD Power Plant

6000 MW

Wheeler et al. (2016)

max turbine flow

GERD Power Plant

4320 m

Abdelazim et al. (2020)

min turbine flow

GERD Power Plant

0 m

Yasin (2022)

n_turbines

GERD Power Plant

1

Wheeler et al. (2016)

initial storage

GERD reservoir

15BCM

Barnes (2022)

max capacity

GERD reservoir

117.5BCM

Barnes (2022)

max release

GERD reservoir

10000 m³/s

Yasin (2022)

evaporation rate

GERD, Sennar, Roseires and HAD reservoirs

Monthly time series

Wheeler et al. (2016)

efficiency

HAD Power Plant

90%

Yasin (2022)

head start level

HAD Power Plant

147 m

Wheeler et al. (2016)

max capacity

HAD Power Plant

2100 MW

Wheeler et al. (2016)

min turbine flow

HAD Power Plant

0 m

Wheeler et al. (2016)

n_turbines

HAD Power Plant

1

Wheeler et al. (2016)

initial storage

HAD reservoir

137BCM

Yasin (2022)

max capacity

HAD reservoir

182.7BCM

Wheeler et al. (2016)

max release

HAD reservoir

7000 m³/s

Yasin (2022)

max turbine flow

HAD Power Plant

4211 m

Wheeler et al. (2016)

water demand

Irrigation districts

Monthly time series

Yasin (2022), based on population growth and historical data

initial storage

Roseires reservoir

4.57BCM

Yasin (2022)

max capacity

Roseires reservoir

6.1BCM

Wheeler et al. (2016)

max release

Roseires reservoir

15000 m³/s

Yasin (2022)

initial storage

Sennar reservoir

0.43BCM

Yasin (2022)

max capacity

Sennar reservoir

0.6BCM

Wheeler et al. (2016)

max release

Sennar reservoir

7000 m³/s

Yasin (2022)

storage to level to surface relationship

Sennar, GERD, Roseires, HAD reservoirs

Tabular data

Wheeler et al. (2016)

storage to min max release

Sennar, GERD, Roseires, HAD reservoirs

Tabular data

Wheeler et al. (2016)

inflow

White Nile, Atbara, Blue Nile

Monthly time series

Data generated by Yasin (2022) based on historical data gathered by Eldardiry and Hossain (2021)