GreedyFlowSolver
in package
implements
SolverInterface
FinalYes
Executes flows with deterministic greedy semantics.
Tags
Table of Contents
Interfaces
- SolverInterface
- Executes one flow against one quantity state.
Methods
- execute() : MovementResult
- allocateEdges() : array<int, AllocationDecision>
- applyMovement() : MovementEvent
- filterEdges() : array<int, MovementEdge>
- limitMovable() : int|float
- orderEdges() : array<int, MovementEdge>
- resolvePatternParameters() : string|array<string|int, mixed>|null
- resolveStepEdges() : array<int, MovementEdge>
- resolveStringParameter() : string
Methods
execute()
public
execute(QuantityState $state, SlotSpace $space, Flow $flow, int|float $quantity[, mixed $subject = null ][, array<string|int, mixed> $appContext = [] ][, array<string, scalar|null> $params = [] ]) : MovementResult
Parameters
- $state : QuantityState
- $space : SlotSpace
- $flow : Flow
- $quantity : int|float
- $subject : mixed = null
- $appContext : array<string|int, mixed> = []
- $params : array<string, scalar|null> = []
Attributes
- #[Override]
Return values
MovementResultallocateEdges()
private
allocateEdges(callable|AllocationPolicyInterface $policy, array<int, MovementEdge> $edges, FlowContext $context) : array<int, AllocationDecision>
Parameters
- $policy : callable|AllocationPolicyInterface
- $edges : array<int, MovementEdge>
- $context : FlowContext
Return values
array<int, AllocationDecision>applyMovement()
private
applyMovement(QuantityState $state, MovementEdge $edge, int|float $quantity) : MovementEvent
Parameters
- $state : QuantityState
- $edge : MovementEdge
- $quantity : int|float
Return values
MovementEventfilterEdges()
private
filterEdges(callable|EdgeFilterPolicyInterface $policy, array<int, MovementEdge> $edges, FlowContext $context) : array<int, MovementEdge>
Parameters
- $policy : callable|EdgeFilterPolicyInterface
- $edges : array<int, MovementEdge>
- $context : FlowContext
Return values
array<int, MovementEdge>limitMovable()
private
limitMovable(QuantityState $state, MovementEdge $edge, int|float $requested, int|float $quantity, FlowStep $step, mixed $subject, array<string|int, mixed> $context) : int|float
Parameters
- $state : QuantityState
- $edge : MovementEdge
- $requested : int|float
- $quantity : int|float
- $step : FlowStep
- $subject : mixed
- $context : array<string|int, mixed>
Return values
int|floatorderEdges()
private
orderEdges(callable|EdgeOrderingPolicyInterface $policy, array<int, MovementEdge> $edges, FlowContext $context) : array<int, MovementEdge>
Parameters
- $policy : callable|EdgeOrderingPolicyInterface
- $edges : array<int, MovementEdge>
- $context : FlowContext
Return values
array<int, MovementEdge>resolvePatternParameters()
private
resolvePatternParameters(string|array<int|string, string|null>|null $pattern, array<string|int, mixed> $context) : string|array<string|int, mixed>|null
Parameters
- $pattern : string|array<int|string, string|null>|null
- $context : array<string|int, mixed>
Tags
Return values
string|array<string|int, mixed>|nullresolveStepEdges()
private
resolveStepEdges(SlotSpace $space, FlowStep $step, array<string|int, mixed> $context) : array<int, MovementEdge>
Parameters
- $space : SlotSpace
- $step : FlowStep
- $context : array<string|int, mixed>
Return values
array<int, MovementEdge>resolveStringParameter()
private
resolveStringParameter(non-empty-string $value, array<string, string> $params) : string
Parameters
- $value : non-empty-string
- $params : array<string, string>