Operational Planning

Bulk Plan Tuning Container Optimization Logic

Container optimization is used to:

  • Determine the optimal equipment combination for packing a set of ship units. This optimally can either be based on cost or equipment usage;  
  • Determine the placement of ship units into pieces of equipment and their compartments. This is achieved through 3D load configuration;
  • Test whether a group of items can fit into a container;
  • Make splitting decisions for order bundles;
  • Make bundle size decisions.

Oracle Transportation Management provides several algorithms for packing items into containers – ranging from simple packing algorithms for speed to more robust mixed integer programming (MIP) based approaches such as the single container MIP and the column generation algorithm. The packing algorithm also includes placing rectangular and cylindrical shared objects into the equipment through various 3D load configuration algorithms. The figure below shows all the algorithms that Oracle Transportation Management supports for packing.

You can select a container optimization logic configuration through the parameter CONTAINER OPT CONFIG ID. You can also have the option of providing multiple container optimization configuration IDs through the parameter, LOGIC CONFIG SET ID. If set, Oracle Transportation Management performs container optimization using each logic configuration parameter in the set, and chooses the one that is most optimal.

This figure shows the packing algorithms; Quick Packing, Single Container MIP, Enumerative, 3D Load Packing and Pattern Based Packing, as well as the other algorithms Column Generation, Multi-container Heuristic and Multi-container MIP that can all be used with container optimization.

This figure shows the packing algorithms; Quick Packing, Single Container MIP, Enumerative, 3D Load Packing and Pattern Based Packing, as well as the other algorithms Column Generation, Multi-container Heuristic and Multi-container MIP that can all be used with container optimization.

Container Optimization Algorithms

Container optimization algorithms primarily deal with two different types of problems.

Both problems, optimal choice of equipment and tight packing of each equipment, are related to each other, as tight packing typically leads to the smallest number of containers needed to pack. The determination of the optimal set of equipment is done by one of the following algorithms:

Note: The property glog.optimization.packingsolver.maxTotalPackedResources specifies the maximum number of equipment that can be used in the packing solution. If the number of equipment packed for an order bundle exceeds the limit you mentioned in the property, the container optimization packing process fails.

Heuristics Algorithms – Non 3D Based

Heuristics algorithms are used to quickly determine the right set of equipment to pack all the items. The following algorithms are considered heuristic algorithms that are not 3D based. This means that the items are placed into the container and are checked only against weight, volume, and ERUs. These algorithms do not check if they can be feasibly placed using box or cylinder geometry.

More than one algorithm from this group can be selected in the same logic configuration. If more than one algorithm is set to true, Oracle Transportation Management will run all the selected algorithms and choose the best solution.

The three non-3D based packing algorithms are described below. The input to the packing algorithms are one container (with or without compartments) and a set of ship units with counts.

Quick Packing Algorithm

This is the simplest packing algorithm. For a given resource or container, this quick packing algorithm will pack the sorted list of items one at a time until the resource is full. It first packs items without splitting. Once no more items can be packed, it then considers splitting the items for packing.

In order to use quick packing only, the USE QUICK PACKING ALGORITHM parameter is the only algorithm that needs to be turned on. If the number of items to pack is less than the size of the container, it is the best algorithm to use as it is the fastest.

Note: In order to use the 3D load configuration algorithm, set the parameter LOAD CONFIG ENGINE TYPE to No Load Config. In addition, one or more of these container optimization logic configuration parameters must be set –  USE 3D BASED LOAD CONFIGURATION, USE PATTERN BASED LOAD CONFIGURATION, and USE TREE SEARCH LOAD CONFIGURATION.

Single Container MIP Algorithm

The single container MIP algorithm uses the mixed integer programming (MIP) algorithm to optimally pack the best set of items into the container. The algorithm checks the constraints of weight, volume, and equipment reference units to create a solution.

However, there are constraints that cannot be handled in the single container MIP. Constraints involving compatibility among the packed items, such as mixing rule, commodity to commodity compatibility, etc., are only checked after the solve. Once the MIP completes, these constraints are checked to ensure that the items can be packed on to the container. This post check might cause the solution to be sub-optimal.

Enumerative Algorithm

The enumerative algorithm, like the single container MIP, produces tightly packed containers. Since it is based on a technique known as dynamic programming, it has a tendency to enumerate all possible combinations – and hence could be computationally expensive.

Unlike the single container MIP, this algorithm does check for all the constraints during the main solve and not afterward. In situations where the placement of a shipment unit into a container depends on other ship units already placed, this is a superior algorithm to single container MIP.

Heuristics Algorithms – 3D Based

To handle a richer set of problems, you can use the 3D load configuration algorithms available via the container optimization logic configuration parameters. In order to use the updated algorithm, the parameter LOAD CONFIG ENGINE TYPE must be set to No Load Config. In addition, one or more of the 3D load configuration engines must be selected in the container optimization logic configuration.

You still have access to the older legacy 3D load configuration algorithm via parameters. To use the legacy 3D load configuration algorithm, select one of the legacy algorithms in the parameter LOAD CONFIG ENGINE TYPE. The legacy algorithms are Pattern Based, Pattern Based Optimize, and Volume Estimation.

The following algorithms are considered as heuristic algorithms for placing regular shaped objects such as boxes, pallets or cylindrical objects. These algorithms determine the coordinates of where the items are placed in the container. In addition to checking for constraints pertaining to 3D placement, these algorithms also check for weight, volume, and ERU constraints.

3D Based Load Configuration

3D based load configuration is designed to pack a number of different sizes of 3 dimensional (3D) objects into containers with known dimensions subject to many different constraints such as orientations and stacking compatibilities. Set the USE 3D BASED LOAD CONFIGURATION logic configuration parameter. Note that, in order to guarantee 3D scoring mechanism always returns a solution with a better solution quality, OTM also spends one iteration to pack equipment with a non-scoring packing algorithm.

3D SCORING MECHANISM: The 3D scoring mechanism can be used to find better or equal packing options when using the 3D load configuration algorithm. Performance will be impacted based on the 3D Scoring Number of Iterations parameter and the number of items to be packed. Performance will be slower as either or both values get higher.

Solution quality improvement: The 3D based load configuration algorithm finds the first feasible item-orientation-space combination and uses the placement combination in the container. With the scoring mechanism on, all item-orientation combinations are evaluated in a fixed space and each placement is scored to estimate the best combination based on the criteria.

Related Parameters and Properties: There are Logic Configuration - Container Optimization parameters that let you define your preferences. These are in the CONTAINER OPTIMIZATION 3D SCORING section.

    • EMPTY SPACE SORT CRITERIA
    • EVALUATION DEPTH
    • ITEM SORT CRITERIA
    • LOAD PLACEMENT ITERATION CRITERIA
  • 3D SCORING NUMBER OF ITERATIONS: This parameter limits the number of times the 3D scoring mechanism will run.
  • 3D SCORING MAXIMUM ITERATIONS WITHOUT IMPROVEMENT: This parameter limits how many iterations the 3D scoring mechanism will try without seeing improvement.
  • Max and Min parameters: The following parameters work together to determine the priority, or weighting, of the criteria for placement. There is a minimum and maximum for each. By setting lower and higher values for these parameters, you can indicate the importance of that criteria. If you do not want a criterion considered, set the minimum and maximum values to zero. If you only want one criterion used, set all others to zero and set a non-zero value for that one. If you want two criteria used, such as both box size loading height criteria and box space dimension match criteria, set non-zero values for those parameters - the more important one, with higher values. The remaining parameters can be set to '0' for both the maximum and minimum. Note that weight does not refer to the actual weight but weighting or priority of the criteria.
    • MAX/MIN WEIGHT FOR BOX SIZE LOADING HEIGHT CRITERIA: This criterion tries to pack items with larger volumes closer to the floor. The rationale here is to allow smaller items to be stacked on larger items.
    • MAX/MIN WEIGHT FOR BOX SPACE DIMENSION MATCH CRITERIA: This criterion measures how well an item fits into the space being evaluated.
    • MAX/MIN WEIGHT FOR COLUMN BUILDING CRITERIA: OTM looks at the number of units with the same dimensions that can be stacked into a column. If many identical items of a particular item type can be placed as a row, column, or stack, thus utilizing the space more efficiently and reducing the fragmentation, then it follows that it must be a good placement.
    • MAX/MIN WEIGHT FOR LOAD BEARING CRITERIA: This criterion impacts placement of high load bearing weight items in the stacking layers and puts low weight bearing items in the top most layer. 
    • MAX/MIN WEIGHT FOR SPACE DEFRAGMENTATION CRITERIA: This criterion impacts placement that reduces the number of fragmented spaces. The default is 100.
    • MAX/MIN WEIGHT FOR UNUSABLE SPACE CRITERIA: When placing an item, new spaces are generated. If no item can fit into the new spaces generated, the space is considered as wasted space. Placement which generates minimum wasted space is preferred.
  • glog.optimization.packingparameters.randomizationSeed: This property is used when using 3D scoring mechanism. It is used to initialize the random number generator. Changing this value can change the resulting shipments from bulkplan.
  • glog.optimization.packingparameters.scoringInMultistop: This property needs to be enabled (in addition to the parameter) to use the 3D scoring mechanism inside the Multistop logic.

Priorities: In order to handle priorities in 3D scoring, a multi-pass approach is used. In the first pass, the items are treated equally – as though they are all of the same priority and OTM tries to do packing with a simplified (one iteration) scoring algorithm. The first pass is to get an estimate of the volume of items packed in the partially filled last container. Once this is done, if the solution generates more than one equipment, the total volume of the last equipment (typically partially filled) is used to take out all of the low priority items that add up to this volume. Internally, two priorities are created – high and low, high being the items that could potentially fill all the full equipment and low are those low priority items that will fill the last container. The number of items with low priorities are increased until the maximum priority of items in the last container is not greater than the minimum priority of items in other containers. Note that it is possible that another container has some small fragment space which is not large enough for big high priority items, but large enough for small low priority items. In this case, OTM will fill those fragment spaces with low priority items to maximize utilization.

Pattern Based Load Configuration

Pattern based load configuration is used for packing objects based on a specific loading pattern such as lengthwise, pinwheel, and standing nested. Set the USE PATTERN BASED LOAD CONFIGURATION logic configuration parameter.

Tree Search Load Configuration

Tree search load configuration has the potential of producing higher quality load placements than 3D based load configuration or pattern based load configuration algorithms by exploring many more placement combinations. The increased solution quality does come at the expense of increased run time. Set the USE TREE SEARCH LOAD CONFIGURATION logic configuration parameter.

As with non-3D based heuristic algorithms, more than one algorithm from this group can be selected and the one with the best result will be used.

Note: If you select algorithms from both 3D based and non-3D based groups, Oracle Transportation Management will use the 3D based algorithms and ignore the non-3D based algorithms. The reason is that Oracle Transportation Management cannot compare the results of the 3D and non-3D, as the non-3D based algorithms will produce more tightly packed loads, but may be infeasible from a 3D perspective.

Column Generation Algorithms

The column generation algorithms, whether intended for packing, multi-stop or any other purpose, contain two major parts – solution generators (or column generators) and the optimizer to select the best combination of solutions (or columns). The optimizer in Oracle Transportation Management is a third party mixed integer programming solver – FICO’s XPressMP.  

To generate solution combinations, the column generation algorithm in container optimization uses one or more seed heuristic packing algorithms. You can turn on column generation algorithm by setting the parameter USE COLUMN GENERATION ALGORITHM to true. Along with this parameter, you can choose one or more algorithms from the non-3D based heuristics set or the 3D based heuristic set. The number of column generation iterations can be controlled via the parameter CONOPT COLUMN GENERATION NUMBER OF ITERATIONS. The iterations specify the number of times the seed algorithms are invoked in order to generate the solutions. To explain this a bit further, consider the following settings:

Since the column generation algorithm is set to true, OTM will use the seed algorithm, single container MIP, to generate the solutions. The single container MIP algorithm will be invoked at most 5 times. Each time the single container MIP is invoked, it will update “value” to improve the column generation solution.

Note: With the above settings, the single container MIP algorithm is used as a seed algorithm for column generation by using USE SINGLE CONTAINER MIP set to true. However, other algorithms (e.g. quick packing, enumerative) can be used for this purpose.

Multi-Container MIP

The multi-container MIP algorithm uses mixed integer programming to select the right set of equipment (and the compartments therein) to pack a given collection of ship units. The multi-container MIP is limited in functionality as it cannot 3D load configuration, order priorities and various item-to-resource and item-to-item incompatibilities. Note that, since the Multi-container MIP formulation uses a lot of binary and integer variables, and its size can increase dramatically with the increase of number of orders and equipment in the bulk plan. Therefore, we do not recommend this algorithm for very large bulk plans.

Multicontainer Heuristic

Most of the container optimization algorithms in OTM are very efficient in packing the items tightly to achieve high equipment utilization. However, they sometimes make "greedy" decisions while trying to obtain a solution quickly and fall short of the optimal solution. The Multicontainer Heuristic algorithm is designed to avoid such greedy decisions as much as possible. This algorithm is suitable for planning cases where multiple equipment choices are available, and it is particularly very effective when the objective is to minimize the cost of the equipment combination.

This algorithm runs primarily in two iterative steps. In the first step, the algorithm solves a mixed integer programming model to determine the combination of resources required to pack all the items. In the second step, the algorithm tries to pack the items based on the solution from Step 1, and sends feedback information back to step 1 to improve the solution, if necessary.

To use this algorithm, set the logic configuration - container optimization parameter "USE MULTICONTAINER HEURISTIC ALGORITHM" to true. Further, this algorithm will use 3D based load configuration to pack items when the container optimization parameter "USE 3D IN MULTICONTAINER HEURISTIC" is true.

Group Packing

To achieve high equipment utilization, Container Optimization logic can mix items from different orders and ship unit lines in the 3D placement of items in an equipment. Therefore the group of items from an order or from a ship unit may not always be collated and placed together in the equipment. However, at times it may be desirable to collate items in such groups and place every group of items in a contiguous manner. In this situation, the Container Optimization logic configuration parameter ITEM GROUPING CRITERIA can be used to pack items in groups using one of the following grouping criteria:

  1. Group by Order: All ship unit items in an order will be put in one group.
  2. Group by Ship Unit: All ship unit items with the same dimensions (across all orders and the ship unit lines) will be put into one group.
  3. Group by Order and Ship Unit: All ship unit items of a ship unit line in an order will be put in one group.

Group packing mainly achieves the following objectives:

  • maintain continuity in the 3D placement of group items in an equipment
  • help reduce splitting of item groups.

For example, when the ITEM GROUPING CRITERIA parameter is set to “1. Group by Order", all the items in every order are packed in continuum. In this case, while packing items of an order, if the equipment capacity is exhausted before the order is fully packed, the next equipment will be packed starting with the same order. This not only achieves continuity in the packing of same order items, but it also helps reduce splitting of the orders.

The group packing approach can be used with all packing algorithms in OTM except Multicontainer MIP and Column Generation packing algorithms. In every algorithm, item groups are first sorted based on the container optimization metric and then packed one after the other starting with the largest group.

When order priority is used in container optimization (i.e. USE PRIORITY IN CONOPT SORTING = true), group packing satisfies both the priority and grouping criteria. To understand this, consider the following orders with priority:

  • Order 1: Weight = 100 LB, Priority = 3
  • Order 2: Weight = 200 LB, Priority = 2
  • Order 3: Weight = 300 LB, Priority = 2
  • Order 4: Weight = 400 LB, Priority = 1

In this example, container optimization logic will pack the above orders in the following manner in different priority/grouping situations.

1. USE PRIORITY IN CONOPT SORTING = false, ITEM GROUPING CRITERIA = None

Orders will be packed in the following sequence: Order 4, Order 3, Order 2, Order 1. Since group packing is not used, items of each order may not be packed in a contiguous manner.

2. USE PRIORITY IN CONOPT SORTING = false, ITEM GROUPING CRITERIA = Group by Order

Orders will be packed in the following sequence: Order 4, Order 3, Order 2, Order 1. Since items are grouped by order, items of each order will be contiguously packed.

3. USE PRIORITY IN CONOPT SORTING = true, ITEM GROUPING CRITERIA = None

Orders will be packed in the following sequence: Order 1, Order 3, Order 2, Order 4. Note that, even though priority enforces continuity in the packing of same-priority items, items from different orders with the same priority can still get mixed up. So, in this case, items of Order 2 or Order 3 may not be contiguously packed.

4. USE PRIORITY IN CONOPT SORTING = true, ITEM GROUPING CRITERIA = Group by Order

Orders will be packed in the following sequence: Order 1, Order 3, Order 2, Order 4. In this case, not only are priority expectations honored in packing, items of every order will also be contiguously packed.

When a 3D Load Configuration based packing algorithm is used, the Container Optimization logic configuration parameter USE SIMILARITY SORTING IN GROUP PACKING can be set to true to keep item groups containing similar sized ship unit items close to each other in group packing sequence. This improves the consistency in item placement and also helps increase equipment utilization.

Additionally, in 3D Load Configuration, the Container Optimization parameter REMOVE FRAGMENT SPACE IN GROUP PACKING can be set to true to eliminate the possibility of using the constricted space atop one packed group of items. Though this improves the arrangement of the group load placement, it can lead to reduced equipment utilization.

Related Topics