Search
Close this search box.

steelT.sa6b

File from Additional Scripts: Looping and Testing – 1

				
					model steelT.mod;
data steelT.dat;

option solution_precision 10;
option solver_msg 0;

param avail3_lower default  0; param dual_lower;
param avail3_upper default 70; param dual_upper;
param other_bkpts default 0;

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 if time[3].dual = dual_upper 
         then let avail3_upper := avail[3];
         else {
            let other_bkpts := other_bkpts + 1;
            let avail3_lower := avail[3];
            let dual_lower := time[3].dual;
            };

   } 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;

if other_bkpts > 0 then
   printf "Additional breakpoints detected: %2d\n", other_bkpts; ;