$title Cost based Dynamic Economic Dispatch integrated with Energy Storage $onText For more details please refer to Chapter 7 (Gcode7.1), of the following book: Soroudi, Alireza. Power System Optimization Modeling in GAMS. Springer, 2017. -------------------------------------------------------------------------------- Model type: QCP -------------------------------------------------------------------------------- Contributed by Dr. Alireza Soroudi IEEE Senior Member email: alireza.soroudi@gmail.com We do request that publications derived from the use of the developed GAMS code explicitly acknowledge that fact by citing Soroudi, Alireza. Power System Optimization Modeling in GAMS. Springer, 2017. DOI: doi.org/10.1007/978-3-319-62350-4 $offText Set t 'hours' / t1*t24 / g 'thermal units' / p1*p4 /; Table gendata(g,*) 'generator cost characteristics and limits' a b c d e f Pmin Pmax RU0 RD0 p1 0.12 14.80 89 1.2 -5 3 28 200 40 40 p2 0.17 16.57 83 2.3 -4.24 6.09 20 290 30 30 p3 0.15 15.55 100 1.1 -2.15 5.69 30 190 30 30 p4 0.19 16.21 70 1.1 -3.99 6.2 20 260 50 50; Table data(t,*) lambda load wind t1 32.71 510 44.1 t2 34.72 530 48.5 t3 32.71 516 65.7 t4 32.74 510 144.9 t5 32.96 515 202.3 t6 34.93 544 317.3 t7 44.9 646 364.4 t8 52 686 317.3 t9 53.03 741 271 t10 47.26 734 306.9 t11 44.07 748 424.1 t12 38.63 760 398 t13 39.91 754 487.6 t14 39.45 700 521.9 t15 41.14 686 541.3 t16 39.23 720 560 t17 52.12 714 486.8 t18 40.85 761 372.6 t19 41.2 727 367.4 t20 41.15 714 314.3 t21 45.76 618 316.6 t22 45.59 584 311.4 t23 45.56 578 405.4 t24 34.72 544 470.4; * ----------------------------------------------------- Variable OBJ 'objective (revenue)' cost 'cost of thermal units' p(g,t) 'power generated by thermal power plant' SOC(t) Pd(t) Pc(t); p.up(g,t) = gendata(g,"Pmax"); p.lo(g,t) = gendata(g,"Pmin"); Scalar SOC0 / 100 / SOCmax / 300 / eta_c / 0.95 / eta_d / 0.9 /; SOC.up(t) = SOCmax; SOC.lo(t) = 0.2*SOCmax; SOC.fx('t24') = SOC0; Pc.up(t) = 0.2*SOCmax; Pc.lo(t) = 0; Pd.up(t) = 0.2*SOCmax; Pd.lo(t) = 0; Equation Genconst3, Genconst4, costcalc, balance, constESS1; costcalc.. cost =e= sum((t,g), gendata(g,'a')*power(p(g,t),2) + gendata(g,'b')*p(g,t) + gendata(g,'c')); Genconst3(g,t).. p(g,t+1) - p(g,t) =l= gendata(g,'RU0'); Genconst4(g,t).. p(g,t-1) - p(g,t) =l= gendata(g,'RD0'); constESS1(t).. SOC(t) =e= SOC0$(ord(t)=1) + SOC(t-1)$(ord(t)>1) + Pc(t)*eta_c - Pd(t)/eta_d; balance(t).. sum(g, p(g,t)) + Pd(t) =g= data(t,'load')+Pc(t); Model DEDESScostbased / all /; solve DEDESScostbased using qcp minimizing cost; Parameter rep(t,*); rep(t,'Pth') = sum(g,p.l(g,t)); rep(t,'SOC') = SOC.l(t); rep(t,'Pd') = Pd.l(t); rep(t,'Pc') = Pc.l(t); rep(t,'Load') = data(t,'load'); embeddedCode Connect: - GAMSReader: symbols: [ { name: p }, { name: rep } ] - Projection: name: p.l(g,t) newName: p_l(g,t) - ExcelWriter: file: DEDESScostbased.xlsx symbols: - { name: p_l, range: Pthermal!A1 } - { name: rep, range: rep!A1 } endEmbeddedCode