dispatch.gms : Economic Load Dispatch Including Transmission Losses

Description

The economic dispatch problem can be defined as determining the
least-cost power generation schedule from a set of on-line generating
units to meet the total power demand at a given point of time. The
generating unit cost and the network transmission losses are modeled
as quadratic function of the power generation.

In the present problem, both the cost-minimizing and loss-minimizing
solutions have been obtained.


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 : NLP


Category : GAMS Model library


Main file : dispatch.gms

$title Economic Load Dispatch Including Transmission Losses (DISPATCH,SEQ=166)

$onText
The economic dispatch problem can be defined as determining the
least-cost power generation schedule from a set of on-line generating
units to meet the total power demand at a given point of time. The
generating unit cost and the network transmission losses are modeled
as quadratic function of the power generation.

In the present problem, both the cost-minimizing and loss-minimizing
solutions have been obtained.


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

Keywords: nonlinear programming, engineering
$offText

Set
   i           'generators'                / p1*p3 /
   genchar     'generator characteristics' / a, b, c, upplim, lowlim /
   cg(genchar) 'cost categories'           / a, b, c /;

Alias (i,j);

Table gendata(i,genchar) 'generator cost characteristics and limits'
           a       b        c  upplim  lowlim
   p1  213.1  11.669  0.00533     200      50
   p2  200.0  10.333  0.00889     150    37.5
   p3  240.0  10.833  0.00741     180      45;

Parameter pexp(cg) 'exponent for cost function' / a 0, b 1, c 2 /;

Table b(i,j) 'the b-matrix loss coefficients - squared components'
             p1       p2        p3
   p1    0.0676  0.00953  -0.00507
   p2   0.00953  0.05210   0.00901
   p3  -0.00507  0.00901   0.02940;

Parameter b0(i) 'linear loss coefficients' / p1  -0.0766
                                             p2  -0.00342
                                             p3   0.0189  /;

Scalar
   b00    'loss equation constant'   / 0.040357 /
   demand 'total power demand in MW' / 210      /;

Variable
   p(i) 'power generation level in MW'
   loss 'total transmission loss in MW'
   cost 'total generation cost - the objective function';

Positive Variable p;

p.up(i) = gendata(i,"upplim");
p.lo(i) = gendata(i,"lowlim");

Equation
   costfn  'total cost calculation'
   lossfn  'total loss calculation'
   demcons 'total generation must equal demand and loss';

costfn..  cost =e= sum((i,cg), gendata(i,cg)*power(p(i),pexp(cg)));

lossfn..  loss =e= b00 + sum(i, b0(i)*p(i))/100
                       + sum((i,j), p(i)*b(i,j)*p(j))/100;

demcons.. sum(i, p(i)) =g= demand + loss;

Model edc / all /;

solve edc minimizing cost using nlp;

* trace a trade-off frontier
Set
   s     'trade-off points'  / min-loss, s1*s4, min-cost /
   st(s) 'in between points' / s1*s4 /;

Parameter trace 'trace report';

trace('cost','min-cost') = cost.l;
trace('loss','min-cost') = loss.l;

option limRow = 0, limCol = 0;

solve edc minimizing loss using nlp;

trace('cost','min-loss') = cost.l;
trace('loss','min-loss') = loss.l;

edc.solPrint = %solPrint.Quiet%;

loop(st,
   loss.fx = trace('loss','min-loss')
           + ord(st)/(card(st)+1)*(trace('loss','min-cost')
                                  -trace('loss','min-loss'));
   solve edc minimizing cost using nlp ;
   trace('cost',st) = cost.l;
   trace('loss',st) = loss.l;
);

display trace;