$OFFSYMLIST OFFSYMXREF OFFLISTING ** Non-dominated solutions (weighted approach) for the area MGEP2 OPTIONS LP=CPLEX, NLP=MINOS5, MIP=CPLEX, SOLPRINT=Off, LIMCOL=0, LIMROW=0; Sets i nodes / n1*n7 / q type of units / 1*8 / k type of fossil fuel / 1*4 / m objectives /1*4/ p periods /1*6/ r set of random samples /1*2000/ CONEX set of connections between nodes / n1.n2 n1.n4 n2.n3 n3.n6 n4.n5 n6.n5 n6.n7 / MAPT(q,k) associate type of units with fossil-fuel types / 1.1 2.2 3.2 4.3 5.4 / ; Alias(i,j); Table Ndem(i,p) nodes input data 2 3 4 5 6 * (MW) (MW) (MW) (MW) (MW) n1 2873 3140 3473 3821 4135 n2 3216 3542 3941 4382 4832 n3 6673 7363 8293 9352 10511 n4 7412 8302 9344 10423 11493 n5 8762 9453 10298 11196 12069 n6 6187 6890 7743 8617 9558 n7 1229 1391 1604 1816 2072 ; Table Adata(i,i,*) arcs input data caparc ftrans vtrans lenght * (MW) ($/MW) ($/MW) (km) n1.n2 300 3.903 0.208 176 n1.n4 320 3.903 0.208 252 n2.n3 260 3.903 0.208 215 n3.n6 1000 3.903 0.208 231 n4.n5 2900 3.903 0.208 232 n6.n5 3800 3.903 0.208 280 n6.n7 435 3.903 0.208 296 ; Adata(i,i,'caparc') = Adata(i,i,'caparc')*0.9; Adata(i,i,'ftrans') = Adata(i,i,'ftrans')*1000; Adata(i,i,'vtrans') = Adata(i,i,'vtrans')*1000; Table Tdata(q,*) technologies input data capacity avail consume fueltype co2em invg omvg * (MW) (units/MW) (T/MW) ($/MW) ($/MW) 1 350 0.90 1.54000 1 0.795 840430 12522.1 2 560 0.93 7.00893 2 0.359 473630 19706.3 3 184 0.90 10.43537 3 0.508 417510 12522.1 4 350 0.92 0.46587 3 0.957 1344000 22579.0 5 1506 0.95 2.68000 4 0.000 1910000 49300.0 6 230 0.91 0.00000 0.000 1800000 23000.0 7 100 0.40 0.00000 0.000 1200000 30000.0 8 200 0.99 0.00000 0.000 2000000 25000.0 ; Table Fdata(k,*) fossil fuel input data capfuel fcost pricesd * (units) ($/units) ($) 1 174227.460 36.98 0.29 2 4263045.704 6.11 0.40 3 16800000.000 30.47 0.05 4 100000.000 12.25 0.25 ; Table Edata(i,q) Existing capacity input data 1 2 3 4 5 6 7 8 * n1 2092 496 898 n2 1035 1535 n3 1265 3218 1488 2600 66 n4 3466 577 597 2100 190 2783 n5 1989 1449 292 n6 2380 1930 1365 40 6120 n7 150 1045 277 ; Table Allowtec(i,q) allowed technologies in nodes 1 2 3 4 5 6 7 8 * n1 1 1 0 0 0 0 1 1 n2 1 1 0 0 0 0 0 0 n3 1 1 1 1 0 0 0 1 n4 1 1 1 1 0 1 0 1 n5 0 1 1 0 0 0 0 1 n6 1 1 1 1 1 1 1 1 n7 1 1 1 0 0 0 0 0 ; Scalars ir discount rate giir generation investment inflation rate goir generation operation inflation rate tir transmission inflation rate fir fuel inflation rate nper ; Parameter cinv(q,p) investment generation cost of type q in period p comv(q,p) operation generation cost of type q in period p ctransf(i,j,p) fixed transmission cost of arc ij in period p ctransv(i,j,p) variable transmission cost of arc ij in period p cimpf(k,p) fuel cost of type k in period p cgiir(p) cgoir(p) ctir(p) cfir(p) ; ir = 0.10; giir = 0.03; goir = 0.05; tir = 0.03; fir = 0.04; cgiir('1') = ((1+giir)**(1-1))*((1+ir)**(1-1)); cgiir('2') = ((1+giir)**(2-1))*((1+ir)**(1-2)); cgiir('3') = ((1+giir)**(3-1))*((1+ir)**(1-3)); cgiir('4') = ((1+giir)**(4-1))*((1+ir)**(1-4)); cgiir('5') = ((1+giir)**(5-1))*((1+ir)**(1-5)); cgiir('6') = ((1+giir)**(6-1))*((1+ir)**(1-6)); cgoir('1') = power(1+goir,(1-1))*power(1+ir,(1-1)); cgoir('2') = power(1+goir,(2-1))*power(1+ir,(1-2)); cgoir('3') = power(1+goir,(3-1))*power(1+ir,(1-3)); cgoir('4') = power(1+goir,(4-1))*power(1+ir,(1-4)); cgoir('5') = power(1+goir,(5-1))*power(1+ir,(1-5)); cgoir('6') = power(1+goir,(6-1))*power(1+ir,(1-6)); ctir('1') = power(1+tir,(1-1))*power(1+ir,(1-1)); ctir('2') = power(1+tir,(2-1))*power(1+ir,(1-2)); ctir('3') = power(1+tir,(3-1))*power(1+ir,(1-3)); ctir('4') = power(1+tir,(4-1))*power(1+ir,(1-4)); ctir('5') = power(1+tir,(5-1))*power(1+ir,(1-5)); ctir('6') = power(1+tir,(6-1))*power(1+ir,(1-6)); cfir('1') = power(1+fir,(1-1))*power(1+ir,(1-1)); cfir('2') = power(1+fir,(2-1))*power(1+ir,(1-2)); cfir('3') = power(1+fir,(3-1))*power(1+ir,(1-3)); cfir('4') = power(1+fir,(4-1))*power(1+ir,(1-4)); cfir('5') = power(1+fir,(5-1))*power(1+ir,(1-5)); cfir('6') = power(1+fir,(6-1))*power(1+ir,(1-6)); **display cgiir, cgoir, ctir, cfir; cinv(q,p)= Tdata(q,'invg')*cgiir(p); comv(q,p)= Tdata(q,'omvg')*cgoir(p); ctransf(i,j,p)$CONEX(i,j) = Adata(i,j,'ftrans')*ctir(p)*Adata(i,j,'lenght'); ctransv(i,j,p)$CONEX(i,j) = Adata(i,j,'vtrans')*ctir(p); cimpf(k,p) = Fdata(k,'fcost')*cfir(p); Set types(i,q) set of allowed technologies in nodes; types(i,q)$Allowtec(i,q) = yes; Scalars w, w1, w2, w3, w4, w11, w12, w13, w14; Variables z weighting objective function variable gn(i,q,p) generation of unit type q at node i in period p G(i,q,p) Capacity of new unit type q at node i in period p CG(i,q,p) Cumulated capacity of new unit type q at node i in period p x(i,j,p) power flow through arc i-j in period p deltax(i,j,p) aditional transmission capacity through arc i-j in period p cdeltax(i,j,p) cumulated aditional transmission capacity through arc i-j in period p u(k,p) amount of imported fossi-fuel of type k in period p ; Positive variable gn,G,CG,x,deltax,cdeltax,u; Parameters maxcapg(q), maxcapt(i,j); ** Bounds on variables, using previously defined data maxcapg('1') = 10388*1; maxcapg('2') = 10790*1.25; maxcapg('3') = 3811*1; maxcapg('4') = 4700*0.5; maxcapg('5') = 1365*1; maxcapg('6') = 230*2; maxcapg('7') = 1000*1; maxcapg('8') = 10159*0.2; maxcapt(i,j)$CONEX(i,j) = Adata(i,j,'caparc')*3; u.up('1',p) = Fdata('1','capfuel')*1; u.up('2',p) = Fdata('2','capfuel')*1; u.up('3',p) = Fdata('3','capfuel')*1; u.up('4',p) = Fdata('4','capfuel')*1; CG.fx(i,q,'1') = Edata(i,q); G.fx(i,q,'1') = 0; cdeltax.fx(i,j,'1')$CONEX(i,j) = Adata(i,j,'caparc'); u.fx(k,'1') = 0; Equations obj weighting objective function nodebal(i,p) node balance equation in period p transcap(i,j,p) transmission capacity in period p fueldem(k,p) fossil-fuel demand in period p newgen(i,q,p) new capacity generation in period p cumtranscap(i,j,p) cumulative transmission capacity in period p cumnewgen(i,q,p) cumulative new capacity generation in period p maxinvg(q) maximum amount of investment in generation maxinvt(i,j) maximum amount of investment in transmission reserve operative reserve; obj.. z =e= w1*( sum(p$(ord(p) GT 1), sum(i, sum(q$types(i,q), cinv(q,p)*G(i,q,p)+comv(q,p)*gn(i,q,p)) ) )+ sum(p$(ord(p) GT 1), sum((i,j)$CONEX(i,j), (ctransf(i,j,p)+ctransv(i,j,p)*Adata(i,j,'lenght'))*deltax(i,j,p)) ) ) /(3.130718E+10-9.4059071E+9) + w2*( sum(p$(ord(p) GT 1), sum(i, sum(q$types(i,q), Tdata(q,'co2em')*gn(i,q,p))) ) ) /(153786.05-58398.91) + w3*( sum(p$(ord(p) GT 1), sum(k, cimpf(k,p)*u(k,p)) ) ) /(2.3128133E+9-4764451.76) + w4*( sum(p$(ord(p) GT 1), sum( k, sum(i, sum(q$(types(i,q) and MAPT(q,k)), Fdata(k,'pricesd')*gn(i,q,p)))) ) ) /(82676.68-38197.21); nodebal(i,p)$(ord(p) GT 1).. sum(j$CONEX(j,i),x(j,i,p)) - sum(j$CONEX(i,j),x(i,j,p)) + sum(q$types(i,q), gn(i,q,p)) =e= Ndem(i,p); transcap(i,j,p)$(CONEX(i,j) and (ord(p) GT 1)).. x(i,j,p) - cdeltax(i,j,p-1) =l= deltax(i,j,p); newgen(i,q,p)$(types(i,q) and (ord(p) GT 1)).. gn(i,q,p) - CG(i,q,p-1) =l= G(i,q,p); fueldem(k,p)$(ord(p) GT 1).. sum(i, sum(q$(types(i,q) and MAPT(q,k)), Tdata(q,'consume')*gn(i,q,p))) - u(k,p) =l= 0; cumtranscap(i,j,p)$(CONEX(i,j) and (ord(p) GT 1)).. cdeltax(i,j,p-1) + deltax(i,j,p) =e= cdeltax(i,j,p); cumnewgen(i,q,p)$(types(i,q) and (ord(p) GT 1)).. CG(i,q,p-1) + G(i,q,p) =e= CG(i,q,p); maxinvg(q).. sum(p$(ord(p) GT 1), sum(i, G(i,q,p))) =l= maxcapg(q); maxinvt(i,j)$CONEX(i,j).. sum(p$(ord(p) GT 1), deltax(i,j,p)) =l= maxcapt(i,j); reserve(p)$(ord(p) GT 1).. sum(i, sum(q$types(i,q), CG(i,q,p) ) ) =g= sum(i, Ndem(i,p))*1.06; Parameters cost, investment, generation, transmission, environment, import, riskp, riskn, steam, cc, tg, coal, nuclear, geo, wind, hidro; Model weightsmgep2 /obj,nodebal,transcap,newgen,fueldem,cumtranscap,cumnewgen,maxinvg,maxinvt,reserve / ; * OUTPUT FILE* file out /extreme_points.out/; *SOLVE THE MGEP PROBLEM FOR 2000 times** loop(r, w1 = 0.1 + uniform(0,1); w2 = 0.1 + uniform(0,1); w3 = 0.1 + uniform(0,1); w4 = 0.1 + uniform(0,1); w = w1+w2+w3+w4; w1 = w1/w; w2 = w2/w; w3 = w3/w; w4 = w4/w; w11 = w1*1000000; w12 = w2*1000000; w13 = w3*1000000; w14 = w4*1000000; **display w11, w12, w13, w14; z.l = 0; gn.l(i,q,p) = 0; G.l(i,q,p) = 0; CG.l(i,q,p) = 0; x.l(i,j,p) = 0; deltax.l(i,j,p) = 0; cdeltax.l(i,j,p) = 0; u.l(k,p) = 0; Solve weightsmgep2 using lp minimizing z; cost = sum(p$(ord(p) GT 1), sum(i, sum(q$types(i,q), cinv(q,p)*G.l(i,q,p)+comv(q,p)*gn.l(i,q,p)) ) )+ sum(p$(ord(p) GT 1), sum((i,j)$CONEX(i,j), (ctransf(i,j,p)+ctransv(i,j,p)*Adata(i,j,'lenght'))*deltax.l(i,j,p)) ); investment = sum(p$(ord(p) GT 1), sum(i, sum(q$types(i,q), cinv(q,p)*G.l(i,q,p)) ) ); generation = sum(p$(ord(p) GT 1), sum(i, sum(q$types(i,q), comv(q,p)*gn.l(i,q,p)) ) ); transmission = sum(p$(ord(p) GT 1), sum((i,j)$CONEX(i,j), (ctransf(i,j,p)+ctransv(i,j,p)*Adata(i,j,'lenght'))*deltax.l(i,j,p)) ); environment = sum(p$(ord(p) GT 1), sum(i, sum(q$types(i,q), Tdata(q,'co2em')*gn.l(i,q,p))) ); import = sum(p$(ord(p) GT 1), sum(k, cimpf(k,p)*u.l(k,p)) ); riskp = sum(p$(ord(p) GT 1), sum( k, sum(i, sum(q$(types(i,q) and MAPT(q,k)), Fdata(k,'pricesd')*gn.l(i,q,p)))) ); riskn = sum(p$(ord(p) GT 1), sum(i, gn.l(i,'5',p)) ); steam = sum(p$(ord(p) GT 1), sum(i, G.l(i,'1',p)) ); cc = sum(p$(ord(p) GT 1), sum(i, G.l(i,'2',p)) ); tg = sum(p$(ord(p) GT 1), sum(i, G.l(i,'3',p)) ); coal = sum(p$(ord(p) GT 1), sum(i, G.l(i,'4',p)) ); nuclear = sum(p$(ord(p) GT 1), sum(i, G.l(i,'5',p)) ); geo = sum(p$(ord(p) GT 1), sum(i, G.l(i,'6',p)) ); wind = sum(p$(ord(p) GT 1), sum(i, G.l(i,'7',p)) ); hidro = sum(p$(ord(p) GT 1), sum(i, G.l(i,'8',p)) ); display cost, investment, generation, transmission, environment, import, riskp, riskn, steam, cc, tg, coal, nuclear, geo, wind, hidro; display G.l,deltax.l; put out; put w1,w2,w3,w4,' ',cost,' ',investment,' ',generation,' ',transmission,environment,import,riskp,riskn; put /; *put 'GAMS Execution Time', 'time ',system.time ///; );