/* Planning model (MIP) in Picat. From GLPK:s example plan.mod This Picat model was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ import mip. main => go. go => Bin1 :: 0.0..200.0, Bin2 :: 0.0..2500.0, Bin3 :: 400.0..800.0, Bin4 :: 100.0..700.0, Bin5 :: 0.0..1500.0, Alum :: 0.0..1000.0, Silicon :: 0.0..1000.0, Value #= 0.03 * Bin1 + 0.08 * Bin2 + 0.17 * Bin3 + 0.12 * Bin4 + 0.15 * Bin5 + 0.21 * Alum + 0.38 * Silicon, Alum #>= 0.0, Silicon #>= 0.0, Bin1 + Bin2 + Bin3 + Bin4 + Bin5 + Alum + Silicon #= 2000.0, 0.15 * Bin1 + 0.04 * Bin2 + 0.02 * Bin3 + 0.04 * Bin4 + 0.02 * Bin5 + 0.01 * Alum + 0.03 * Silicon #<= 60.0, 0.03 * Bin1 + 0.05 * Bin2 + 0.08 * Bin3 + 0.02 * Bin4 + 0.06 * Bin5 + 0.01 * Alum #<= 100.0, 0.02 * Bin1 + 0.04 * Bin2 + 0.01 * Bin3 + 0.02 * Bin4 + 0.02 * Bin5 #<= 40.0, 0.02 * Bin1 + 0.03 * Bin2 + 0.01 * Bin5 #<= 30.0, 0.70 * Bin1 + 0.75 * Bin2 + 0.80 * Bin3 + 0.75 * Bin4 + 0.80 * Bin5 + 0.97 * Alum #>= 1500.0, 250.0 #<= 0.02 * Bin1 + 0.06 * Bin2 + 0.08 * Bin3 + 0.12 * Bin4 + 0.02 * Bin5 + 0.01 * Alum + 0.97 * Silicon, 0.02 * Bin1 + 0.06 * Bin2 + 0.08 * Bin3 + 0.12 * Bin4 + 0.02 * Bin5 + 0.01 * Alum + 0.97 * Silicon #<= 300.0, Vars = [Bin1,Bin2,Bin3,Bin4,Bin5,Alum,Silicon], solve($[min(Value)], Vars), println(bin1=Bin1), println(bin2=Bin2), println(bin3=Bin3), println(bin4=Bin4), println(bin5=Bin5), println(alum=Alum), println(silicon=Silicon), println(value=Value), nl.