model steelT.mod; data steelT.dat; option solution_precision 10; option solver_msg 0; set AVAILt; param availt_obj {AVAILt}; param availt_dual {AVAILt}; param avail_orig; param previous_dual; for {t in 1..T} { let AVAILt := {}; reset data availt_obj; reset data availt_dual; let avail_orig := avail[t]; let avail[t] := 0; let previous_dual := Infinity; repeat { let avail[t] := avail[t] + 1; solve; if time[t].dual = previous_dual then continue; let AVAILt := AVAILt union {avail[t]}; let availt_obj[avail[t]] := total_profit; let availt_dual[avail[t]] := time[t].dual; if time[t].dual = 0 then break; let previous_dual := time[t].dual; } let avail[t] := avail_orig; display t, availt_obj, availt_dual; }