choco.kernel.common.opres.pack
Class LowerBoundFactory

java.lang.Object
  extended by choco.kernel.common.opres.pack.LowerBoundFactory

public final class LowerBoundFactory
extends Object

Compute lower bounds for one-dimensional bin packing problems using MDFF (F_0^k, f_{CCM,1}^k.

Author:
Arnaud Malapert
See Also:
Clautiaux, F., Alves, C. & Valério de Carvalho, J.
A survey of dual-feasible and superadditive functions
Annals of Operations Research, Springer Netherlands, 2010, Vol. 179, pp. 317-342

Method Summary
static int computeAllMDFF(gnu.trove.TIntArrayList items, int capacity, int upperBound)
          Compute a lower bound based on F_0^k and F_{CCM,1}^k.
static int computeF0(gnu.trove.TIntArrayList items, int capacity, int upperBound)
          Compute a lower bound based on F_0^k.
static int computeFCCM1(gnu.trove.TIntArrayList items, int capacity, int upperBound)
          Compute a lower bound based on F_{CCM,1}^k.
static int computeL0(gnu.trove.TIntArrayList items, int capacity)
          Compute the lower bound L0
protected static int computeMDDFF(gnu.trove.TIntArrayList items, int capacity, int upperBound, choco.kernel.common.opres.pack.AbstractFindParameters findParameters, AbstractFunctionDFF functionDDFF)
           
static int memComputeAllMDFF(gnu.trove.TIntArrayList items, int capacity, int upperBound)
          Compute a lower bound based on F_0^k and F_{CCM,1}^k (not thread safe)
static int memComputeF0(gnu.trove.TIntArrayList items, int capacity, int upperBound)
          Compute a lower bound based on F_0^k (not thread safe)
static int memComputeFCCM1(gnu.trove.TIntArrayList items, int capacity, int upperBound)
          Compute a lower bound based on F_{CCM,1}^k (not thread safe)
static int memComputeL0(gnu.trove.TIntArrayList items, int capacity)
          Compute the lower bound L0 (not thread safe)
static boolean testPackingConsistencyWithMDFF(gnu.trove.TIntArrayList sizes, int capacity, int maxNumberOfBins)
          Apply a consistency test a one-dimensional bin packing limited to a maximum number of bins.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

computeL0

public static int computeL0(gnu.trove.TIntArrayList items,
                            int capacity)
Compute the lower bound L0

Parameters:
sizes - items (not sorted)
capacity - the capacity of bins
Returns:
a Lower bound on the number of bins

computeF0

public static final int computeF0(gnu.trove.TIntArrayList items,
                                  int capacity,
                                  int upperBound)
Compute a lower bound based on F_0^k.

Parameters:
sizes - items sorted according non decreasing sizes
capacity - the capacity of bins
upperBound - an upper bound on the number of bins (can speed up the computation)
Returns:
a Lower bound on the number of bins

computeFCCM1

public static final int computeFCCM1(gnu.trove.TIntArrayList items,
                                     int capacity,
                                     int upperBound)
Compute a lower bound based on F_{CCM,1}^k.

Parameters:
sizes - items sorted according non decreasing sizes
capacity - the capacity of bins
upperBound - an upper bound on the number of bins (can speed up the computation)
Returns:
a Lower bound on the number of bins

computeAllMDFF

public static final int computeAllMDFF(gnu.trove.TIntArrayList items,
                                       int capacity,
                                       int upperBound)
Compute a lower bound based on F_0^k and F_{CCM,1}^k.

Parameters:
sizes - items sorted according non decreasing sizes
capacity - the capacity of bins
upperBound - an upper bound on the number of bins (can speed up the computation)
Returns:
a Lower bound on the number of bins

computeMDDFF

protected static final int computeMDDFF(gnu.trove.TIntArrayList items,
                                        int capacity,
                                        int upperBound,
                                        choco.kernel.common.opres.pack.AbstractFindParameters findParameters,
                                        AbstractFunctionDFF functionDDFF)

memComputeL0

public static int memComputeL0(gnu.trove.TIntArrayList items,
                               int capacity)
Compute the lower bound L0 (not thread safe)

Parameters:
sizes - items (not sorted)
capacity - the capacity of bins
Returns:
a Lower bound on the number of bins

memComputeF0

public static int memComputeF0(gnu.trove.TIntArrayList items,
                               int capacity,
                               int upperBound)
Compute a lower bound based on F_0^k (not thread safe)

Parameters:
sizes - items sorted according non decreasing sizes
capacity - the capacity of bins
upperBound - an upper bound on the number of bins (can speed up the computation)
Returns:
a Lower bound on the number of bins

memComputeFCCM1

public static int memComputeFCCM1(gnu.trove.TIntArrayList items,
                                  int capacity,
                                  int upperBound)
Compute a lower bound based on F_{CCM,1}^k (not thread safe)

Parameters:
sizes - items sorted according non decreasing sizes
capacity - the capacity of bins
upperBound - an upper bound on the number of bins (can speed up the computation)
Returns:
a Lower bound on the number of bins

memComputeAllMDFF

public static int memComputeAllMDFF(gnu.trove.TIntArrayList items,
                                    int capacity,
                                    int upperBound)
Compute a lower bound based on F_0^k and F_{CCM,1}^k (not thread safe)

Parameters:
sizes - items sorted according non decreasing sizes
capacity - the capacity of bins
upperBound - an upper bound on the number of bins (can speed up the computation)
Returns:
a Lower bound on the number of bins

testPackingConsistencyWithMDFF

public static boolean testPackingConsistencyWithMDFF(gnu.trove.TIntArrayList sizes,
                                                     int capacity,
                                                     int maxNumberOfBins)
Apply a consistency test a one-dimensional bin packing limited to a maximum number of bins.

Parameters:
sizes - sizes of items (not sorted)
capacity - the capacity of bins
maxNumberOfBins - maximum number of bins
Returns:
false if the lower bound is strictly greater than the maxumum number of bins


Copyright © 2012. All Rights Reserved.