moo03.gms : Solve Bensolvehedron model

Description

```This example demonstrates how to solve an instance of Bensolvehedron.
Bensolvehedron is a class of multi-objective optimization problems
introduced on besolve.org.
An instance of Bensolvehedron is generated based on the number of
objectives p and the complexity of the polyhedron m.
Both can be set through double dash parameters:
--p=<number of objectives>
--m=<complexity of the polyhedron>

Keywords: multi-objective optimization, bensolvehedron

number of objectives
complexity of the polyhedron
```

Category : GAMS Data Utilities library

Main file : moo03.gms   includes :  moo03.gms

``````\$title Solve Bensolvehedron model (moo03,SEQ=153)

\$onText
This example demonstrates how to solve an instance of Bensolvehedron.
Bensolvehedron is a class of multi-objective optimization problems
introduced on besolve.org.
An instance of Bensolvehedron is generated based on the number of
objectives p and the complexity of the polyhedron m.
Both can be set through double dash parameters:
--p=<number of objectives>
--m=<complexity of the polyhedron>

Keywords: multi-objective optimization, bensolvehedron
\$offText

* number of objectives
\$if not set p \$set p 2
* complexity of the polyhedron
\$if not set m \$set m 3

\$eval p2m %p%+2*%m%
\$eval n (%p2m%)**%p%
\$eval n2 2*%n%

Set p               'objectives' / p1*p%p% /
m               'complexity' / m1*m%m% /
n2              'variables 2x' / n1*n%n2% /
n(n2)           'variables' / n1*n%n% /
cel             'elements in C' / c1*c%p2m% /
comb(n,p,cel)   'all combinations of elements in C' / system.powerSetRight /
points          'pareto points' / point1*point1000 /;

Parameter C(p,n)                'objective matrix'
C_val(cel)            'value of elements in C'
A(n2,n)               'constraint matrix'
b(n2)                 'constraint vector'
dir(p)                'direction of the objective functions 1 for max and -1 for min' / #p -1 /
pareto_obj(points,p)  'objective values of the pareto points';

A(n,n) = 1;
A(n2,n)\$(ord(n2)=ord(n)+card(n)) = -1;
b(n) = 1;
C_val(cel) = ord(cel)-((%p2m%-1)/2)-1;
loop(comb(n,p,cel),
C(p,n) = C_val(cel);
);

Variable Z(p)           'objective variables';
Positive Variable X(n)  'decision variables';

Equations objectives(p)
constraints(n2);

objectives(p).. Z(p) =e= sum(n, C(p,n)*X(n));
constraints(n2).. sum(n,A(n2,n)*X(n)) =l= b(n2);

Model bensolvehedron / all /;

\$onEcho > cplex.opt