22 int bin_capacity = 100;
23 int slack_capacity = 20;
26 int[,] items =
new int[,] { { 20, 6 }, { 15, 6 }, { 30, 4 }, { 45, 3 } };
27 int num_items = items.GetLength(0);
34 for (
int i = 0; i < num_items; ++i)
36 int num_copies = items[i, 1];
37 for (
int b = 0; b < num_bins; ++b)
39 x[i, b] = model.
NewIntVar(0, num_copies, String.Format(
"x_{0}_{1}", i, b));
45 for (
int b = 0; b < num_bins; ++b)
47 load[b] = model.
NewIntVar(0, bin_capacity, String.Format(
"load_{0}", b));
52 for (
int b = 0; b < num_bins; ++b)
54 slacks[b] = model.
NewBoolVar(String.Format(
"slack_{0}", b));
58 int[] sizes =
new int[num_items];
59 for (
int i = 0; i < num_items; ++i)
61 sizes[i] = items[i, 0];
63 for (
int b = 0; b < num_bins; ++b)
66 for (
int i = 0; i < num_items; ++i)
74 for (
int i = 0; i < num_items; ++i)
77 for (
int b = 0; b < num_bins; ++b)
85 int safe_capacity = bin_capacity - slack_capacity;
86 for (
int b = 0; b < num_bins; ++b)
100 Console.WriteLine(String.Format(
"Solve status: {0}", status));
102 Console.WriteLine(String.Format(
"Optimal objective value: {0}",
104 for (
int b = 0; b < num_bins; ++b)
106 Console.WriteLine(String.Format(
"load_{0} = {1}",
107 b, solver.
Value(load[b])));
108 for (
int i = 0; i < num_items; ++i)
110 Console.WriteLine(
string.Format(
" item_{0}_{1} = {2}",
111 i, b, solver.
Value(x[i, b])));
115 Console.WriteLine(
"Statistics");
116 Console.WriteLine(String.Format(
" - conflicts : {0}",
118 Console.WriteLine(String.Format(
" - branches : {0}",
120 Console.WriteLine(String.Format(
" - wall time : {0} s",