moo02.gms : Solve multi-objective power generation model

Description

```This example demonstrates how to solve a multi-objective power generation model
and is based on EPSCM in the model library.

Keywords: multi-objective optimization, power generation
```

Category : GAMS Data Utilities library

Main file : moo02.gms   includes :  moo02.gms

``````\$title Solve multi-objective power generation model (moo02,SEQ=152)

\$onText
This example demonstrates how to solve a multi-objective power generation model
and is based on EPSCM in the model library.

Keywords: multi-objective optimization, power generation
\$offText

\$inlineCom [ ]

\$if not set NBOBJ \$set NBOBJ  2
\$if not set METHOD \$set METHOD Sandwiching

Set
p       'power generation units' / Lignite, Oil, Gas, RES /
i       'load areas'             / base, middle, peak     /
pi(p,i) 'availability of unit for load types' / Lignite.(base,middle)
Oil.(middle,peak), Gas.set.i
RES.(base, peak)            /
es(p)   'endogenous sources'  / Lignite, RES /
k       'objective functions' / cost, CO2emission, endogenous /
points  'pareto points' / point1*point1000 /;

\$set min -1
\$set max +1

Parameter dir(k) 'direction of the objective functions 1 for max and -1 for min'
/ cost %min%, CO2emission %min%, endogenous %max% /
pareto_obj(points,k) 'objective values of the pareto points';

Set pheader / capacity, cost, CO2emission /;

Lignite    Oil    Gas    RES
capacity [GWh]          61000  25000  42000  20000
cost [\$/MWh]               30     75     60     90
CO2emission [t/MWh]      1.44   0.72   0.45      0;

Parameter
ad        'annual demand in GWh'          / 64000 /
df(i)     'demand fraction for load type' / base 0.6, middle 0.3, peak 0.1 /
demand(i) 'demand for load type in GWh';

Variable
z(k)      'objective function variables';

Positive Variable
x(p,i)    'production level of unit in load area in GWh';

Equation
objcost   'objective for minimizing cost in K\$'
objco2    'objective for minimizing CO2 emissions in Kt'
objes     'objective for maximizing endogenous sources in GWh'
defcap(p) 'capacity constraint'
defdem(i) 'demand satisfaction';

objcost..   sum(pi(p,i), pdata('cost',p)*x(pi)) =e= z('cost');

objco2..    sum(pi(p,i), pdata('CO2emission',p)*x(pi)) =e= z('CO2emission');

objes..     sum(pi(es,i), x(pi)) =e= z('endogenous');

defcap(p).. sum(pi(p,i), x(pi))  =l= pdata('capacity',p);

defdem(i).. sum(pi(p,i), x(pi))  =g= demand(i);

Model example / all /;

Set kk(k) 'active objective functions';
kk(k) = yes;
\$if %NBOBJ%==2 kk('endogenous') = no;

\$libinclude moo %METHOD% example LP kk dir z points pareto_obj -iterations=20 -gridpoints=5 -savepoint=1 -savepoint_filename= -savepoint_dir=savepoints
execute 'gdxmerge savepoints%system.DirSep%*.gdx > %system.NullFile%';

display pareto_obj;
``````
GAMS Development Corp.
GAMS Software GmbH

General Information and Sales
U.S. (+1) 202 342-0180
Europe: (+49) 221 949-9170
GAMS is a registered trademark of GAMS Software GmbH in the European Union