$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, power generation, economic dispatch $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;