0% found this document useful (0 votes)
360 views

Solving Multiobjective Models With GAMS

The document discusses how to solve multi-objective optimization problems in GAMS. It describes several approaches including using a weighted linear combination of objectives, lexicographic optimization which solves objectives sequentially, and goal programming which reformulates objectives as goals with aspiration levels and deviations. It provides an example of applying these methods to a capital budgeting problem where the objectives are to maximize financial benefits while staying within a budget.

Uploaded by

oida_ad
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
360 views

Solving Multiobjective Models With GAMS

The document discusses how to solve multi-objective optimization problems in GAMS. It describes several approaches including using a weighted linear combination of objectives, lexicographic optimization which solves objectives sequentially, and goal programming which reformulates objectives as goals with aspiration levels and deviations. It provides an example of applying these methods to a capital budgeting problem where the objectives are to maximize financial benefits while staying within a budget.

Uploaded by

oida_ad
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

SOLVING MULTI-OBJECTIVE MODELS WITH GAMS

ERWIN KALVELAGEN

Abstract. Some classes of Multi-objective models can be implemented as


either a single linear programming model or a series of linear programming
models. This document shows how this can be done in a GAMS environment.

1. Multi-objective programming
GAMS models have a single objective. In some cases a problem may require
a so-called multi-objective formulation: different objectives need to be optimized.
Mathematically a multi-objective programming problem can be stated as:


z1 = cT1 x

z2 = cT2 x


MOLP minimize ..
x

.

zK = cTK x

subject to Ax b
`xu

where is a vector of relational operators {, = . }. In the above model we have


K objectives. This model can not be cast directly as a linear programming problem
without making some assumptions. The easiest way to deal with this problem is to
create a linear weighted objective:
K
X
(1) min z 0 = wi zi
i=1
The problem here is to find a suitable set of weights wi . Specifying weights is
especially difficult if the objectives have different units (i.e. combining a profit
criterion with a customer satisfaction quantity). This linear weighted objective is
an example of a value or utility function
(2) min z 0 = (z)
Such functions are sometimes called scalarizing functions [9]. As an example we
mention the portfolio optimization problem where both return and risk need to
be optimized. For these problems often a linear combination of the two objectives
is used. A multiple objective capital budgeting model based on this technique is
described in section 4. For an example of a multiple objective model in water
allocation modeled along these lines in GAMS see [10].
If the K objectives follow a dominance order, i.e. objective k should be optimized
first, before considering the value of objective j, then we can implement a simple

Date: September 20, 2002.


1
2 ERWIN KALVELAGEN

sequential algorithm. This particular model is called lexicographic. We assume


that the objectives are ordered such that zi dominates zj when i < j. We can now
formulate the algorithm:
for j := 1 to K do
solve min zj , zi = cTi x, Ax b, ` x u
add constraint zj = zj to the problem
end for
In GAMS such an algorithm can be expressed quite easily:
alias (i,j);

parameter p(i) selection of objective;

equation objective select correct z by assigning to p;


objective.. obj =e= sum(i,p(i)*z(i));

model m /all/;

loop(j,
* select correct objective function
p(i) = 0;
p(j) = 1;
* solve problem
solve m using lp minimizing obj;
* add fixed objective
z.fx(j) = z.l(j);
);

A variant is to allow the higher priority objectives to deviate % from their


optimal value. In this case the method is called a hierarchical optimization method.
The techniques describes in this section extend directly to mixed integer and
nonlinear programming models.
The general MOLP problem, where there is no dominance and no utility func-
tion (.) is available, is not directly solveable as an LP. The problem is that there
are an enormous number of efficient or Pareto-optimal solutions of which the mod-
eler needs to choose from. Pareto-optimal solutions are solutions that can not be
improved with respect to an objective zi without deteriorating another objective
zj . Specialized MOLP solvers often use an interactive approach, that requires in-
teraction of the modeler during the solution process. They ask questions to the
modeler in order to guide him or her through the set of efficient solutions such that
a preferred solution can be found. Recently there has been significant interest in
using genetic programming for problems with multiple objectives [2]. In general
these solvers are aimed for small problems. GAMS and the solvers supported by
GAMS does not have facilities for these solution procedures.
More information can be found in for instance [13], [1].

2. Goal programming
A special form of multiple objective programming is goal programming[4]. Goal
programming deals with multiple, possibly conflicting goals, which may be mea-
sured in nonhomogeneous units. An objective fi (x) is reformulated into a goal by
considering an aspiration level bi . Goals can have the form fi (x) bi , fi (x) = bi or

fi (x) bi . After adding slacks or deviations s+
i 0 and si 0, we can minimize
appropriate slacks to try to achieve the goals. The formulation of these slacks is
summarized in table 1.
SOLVING MULTI-OBJECTIVE MODELS WITH GAMS 3

Goal Type Goal Programming Form Slacks to be minimized



fi (x) bi fi (x) (s+
i si ) = bi s+
i

fi (x) bi +
fi (x) (si si ) = bi s
i

fi (x) = bi fi (x) (s+
i si ) = bi s+
i + si
Table 1. Goal programming formulations

The term non-preemptive goal programming is used when we can model the
problem by using linear weights on the deviations to construct a single objective.
Preemptive goal programming assumes a strict dominance order of the goals, which
can be solved using a sequence of linear programming problems as described in
the previous section. In the context of goal programming this algorithm is called
Sequential Linear Goal Programming (SGLP) (somehow the order is mixed up in
the acronym). An example of a preemptive goal programming formulation of a
budget allocation problem is described in section 6.
For more information on goal programming see the following references: [3], [4],
[11], [12].

3. The Capital Budgeting problem


The Capital Budgeting problem is related to the knapsack problem [14]. The
goal is to select projects to invest in, such that benefits are maximized. A project i
will need a capital expenditure Ci . The benefits of investing in project i are realized
over the lifetime of the project, and are denoted by bi,t . We can use a standard net
present value calculation to find the current value of these cash flows:
X bi,t
(3) Bi =
t
(1 + r)t

where r is the interest rate. These calculations are carried out on constants, and
are not part of the decision model itself. The model therefore does not become
nonlinear because of the net present value calculations. Assuming a total budget
of C we can write the model as:
X
CAP BUDGET maximize Bi xi
x
Xi
subject to Ci xi C
i
xi {0, 1} i

where xi is a binary variable indicating whether project i is selected.


If there are projects that are mutually exclusive, then we can add constraints of
the form:
X
(4) xi 1
iS

where S is the set of mutually exclusive projects.


If a project k is contingent on selection of project j, we can add:
(5) xk xj
4 ERWIN KALVELAGEN

Financial
Present Value Present value of incremental cash flows.
Resource Efficiency Enhances employee productivity.
Quality
Facility Quality Improves facilitys appearance or usefulness,
including expenditures to meet safety, code,
or accreditation standards.
Patient/Family Satisfaction Improves patients clinical experience by low-
ering waiting times, throughput times. and
general comfort.
Patient Outcomes Improves patients clinical outcomes.
Physician Relationships Increases physicians satisfaction by improv-
ing equipment reliability, introducing newer
technology, and/or enhancing physicians ef-
ficiency of effectiveness.
Strategic
Information Integration Promotes integration of data/information
within the hospital or healthcare system, be-
tween hospital and physician, and with other
healthcare entities.
Market Share Enhances market share by increasing patient
volume and/or attracting new patients.
Table 2. Attributes for project proposals

A constraint like
(6) xk = xj
would implement a mutual contingency: either both projects j and k are selected
or neither of them.

4. A multiple objective capital budgeting model


The following model is a capital budgeting problem that has multiple objectives
[8]. The model is concerned with allocating budget to project proposals in a hospital
setting. Projects are not only evaluated according to their Present Value (PV) but
also other attributes play a role. For each project proposal scores are given for each
of the attributes presented in table 2. The table is taken from [8].
Some of the attributes can be measured such as Present Value, but others are
more subjective and need to be determined by the modeler and subject matter
specialists.
This model uses a scalarizing function with linear weights (see section 1). The
weights need to be determined by the modeler, again in most cases with help by
subject matter specialists.
In the model a few interesting issues arise. First we have instances of non-
discretionary spending. Some projects need to be selected because they addressed
safety concerns, regulatory standards, or prior contractual agreements. Secondly,
there are projects that are mutually exclusive (equipment upgrades by competing
vendors) or mutually contingent.
SOLVING MULTI-OBJECTIVE MODELS WITH GAMS 5

Notice that the data entry for mutually contingent projects is simplified by cre-
ating a set MC. However this is not convenient for writing the constraints of the
form xi = xk . Therefore we create two sets MCLHS and MCRHS which make the spec-
ification of the equations trivial. This illustrates the modeling paradigm of making
equations as simple as possible. An important additional advantage is that we can
debug the sets MCLHS and MCRHS by displaying them. We dont need a complete
model before we can do this. The equation MUTCONT is now so simple we can ba-
sically assume it is correct once we have made sure the sets MCLHS and MCRHS are
correct. If this was not the case we would need to look at the equation and column
listing in the listing file, which is only available after we can generate a complete
model. It is noted that mutually contingent projects need to be specified pairwise.
I.e. if there are three mutually contingent projects xi , xj and xk , then we need to
specify this in two pairs, e.g. (xi , xj ) and (xi , xk ).
The model shows a significant amount of data manipulation: a small part of
the GAMS source is devoted to specifying the model equations perse. This is not
unusual for practical models.

4.0.1. Model capbudget.gms.


$ontext

A multi-objective capital budgeting model for a hospital

Erwin Kalvelagen, July 2002

Reference:

Don N. Kleinmuntz, Catherine E. Kleinmuntz, "Multiobjective


capital budgeting in not-for-profit hospitals and
healthcare systems", tech report, december 2001.

$offtext

set i projects /
p1 Ultrasound Siemens Upgrade
p2 INTRAOPERATIVE MONITORING EQUIPMENT
p3 Central Data Repository
p4 Communication Closets/Cabling
p5 Radiology Digital Fluoro
p6 Clinical Information system
p7 Centralized Scheduling
p8 Upgrade Pneumatic Tube System - All Bldgs
p9 Mobile/Radio frequency computers
p10 Ultrasound Acuson Upgrade
p11 Pneumatic Tube, Point to Point
p12 Remodeling of Immediate Care Center
p13 Birthing Center Expansion
p14 Medical Vacuum Pumps - CCB
p15 Adult Ventilators
p16 Cardiac Cath Lab Renovation and Upgrade
p17 Radiology Portable C-Arm
p18 MRI Patient Monitors
p19 ACB Pharmacy Renovation
p20 SMS Product Line Manager
p21 SMS Imaging
p22 Echocardiograph
p23 OP Rad/fluoro rooms
p24 Replace Oxyquip Medical Gases outlets - CCB
p25 Doors for all OR rooms
p26 Human Resource/Payroll Information System
p27 Anesthesia Machine Modulus SmartVent System
p28 ABIOMED EXTERNAL ARTIFICAL HEART PROGRAM
p29 Replace all 486 computers
p30 Robot-Rx
p31 EXTERIOR SIGNAGE
6 ERWIN KALVELAGEN

p32 Powervision 6000 Digital Ultrasound System


p33 Z-Kat Fluorotactic Guidance System
p34 Audiovisual Upgrades - 831
p35 ORSOS Upgrade
p36 PLC LASER
p37 Replace Kathabar Air Handling Units 13 & 14 - CCB
p38 PACs Radiology
p39 IV Room Remodeling Pharmacy
p40 AS/3 Anesthesia Monitors
p41 Refurb CPS 8th Floor CCB
p42 Unified Messaging
p43 Push Messaging System
p44 Patio Cafe Construction and Refurb
p45 Beds
p46 7th,8th,9th Floor (East & South Wings Units) Renovation
p47 Add Sprinkler System - ACB - Second Phase
p48 Ambulatory Surgery Center
/;

set attr attributes /


* financial attributes
PV present value of incremental cash flows
EFF resource efficiency: employee productivity

* quality attributes
FQ facility quality: appearance or usefulness, incl. safety, code, accreditation standards
SAT patient and family satisfaction
OUTC patient clinical outcome
PHYS physician satisfaction

* strategic
IINT Information Integration
SHAR Market share
/;

table score(i,attr) attribute scores


PV EFF FQ SAT OUTC PHYS IINT SHAR
p1 0 2 0 1 3 3 0 2
p2 0 2 0 2 4 5 2 2
p3 0 2 0 1 0 5 7 1
p4 0 9 1 0 6 9 19 3
p5 0 1 0 0 0 2 0 1
p6 0 26 1 3 14 21 50 8
p7 0 9 1 2 2 7 11 5
p8 0 4 0 2 4 2 3 2
p9 0 2 0 1 2 3 2 1
p10 0 0 0 0 0 0 0 0
p11 0 3 1 1 4 1 2 1
p12 2232525 14 12 7 9 7 0 11
p13 5079297 100 100 100 100 100 0 100
p14 0 7 2 1 10 7 0 1
p15 0 0 0 0 0 0 0 0
p16 2153191 54 13 16 41 0 75 8
p17 0 4 1 1 5 4 0 2
p18 0 0 0 0 0 0 0 0
p19 998542 14 6 7 0 11 0 8
p20 0 78 0 4 0 62 100 8
p21 554746 14 0 2 5 0 70 7
p22 0 9 2 2 10 7 0 6
p23 1502436 14 3 9 25 0 15 9
p24 0 4 2 1 4 4 0 0
p25 0 2 0 0 1 2 0 1
p26 0 8 0 0 2 0 8 0
p27 0 13 5 2 29 29 13 8
p28 164428 18 10 7 24 0 0 22
p29 -638885 5 0 0 2 1 8 0
p30 210341 59 19 17 0 0 55 25
p31 0 0 0 0 0 0 0 0
p32 0 0 0 0 0 0 0 0
p33 0 0 0 0 1 1 0 1
SOLVING MULTI-OBJECTIVE MODELS WITH GAMS 7

p34 0 0 0 0 0 0 1 0
p35 0 0 0 0 0 0 0 0
p36 831553 8 0 4 20 0 0 8
p37 0 0 0 0 0 0 0 0
p38 832118 31 0 8 21 0 50 0
p39 0 0 0 0 0 0 0 0
p40 0 0 0 0 0 1 0 0
p41 0 0 0 0 0 0 0 0
p42 0 0 0 0 0 0 0 0
p43 0 0 0 0 0 0 0 0
p44 0 0 0 0 0 0 0 0
p45 0 0 0 0 0 0 0 0
;

*
* some projects are non-discretionary
*
set nd(i) non-discretionary projects /p46,p47,p48/;
set d(i) discretionary projects;
d(i) = not nd(i);

*
* we scale the scores from 0 - 100
*
parameter minscore(attr) minimum score;
minscore(attr) = smin(d, score(d,attr));

parameter maxscore(attr) maximum score;


maxscore(attr) = smax(d, score(d,attr));

parameter scaled_score(i,attr);
scaled_score(d, attr) = 100*(score(d,attr)-minscore(attr))/(maxscore(attr)-minscore(attr));
display scaled_score;

*
* the weights for the different attributes
*
parameter weight(attr) /
PV 100
EFF 100
FQ 50
SAT 75
OUTC 70
PHYS 45
IINT 50
SHAR 100
/;

scalar sumw sum of weights;


sumw = sum(attr, weight(attr));

parameter w(attr) normalized weights;


w(attr) = weight(attr)/sumw;
display w;

*
* calculate weighted value scores
* (these results are slightly different than in the
* reference)
*
parameter val(i) weighted value scores;
val(i) = sum(attr, w(attr)*scaled_score(i,attr));
display val;

parameter cost(i) cost of each project /


p1 76896, p2 120000, p3 112000, p4 225000, p5 80049
p6 500000, p7 225000, p8 154280, p9 125000, p10 76896
8 ERWIN KALVELAGEN

p11 144241, p12 683382, p13 3935679, p14 235244, p15 90000
p16 1500000, p17 192576, p18 90960, p19 525000, p20 1500000
p21 700000, p22 362000, p23 914000, p24 210900, p25 150000
p26 250000, p27 803975, p28 863509, p29 122756, p30 1643576
p31 128004, p32 128004, p33 150000, p34 145910, p35 140000
p36 734464, p37 150000, p38 1500000, p39 171500, p40 209125
p41 190803, p42 250750, p43 420500, p44 450050, p45 779925
p46 2620000, p47 300000, p48 5125000
/;

*
* the available budget limits the number of projects that can be
* carried out.
*
parameter budget in millions / 15.8 /;

*
* mutually exclusive projects
* In this case projects 1 and 10 are equipment upgrades from
* competitive vendors.
*
set mes number of mutually exlusive sets /me1/;
set me(mes,i) specification of mutually exclusive projects /
me1.(p1,p10)
/;

*
* mutually contingent projects
* need to be specified in pairs
*
set mcs number of mutually contingent sets /mc1/;
set mc(mcs,i) specification of mutually contingent projects /
mc1.(p20,p21)
/;

loop(mcs,
abort$(sum(mc(mcs,i),1)<>2) "The set mc need to be specified in pairs";
);

*
* create a set mclhs and mcrhs for easier writing of the equations
*
set mclhs(mcs,i); mclhs(mc) = no;
set mcrhs(mcs,i);
scalar lhs;
loop(mcs,
lhs = 1;
loop(mc(mcs,i),
if (lhs,
mclhs(mc) = yes;
lhs = 0;
else
mcrhs(mc) = yes;
);
);
);

display mclhs, mcrhs;

variables
z objective
x(i) project selection
;
binary variable x;
equations
objective objective function
budgetcon budget constraint
mutexcl(mes) mutually exclusive projects
mutcont(mcs) mutually contingent projects
;
SOLVING MULTI-OBJECTIVE MODELS WITH GAMS 9

*
* non-discretionary projects need to be selected
*
x.fx(nd) = 1;

*
* objective: maximize value
*
objective.. z =e= sum(i, val(i)*x(i));

*
* budget constraint
*
budgetcon.. sum(i, cost(i)*x(i)) =l= budget*1.0e6;

*
* mutually exclusive projects: only one can be selected from
* sets.
*
mutexcl(mes).. sum(me(mes,i), x(i)) =l= 1;

*
* mutually contingent projects: all projects in sets need to
* selected together
*
mutcont(mcs).. sum(mclhs(mcs,i), x(i)) =e= sum(mcrhs(mcs,i), x(i));

model m /all/;
option optcr=0;
solve m maximizing z using mip;

option x:0;
display x.l;

The solution of this model is as follows:


---- 295 VARIABLE x.L project selection

p1 1, p2 1, p3 1, p4 1, p5 1, p6 1, p7 1, p8 1
p9 1, p12 1, p13 1, p16 1, p46 1, p47 1, p48 1

For a related model see [6].

5. A multiple objective assignment problem


The problem we describe here is based on a client model1. Many countries have
sizeable governmental statistical offices. Although there is a trend to downsize
them, by using information technology, data communication, better use of available
registers such as tax records, and smarter sampling techniques, old fashioned face-
to-face interviews are still considered a valuable way to collect data.
In this study we want to assign interviewers to respondents. We assume there is
a large collection of respondents and we have choose among them. Interviewers can
only travel a certain distance per trip, and can carry out a limited number of inter-
views. The objective is to maximize the number of respondents to be interviewed
while minimizing the total distance traveled.

1The model was proposed by Maarten Schuerhoff


10 ERWIN KALVELAGEN

The basic model looks like:


X
min td = di,j xi,j
i,j
X
max nr = yj
j
X
yj = xi,j
(7) i
X
xi,j maxi
j
xi,j = 0 for di,j > maxd
xi,j {0, 1}
yj {0, 1}
As the total possible number of respondents is very large the number of variables
xi,j becomes very large. We can make the model manageable by dropping from the
model all variables xi,j with di,j > maxd. In the solution procedure we first solve
to maximize the number of respondents that can be reached, and subsequently we
minimize the total distance. Notice that changing the order is not an option. If we
would first minimize the total distance, we would end up with no interviews being
done. Both models can be solved as LPs as the solution is automatically integer,
which is very helpful in keeping the solution time down.
5.0.2. Model interview.gms.

set i interviewers /
20007
20027
20031
21021
21106
21109
21116
49001
95012
96010
98002
98038
99012
/;

set j respondents /
$offlisting
$include respset.csv
$onlisting
/;

parameter dist(i,j) distances /


$offlisting
$ondelim
$include dist2.csv
$offdelim
$onlisting
/;

scalar maxassign max number of respondents for each interviewer /25/;

set ij(i,j) subset of allowed assignments;


SOLVING MULTI-OBJECTIVE MODELS WITH GAMS 11

set jj(j) eligible respondents;

variables
x(i,j) assignment enqueteurs -> respondents
tdist total distance
y(j) active respondents
nr numer of respondents
;

binary variables x,y;

parameter maxdist(i);

equations
totdist total travel distance
calcy(j) calc number of active respondents
mxassign(i) max 25 respondents for each interviewer
numresp number of respondents (objective)
numrespfx number of respondents (fixed)
;

totdist.. tdist =e= sum(ij, dist(ij)*x(ij));


numresp.. nr =e= sum(jj, y(jj));
numrespfx.. nr.l =e= sum(jj, y(jj));
calcy(jj).. y(jj) =e= sum(ij(i,jj), x(ij));
mxassign(i).. sum(ij(i,j), x(ij)) =l= maxassign;

model m1 /numresp,calcy,mxassign/;
model m2 /totdist,numrespfx,calcy,mxassign/;

set iter /iter1*iter4/;

parameter maxdistance(iter) /
iter1 5,
iter2 10,
iter3 20,
iter4 50
/;

option rmip = cplex;


option limrow=0;
option limcol=0;
option reslim=10000;
option iterlim=1000000;
m1.solprint = 0;
m2.solprint = 0;

loop(iter,

x.l(i,j) = 0;
y.l(j) = 0;

ij(i,j) = no;
ij(i,j)$(dist(i,j) <= maxdistance(iter)) = yes;
jj(j) = no;
jj(j)$(sum(ij(i,j),1)) = yes;

solve m1 using rmip maximizing nr;


display nr.l;
solve m2 using rmip minimizing tdist;
display tdist.l,y.l,x.l;

);
12 ERWIN KALVELAGEN

The data files are very large and not repeated here. In fact they were generated
using another GAMS model and exported to a CSV file using the GDXVIEWER
software [5]. The set IJ(I,J) is used to indicate allowable assignments i j.
The set JJ(J) is the set of remaining respondents that are reachable by any of the
interviewers.
Notice that we implemented the equation numrespx using a .L value. Such
constructs is a constant with the current value of the corresponding variable. In
general it is an error to have such a construct in your model, but in this case it has
a function. The loop is used to find solutions for different values of the maximum
travel distance for each interview. Using actual data an assignment was found that
reduced the totally traveled distance from 15000 km to 5000 km per week.

6. Goal programming in budget allocation


An example of a goal programming formulation applied to a budget allocation
problem in a university setting is found in [7]. The model here solves a goal program-
ming problem (see section 2), with several goals, and a number of hard constraints.
Hard constraints can be formulated as normal GAMS equations, which is easier than
the approach given in the reference where they are formulated as goals with a high
priority (in their case a large penalty coefficient in the objective). The goals are
preemptive, i.e. we can use a sequence of solves to handle each goal subsequently.
6.0.3. Model goal.gms.
$ontext

Lexicographic goal programming applied to a capital


budgeting problem.

Erwin Kalvelagen, july 2002

Reference:
Arthur J. Keown, Bernard W. Taylor III and John M.
Pinkerton, "Multiple Objective Capital Budgeting within
the University", Computers & Operations Research, 8,
59-70, 1981.

$offtext

set i projects /
p1 CDC Computer System
p2 IBM Computer System
p3 Upgrading of current Univac Computer System
p4 Remote Batcher on North Campus
p5 Remote Batcher in Engineering Building
p6 Remote Batcher in Business Building
p7 Expansion of Main Library
p8 Expansion of Business School Library
p9 Expansion of Engineering Library
p10 Expansion of North Campus Library
p11 Construction of Additional Small Experiments Lab
p12 Construction of Additional Large Experiments Lab
p13 Build new Engineering-Physics Research Facilities - Prototype A
p14 Build new Engineering-Physics Research Facilities - Prototype B
p15 Renovate Business Building - Prototype A
p16 Renovate Business Building - Prototype B
p17 Renovate Engineering Building
p18 Build Behavioral Observation Labs - Prototype A
p19 Build Behavioral Observation Labs - Prototype B
p20 Improvement in Engineering Lab Equipment
p21 Improvement in Chemistry Lab Equipment
p22 Improvement in Physics Lab Equipment
/;
SOLVING MULTI-OBJECTIVE MODELS WITH GAMS 13

set cont(i) projects with continuous implementation / p20,p21,p22 /;


set disc(i) projects that are on or off / p1*p19 /;

*
* cost: initial cost
* exp: annual operating expenses
* libsqf: library expansion in square feet
* busqasd: Business Department Quality Adjusted Student Days
* engqasd: Engineering Department Quality Adjusted Student Days
* chemqasd: Chemistry Department Quality Adjusted Student Days
* physqasd: Physics Department Quality Adjusted Student Days
* psyqasd: Psychology Department Quality Adjusted Student Days
* desigf: Investment from Designated Funds
* acp: Accreditation Satisfaction Projects
* pssp: Political-Social Satisfaction Projects
*

table data(*,*)
cost exp libsqf busqasd engqasd chemqasd physqasd psyqasd desigf acp pssp
p1 190000 25000 20000 15000 10000 10000 5000 1 1
p2 230000 30000 30000 23000 15000 15000 8000 1 1
p3 90000 25000 8000 6000 4000 4000 2000 1 1
p4 60000 6000 6000 10000 1
p5 50000 5000 12000 50000
p6 50000 5000 14000 1
p7 250000 40000 15000 15000 10000 22000 22000 15000
p8 150000 25000 8000 40000 100000 1
p9 100000 15000 5000 25000
p10 150000 23000 8000 20000 20000 1
p11 50000 10000 2000 10000 6000
p12 80000 16000 4000 15000 12000 190000
p13 190000 20000 40000 20000 120000
p14 120000 12000 20000 25000
p15 160000 10000 45000 1
p16 80000 5000 20000 1
p17 80000 5000 20000 80000
p18 120000 10000 20000 18000 1
p19 70000 6000 10000 13000 1
p20 1 .1 .17
p21 1 .1 .15
p22 1 .1 .20
min 12500 50000 40000 15000 35000 30000 120000 2 1
max 450000 200000
;

set mes set of mutually exclusive projects /me1*me5/;


set me(mes,disc) specification of mutually exclusive projects /
me1.(p1,p2,p3)
me2.(p11,p12)
me3.(p13,p14)
me4.(p15,p16)
me5.(p18,p19)
/;

set goals /budget, expense, designatedfunds, libexpansion, accreditation,


politics, busqasd, engqasd, chemqasd, physqasd, psyqasd/;
*
* show this set is out of order
*
display goals;
*
* the reason is this:
*
alias (*,universe);
display universe;
14 ERWIN KALVELAGEN

set qasd(goals) Quality Adjusted Student Days /


busqasd, engqasd, chemqasd, physqasd, psyqasd/;

binary variables
y(disc) discrete projects
;

positive variables
x(cont) continuous projects
dmin(goals) negative deviations
dplus(goals) positive deviations
;

equation
budget_goal budget constraint formulated as a <= goal
expense_goal operating expenses goal (<=)
designated_funds_goal designated funds budget goal (<=)
lib_expansion_goal library expansion goal (>=)
accreditation_goal projects advised by accreditation teams
political_social_goal projects needed for political reasons
department_performance_goal(qasd) improve QASDs
mutual_exclusive(mes) mutually exclusive projects
contingency handle contingency of p18 or p19 on p15
;

*-------------------------------------------------------------
* goals
*-------------------------------------------------------------

budget_goal..
sum(disc, data(disc,cost)*y(disc)) + sum(cont, data(cont,cost)*x(cont))
+ dmin(budget) - dplus(budget) =e= data(max,cost);

expense_goal..
sum(disc, data(disc,exp)*y(disc)) + sum(cont, data(cont,exp)*x(cont))
+ dmin(expense) - dplus(expense) =e= data(max,exp);

designated_funds_goal..
sum(disc, data(disc,desigf)*y(disc))
+ dmin(designatedfunds) - dplus(designatedfunds) =e= data(min,desigf);

lib_expansion_goal..
sum(disc, data(disc,libsqf)*y(disc))
+ dmin(libexpansion) - dplus(libexpansion) =e= data(min,libsqf);

accreditation_goal..
sum(disc, data(disc,acp)*y(disc))
+ dmin(accreditation) - dplus(accreditation) =e= data(min,acp);

political_social_goal..
sum(disc, data(disc,pssp)*y(disc))
+ dmin(politics) - dplus(politics) =e= data(min,pssp);

department_performance_goal(qasd)..
sum(disc, data(disc,qasd)*y(disc)) + sum(cont, data(cont,qasd)*x(cont))
+ dmin(qasd) - dplus(qasd) =e= data(min,qasd);

*-------------------------------------------------------------
* hard constraints
*-------------------------------------------------------------

mutual_exclusive(mes).. sum(me(mes,disc), y(disc)) =l= 1;

contingency.. y(p18) + y(p19) =l= y(p15);

x.up(cont) = data(max,cont);
SOLVING MULTI-OBJECTIVE MODELS WITH GAMS 15

*-------------------------------------------------------------
* slacks to be minimized
*-------------------------------------------------------------

set goalplus(goals) /
budget
expense
/;

set goalmin(goals) /
designatedfunds
libexpansion
accreditation
politics
busqasd
engqasd
chemqasd
physqasd
psyqasd
/;

*-------------------------------------------------------------
* objective
*-------------------------------------------------------------

parameter pplus(goals), pmin(goals);

variable obj;
equation objective;
objective.. obj =e= sum(goals, pmin(goals)*dmin(goals)+pplus(goals)*dplus(goals));

*-------------------------------------------------------------
* preemption order
*-------------------------------------------------------------

parameter preempt(goals) /
budget 1
expense 2
designatedfunds 3
libexpansion 4
accreditation 5
politics 6
busqasd 7
engqasd 8
chemqasd 9
physqasd 10
psyqasd 11
/;

model m /all/;
option limrow=10;
option limcol=0;
option optcr=0;

alias (goals, g, g1);

scalar preempt_level /1/;

*
* to check the solution reported in the reference
* use this code:
*
$ontext
y.fx(disc) = 0;
y.fx(p4) = 1;
y.fx(p6) = 1;
16 ERWIN KALVELAGEN

y.fx(p8) = 1;
y.fx(p9) = 1;
y.fx(p17) = 1;
x.fx(cont) = 0;
x.fx(p21) = 20000;
$offtext

loop(g1,
loop(g$(preempt(g) = preempt_level),

pplus(goals) = 0;
pmin(goals) = 0;

pplus(goalplus(g)) = 1;
pmin(goalmin(g)) = 1;

solve m using mip minimizing obj;


abort$(m.modelstat > 2.5) "Model not solved to optimality";

dmin.fx(goalmin(g)) = dmin.l(g);
dplus.fx(goalplus(g)) = dplus.l(g);

);

preempt_level = preempt_level + 1;
);

display y.l,x.l;

In the above model the table data is declared as table data(*,*). This is
convenient but quite dangerous. If we would have made a typo in the equations
like:
designated_funds_goal..
sum(disc, data(disc,desigf)*y(disc))
+ dmin(designatedfunds) - dplus(designatedfunds) =e= data(min,designatedfunds);

then this would not have flagged an error. Instead the right-hand side of this
equation would be zero. The only way to verify that the model is correct is to look
carefully at the equation listing. Here we see that:
---- designated_funds_goal =E= designated funds budget goal (<=)

designated_funds_goal.. 50000*y(p5) + 100000*y(p8) + 190000*y(p12) + 120000*y(p13)

+ 80000*y(p17) + dmin(designatedfunds) - dplus(designatedfunds) =E= 120000 ;

(LHS = 180000, INFES = 60000 ***)

which properly lists 120000 as the right-hand side value.


A more reliable approach would be to introduce explicit sets over which the table
is defined:
set rows /p1*p22, min, max/;
set cols /cost, exp, libsqf, busqasd, engqasd, chemqasd, physqasd, psyqasd,
desigf, acp, pssp/;
table data(rows,cols)
.....

There are two types of projects: discrete projects which can only be selected as
a whole, and continuous projects which can be given funds in any positive amount.
This means we need two sets of variable, as we can not declare a variable x(i) with
some of them integer and some of them continuous. As result we have both discrete
variables y(.) and continuous variables x(.) each defined over proper subsets of
I.
SOLVING MULTI-OBJECTIVE MODELS WITH GAMS 17

The loop is somewhat more complicated than needed at first sight. A simpler
approach would just be:
loop(g,
....
);

However the set g (aliased to the set goals) has a different order than specified in
the set statement. The set goals is declared as:
set goals /budget, expense, designatedfunds, libexpansion, accreditation,
politics, busqasd, engqasd, chemqasd, physqasd, psyqasd/;

but if we do a display of this set, we see:


---- 102 SET goals

busqasd , engqasd , chemqasd , physqasd


psyqasd , budget , expense , designatedfunds
libexpansion , accreditation , politics

which has a different order. The reason is that in GAMS set elements are ordered
corresponding to an invisible pool of elements also known as the universe. This
pool is formed by elements as they come. We can make the universe visible by the
following statements:
alias (*,universe);
display universe;

The universe just after the declaration of the set goal is shown below:
---- 104 SET universe Aliased with *
p1 , p2 , p3 , p4
p5 , p6 , p7 , p8
p9 , p10 , p11 , p12
p13 , p14 , p15 , p16
p17 , p18 , p19 , p20
p21 , p22 , cost , exp
libsqf , busqasd , engqasd , chemqasd
physqasd , psyqasd , desigf , acp
pssp , min , max , me1
me2 , me3 , me4 , me5
budget , expense , designatedfunds, libexpansion
accreditation , politics

The order of the elements of the set goal is now obvious.


To be able to set an explicit preemption order, we use a parameter preempt:
parameter preempt(goals) /
budget 1
expense 2
designatedfunds 3
libexpansion 4
accreditation 5
politics 6
busqasd 7
engqasd 8
chemqasd 9
physqasd 10
psyqasd 11
/;

which indicates we should lexicographically solve the model first for the budget
goal, then for the annual expense goal and so on. For this we use a nested loop:
scalar preempt_level /1/;
loop(g1,
loop(g$(preempt(g) = preempt_level),
18 ERWIN KALVELAGEN

....
);
preempt_level = preempt_level + 1;
);

The g1 loop is just to make sure we run 11 iterations: g1 is not further used . The
inner g loop is not really a loop, it just selects one goal g for the current preemption
level.
The construction of the objective in each solve is somewhat involved, and again
the equation listing provides feedback. The pertinent parts are reproduced below:
objective.. - dplus(budget) + obj =E= 0 ; (LHS = 0)
...
objective.. - dplus(expense) + obj =E= 0 ; (LHS = 0)
...
objective.. - dmin(designatedfunds) + obj =E= 0 ;
(LHS = -120000, INFES = 120000 ***)
...
objective.. - dmin(libexpansion) + obj =E= 0 ;
(LHS = -12500, INFES = 12500 ***)
...
objective.. - dmin(accreditation) + obj =E= 0 ; (LHS = -2, INFES = 2 ***)
...
objective.. - dmin(politics) + obj =E= 0 ; (LHS = -1, INFES = 1 ***)
...
objective.. - dmin(busqasd) + obj =E= 0 ; (LHS = 0)
...
objective.. - dmin(engqasd) + obj =E= 0 ; (LHS = -3000, INFES = 3000 ***)
...
objective.. - dmin(chemqasd) + obj =E= 0 ; (LHS = -9000, INFES = 9000 ***)
...
objective.. - dmin(physqasd) + obj =E= 0 ; (LHS = -16000, INFES = 16000 ***)
...
objective.. - dmin(psyqasd) + obj =E= 0 ;
(LHS = -5000.00000000001, INFES = 5000.00000000001 ***)

This list gives shows that the correct deviations or slacks are minimized at each
cycle.
The results for each cycle are as follows. The goals budget, expense, des-
ignatedfunds, accreditation, politics, busqasd and engqasd could also be
met completely. Their optimal objective function was zero. In fact this means
that these goals could have been formulated as hard constraints. The subsequent
goal chemqasd is missed by 9000 units. After that the goals physqasd and
psyqasd are not completely attained (objective is 25000 and 30000 respectively).
The final solution is:
---- 279 VARIABLE y.L discrete projects

p4 1.000, p6 1.000, p8 1.000, p9 1.000, p17 1.000

---- 279 VARIABLE x.L continuous projects

( ALL 0.000 )

The solution reported by the authors [7] is yp4 = yp6 = yp8 = yp9 = yp17 = 1 and
xp21 = 20000 with all the other variables equal to zero. This solution is violating
the budget goal, which can easily be verified by setting:
y.fx(disc) = 0;
y.fx(p4) = 1;
y.fx(p6) = 1;
y.fx(p8) = 1;
y.fx(p9) = 1;
SOLVING MULTI-OBJECTIVE MODELS WITH GAMS 19

y.fx(p17) = 1;
x.fx(cont) = 0;
x.fx(p21) = 20000;

and then solving the model. This gives an objective of 10000 for the first cycle.

References
1. Enrique Ballestero and Carlos Romero, Multiple criteria decision making and its applications
to economic problems, Kluwer, 1998.
2. Carlos A. Coello Coello, An updated survey of GA-based multiobjective optimization tech-
niques, Tech. Report Lania-RD-98-08, Laboratorio Nacional de Inform atica Avanzada (LA-
NIA), Xalapa, Veracruz, M exico, December 1998.
3. J. P. Ignizio, Goal programming and extensions, Lexington Books, 1976.
4. , Introduction to linear goal programming, Sage University Papers Series, Quantitative
applications in the social sciences, Sage Publications, 1985.
5. Erwin Kalvelagen, Interfacing gams with other applications: Tutorial and examples, http:
//www.gams.com/interface/interface.html.
6. A. J. Keown and J. D. Martin, An integer GP model for capital budgeting in hospitals,
Financial Management 5 (1976), no. 3, 2835.
7. Arthur J. Keown, Bernard W. Taylor, and John M. Pinkerton, Multiple objective capital
budgeting within the university, Computers and Operations Research 8 (1981), 5970.
8. Don N. Kleinmuntz and Catherine E. Kleinmuntz, Multiobjective capital budgeting in not-for-
profit hospitals and healthcare systems, Tech. report, Department of Business Administration,
University of Illinois at Urbana-Champaign, December 2001.
9. Pekka Korhonen, Multiple objective programming support, Interim Report IR-98-010, IIASA,
March 1998.
10. Daene C. McKinney and Ximing Cai, Multiobjective optimization model for water allocation
in the aral sea basin, Tech. report, Environmental and Water Resources Engineering Program,
Department of Civil Engineering, University of Texas at Austin, 1996.
11. C. Romero, Handbook of critical issues in goal programming, Pergamon Press, 1991.
12. M. J. Schniederjans, Goal programming methodology and applications, Kluwer Publishers,
1995.
13. Ralph E. Steuer, Multiple criteria optimization : Theory, computation, and application, Wi-
ley, 1986.
14. H. M. Weingartner, Mathematical programming and the analysis of capital budgeting prob-
lems, Prentice Hall, 1963.

GAMS Development Corp., Washington DC


E-mail address: [email protected]

You might also like