23 System.loadLibrary(
"jniortools");
26 public static void main(String[] args)
throws Exception {
28 int binCapacity = 100;
29 int slackCapacity = 20;
32 int[][] items =
new int[][] {{20, 6}, {15, 6}, {30, 4}, {45, 3}};
33 int numItems = items.length;
40 for (
int i = 0; i < numItems; ++i) {
41 int numCopies = items[i][1];
42 for (
int b = 0; b < numBins; ++b) {
43 x[i][b] = model.
newIntVar(0, numCopies,
"x_" + i +
"_" + b);
49 for (
int b = 0; b < numBins; ++b) {
50 load[b] = model.
newIntVar(0, binCapacity,
"load_" + b);
55 for (
int b = 0; b < numBins; ++b) {
60 int[] sizes =
new int[numItems];
61 for (
int i = 0; i < numItems; ++i) {
62 sizes[i] = items[i][0];
64 for (
int b = 0; b < numBins; ++b) {
66 for (
int i = 0; i < numItems; ++i) {
73 for (
int i = 0; i < numItems; ++i) {
75 for (
int b = 0; b < numBins; ++b) {
82 int safeCapacity = binCapacity - slackCapacity;
83 for (
int b = 0; b < numBins; ++b) {
96 System.out.println(
"Solve status: " + status);
98 System.out.printf(
"Optimal objective value: %f%n", solver.
objectiveValue());
99 for (
int b = 0; b < numBins; ++b) {
100 System.out.printf(
"load_%d = %d%n", b, solver.
value(load[b]));
101 for (
int i = 0; i < numItems; ++i) {
102 System.out.printf(
" item_%d_%d = %d%n", i, b, solver.
value(x[i][b]));
106 System.out.println(
"Statistics");
107 System.out.println(
" - conflicts : " + solver.
numConflicts());
108 System.out.println(
" - branches : " + solver.
numBranches());
109 System.out.println(
" - wall time : " + solver.
wallTime() +
" s");
Solves a bin packing problem with the CP-SAT solver.
static void main(String[] args)