waremax

Writing a WareMax scenario YAML

Define an RMFS scenario in YAML: seed, robots, stations, order arrivals, traffic, and the policy stack — the file that drives a deterministic run.

Difficulty: intermediateTime: 15 min

A WareMax scenario is a text file you can diff and version. It is parsed and schema-validated by waremax-config, so a malformed scenario fails fast with a clear error rather than a silently wrong simulation.

The anatomy of a scenario

seed: 12345
simulation:
  duration_minutes: 60
  warmup_minutes: 5

robots:
  count: 10
  max_speed_mps: 1.5

stations:
  - id: S1
    node: "30"
    type: pick
    concurrency: 2
    service_time_s:
      distribution: lognormal
      base: 12.0
      per_item: 3.0

orders:
  arrival_process: { type: poisson, rate_per_min: 1.0 }
  lines_per_order: { type: negative_binomial, mean: 2.0 }
  sku_popularity:  { type: zipf, alpha: 1.1 }

policies:
  task_allocation:    { type: routed }   # or nearest_robot, least_busy, round_robin, auction, rl_agent
  station_assignment: { type: least_queue }

traffic:
  policy: wait_at_node
  node_capacity_default: 4
  edge_capacity_default: 4
  congestion_weight: 0.0

The seed is load-bearing

The seed field is what makes a run reproducible. WareMax seeds a ChaCha8 RNG from this u64 and applies canonical id-based tie-breaking everywhere, so two runs of the same scenario produce byte-identical trajectories.

The policy stack

policies.task_allocation selects the dispatching heuristic. Swap routed for any of the five baselines — or rl_agent to drive it from a trained Gymnasium policy.

WareMax is built by Skelf Research. See the full scenario schema in the docs.

Frequently Asked Questions

Can I import a warehouse CAD or DWG file?

No. WareMax scenarios are YAML (or JSON) topology and policy definitions parsed by waremax-config. CAD/DWG import is deliberately out of scope.

How do I switch dispatching policies?

Change the policies.task_allocation.type field to one of nearest_robot, least_busy, round_robin, auction, workload-balanced, or rl_agent. No code change is needed for the built-in heuristics.

Related Content

Run a deterministic experiment

Open source, MIT licensed. One YAML file and one CLI invocation.