set ITEMS:=1..5; param knapsack_size:=50; param size{i in ITEMS}; param benefit{i in ITEMS}; set S{k in 1..5} := {j in ITEMS: size[j] > knapsack_size/k}; var copies{j in ITEMS} >=0; maximize total_benefit: sum{j in ITEMS}benefit[j]*copies[j]; subject to size_constraint: sum{j in ITEMS}size[j]*copies[j]<=knapsack_size; #s.t. cutplane{k in 1..5}: sum{j in S[k]}copies[j] <= k-1; data; param size:= 1 21 2 11 3 51 4 26 5 30; param benefit:= 1 37 2 12 3 500 4 50 5 41;