prodsp3.gms : Stochastic Programming Example

Description

```The problem consists of determining the product mix for a furniture shop with two
workstations: carpentry and finishing. The availability of labor in man-hours at
the two stations is limited. There are four product classes, each consuming a
certain number of man-hours at the two stations. Each product earns a certain
profit and the shop has the option to purchase labor from outside. The objective
is to maximize the profit.

The problem is solved for 300 scenarios.

King, A J, Stochastic Programming Problems: Examples from the
Literature. In Ermoliev, Y, and Wets, R J, Eds, Numerical
Techniques for Stochastic Optimization Problems. Springer Verlag,
1988, pp. 543-567.
```

Small Model of Type : SP

Category : GAMS EMP library

Main file : prodsp3.gms

``````\$title Stochastic Programming Example (PRODSP3,SEQ=81)

\$ontext

The problem consists of determining the product mix for a furniture shop with two
workstations: carpentry and finishing. The availability of labor in man-hours at
the two stations is limited. There are four product classes, each consuming a
certain number of man-hours at the two stations. Each product earns a certain
profit and the shop has the option to purchase labor from outside. The objective
is to maximize the profit.

The problem is solved for 300 scenarios.

King, A J, Stochastic Programming Problems: Examples from the
Literature. In Ermoliev, Y, and Wets, R J, Eds, Numerical
Techniques for Stochastic Optimization Problems. Springer Verlag,
1988, pp. 543-567.

\$offtext

Sets i product class / class-1*class-4 /
j workstation   / work-1 *work-2  /

Parameters c(i) profit / class-1 12,class-2 20, class-3 18, class-4 40 /
q(j) cost   / work-1 5, work-2 10 /;

Parameters h(j)   random available labor
t(j,i) random labor required

table trand(j,*,i) min and max values for uniform distribution
class-1 class-2 class-3 class-4
work-1.min    3.5    8         6      9
work-1.max    4.5   10         8     11
work-2.min     .8     .8       2.5   36
work-2.max    1.2    1.2       3.5   44 ;

parameter hrand(j,*) / work-1.(mean 6000, variance 100)
work-2.(mean 4000, variance  50) /;

t(j,i) = uniform(trand(j,'min',i),trand(j,'max',i));

h('work-1') = normal(6000,100);
h('work-2') = normal(4000, 50);

Variables EProfit  expected profit
x(i)     products sold
v(j)     labor purchased
positive variable x,v

Equations obj     expected cost definition
lbal(j) labor balance;

obj.. EProfit =e=  sum(i, c(i)*x(i)) - sum(j, q(j)*v(j));

lbal(j).. sum(i, t(j,i)*x(i)) =l= h(j) + v(j);

model mix / obj, lbal /;

file emp / '%emp.info%' /; put emp '* problem %gams.i%';
loop(j,
put / 'randvar ' h.tn(j) ' normal ' hrand(j,'mean'):6:0 hrand(j,'variance'):4:0);
loop((j,i),
put / 'randvar ' t.tn(j,i) ' uniform ' trand(j,'min',i):6:2 trand(j,'max',i):6:2);

alias(j,jp);
loop((jp,j,i),
put / 'correlation ' h.tn(jp) ' ' t.tn(j,i) uniform(-1,1):6:2);
putclose / 'stage 2 v lbal h t';

Set scen        scenarios / s1*s300 /;
Parameter
s_h(scen,j)
s_t(scen,j,i);

Set dict / scen .scenario.''
h    .randvar .s_h
t    .randvar .s_t /;

\$ifi not %gams.emp%==lindo \$goto spcont2
\$echo STOC_NSAMPLE_STAGE 300 > lindo.opt
mix.optfile=1;

\$label spcont2
solve mix using emp maximizing eprofit scenario dict;
``````
GAMS Development Corp.
GAMS Software GmbH

General Information and Sales
U.S. (+1) 202 342-0180
Europe: (+49) 221 949-9170