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.
The inputs to the Packing Solution algorithms include:
- Product Attributes
- Goods Type
- Requires Packaging
- Can Contain Other Items
- Valid Containers
- Special Supplies
- Bulk Quantity
- Unit Quantity
- Max Per Package
- Ship Separately
- Ship Separate Tag
- Can Tip
- Container Attributes
- 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
- General > Packing Solutions > Infill
- General > Packing Solutions > Containers
- General > Packing Solutions > Max Package Weight > *
- General > Packing Solutions > ShipStream Packer > Enabled
- General > 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 as they are kept for historical reference.
Override a Packing Solution
In the Packing UI you can tap the current Packing Solution for a Shipment (indicated in the red box below) and then proceed to choose an alternative if there is one, specify why an override was required and choose if the overridden solution should be disabled going forward.
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.