Skip to content

Intralogistics API

All intralogistics symbols are exported from the single simulatte.intralogistics namespace. For a conceptual overview and worked examples, see the Intralogistics guide and the Intralogistics example gallery.

Layout

Node dataclass

Arc dataclass

LayoutGraph

Pathfinding

PathPlanner

Bases: Protocol

DijkstraPlanner

AStarPlanner

Traffic

TrafficManager

Bases: Protocol

FreeTrafficManager

ResourceBasedTrafficManager

PathCheckResult dataclass

Products & storage

SKU dataclass

Warehouse

Vehicles

AGV

AGVType dataclass

AGVState

Bases: Enum

SpeedProfile

Bases: Protocol

TrapezoidalProfile

Battery

Facilities

ChargingStation

Models a battery charging/swapping facility placed on a graph node.

AGVs navigate to this station when their battery is low. The station provides concurrent charging slots (modeled as a simpy.Resource) and optionally supports battery swapping via a finite pool of pre-charged batteries (modeled as a simpy.Container).

ParkingArea

A facility where idle AGVs wait for their next assignment.

Wraps a simpy.Resource to model finite parking capacity. Each AGV's resource request is tracked individually so that leave() releases the correct slot.

Orders

TransferOrder dataclass

OrderStatus

Bases: Enum

Orchestration

FleetCoordinator

Central orchestrator for AGV fleet operations and mission lifecycle.

Manages transfer orders from submission through dispatch, travel, pick, transit, deliver, and completion. Analogous to ShopFloor for production simulations but focused on warehouse-to-warehouse AGV transport.

Policies

DispatchStrategy

Bases: Protocol

NearestIdleStrategy

Select the closest idle AGV that can carry the order's SKU and quantity.

Distance is measured as the sum of Euclidean segment lengths along the shortest graph path from the AGV's current node to the origin warehouse's nearest output bay. Ties are broken by agv_id (lexicographic).

RoundRobinStrategy

Cycle through compatible idle AGVs via an internal cursor.

The cursor increments monotonically. If fleet composition changes mid-simulation, cycling order over the filtered candidate list becomes non-deterministic. This is by design -- the modulo arithmetic prevents errors, but strict round-robin fairness is not guaranteed across fleet changes.

ReplenishmentPolicy

Bases: Protocol

ReorderPointPolicy

Trigger replenishment orders when inventory drops below a reorder point.

For each SKU whose inventory is below the configured threshold, creates a TransferOrder sourced from the warehouse with the highest stock of that SKU — unless an in-transit order for the same SKU to the same warehouse already exists.

RepositioningPolicy

Bases: Protocol

RepositioningContext dataclass

StayInPlace

AGV stays at its current node after completing a task.

NearestParkingPolicy

Send the AGV to the nearest parking area that has available capacity.

LoadRecoveryStrategy

Bases: Protocol

ReturnToOrigin

Signal the coordinator to return cargo to the origin warehouse.

Sets order status to PENDING. Physical travel and inventory return are handled by the coordinator's _return_cargo_to_origin().

ResumeDelivery

Keep the current AGV assignment and set the order to IN_TRANSIT.

The actual movement is orchestrated by FleetCoordinator.

Metrics

OrderMetricsCollector

Bases: Protocol

EMAOrderMetrics dataclass

Tracks exponential moving averages of order lifecycle metrics.

IntralogisticsTimeSeriesCollector

Bases: Protocol

DefaultIntralogisticsCollector dataclass

Records time-series data for intralogistics metrics.

Builders

build_simple_system

build_simple_system(
    env: Environment,
    *,
    n_agvs: int = 2,
    agv_max_speed: float = 2.0,
    agv_acceleration: float = 1.0,
    agv_battery_capacity: float = 100.0,
    agv_weight_capacity: float = 500.0,
    agv_volume_capacity: float = 10.0,
    products: list[SKU] | None = None,
    initial_inventory_a: dict[SKU, int] | None = None,
    initial_inventory_b: dict[SKU, int] | None = None,
) -> tuple[
    FleetCoordinator,
    list[AGV],
    Warehouse,
    Warehouse,
    LayoutGraph,
]

Create a complete intralogistics system with sensible defaults.

Builds a 5-node linear graph::

WH_A_OUT(0,0) -- N1(5,0) -- N2(10,0) -- N3(15,0) -- WH_B_IN(20,0)

with bidirectional arcs, two warehouses (A at the left end, B at the right end), a charging station at N2, and n_agvs AGVs starting at N1.

Returns:

Type Description
tuple[FleetCoordinator, list[AGV], Warehouse, Warehouse, LayoutGraph]

(coordinator, agvs, warehouse_a, warehouse_b, graph)