steelT.sa6#

Warning

The original AMPL book does not reflect many of the latest features available in AMPL. To programmatically interact with your models you should use APIs such as our popular Python API.

To explore examples showcasing these recent features, please visit:

steelT.sa6

model steelT.mod;
data steelT.dat;

option solution_precision 10;
option solver_msg 0;

param avail3_lower default 22; param dual_lower;
param avail3_upper default 23; param dual_upper;

let avail[3] := avail3_lower;
solve; let dual_lower := time[3].dual;

let avail[3] := avail3_upper;
solve; let dual_upper := time[3].dual;

repeat {

   let avail[3] := (avail3_lower + avail3_upper) / 2;

   solve;

   if time[3].dual = dual_lower
      then let avail3_lower := avail[3];
      else let avail3_upper := avail[3];

   } until (avail3_upper - avail3_lower) / avail[3] < 0.0000001;

printf "Dual value %11.6f for avail[3] < %9.6f\n",
   dual_lower, avail3_lower;

printf "Dual value %11.6f for avail[3] > %9.6f\n",
   dual_upper, avail3_upper;