set ITEMS:=1..13; set BINS:=1..10; param bin_size:=100; param size{i in ITEMS}; var open{j in BINS} >=0, <=1; var x{i in ITEMS, j in BINS} >=0, <=1; minimize number_of_bins: sum{j in BINS}open[j]; subject to must_pack{i in ITEMS}: sum{j in BINS}x[i,j]=1; subject to Bin_size{j in BINS}: sum{i in ITEMS} x[i,j]*size[i]<=bin_size; subject to Open_bins_only {i in ITEMS, j in BINS}: x[i,j]<=open[j]; #subject to Bin_size_impr{j in BINS}: sum{i in ITEMS} x[i,j]*size[i]<=bin_size*open[j]; data; param size:= 1 20 2 20 3 20 4 20 5 20 6 81 7 81 8 81 9 81 10 82 11 91 12 49 13 51 ;