set MINREQ; # nutrients with minimum requirements set MAXREQ; # nutrients with maximum requirements set NUTR = MINREQ union MAXREQ; # nutrients set FOOD; # foods param cost {FOOD} > 0; param f_min {FOOD} >= 0; param f_max {j in FOOD} >= f_min[j]; param n_min {MINREQ} >= 0; param n_max {MAXREQ} >= 0; param amt {NUTR,FOOD} >= 0; var Buy {j in FOOD} >= f_min[j], <= f_max[j]; minimize Total_Cost: sum {j in FOOD} cost[j] * Buy[j]; subject to Diet_Min {i in MINREQ}: sum {j in FOOD} amt[i,j] * Buy[j] >= n_min[i]; subject to Diet_Max {i in MAXREQ}: sum {j in FOOD} amt[i,j] * Buy[j] <= n_max[i];