Skip to main content

Cartonization: what the policy header changes

What this shows. Each policy header setting that the planning code reads, the decision it changes, and what you see after.

How to read it​

Setting (screen label)Decision it changesWhat you see
Pick splitting = AllowEvery physical unit is its own block. The solver may put units of one pick in different cartons.A pick that crosses cartons is split into several pick rows, one per carton.
Pick splitting = PreventAll units of one pick form one block. The block goes whole into one carton or stays unplaced.If every unit fits alone but the whole pick fits no carton, the reason is "Splitting not allowed". The pick has no placement, so it is BLOCKED.
Iterations per unit squared, Minimum iterations, Maximum iterationsThe work limit is iterations x units x units, held between the minimum and the maximum. One step is one check of unit, carton, point and turn.When the work reaches the limit there is no partial plan. The reserve command still succeeds and its result carries "cartonization solver budget exceeded after N of LIMIT iterations".
ObjectiveSave accepts only Minimum cartons. The solver opens as few cartons as it can, then moves each new carton into the smallest box that holds the load.The other three values are refused on save: they are not built.

Numbers: with the defaults (30, 50,000, 2,000,000) 12 units give a limit of 50,000 (30 x 144 = 4,320 is raised to the minimum). 100 units give 300,000. 400 units give 2,000,000 (30 x 160,000 is cut to the maximum).

Not in this diagram​

  • Settings on the carton rows and the pack item: see 13.
  • Settings that are stored only: see 11.
  • Version: not a setting. Save sends the version you loaded. Another save in between is refused with a version conflict.

Where it comes from​

ClaimSource
Blocks follow the split rulecrates/libs/wms-outbound/src/cartonization/plan.rs:221
Allow makes one block per unitcrates/libs/wms-outbound/src/cartonization/plan.rs:228
Prevent makes one block per pickcrates/libs/wms-outbound/src/cartonization/plan.rs:231
SplitPrevented is chosen when each unit fits alonecrates/libs/wms-outbound/src/cartonization/pack.rs:613
A pick with no placement becomes Blockedcrates/libs/wms-lib-core/src/model/outbound/pick_detail.rs:474
The three iteration settings build the limitcrates/libs/wms-outbound/src/cartonization/plan.rs:147
Limit formula and clampcrates/libs/wms-outbound/src/cartonization/budget.rs:44
Budget error textcrates/libs/wms-outbound/src/error.rs:55
A solver error is returned as text, the reservation stayscrates/libs/wms-outbound/src/cartonization/ensure.rs:507
Shrink pass: smallest box that holds the loadcrates/libs/wms-outbound/src/cartonization/pack.rs:843
Save refuses a goal other than MinCartonscrates/libs/wms-lib-core/src/model/policies/cartonization_aggregate.rs:164
Save refuses iterations_per_unit_sq of 0 or lesscrates/libs/wms-lib-core/src/model/policies/cartonization_aggregate.rs:179
Save is a stateful commandcrates/services/app-server/src/web/rpcs/cartonization_policy_rpc.rs:103