0% found this document useful (0 votes)
23 views17 pages

Kal 02

This document discusses how to solve multi-objective models in GAMS. It describes how multi-objective models can be formulated as either a single linear programming model by using a weighted objective function, or as a series of linear programming models using lexicographic or hierarchical optimization. It also discusses goal programming, which formulates multiple objectives as goals with aspiration levels and minimizes deviations from the goals. An example of applying these techniques to a capital budgeting problem is provided.

Uploaded by

IisacG
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)
23 views17 pages

Kal 02

This document discusses how to solve multi-objective models in GAMS. It describes how multi-objective models can be formulated as either a single linear programming model by using a weighted objective function, or as a series of linear programming models using lexicographic or hierarchical optimization. It also discusses goal programming, which formulates multiple objectives as goals with aspiration levels and minimizes deviations from the goals. An example of applying these techniques to a capital budgeting problem is provided.

Uploaded by

IisacG
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/ 17

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
`≤x≤u

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’ [8]. 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 [9].
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 [12], [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 5.
For more information on goal programming see the following references: [3], [4],
[10], [11].

3. The Capital Budgeting problem


The Capital Budgeting problem is related to the knapsack problem [13]. 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
i∈S

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 facility’s 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
[7]. 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 [7].
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 don’t 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 [5].

5. 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 [6]. 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.
5.0.2. 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,
10 ERWIN KALVELAGEN

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’
/;

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
SOLVING MULTI-OBJECTIVE MODELS WITH GAMS 11

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;

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’);
12 ERWIN KALVELAGEN

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);

*-------------------------------------------------------------
* 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
SOLVING MULTI-OBJECTIVE MODELS WITH GAMS 13

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;
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:
14 ERWIN KALVELAGEN

---- 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.
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
SOLVING MULTI-OBJECTIVE MODELS WITH GAMS 15

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),
....
);
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.
16 ERWIN KALVELAGEN

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 [6] 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;
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ática Avanzada (LA-
NIA), Xalapa, Veracruz, México, 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. A. J. Keown and J. D. Martin, An integer GP model for capital budgeting in hospitals,
Financial Management 5 (1976), no. 3, 28–35.
6. Arthur J. Keown, Bernard W. Taylor, and John M. Pinkerton, Multiple objective capital
budgeting within the university, Computers and Operations Research 8 (1981), 59–70.
7. 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.
8. Pekka Korhonen, Multiple objective programming support, Interim Report IR-98-010, IIASA,
March 1998.
9. 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.
10. C. Romero, Handbook of critical issues in goal programming, Pergamon Press, 1991.
11. M. J. Schniederjans, Goal programming methodology and applications, Kluwer Publishers,
1995.
12. Ralph E. Steuer, Multiple criteria optimization : Theory, computation, and application, Wi-
ley, 1986.
SOLVING MULTI-OBJECTIVE MODELS WITH GAMS 17

13. 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