What makes this vertical distinctive
- Alternative disposal outlets — a collection round can end at any of several disposal sites, and the solver picks whichever keeps the route tightest.
- Material changeover time — switching from one material to another that needs it (for example organic to glass) inserts a cleaning/setup pass.
- Incompatible loads — clashing materials (organic and hazardous, for instance) are automatically kept off the same truck.
- Heavy-vehicle routing (HGV profiles) — tolls avoided, dimensions and hazmat-safe roads respected for the trucks that need it.
Combined example
Alternative disposal outlets
order-collection-round’s second stop is an AlternativesStop (stop-disposal-alternatives) offering three candidate disposal sites; the engine picks whichever fits the rest of the route best, rather than the plan being tied to one fixed endpoint. This is the same AlternativesStop stop type used in Optional steps that gate a mandatory stop, applied here to a choice between equally valid endpoints rather than to gating a downstream stop.
Material changeover time
setupDurations adds a fixed duration (here 12 minutes) whenever a resource’s next stop carries material:glass right after one tagged material:organic — a cleaning pass triggered by the sequence of tags actually visited, not scheduled up front. See Plan-level fields.
Incompatible loads
additionalConstraints[].type: "incompatibleStopTags" forbids a single resource from ever carrying both material:organic and material:hazardous stops on the same tour — a hard rule, checked across the whole tour rather than stop by stop. See Constraints catalog.
Heavy-vehicle routing
truck-hazmat-1.vehicleProfile carries grossWeight, avoidTollRoad, avoidTunnel/tunnelCategory, and shippedHazardousGoods — the engine routes this truck only over roads that accept its dimensions, weight, and cargo, on top of the hazmat-certified skill required by the hazardous site. See Vehicle profiles.
Full payload
Full payload — ready to submit as POST /plans
Full payload — ready to submit as POST /plans
The preceding example isolates the four mechanisms this vertical needs; this expands it to the scale of a real working day — a full fleet schedule (
workingTimeWindow, departure, arrival), the complete objectives list, and enough stops to look like an actual round rather than a minimal illustration. Submit it as-is via POST /plans — the service assigns the plan’s id, so don’t include one of your own.See also
- Modeling advanced constraints — the
AlternativesStopmechanism, worked through a gating example. - Data model — the full set of
vehicleProfilefields, including routing restrictions. - Data model — the full
additionalConstraintsandglobalConstraintscatalog.

