SlotFlow API Documentation

EarliestArrivalSolver extends AbstractPathSolver
in package
implements ScheduleSolverInterface

FinalYes

Plans the earliest-arriving schedule that satisfies a requested quantity.

Tags
experimental

The timed and demand-scheduling layer is unproven against a real workload: tested and documented, but not yet validated by a production consumer, so its shape is expected to change once one exists. Pin an exact version if you build on it. The execution engine carries no such caveat.

Table of Contents

Interfaces

ScheduleSolverInterface
Computes one planned movement schedule from a planning request.

Methods

schedule()  : MovementSchedule
Build one earliest-arrival movement schedule from a schedule request.
candidateSourceSlots()  : array<int, Slot, quantity: int|float}>
Return source slots from the first step that currently have positive available quantity.
earliestPath()  : TimedMovementEdge}>, quantity: int|float}|null
Find the earliest complete timed path from one source through the ordered flow steps.

Methods

candidateSourceSlots()

Return source slots from the first step that currently have positive available quantity.

private candidateSourceSlots(array<int, MovementEdge$edges, QuantityState $state, int|float $requestedQuantity) : array<int, Slot, quantity: int|float}>
Parameters
$edges : array<int, MovementEdge>
$state : QuantityState
$requestedQuantity : int|float
Return values
array<int, Slot, quantity: int|float}>

earliestPath()

Find the earliest complete timed path from one source through the ordered flow steps.

private earliestPath(TimedSlotSpace $timedSpace, TimedSlot $start, int|float $startingQuantity, QuantityState $startingState, array<int, MovementEdge>}$stepEdges, Slot $target, array<string, string> $params) : TimedMovementEdge}>, quantity: int|float}|null
Parameters
$timedSpace : TimedSlotSpace
$start : TimedSlot
$startingQuantity : int|float
$startingState : QuantityState
$stepEdges : array<int, MovementEdge>}>
$target : Slot
$params : array<string, string>
Tags
psalm-type

TCandidate = array{ slot: TimedSlot, path: list<array{step: FlowStep, edge: TimedMovementEdge}>, quantity: int|float, inventory: QuantityState }

Return values
TimedMovementEdge}>, quantity: int|float}|null
On this page

Search results