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.
```

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.

Keywords: nonlinear programming, scheduling, engineering, power generation,
geothermal energy, hydropower
\$offText

Set
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 /;

Scalar
losscof 'loss coeff for hydro generation' / 0.00008 /
n       'number of hours in each period'  / 12      /;

Variable
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 Variable thermal, hydro, loss, q, v;

v.fx(tt)\$(ord(tt) = 1) = 100e3;
v.up(t)       =  120e3;
v.lo(t)       =   60e3;
thermal.up(t) = 1500;
thermal.lo(t) =  150;
hydro.up(t)   = 1000;

Equation
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;
``````
GAMS Development Corp.
GAMS Software GmbH

General Information and Sales
U.S. (+1) 202 342-0180
Europe: (+49) 221 949-9170