fuel.gms : Fuel Scheduling and Unit Commitment Problem

Description

Fuel scheduling and unit commitment addresses the problem of
fuel supply to plants and determining on/off status of units
simultaneously to minimize total operating cost.
The present problem: there are two generating units to
meet a total load over a 6-hour period. One of the unit is oil-based
and has to simultaneously meet the storage requirements, flow rates
etc. There are limits on the generation levels for both the units.

Reference

  • Wood, A J, and Wollenberg, B F, Example Problem 4e. In Power Generation, Operation and Control. John Wiley and Sons, 1984, pp. 85-88.

Small Model of Type : MINLP


Category : GAMS Model library


Main file : fuel.gms

$title Fuel Scheduling and Unit Commitment Problem (FUEL,SEQ=168)
$Ontext
  Fuel scheduling and unit commitment addresses the problem of
  fuel supply to plants and determining on/off status of units
  simultaneously to minimize total operating cost.
  The present problem: there are two generating units to
  meet a total load over a 6-hour period. One of the unit is oil-based
  and has to simultaneously meet the storage requirements, flow rates
  etc. There are limits on the generation levels for both the units.


Wood, A J, and Wollenberg, B F, Example Problem 4e. In Power Generation,
Operation and Control. John Wiley and Sons, 1984, pp. 85-88.

$Offtext


sets t   scheduling periods (2hrs) / period-1*period-3 /
     u   generating units          / oil, others /

parameter load(t) system load  / period-1 400, period-2 900, period-3 700 /
          initlev(t) initial level of the oil storage tank / period-1 3000 /


variables
   status(t)  on or off status of the oil based generating unit
   poil(t)    generation level of oil based unit
   others(t)  other generation
   oil(t)     oil consumption
   volume(t)  the volume of oil in the storage tank
   cost       total operating cost
binary variable status; positive variables volume, oil ;

volume.up(t) = 4000;
volume.lo(t)$(ord(t) eq card(t)) = 2000;

others.lo(t) =  50;
others.up(t) = 700;

equations
   costfn     total operating cost of unit 2 -- the objective fn
   lowoil(t)  lower limit on oil generating unit
   maxoil(t)  upper limit on oil generating unit
   floweq(t)  the oil flow balance in the storage tank
   demcons(t) total generation must meet the load
   oileq(t)   calculation of oil consumption;

costfn.. cost =e= sum(t, 300 + 6*others(t) + 0.0025*sqr(others(t)));

lowoil(t).. poil(t) =g= 100*status(t) ;
maxoil(t).. poil(t) =l= 500*status(t) ;

floweq(t)..  volume(t) =e= volume(t-1) + 500 - oil(t) + initlev(t);

oileq(t)..   oil(t) =e= 50*status(t) + poil(t) + 0.005*sqr(poil(t)) ;

demcons(t).. poil(t) + others(t) =g= load(t) ;

model ucom  / all / ;

poil.l(t)    = 100;

solve ucom using minlp minimizing cost;