Description
This sample model is taken from the cybernet pds/apex sample library of models. A paper manufacturer can produce four different types of paper on three different machines. Given a fixed demand schedule the objective is to find a production plan that maximizes monthly profits.
Small Model of Type : LP
Category : GAMS Model library
Main file : ajax.gms
$title Ajax Paper Company Production Schedule (AJAX,SEQ=60)
$onText
This sample model is taken from the cybernet pds/apex sample
library of models. A paper manufacturer can produce four different
types of paper on three different machines. Given a fixed demand
schedule the objective is to find a production plan that
maximizes monthly profits.
CDC, PDS/APEX Sample Model Library, 1977. Control Data Corporation
Keywords: linear programming, production planning, paper industry, micro economics,
scheduling
$offText
Set
m 'machines at mills' / machine-1, machine-2, machine-3 /
g 'paper grades' / 20-bond-wt, 25-bond-wt, c-bond-ext, tissue-wrp /;
Table prate(g,m) 'production rate (tons per hour)'
machine-1 machine-2 machine-3
20-bond-wt 53 52 49
25-bond-wt 51 49 44
c-bond-ext 52 45 47
tissue-wrp 42 44 40;
Table pcost(g,m) 'production cost ($ per ton)'
machine-1 machine-2 machine-3
20-bond-wt 76 75 73
25-bond-wt 82 80 78
c-bond-ext 96 95 92
tissue-wrp 72 71 70;
Table dempr(g,*) 'demand and prices'
demand price
20-bond-wt 30000 77
25-bond-wt 20000 81
c-bond-ext 12000 99
tissue-wrp 8000 105;
Parameter avail(m) 'available machine time (hours per month)'
/ machine-1 672, machine-2 600, machine-3 480 /;
Variable
outp(g,m) 'production (tons per month)'
profit 'profit ($ per month)';
Positive Variable outp;
Equation
cap(m) 'machine capacity (hours per month)'
dem(g) 'demand (tons per month)'
pdef 'profit definition ($ per month)';
cap(m).. sum(g, outp(g,m)/prate(g,m)) =l= avail(m);
dem(g).. sum(m, outp(g,m)) =e= dempr(g,"demand");
pdef.. profit =e= sum(g, dempr(g,"demand")*dempr(g,"price"))
- sum((g,m), pcost(g,m)*outp(g,m));
Model ajax / all /;
solve ajax using lp maximizing profit;
$sTitle Report Definitions
Parameter
mtr(m,*) 'machine time report'
par(g,*) 'production allocation report';
mtr(m,"avail-h") = avail(m);
mtr(m,"used-h") = cap.l(m);
mtr(m,"unused-h") = avail(m) - cap.l(m);
mtr(m,"marginal") = - cap.m(m);
par(g,"demand") = dempr(g,"demand");
par(g,"sold") = dem.l(g);
par(g,"unsold") = dempr(g,"demand") - dem.l(g);
par(g,"marginal") = dem.m(g);
display mtr, par, outp.l, outp.m;