Map Lanes
Map raw rows into the scenario's lanes table: the set of routes Network Optimization is allowed to ship on, with the per-unit cost of each.
Lanes are required for Network Optimization. Without them the optimizer has nothing to route through, and the run stops.
When to use this¶
- You're building a scenario that will be optimized
- You want the optimizer to consider routes that were not used in historical shipments. That is how it discovers new sourcing
- You need per-mode alternatives (FTL vs LTL, ocean FCL vs LCL) on the same origin-destination pair
What you need¶
- An upstream Import Data node carrying one row per lane, or one row per origin-destination-mode combination
- Origin and destination columns whose values match identifiers in the locations table
- A per-unit cost on each lane. A lane without one is free shipping, and the optimizer will use it greedily
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 |
|---|---|---|---|---|---|
| Source | text | Yes | Warehouse A |
Origin location name | source, from, origin, source_id, from_id |
| Target | text | Yes | Store 1 |
Destination location name | target, to, destination, dest, target_id, to_id |
| Product | text | Yes | Widget |
Product or SKU this lane carries, or ALL for a lane open to every product. | product, sku, item, material, product_id |
| Unit Cost | number | No | 5.0 |
Cost per unit shipped | unit_cost, cost_per_unit, rate, freight_rate, transport_rate |
| Capacity | number | No | 1000.0 |
Maximum flow allowed on this lane. Blank = unlimited. Its unit goes in Quantity Unit. | capacity, max_flow, max_quantity, max_volume, quantity |
| Lead Time | number | No | 2.0 |
Transit time in days | lead_time, transit_time, days, transit_days |
| Emissions per Unit | number | No | 0.5 |
CO2 per unit shipped | emissions_per_unit, co2_per_unit, carbon_per_unit, emission_rate |
| Transport Mode | text | No | FTL |
Transport mode (e.g., FTL, LTL, rail, ocean, air) | transport_mode, mode, shipping_mode, carrier_type, shipment_mode, transport_type |
| Minimum Quantity | number | No | 20.0 |
Minimum shipment quantity for this lane (e.g., FTL threshold). Its unit goes in Quantity Unit. | min_quantity, min_qty, minimum_quantity, min_shipment, minimum_qty, min_order |
| Quantity Unit | text | No | pallets |
Unit that capacity and minimum quantity are expressed in. Pick one unit and use it consistently across the scenario. | quantity_unit, qty_unit, unit, uom |
Lanes compared with flows¶
| lanes (Map Lanes) | flows (Map Transport) | |
|---|---|---|
| What it represents | What routing is allowed, and at what cost | What actually flowed |
| Required for Network Optimization | Yes | No |
| Cost | Per unit | Realized total |
How it works¶
Each row becomes a lane record on the scenario. Network Optimization reads them as the set of routes it may use. Include every route you want considered, even ones not used in historical data. If you only have historical shipments, build a lanes table from your location pairs first. Distance-based per-unit costs are a reasonable starting point.
For consolidation-versus-direct decisions, give the same origin-destination pair several rows, one per transport mode, and set Minimum Quantity on the full-load modes. The optimizer then picks FTL or FCL only when volume justifies it.
Workflow wiring¶
flowchart LR
n1["Import Data (locations.csv)"] --> n2["Map Locations"]
n3["Import Data (lanes.csv)"] --> n4["Map Lanes"]
n4 --> n5["Create Scenario"]
n5 --> n6["Network Optimization"]
n7["Import Data (supply.csv)"] --> n8["Map Supply Policy"]
n9["Import Data (demand.csv)"] --> n10["Map Demand Policy"]
n2 --> n5
n8 --> n5
n10 --> n5
Common mistakes¶
- Skipping Map Lanes when only shipment history is available. Network Optimization rejects the scenario. Build lanes from your origin-destination pairs instead.
- Forgetting the unit cost. Lanes without cost are free, and the optimizer routes everything through them.
- Putting realized totals on Unit Cost. It is per unit. The realized total of an observed flow belongs on Map Transport.