4.2.2.9. Packing constraints
In this section: bin_packing, bin_packing_capa, bin_packing_load, diffn, diffn_k, diffn_nonstrict, diffn_nonstrict_k, geost, geost_bb, geost_nonoverlap_k, geost_smallest_bb, knapsack.
bin_packing
predicate bin_packing(int: c,
array [$$I] of var $$B: bin,
array [$$I] of int: w)
|
Requires that each item i with weight w[i], be put into bin[i] such that the sum of the weights of the items in each bin does not exceed the capacity c. Assumptions:
|
bin_packing_capa
predicate bin_packing_capa(array [$$B] of int: c,
array [$$I] of var $$B: bin,
array [$$I] of int: w)
|
Requires that each item i with weight w[i], be put into bin[i] such that the sum of the weights of the items in each bin b does not exceed the capacity c[b]. Assumptions:
|
bin_packing_load
1. predicate bin_packing_load(array [$$B] of var int: load,
array [$$I] of var $$B: bin,
array [$$I] of int: w)
2. function array [$$B] of var int: bin_packing_load(array [$$I] of var $$B: bin,
array [$$I] of int: w)
|
|
diffn
predicate diffn(array [$$E] of var int: x,
array [$$E] of var int: y,
array [$$E] of var int: dx,
array [$$E] of var int: dy)
|
Constrains rectangles i, given by their origins (x[i], y[i]) and sizes (dx[i], dy[i]), to be non-overlapping. Zero-width rectangles can still not overlap with any other rectangle. |
diffn_k
predicate diffn_k(array [$$E,$$F] of var int: box_posn,
array [$$E,$$F] of var int: box_size)
|
Constrains k-dimensional boxes to be non-overlapping. For each box i and dimension j, box_posn[i, j] is the base position of the box in dimension j, and box_size[i, j] is the size in that dimension. Boxes whose size is 0 in any dimension still cannot overlap with any other box. |
diffn_nonstrict
predicate diffn_nonstrict(array [$$E] of var int: x,
array [$$E] of var int: y,
array [$$E] of var int: dx,
array [$$E] of var int: dy)
|
Constrains rectangles i, given by their origins (x[i], y[i]) and sizes (dx[i], dy[i]), to be non-overlapping. Zero-width rectangles can be packed anywhere. |
diffn_nonstrict_k
predicate diffn_nonstrict_k(array [$$E,$$F] of var int: box_posn,
array [$$E,$$F] of var int: box_size)
|
Constrains k-dimensional boxes to be non-overlapping. For each box i and dimension j, box_posn[i, j] is the base position of the box in dimension j, and box_size[i, j] is the size in that dimension. Boxes whose size is 0 in at least one dimension can be packed anywhere. |
geost
1. predicate geost(array [$$R,$$K] of int: rect_size,
array [$$R,$$K] of int: rect_offset,
array [$$S] of set of $$R: shape,
array [$$O,$$K] of var int: x,
array [$$O] of var $$S: kind)
2. predicate geost(int: k,
array [$$R,$$K] of int: rect_size,
array [$$R,$$K] of int: rect_offset,
array [$$S] of set of $$R: shape,
array [$$O,$$K] of var int: x,
array [$$O] of var $$S: kind)
|
|
geost_bb
predicate geost_bb(array [$$R,$$K] of int: rect_size,
array [$$R,$$K] of int: rect_offset,
array [$$S] of set of $$R: shape,
array [$$O,$$K] of var int: x,
array [$$O] of var $$S: kind,
array [$$K] of var int: l,
array [$$K] of var int: u)
predicate geost_bb(int: k,
array [$$R,$$K] of int: rect_size,
array [$$R,$$K] of int: rect_offset,
array [$$S] of set of $$R: shape,
array [$$O,$$K] of var int: x,
array [$$O] of var $$S: kind,
array [$$K] of var int: l,
array [$$K] of var int: u)
|
A global non-overlap constraint for k dimensional objects. It enforces that no two objects overlap, and that all objects fit within a global k dimensional bounding box. Parameters:
|
geost_nonoverlap_k
predicate geost_nonoverlap_k(array [$$K] of var int: x1,
array [$$K] of int: w1,
array [$$K] of var int: x2,
array [$$K] of int: w2)
|
A non-overlap constraint for two k dimensional objects. It enforces that there is at least one dimension where the objects occupy a different space. Parameters:
|
geost_smallest_bb
1. predicate geost_smallest_bb(array [$$R,$$K] of int: rect_size,
array [$$R,$$K] of int: rect_offset,
array [$$S] of set of $$R: shape,
array [$$O,$$K] of var int: x,
array [$$O] of var $$S: kind,
array [$$K] of var int: l,
array [$$K] of var int: u)
2. predicate geost_smallest_bb(int: k,
array [$$R,$$K] of int: rect_size,
array [$$R,$$K] of int: rect_offset,
array [$$S] of set of $$R: shape,
array [$$O,$$K] of var int: x,
array [$$O] of var $$S: kind,
array [$$K] of var int: l,
array [$$K] of var int: u)
|
|
knapsack
predicate knapsack(array [$$I] of int: w,
array [$$I] of int: p,
array [$$I] of var int: x,
var int: W,
var int: P)
|
Requires that items are packed in a knapsack with certain weight and profit restrictions. Assumptions:
Parameters:
|