Class Pack

    • Constructor Detail

      • Pack

        protected Pack​(long cPtr,
                       boolean cMemoryOwn)
      • Pack

        public Pack​(Solver s,
                    IntVar[] vars,
                    int number_of_bins)
    • Method Detail

      • getCPtr

        protected static long getCPtr​(Pack obj)
      • swigRelease

        protected static long swigRelease​(Pack obj)
      • addWeightedSumLessOrEqualConstantDimension

        public void addWeightedSumLessOrEqualConstantDimension​(long[] weights,
                                                               long[] bounds)
        Dimensions are additional constraints than can restrict what is
        possible with the pack constraint. It can be used to set capacity
        limits, to count objects per bin, to compute unassigned
        penalties...
        This dimension imposes that for all bins b, the weighted sum
        (weights[i]) of all objects i assigned to 'b' is less or equal
        'bounds[b]'.
      • addWeightedSumLessOrEqualConstantDimension

        public void addWeightedSumLessOrEqualConstantDimension​(java.util.function.LongUnaryOperator weights,
                                                               long[] bounds)
        This dimension imposes that for all bins b, the weighted sum
        (weights->Run(i)) of all objects i assigned to 'b' is less or
        equal to 'bounds[b]'. Ownership of the callback is transferred to
        the pack constraint.
      • addWeightedSumLessOrEqualConstantDimension

        public void addWeightedSumLessOrEqualConstantDimension​(java.util.function.LongBinaryOperator weights,
                                                               long[] bounds)
        This dimension imposes that for all bins b, the weighted sum
        (weights->Run(i, b) of all objects i assigned to 'b' is less or
        equal to 'bounds[b]'. Ownership of the callback is transferred to
        the pack constraint.
      • addWeightedSumEqualVarDimension

        public void addWeightedSumEqualVarDimension​(long[] weights,
                                                    IntVar[] loads)
        This dimension imposes that for all bins b, the weighted sum
        (weights[i]) of all objects i assigned to 'b' is equal to loads[b].
      • addWeightedSumEqualVarDimension

        public void addWeightedSumEqualVarDimension​(java.util.function.LongBinaryOperator weights,
                                                    IntVar[] loads)
        This dimension imposes that for all bins b, the weighted sum
        (weights->Run(i, b)) of all objects i assigned to 'b' is equal to
        loads[b].
      • addSumVariableWeightsLessOrEqualConstantDimension

        public void addSumVariableWeightsLessOrEqualConstantDimension​(IntVar[] usage,
                                                                      long[] capacity)
        This dimension imposes:
        forall b in bins,
        sum (i in items: usage[i] * is_assigned(i, b)) <= capacity[b]
        where is_assigned(i, b) is true if and only if item i is assigned
        to the bin b.

        This can be used to model shapes of items by linking variables of
        the same item on parallel dimensions with an allowed assignment
        constraint.
      • addWeightedSumOfAssignedDimension

        public void addWeightedSumOfAssignedDimension​(long[] weights,
                                                      IntVar cost_var)
        This dimension enforces that cost_var == sum of weights[i] for
        all objects 'i' assigned to a bin.
      • addCountUsedBinDimension

        public void addCountUsedBinDimension​(IntVar count_var)
        This dimension links 'count_var' to the actual number of bins used in the
        pack.
      • addCountAssignedItemsDimension

        public void addCountAssignedItemsDimension​(IntVar count_var)
        This dimension links 'count_var' to the actual number of items
        assigned to a bin in the pack.
      • post

        public void post()
        Description copied from class: Constraint
        This method is called when the constraint is processed by the
        solver. Its main usage is to attach demons to variables.
        Overrides:
        post in class Constraint
      • clearAll

        public void clearAll()
      • propagateDelayed

        public void propagateDelayed()
      • initialPropagate

        public void initialPropagate()
        Description copied from class: Constraint
        This method performs the initial propagation of the
        constraint. It is called just after the post.
        Overrides:
        initialPropagate in class Constraint
      • propagate

        public void propagate()
      • oneDomain

        public void oneDomain​(int var_index)
      • isUndecided

        public boolean isUndecided​(int var_index,
                                   int bin_index)
      • setImpossible

        public void setImpossible​(int var_index,
                                  int bin_index)
      • assign

        public void assign​(int var_index,
                           int bin_index)
      • isAssignedStatusKnown

        public boolean isAssignedStatusKnown​(int var_index)
      • isPossible

        public boolean isPossible​(int var_index,
                                  int bin_index)
      • assignVar

        public IntVar assignVar​(int var_index,
                                int bin_index)
      • setAssigned

        public void setAssigned​(int var_index)
      • setUnassigned

        public void setUnassigned​(int var_index)
      • removeAllPossibleFromBin

        public void removeAllPossibleFromBin​(int bin_index)
      • assignAllPossibleToBin

        public void assignAllPossibleToBin​(int bin_index)
      • assignFirstPossibleToBin

        public void assignFirstPossibleToBin​(int bin_index)
      • assignAllRemainingItems

        public void assignAllRemainingItems()
      • unassignAllRemainingItems

        public void unassignAllRemainingItems()