ibm1.gms : Aluminum Alloy Smelter Sample Problem

Description

This simple alloy smelter blending problem is used as an introductory
example in several mpsx manuals.


Reference

  • IBM, MPSX/370 Primer. Tech. rep., IBM, 1979.

Small Model of Type : LP


Category : GAMS Model library


Main file : ibm1.gms

$Title Aluminum Alloy Smelter Sample Problem  (IBM1,SEQ=79)

$Ontext

   This simple alloy smelter blending problem is used as an introductory
   example in several mpsx manuals.


IBM, MPSX/370 Primer. Tech. rep., IBM, 1979.

$Offtext


 Sets  s     scrap metals for blending / bin-1*bin-5, aluminum, silicon /
       sl(s) locally available blends  / bin-1*bin-5 /
       e     chemical elements         / iron, copper, manganese, magnesium
                                         aluminum, silicon /

 Table bspec(e,*) blending specs (lb for 2000 lb ingot)

             maximum  minimum
 iron          60
 copper       100
 manganese     40
 magnesium     30
 aluminum     inf      1500
 silicon      300       250


 Table prop(e,s)  chemical properties (proportions)

           bin-1  bin-2  bin-3  bin-4  bin-5  aluminum  silicon
 iron        .15   .04    .02    .04    .02      .01       .03
 copper      .03   .05    .08    .02    .06      .01
 manganese   .02   .04    .01    .02    .02
 magnesium   .02   .03                  .01
 aluminum    .70   .75    .80    .75    .80      .97
 silicon     .02   .06    .08    .12    .02      .01       .97

 Parameter dcheck(s) other elements in prop (prop);
           dcheck(s) = 1 - sum(e, prop(e,s)) ; display dcheck;

 Table sup(s,*) supply and cost data

            inventory  min-use   cost
*              (lb)      (lb)   ($/lb)
 bin-1        200                .03
 bin-2        750                .08
 bin-3        800        400     .17
 bin-4        700        100     .12
 bin-5       1500                .15
 aluminum     inf                .21
 silicon      inf                .38


 Variables  x(s)  blending components  (lb)
            bc(e) elements in blend    (lb)
            cost  total material cost  ($)

 Equations  yield   final blend requirements (lb)
            ebal(e) element balance          (lb)
            cdef    cost definition          ($) ;

 yield.. sum(s, x(s)) =e= 2000 ;

 ebal(e).. bc(e) =e= sum(s, prop(e,s)*x(s)) ;

 cdef.. cost =e= sum(s, sup(s,"cost")*x(s));

 Model alloy alloy blending model / all / ;

 x.lo(s) = sup(s,"min-use"); x.up(s) = sup(s,"inventory");
 bc.lo(e) = bspec(e,"minimum"); bc.up(e) = bspec(e,"maximum");

 Parameter report(s,*) blending results ;


 Solve alloy minimizing cost using lp;
 report(s,"run-1") = x.l(s);

 Option solprint=off;
 Options limcol=0, limrow=0;

 prop("iron","silicon") = .02; prop("silicon","silicon") = .98;
 Solve alloy minimizing cost using lp;
 report(s,"run-2") = x.l(s);

 prop("iron","silicon") = .01; prop("silicon","silicon") = .99;
 Solve alloy minimizing cost using lp;
 report(s,"run-3") = x.l(s);

 prop("iron","silicon") = 0; prop("silicon","silicon") = 1.0;
 Option solprint=on;
 Solve alloy minimizing cost using lp;
 report(s,"run-4") = x.l(s);

 Display report;

 Parameter costrep example cost report for 2000lb batch;

 costrep(s          ,"cost    ") = sup(s,"cost");
 costrep(s          ,"quantity") = x.l(s);
 costrep(s          ,"c-cost  ") = costrep(s,"cost")*costrep(s,"quantity");
 costrep("**total**","c-cost  ") = sum(s, costrep(s,"c-cost"));

 Display costrep;
* demonstrates GAMS' rounding capabilities according to ecl manual

 Parameters xr(s)  rounded solution value
            xr3(s) numerical error rounding at third decimal
            num    rounded solution counter ;

 xr(s)  = round(x.l(s));
 xr3(s) = round(x.l(s),3);
 num = 0; loop(s$(xr(s) ne xr3(s) and num lt 2),
             x.lo(s)$(xr(s) gt xr3(s)) = xr(s);
             x.up(s)$(xr(s) lt xr3(s)) = xr(s); num = num + 1 ) ;
 Solve alloy minimizing cost using lp;