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
;