/*Knapsack This model finds the integer optimal packing of a knapsack Nigel_Galloway January 9th., 2012 */ set Items; param weight{t in Items}; param value{t in Items}; param quantity{t in Items}; var take{t in Items}, integer, >=0, <=quantity[t]; knap_weight : sum{t in Items} take[t] * weight[t] <= 400; maximize knap_value: sum{t in Items} take[t] * value[t]; data; param : Items : weight value quantity := map 9 150 1 compass 13 35 1 water 153 200 2 sandwich 50 60 2 glucose 15 60 2 tin 68 45 3 banana 27 60 3 apple 39 40 3 cheese 23 30 1 beer 52 10 3 suntancream 11 70 1 camera 32 30 1 T-shirt 24 15 2 trousers 48 10 2 umbrella 73 40 1 w-trousers 42 70 1 w-overclothes 43 75 1 note-case 22 80 1 sunglasses 7 20 1 towel 18 12 2 socks 4 50 1 book 30 10 2 ; end;