set NUTR ordered; set FOOD ordered; param cost {FOOD} >= 0; param f_min {FOOD} >= 0, default 0; param f_max {j in FOOD} >= f_min[j], default Infinity; param n_min {NUTR} >= 0, default 0; param n_max {i in NUTR} >= n_min[i], default Infinity; param amt {NUTR,FOOD} >= 0; # -------------------------------------------------------- var Buy {j in FOOD} integer >= f_min[j], <= f_max[j]; # -------------------------------------------------------- minimize Total_Cost: sum {j in FOOD} cost[j] * Buy[j]; minimize Nutr_Amt {i in NUTR}: sum {j in FOOD} amt[i,j] * Buy[j]; # -------------------------------------------------------- subject to Diet {i in NUTR}: n_min[i] <= sum {j in FOOD} amt[i,j] * Buy[j] <= n_max[i];