tow

suspend fun KSLProcessBuilder.tow(vehicle: FleetVehicle, to: String, atVelocity: Double, suspensionName: String? = null)(source)

Pushes a stopped vehicle along the guide path to somewhere it is out of the way, and waits for it to get there.

The vehicle stays on the guide path throughout, claiming and giving up zones exactly as a driving one does. That is not a simplification: a vehicle being pushed down an aisle blocks that aisle every bit as much as one driving down it, and a model in which it did not would understate what a breakdown costs. What changes at the far end is where it ends up -- on a spur, in a cross-aisle, at a maintenance bay -- and therefore what it is standing on for the rest of the repair.

A vehicle under tow is exempt from its own faults. It is not deciding anything and it is not driving; somebody is pushing it. So neither a flat battery nor the failure it is being towed away from may stop it part way, and the movement gate lets it through every boundary until it arrives.

The velocity is the pusher's, not the vehicle's, and overrides its velocity distribution entirely for the duration. How fast a person can move a dead AGV has nothing to do with how fast it drives.

Called from an ksl.modeling.fleet.InterruptionPolicyIfc, which runs inside the vehicle's own agent -- which is what makes this a plain suspension rather than a message to somebody else. When it returns, the vehicle is at to and its tour, if it had one, is untouched: the tour names stops, not routes, so it finishes from wherever the vehicle now stands.

Parameters

vehicle

the vehicle to move

to

an intersection name or station alias to push it to

atVelocity

how fast it is pushed, in the network's length units per model time unit

suspensionName

a name for the wait, for tracing