Map Handling Policy
Map raw rows into the scenario's handling policy table: the rule for handling cost at each location, what it costs to move one unit through that facility in warehouse fees, loading, unloading and processing.
This is the input side of handling. Pair it with Map Handling State on baselines that also need observed totals.
When to use this¶
- A facility charges per-unit handling fees that should enter the cost the optimizer minimizes
- You want handling to enter the routing decision rather than sit outside it
Without it, handling is free in the optimizer's arithmetic. A high handling cost at a hub can flip a routing decision, so leaving it out makes hub routing look cheaper than it is.
What you need¶
- An upstream Import Data node with one row per (location, product) handling rate
- A column identifying the facility, matching a location identifier
- A per-unit handling cost. If you only have realized totals, use Map Handling State instead
Field mapping¶
Auto-detection is all or nothing. With no explicit mapping on the node, every field is matched against the headers listed below, case-insensitively, and a space in your header reads as an underscore, so Site Name matches site_name. Set even one field explicitly and detection switches off for the whole node: only the fields named in the mapping are filled, and the rest arrive empty.
Set mappings in the node's panel. Connect an upstream table and select the mapping node to see automatic matches. Choosing a column saves all displayed matches as an explicit mapping. Use Use automatic detection to return to header detection. Required fields without a match are marked in the panel.
| Field | Type | Required | Example | What it is | Auto-detected headers |
|---|---|---|---|---|---|
| Location | text | Yes | Warehouse A |
Where handling happens. Must match a Location name. | location, loc, name, id, location_id, loc_id |
| Product | text | Yes | Widget |
Product or SKU handled, or ALL for a rate that applies to every product at this location. | product, sku, item, material, product_id |
| Unit Handling Cost | number | No | 0.5 |
Cost to handle one unit passing through this location, in the scenario currency. Blank = handling is free. | unit_handling_cost, handling_fee, processing_cost, handling_rate |
How it works¶
Each row becomes a handling policy record. Network Optimization treats
Unit Handling Cost as the fee charged on throughput at that facility. Total
handling cost is the rate times throughput. A product-specific rate takes
precedence over a location-wide one. To write a location-wide rate, set the
product to ALL.
Cost to Serve does not read this table. It allocates the realized total on handling state. A scenario with a rate here and nothing on the state side gets handling into the optimizer's arithmetic and not into the per-customer breakdown.
Workflow wiring¶
For an optimization-only workflow, wire only the policy side:
flowchart LR
n1["Import Data (handling.csv)"] --> n2["Map Handling Policy"]
n2 --> n3["Create Scenario"]
n3 --> n4["Network Optimization"]
For a baseline that also preserves observed totals, fan the file out to both:
flowchart LR
n1["Import Data (handling.csv)"] --> n2["Map Handling Policy"]
n2 --> n3["Create Scenario"]
n1 --> n4["Map Handling State"]
n4 --> n3
Common mistakes¶
- Mapping a realized total to Unit Handling Cost. The rate goes on policy. The total belongs on Map Handling State.
- Leaving this node out of a network with hub routing. Handling is then free in the optimizer's arithmetic, and routing through the hub always looks cheap.