Table of Contents

Packing Solutions

Colin Updated by Colin

A "Packing Solution" represents a set of one or more specific containers that is presumed to be a valid solution to packing a set of items with known physical properties and restrictions. Put simply, it is an answer to "how can I pack these items into one or more boxes"?

There are many inputs to this question and multiple possible answers. Any tiny change to these inputs can theoretically cause an otherwise valid result to either no longer be valid or no longer be optimal.

ShipStream's Packing Solution feature makes it easy to harness the power of modern computing without tying your hands to it by combining multiple advanced computational algorithms, training with historical and real-time user-generated data and advanced features for handling special cases.

Inputs

The inputs to the Packing Solution algorithms include:

  • Product Attributes
    • Length
    • Width
    • Height
    • Weight
    • Goods Type
    • Regulation
    • Requires Packaging
    • Can Contain Other Items
    • Valid Containers
    • Special Supplies
    • Bulk Quantity
    • Unit Quantity
    • Max Per Package
    • Ship Separately
    • Ship Separate Tag
    • Can Tip
A product is considered negligible if the smallest dimension is less than or equal to 1 millimeter (0.03937 in.) AND it weighs less than or equal to 0.01 lbs. i.e.: A Product flyer or label that is picked and packed with the order.

  • Container Attributes
    • Length
    • Width
    • Height
    • Weight
    • Weight Capacity
    • Satisfies Overbox
    • Container Style
    • Use for Bin Packing
  • Infill Attributes (one Infill is chosen for a group of items based on priority. See Infill)
    • Allow for Merchants/Stores
    • Disallow for Merchants/Stores
    • Minimum Thickness Each Side
    • Minimum Thickness Top and Bottom
    • Infill Priority
  • System > Configuration
    • Shipping > Packing Solutions > Infill
    • Shipping > Packing Solutions > Containers
    • Shipping > Packing Solutions > Max Package Weight > *
    • Shipping > Packing Solutions > ShipStream Packer > Enabled
    • Shipping > Packing Solutions > Paccurate.io > Enabled
If any of these inputs change, the existing Packing Solutions may be invalidated requiring an order to be reprocessed. In some cases, this will happen automatically but it can be performed on-demand using the "Reprocess Shipments" mass action on the Orders grid.

The process of generating Packing Solutions can be seen on the Order Processing Loop highlighted in red:

Creating Packing Solutions

Since there is no one-size fits all, ShipStream expects that multiple Packing Solutions may exist for a given set of items and that the user may wish to choose their "Preferred" solution or let the system choose one. The possible sources for a Packing Solution are:

  • Training from historical data (a user completes packing a shipment)
  • ShipStream Packer - an internal bin-packing algorithm
  • Paccurate.io - a third-party premium bin-packing service
  • User-provided solutions created via the ShipStream API

If there are multiple solutions available, ShipStream will choose the one with the least number of packages and then the one with the lowest amount of "void space" which is the container volume minus the volume of all of the items.

If there are no providers available or all providers fail to provide a solution the system will fall back to using the Max Package Weight limits to divide items by weight.

Enable the Packing Solution Providers you wish to use in the Configuration under General > Packing Solutions.

If ShipStream chooses a Packing Solution that does not work in practice for some reason, there are a few different options described below:

  • Choose another "Preferred" Packing Solution
  • Disable a Packing Solution
  • Override a Packing Solution
  • Preprocess Scripts

Choose another "Preferred" Packing Solution

You can override the normal prioritization of Packing Solutions by clicking "Make Preferred" on a Packing Solution page. There is no "Preferred" solution by default so this flag is only set when a user chooses it. This will cause that solution to remain the preferred solution for that exact set of items until another solution for the same set of items is marked as the preferred solution. If there are multiple solutions available for a set of items you can see the alternatives by clicking the "Alternatives" tab.

Disable a Packing Solution

If the system happens to generate a solution that is invalid the user can Override the chosen solution in the Packing UI and choose "Disable solution" or on the Packing Solution page click "Disable". This will prevent it from ever being used again. Packing Solutions are normally not deleted by users as they are kept for historical reference and cleaned up automatically if stale.

The rules around disabling Packing Solutions with respect to related solutions are:

  • Disabling a child will always disable its parents
  • Enabling a child will enable its parents only if all of the parent's children are enabled
  • Enabling a parent will enable all children, and will also enable other parents sharing children in common if all of their children become enabled
  • Disabling a parent does not affect any other solutions
  • Disabling or enabling a solution will also copy that status to all other solutions with the same solution signature. The relatives of those solutions are then also updated according to the rules above

Packing Solution Overrides

In the Packing UI, if a Shipment has a Packing Solution, the packer will be required to scan the container barcode for the container specified by the Solution to confirm. If the packer scans a different container there are two different behaviors based on the "Scanner > Packing > Require Manual Packing Solutions Override" configuration.

Manual override vs Automatic override

If "Require Manual Packing Solutions Override" is "No", the Packing Solution will automatically be overridden with a new Packing Solution using the container(s) scanned by the packer and this new solution may or may not become the preferred solution depending on the priority and properties of the alternative solutions.

If "Require Manual Packing Solutions Override" is "Yes", the packer will be required to submit an override.

The reasons that a packer may choose for an override may be configured at System > Configuration > Operations > Packing > Packing Solution Override Options.

Creating a Packing Solution Override

If a packer encounters a Packing Solution that is sub-optimal for a shipment they may create an Override by tapping the current Packing Solution (indicated in the red box below) and then tapping "Override". The packer must then proceed to specify a reason for the override and choose an alternative Packing Solution, if there is one, or choose "Create New Solution".

The packer may choose to "Disable solution" to prevent the overridden solution from being assigned to shipments in the future. This will immediately take effect on all other shipments that would have used the overridden solution.

A history of all overrides, whether manual or automatic, is available under "Shipping > Packing Solution Overrides".

Preprocess Scripts

There can be any number of reasons that you may want a different behavior than is provided by the dimension-based algorithms. For example you may want to ensure that a specific combination of products always is packed with each other or separately or in a specific set of containers. In this case you will likely want to use a Preprocess Packing Solution Script.

Similar Products

The system will use all the inputs listed above in the Inputs > Product Attributes to identify a product and recognize similar products. Packing Solutions created for one set of products are also valid for all of the other sets of products which share all the same values in these attributes and belong to the same Merchant. For example, if multiple variations of a SKU exist with different colors, the training for one color would apply to the other colors as well assuming all of the important attributes were equal.

Client UI View

In the Client UI the Packaging Solution is shown on a Shipment's Container view. Before a Shipment is marked Packed the view will show the suggested Container's info:

  • Name
  • SKU
  • Dimensions
  • Items — the number of line items that should be placed in this container
  • Weight — the calculated weight of all the line items
  • Volume — the total interior volume of the container in cubic inches
  • Void Space — the void space in cubic inches and the percentage of void space

There will also be a button, Show Container, that will show the 3D viewer if the Packing Solution was created by the System.

After the Shipment is marked as packed the view will change slightly so that to view any of the Container info the user will have to click the Show Container button. Clicking on the button will show the 3D view and the Container info. However if the Packing Solution was created by a Packer or by Training from a prior Order, then only the Container info will be shown without the 3D viewer.

Freight (LTL) - Pallet Mode

It is possible to configure the system to utilize Packing Solutions for LTL shipments as well as parcel.

Please follow these steps:

  1. Add your "Pallet" containers (Packaging Features).
  2. Add a Preprocess Packing Solutions Script to apply pallet mode.
  3. Submit orders or regenerate shipments.

Step 1: Add your Pallet containers

Create one or more Containers to use for pallet mode. Do not create more than are necessary to get a decent result as you could bump into complexity limitations. It is recommended to start with three pallet sizes. For example: 40x48x24, 40x48x48 and 40x48x87.

Example Packaging Feature properties:

  • Name: US Wood Pallet - No Overhang - 24" Max Height
  • SKU: USPallet-0-24
  • Weight: 35 lb
  • Dimensions: 40l x 48w x 19h inches (subtract 5 inches of height for the pallet itself)
  • Satisfies Overbox: Yes
  • Use for Bin Packing: No (or set Allowed Shipping Methods)
  • Weight Capacity: 3000 lb
  • Container Style: Pallet (this is key)
  • Manage Stock: No

Duplicate and adjust for each size needed. Note the SKUs you created for the next step.

Step 2: Add a Preprocess Packing Solution Script

As the parcel containers and weight limits are not conducive to LTL, we will need to override this for LTL shipments using a PPS Script. You could use any other criteria, but in this example we will enable pallet mode for shipments with an External Shipping Method with the code external_ltl .

See System > Enumerations > Shipping > Shipping Methods for a list of possible values for request.shipping_method.

Example Script

Navigate to System > Scripts and create a script of type Proprocess Packing Solutions similar to the one below, adjusting to suit your needs.

if (request.shipping_method === 'external_ltl') {
let bucket = ShipStream.createBucket()
items.forEach(item => bucket.addItem(item))
bucket.addComment('Apply palletization up to 3000 pounds per pallet.')
bucket.setContainers(['USPallet-0-24','USPallet-0-40','USPallet-0-87'])
bucket.setMaxPackageWeight(3000,'lb',true)
bucket.setInfill(false)
bucket.setProviders(['paccurate'])
}

This script does the following:

  1. Puts all items into a single bucket (it will be split as appropriate)
  2. Overrides the Packing Solution defaults to set a higher max weight
  3. Disables the default infill
  4. Overrides the set of valid containers to the ones created in step 1.
Adjust the script as needed. For example, you could have two different LTL shipping methods, one that allows overhang (by specifying a larger footprint) and one that does not. The script can use conditional statements to apply the appropriate set of containers and weight limits according to the requirements of your LTL carrier.
The Packing Solutions system will only use "pallet mode" if all containers specified in the setContainers() method have the Container Style: Pallet attribute set. If set successfully you will see that the Packing Solutions visualizations show a pallet instead of a normal box.

Step 3: Submit orders or regenerate shipments

Submit an order with the criteria identified by your PPS script (for example the shipping method assigned matches the one in the script) and observe the results.

Check the History tab to confirm that your script applied as expected.

If you make changes to the containers or scripts and want them to apply to your existing shipments that have not begun picking, you can either hold and unhold the order, or use the Regenerate Order Shipments mass action on the Orders grid to immediately reprocess the shipments which may result in a different outcome including more/fewer shipments or different containers chosen.

How did we do?

Order Processing Loop

Backorders

Contact