chance.gms : Chance Constrained Feed Mix Problem

Description

```Cattle feed problem with chance constraints. Two problems are
formulated, a deterministic model and the chance constraint
version deterministic equivalent.
```

Reference

• Bracken, J, and McCormick, G P, Chapter 9. In Selected Applications of Nonlinear Programming. John Wiley and Sons, New York, 1968, pp. 94-100.

Small Model of Types : NLP lp

Category : GAMS Model library

Main file : chance.gms

``````\$title Chance Constraint Feed Mix Problem (CHANCE,SEQ=26)

\$onText
Cattle feed problem with chance constraints. Two problems are
formulated, a deterministic model and the chance constraint
version deterministic equivalent.

Bracken, J, and McCormick, G P, Chapter 9. In Selected Applications of
Nonlinear Programming. John Wiley and Sons, New York, 1968, pp. 94-100.

Keywords: linear programming, nonlinear programming, feed mix problem,
chance constrained programming
\$offText

Set
f 'feeds'     / barley, oats, sesame, grnd-meal /
n 'nutrients' / protein, fats /;

Parameter
price(f) 'feed prices (fgld per ton)' / barley    24.55
oats      26.75
sesame    39.00
grnd-meal 40.50 /
req(n)   'requirements         (pct)' / protein   21
fats       5    /;

Table char(*,n,f) 'feed characteristics (pct)'
barley   oats  sesame  grnd-meal
mean.protein        12.0   11.9     41.8      52.1
mean.fats            2.3    5.6     11.1       1.3
variance.protein      .28    .19    20.5        .62;

Variable
cost 'total cost per ton'
x(f) 'feed mix     (pct)';

Positive Variable x;

Equation
cdef    'cost definition'
mc      'mix constraint'
nbal(n) 'nutrient balance'
cc(n)   'chance constraint';

cdef..    cost =e= sum(f, price(f)*x(f));

mc..      sum(f, x(f)) =e= 1;

nbal(n).. sum(f, char("mean",n,f)*x(f)) =g= req(n);

cc(n)..   sum(f, char("mean",n,f)*x(f)) - 1.645*sqrt(sum(f, char("variance",n,f)*sqr(x(f)))) =g= req(n);

Model
det    'deterministic model' / cdef, mc, nbal    /
chance 'chance model'        / cdef, mc,      cc /;

Parameter mix 'mixing report';

solve det    minimizing cost using lp;
mix(f,'det   ') = x.l(f);

solve chance minimizing cost using nlp;
mix(f,'chance') = x.l(f);

display mix;
``````