hydro.gms : Hydrothermal Scheduling Problem

**Description**

Hydrothermal scheduling problem involves allocating the total power demand and losses among the hydro and thermal generators in a least-cost way. The scheduling period is typically a few days long. The hydraulic flow constraints and the limits on generator outputs have to be observed in the scheduling problem.

**Reference**

- Wood, A J, and Wollenberg, B F, Example Problem 7b. In Power Generation, Operation and Control. John Wiley and Sons, 1984, p. 202.

**Small Model of Type :** NLP

**Category :** GAMS Model library

**Main file :** hydro.gms

```
$title Hydrothermal Scheduling Problem (HYDRO,SEQ=167)
$Ontext
Hydrothermal scheduling problem involves allocating the total power demand
and losses among the hydro and thermal generators in a least-cost way. The
scheduling period is typically a few days long. The hydraulic flow
constraints and the limits on generator outputs have to be observed in the
scheduling problem.
Wood, A J, and Wollenberg, B F, Example Problem 7b. In Power Generation,
Operation and Control. John Wiley and Sons, 1984, p. 202.
$Offtext
sets tt periods (12 hours long) / 0,1*6 /
t(tt) periods (12 hours long) / 1*6 /
parameter load mw load for the t-th period / 1 1200, 2 1500, 3 1100
4 1800, 5 950, 6 1300 /
scalars losscof loss coeff for hydro generation / 0.00008 /
n number of hours in each period / 12 /
variables
thermal(t) output from the steam thermal plant (MW)
hydro(t) output from hydro plant (MW)
loss(t) total loss (MW)
q(tt) hydro flow rate in acre-ft per hour
v(tt) reservoir storage volume at the end of t
cost total steam plant generation cost
positive variables thermal, hydro, loss, q, v ;
v.fx(tt)$(ord(tt) eq 1) = 100e3;
v.up(t) = 120e3;
v.lo(t) = 60e3;
thermal.up(t) = 1500 ;
thermal.lo(t) = 150 ;
hydro.up(t) = 1000 ;
equations
costfn total cost calculation
demcons(t) demand plus loss must be met from hydro and thermal
flow(tt) hydraulic continuity equation
losseq(t) loss calculated as function of hydro output
dischar(t) calculation of hydro discharge ;
costfn.. cost =e= 1.15*n*card(t)*sum(t,
500 + 8*thermal(t) + 0.0016*sqr(thermal(t)));
losseq(t).. loss(t) =e= losscof*power(hydro(t),2) ;
demcons(t).. thermal(t) + hydro(t) =g= load(t) + loss(t) ;
flow(tt-1).. v(tt) =e= v(tt-1) + (2000 - q(tt))*n ;
dischar(t).. q(t) =e= 330 +4.97*hydro(t) ;
model hydther /all/ ;
solve hydther using nlp minimizing cost ;
```