AnyLogic
Expand
Font size

Retrieve

Removes an agent from a cell in the Storage or the Storage System and moves it to the specified destination location.

If transporters or resources are used to move the agent, Retrieve block seizes them, brings to the agent cell location, attaches resources to the agent, moves the agent to the destination, and then releases the resources.

Demo model: Slotting Policies in Drive-in Storage Open the model page in AnyLogic Cloud. There you can run the model or download it (by clicking Model source files).

Properties

Agents move
Here you can define how the agent leaves the storage:
by transporters — the agent is carried by a transporter
by resources — the agent is carried by a resource
independently — the agent moves on its own
Syntax: RackResourceType resourceType
Valid values:
Retrieve.RESOURCE_TRANSPORTER
Retrieve.RESOURCE_PML
Retrieve.RESOURCE_NONE
Fleet
[Visible and applies only if Agents move: by transporters]
Here you can specify a fleet that provides transporters to carry the agents from the storage.
Local variable: T agent — agent (material item)
Resource pool
[Visible and applies only if Agents move: by resources]
Here you define a set of the required resources.
Local variable: T agent — agent (material item)
Unloading time
[Visible and applies if Agents move: by transporters]
The time required to unload the agent (material item) from the transporter.
Type of value: double
Local variable: T agent — agent (material item)
Destination is
[Visible and applies if Agents move: by transporters]
Defines where the agent moves after it leaves the storage. Possible destinations are:
Node — agent moves to the specified network node
Attractor — agent moves to the specified attractor
Path — agent moves to the specified path
Conveyor — agent moves to the specified conveyor
Position on conveyor — agent moves to the specified position on conveyor
Conveyor station — agent moves to the specified station
(x, y, z) — agent moves to the point with the specified coordinates
Syntax: DestinationType destinationTypeTransporter
Valid values:
Retrieve.DEST_NODE
Retrieve.DEST_ATTRACTOR
Retrieve.DEST_PATH
Retrieve.DEST_CONVEYOR
Retrieve.DEST_POSITION_ON_CONVEYOR
Retrieve.DEST_CONVEYOR_STATION
Retrieve.DEST_XYZ
Node
[Visible and applies only if Destination is: Node or Node + (x, y, z)]
The network node the agent (material item) will move to.
Type of value: INode
Local variable: T agent — agent (material item)
Attractor
[Visible and applies only if Destination is: Attractor]
The attractor the agent (material item) will move to.
Type of value: Attractor
Local variable: T agent — agent (material item)
Path
[Visible and applies only if Destination is: Path]
The path the agent (material item) will move to.
Type of value: Path
Local variables:
T agent — agent (material item)
Agent unit — transporter
Conveyor
[Visible and applies only if Destination is: Conveyor]
The conveyor the agent (material item) will move to.
Type of value: ConveyorPath
Local variables:
T agent — agent (material item)
Agent unit — transporter
Offset from
[Visible and applies only if Destination is: Path or Conveyor]
Defines how to calculate the offset of the exact point on a path or a conveyor the agent will move to: from The beginning of the conveyor/path or from The end of the conveyor/path.
Type of value: boolean
Local variables:
T agent — agent (material item)
Agent unit — transporter
Offset
[Visible and applies only if Destination is: Path or Conveyor]
The distance from the start or end point of the path/conveyor (depends on the Offset from parameter) defining the exact destination point for the agent.
Type of value: double
Local variables:
T agent — agent (material item)
Agent unit — transporter
Position on conveyor
[Visible and applies only if Destination is: Position on conveyor]
The position on conveyor the agent (material item) will move to.
Type of value: PositionOnConveyor
Local variables:
T agent — agent (material item)
Agent unit — transporter
Conveyor station
[Visible and applies only if Destination is: Conveyor station]
The station the agent (material item) will move to.
Type of value: ConveyorStation
Local variables:
T agent — agent (material item)
Agent unit — transporter
Change orientation
[Visible and applies only if Destination is: Conveyor, or Position on conveyor, or Conveyor station]
If selected, you will be able to change the orientation of the material item that enters the conveyor by selecting the new leading edge of the item in the Orientation field below.
Type of value: boolean
Local variable:T agent — agent (material item)
Orientation
[Visible and applies only if Change orientation is selected]
If you need to rotate the material item when it is placed on the conveyor, choose here the side of the item that must be facing the direction of travel: Front, Rear, Left or Right.
Type of value: AgentOrientation
Local variable:T agent — agent (material item)
X, Y, Z
[Visible and applies only if Destination is: (x, y, z)]
X, Y, Z coordinates of the point the agent will move to.
Type of value: double
Local variable: T agent — agent (material item)
... located in
[Visible and applies only if Destination is: (x, y, z)]
Specifies where the coordinates that the agent (material item) will move to are located: either in the Level or in the Network.
Type of value: boolean destinationInNetwork
Default value: false
Local variables:
T agent — agent (material item)
Agent unit — transporter
Level
[Visible and applies only if ...located in: Level]
The level that contains the coordinates that the agent (material item) will move to.
Type of value: Level
Local variable: T agent — agent (material item)
Local variables:
T agent — agent (material item)
Agent unit — transporter
Network
[Visible and applies only if ...located in: Network]
The network that contains the coordinates that the agent (material item) will move to.
Type of value: INetwork
Local variables:
T agent — agent (material item)
Agent unit — transporter
Destination is
[Visible and applies if Agents move: independently or by resources]
Defines where the agent moves after it leaves the storage. Possible destinations are:
Node — agent moves to the specified network node
Attractor — agent moves to the specified attractor
Seized resource unit — agent moves to the current location of the seized resource. The resource pool is specified in the Resource property below
Agent/unit — agent moves to the location of the specified agent
(x, y, z) — agent moves to the point with the specified coordinates
Node + (x, y, z) — agent moves to the specified node with the specified offset
Syntax: DestinationType destinationType
Valid values:
Retrieve.DEST_NODE
Retrieve.DEST_ATTRACTOR
Retrieve.DEST_RESOURCE
Retrieve.DEST_AGENT
Retrieve.DEST_XYZ
Retrieve.DEST_NODE_XYZ
Node
[Visible and applies only if Destination is: Node or Node + (x, y, z)]
The network node the agent (material item) will move to.
Type of value: INode
Local variable: T agent — agent (material item)
Attractor
[Visible and applies only if Destination is: Attractor]
The attractor the agent (material item) will move to.
Type of value: Attractor
Local variable: T agent — agent (material item)
Resource
[Visible and applies only if Destination is: Seized resource unit]
The resource unit that the agent (material item) will move to.
Type of value: ResourcePool
Local variable: T agent — agent (material item)
Agent
[Visible and applies only if Destination is: Agent/unit]
The specified agent that the agent (material item) will move to.
Type of value: Agent
Local variable: T agent — agent (material item)
X, Y, Z
[Visible and applies only if Destination is: (x, y, z) or Node + (x, y, z)]
X, Y, Z coordinates of the point the agent will move to.
Type of value: double
Local variable: T agent — agent (material item)
Take agent from
Here you can define the place where the agent leaves the storage. The following options are available:
cell — the agent is taken from the cell inside the storage, taking into account the Rack type and the Speed inside slot properties of the storage.
aisle — the agent is taken from the place in the aisle in front of the reserved slot at ground level. The movement inside the slot itself is not modeled, instead the agent “jumps” from its cell to the aisle. The storage type doesn't affect the movement.
In FIFO flow and LIFO flow storages, material items can be retrieved only from the designated “retrieval” side. In case of LIFO flow storages, this side is the same as the “loading” side.
Syntax: Retrieve.TakeAgentFrom takeAgentFrom
Valid values:
Retrieve.TAKE_FROM_CELL
Retrieve.TAKE_FROM_AISLE
Lowering speed
[Visible and applies only if Take agent from: cell]
Here you can specify the speed of the agent's vertical movement.
Type of value: double
Local variables:
T agent — agent (material item)
Agent unit — transporter or resource
Retrieving time
[Visible and applies only if Take agent from: aisle]
Here you can specify the time it takes for the agent to reach the aisle from its cell.
Type of value: double
Local variables:
T agent — agent (material item)
Storage storage — storage
StorageSystem storageSystem — storage system
StorageCell cell — cell
Agent unit — transporter or resource unit

Transporters and resources

Task priority
[Visible and applies if Agents move: by transporters]
The priority of the task for the incoming agent (the larger the higher).
Type of value: double
Local variable: T agent — agent (material item)
Task may preempt
[Visible and applies if Agents move: by transporters]
If the option is selected, this task may preempt other tasks of the requested transporter.
Type of value: boolean
Local variable: T agent — agent (material item)
Task preemption policy
[Visible and applies if Agents move: by transporters]
Here you can choose what happens when a different task comes in for the transporter. The available options are:
No preemption — the current task remains in execution
Seize any resource — the current task is interrupted and the agent (material item) tries to seize any transporter of the specified type
Local variable: T agent — agent (material item)
After release, transporter
[Visible and applies if Agents move: by transporters]
Defines the behavior of the transporter after it was released by the agent. Depending on your choice, the transporter:
Returns to current home location
Returns to the nearest home location — this location is selected from the list of the locations specified in the properties of TransporterFleet block). Once the transporter returns to the node that satisfies this condition, this node will become the current home location for this transporter.
Goes to... — goes to the location specified in the Destination is parameter below
Stays where it is
Type of value: ReleaseTransporter.TransporterReleaseMovingPolicy
Valid values:
Retrieve.MP_RETURNS_TO_HOME — Returns to current home location
Retrieve.MP_RETURNS_TO_NEAREST_HOME — Returns to the nearest home location
Retrieve.MP_GO_TO — Goes to...
Retrieve.MP_STAYS_WHERE_IT_IS — Stays where it is
Local variable: Agent unit — the released transporter
Destination is
[Visible and applies only if After release, transporter: goes to...]
Defines where the transporter will go to after being released. The possible destinations are:
Node — transporter moves to the specified network node.
Attractor — transporter moves to the specified attractor.
Path — transporter moves to the specified path.
Conveyor — transporter moves to the specified conveyor.
Position on conveyor — transporter moves to the specified position on conveyor.
Conveyor station — transporter moves to the specified station.
(x, y, z) — transporter moves to the point with the specified coordinates.
Syntax: DestinationType transporterReleaseDestinationType
Valid values:
Retrieve.RELEASE_NODE
Retrieve.RELEASE_ATTRACTOR
Retrieve.RELEASE_PATH
Retrieve.RELEASE_CONVEYOR
Retrieve.RELEASE_POSITION_ON_CONVEYOR
Retrieve.RELEASE_CONVEYOR_STATION
Retrieve.RELEASE_XYZ
Node
[Visible and applies only if Destination is: Node]
The network node the transporter will go to.
Type of value: INode
Local variable: T agent — agent (material item)
Attractor
[Visible and applies only if Destination is: Attractor]
The attractor the transporter will go to.
Type of value: Attractor
Local variable: T agent — agent (material item)
Path
[Visible and applies only if Destination is: Path]
The path the transporter will go to.
Type of value: Path
Local variable: Agent unit — transporter
Conveyor
[Visible and applies only if Destination is: Conveyor]
The conveyor the transporter will go to.
Type of value: ConveyorPath
Local variable: Agent unit — transporter
Offset from
[Visible and applies only if Destination is: Path or Conveyor]
Defines how to calculate the offset of the exact point on a path or a conveyor the transporter will go to: from The beginning of the conveyor/path or from The end of the conveyor/path.
Type of value: boolean
Local variable: Agent unit — transporter
Offset
[Visible and applies only if Destination is: Path or Conveyor]
The distance from the start or end point of the path/conveyor (depends on the Offset from parameter) defining the exact destination point for the transporter.
Type of value: double
Local variable: Agent unit — transporter
Position on conveyor
[Visible and applies only if Destination is: Position on conveyor]
The position on conveyor the transporter will go to.
Type of value: PositionOnConveyor
Local variable: Agent unit — transporter
Conveyor station
[Visible and applies only if Destination is: Conveyor station]
The station the transporter will go to.
Type of value: ConveyorStation
Local variables:
Agent unit — transporter
T agent — agent (material item)
X, Y, Z
[Visible and applies only if Destination is: (x, y, z)]
X, Y, Z coordinates of the point the transporter will go to.
Type of value: double
Local variable: Agent unit — transporter
... located in
[Visible and applies only if Destination is: (x, y, z)]
Specifies where the transporter will be added to after the release: either Level or Network.
Type of value: boolean destinationInNetwork
Default value: false
Local variable: Agent unit — transporter
Level
[Visible and applies only if ...located in: Level]
The level the transporter will be added to once it is released.
Type of value: Level
Local variable: Agent unit — transporter
Network
[Visible and applies only if ...located in: Network]
The network the transporter will be added to once it is released.
Type of value: INetwork
Local variable: Agent unit — transporter
Returns
[Visible and applies if Agents move: by transporters]
Defines the condition of the transporter's return after the release. It can either return only if there are no other tasks waiting for it or each time return to the specified location first and only then move to perform the next task.
Type of value: ReleaseTransporter.TransporterReleaseReturnPolicy
Valid values:
Retrieve.RP_IF_NO_OTHER_TASKS — if no other tasks
Retrieve.RP_EACH_TIME — each time
Local variable: T unit — the transporter that is currently released by the block
Customize transporter choice
[Visible and applies if Agents move: by transporters]
If the option is selected, you can choose the specific transporter to carry the agent from the storage (using the Transporter choice condition below).
Syntax: boolean customizeTransporterChoice
Transporter choice condition
[Visible and applies if Customize transporter choice option is selected]
Here you can specify a boolean expression that will be checked to find the specific transporter that may perform the operation. If none of the currently available transporters satisfy the specified condition (the condition returns false), the block will wait for the first transporter that matches the condition to become available.
Usually you define some field inside the agent type (say, transport), store there the reference to the transporter when it starts working with this agent (agent.transport=transporter), and then specify here the condition agent.transport==transporter enabling only this particular transporter to continue working with this particular material item.
Type of value: boolean
Local variables:
T agent — agent (material item)
Agent unit — transporter
TransporterFleet fleet — transporter fleet
Dispatching policy
[Visible and applies if Agents move: by transporters]
Here you specify how the block chooses a transporter to carry the agent from the storage. If the Customize transporter choice option is set, the transporter will be chosen from the subset returned by the algorithm in the Transporter choice condition parameter. The possible options are:
Nearest to agent — A transporter that is the nearest to the current agent. The distance to the agent is calculated in a straight line, not taking into account any possible obstacles (for transporters with free space navigation) or the length of the actual route in the network (for transporters with path-guided navigation).
Shortest path to pickup location — A transporter whose route to the pickup location is the shortest.
The most preferred — AnyLogic will choose a transporter by comparing transporters to each other. You should place the comparison algorithm in the "unit1 is preferred to unit2" parameter below.
Transporter with top rating — A transporter with the top rating. You can define the rating (or rating calculation algorithm) in the Transporter rating parameter below.
Off (chooses some matching transporter) — The dispatching policy is not applied.
Syntax: SeizeTransporter.DispatchingPolicy dispatchingPolicy
Valid values:
Retrieve.DISPATCHING_POLICY_NEAREST
Retrieve.DISPATCHING_POLICY_SHORTEST_PATH
Retrieve.DISPATCHING_POLICY_BASED_ON_COMPARISON
Retrieve.DISPATCHING_POLICY_BASED_ON_RATING_VALUE
Retrieve.DISPATCHING_POLICY_SOME_TRANSPORTER
unit1 is preferred to unit2
[Visible and applies if Dispatching policy: The most preferred]
The comparison algorithm (or its call) that is used to select a transporter that will carry the given agent from the storage. The algorithm compares transporters to each other. It should return true if the transporter unit1 has higher preference than the transporter unit2 (and false otherwise, including the case of choice equality). The algorithm should provide transitiveness.
Type of value: boolean
Local variables:
Agent unit1 — the first transporter to be compared
Agent unit2 — the second transporter to be compared
T agent — current agent (material item)
Transporter rating
[Visible and applies if Dispatching policy: Transporter with top rating]
The rating value of this transporter. The rating is used to choose a transporter for the given agent (the larger the higher, transporter with the top rating value will be chosen).
Type of value: double
Default value: 0
Local variables:
Agent unit — transporter
T agent — current agent (material item)
Task priority
[Visible and applies only if Agents move: by resources]
The priority of the task for the agent (the larger the higher).
Value type: double
Local variable: T agent — agent (material item)
Task may preempt
[Visible and applies only if Agents move: by resources]
If selected, the task defined by this block may preempt the currently performed task (if allowed in the task properties & the current task's priority is lower).
Value type: boolean
Default value: true
Local variable: T agent — agent (material item)
Task preemption policy
[Visible and applies if Agents move: by resources]
Defines the task preemption policy:
No preemption — the resource unit continues to execute the current task
Wait for original resource — the current task is interrupted and waits for the same resource unit to finish it
Seize any resource — the current task is interrupted and tries to seize any resource of the specified type
Default value: No preemption
Valid values:
Retrieve.PP_NO_PREEMPTION
Retrieve.PP_WAIT_FOR_ORIGINAL_RESOURCE
Retrieve.PP_SEIZE_ANY_RESOURCE
After release resource
[Visible and applies if Agents move: by resources]
Defines whether resources Return to home location (if they are not immediately seized by another agent) or Stay where they are after being released.
Syntax: boolean resourcesGoHome
Default value: true — Return to home location
Local variables:
T agent — agent (material item)
Agent unit — resource unit
Return home
[Visible and applies if After release resource: returns to home location]
Here you define when the resource units will return home after carrying the agent to the storage. There are several options:
each time — the unit returns to its home location every time after it finishes the task and is released by the agent.
if no other tasks — the unit returns to its home location only if there are no other tasks in its queue.
custom — you can define the priority and preemption policy for the "return home" task using the parameters below. In this case the priority of the "return home" task will be compared to the priorities of other incoming tasks, and the specified preemption policy will be used to select the next task for this particular resource unit.
Local variables:
T agent — agent (material item)
Agent unit — resource unit
'Wrap-up' priority
[Visible and applies only if Return home: custom]
Here you can set up the priority of the "return home" task for the resource unit.
Value type: double
Local variables:
T agent — agent (material item)
Agent unit — resource unit
'Wrap-up' preemption policy
[Visible and applies if Agents move: by resources]
Specifies the policy of the "return home" task for the resource unit:
No preemption — "return home" task cannot be preempted
Terminate — "return home" task may be preempted and will be terminated
Local variables:
T agent — agent (material item)
Agent unit — resource unit
Customize resource choice
[Visible and applies if Agents move: by resources]
If the option is selected, you can choose a specific resource unit to carry the agent to the storage, using the Resource choice condition below.
Syntax: boolean customizeResourceChoice
Default value: false
Resource choice condition
[Visible and applies if Customize resource choice option is selected]
Resource choice condition — The Boolean expression that is checked to find the specific resource unit(s) that can perform the operation. If no currently available resource units matches the specified condition (the condition returns false), Retrieve will wait for the first resource unit that matches the condition.
For example, an agent can be assigned a helper resource unit that is stored in the myAssistant field within that agent. We need a particular resource unit, worker, to always be assigned to this specific agent. So in this case, the Resource choice condition is agent.myAssistant == worker.
Value type: boolean
Default value: true
Local variables:
T agent — agent (material item)
Agent unit — resource unit
ResourcePool pool — resource pool
Resource selection
[Visible and applies if Agents move: by resources]
Specifies which resource units can be selected for the given agent.
Off (chooses some matching unit) — No specific preference for the selection.
Nearest to the agent — The resource unit that is closest to the current agent.
The most preferred — The resource unit is selected by comparing resources against each other. The comparison algorithm (or its call) is placed in the field "unit1 is preferred to unit2".
Unit with top rating — The resource unit with the highest rating is selected. The rating (or the algorithm that calculates it) is specified by the user in the Unit rating field.
If Off is selected, the first unit that satisfies the Resource choice condition is selected; AnyLogic checks the idle units against the condition first, then the busy units.
In all other cases, all units are scanned, including the busy ones, which means that this block’s task may displace theirs. If this does not suit you, consider using a more specific Resource choice condition.
Default value: Off (chooses some matching unit)
Valid values:
Retrieve.RESOURCE_SELECTION_SOME_UNIT
Retrieve.RESOURCE_SELECTION_NEAREST
Retrieve.RESOURCE_SELECTION_BASED_ON_COMPARISON
Retrieve.RESOURCE_SELECTION_BASED_ON_RATING_VALUE
Local variables:
T agent — agent (material item)
ResourcePool pool — resource pool
unit1 is preferred to unit2
[Visible and applies if Resource selection: The most preferred]
The comparison algorithm (or its call) that is used to choose a resource unit that will carry the agent from the storage. The algorithm compares resources to each other. It should return true if the resource unit1 has higher preference than the resource unit2 (and false otherwise, including the case of choice equality). The algorithm should provide transitiveness.
Value type: boolean
Default value: false
Local variables:
Agent unit1 — the first resource unit to be compared
Agent unit2 — the second resource unit to be compared
T agent — agent (material item)
Unit rating
[Visible and applies if Resource selection: Unit with top rating]
The rating value of this unit. It is used to choose a unit for the given agent (the larger the higher, unit with the top rating value will be chosen). Usually an algorithm or a function call is placed here to calculate the rating with the help of the available local variables.
Value type: double
Local variables:
T agent — agent (material item)
Agent unit — resource unit

Actions

On enter
Here you can type Java code that will be executed when the agent (material item) enters the block.
Local variables:
T agent — agent (material item)
StorageCell cell — cell
On seize transporter
[Visible and applies if Agents move: by transporters]
Here you can type Java code that will be executed when the agent (material item) seizes the transporter that will retrieve it from the storage.
Local variables:
T agent — agent (material item)
Agent unit — transporter
On unloading start
[Visible and applies if Agents move: by transporters]
Here you can type Java code that will be executed when the unloading of the agent (material item) from the seized transporter begins.
Local variables:
T agent — agent (material item)
Agent unit — transporter
On unloading finished
[Visible and applies if Agents move: by transporters]
Here you can type Java code that will be executed when the unloading of the agent (material item) from the seized transporter ends.
Local variables:
T agent — agent (material item)
Agent unit — transporter
On seize resource
[Visible and applies if Agents move: by resources]
Here you can type Java code that will be executed when the agent (material item) seizes the resource unit that will retrieve it from the storage.
Local variables:
T agent — agent (material item)
Agent unit — resource unit
On resource arrived
[Visible and applies if Agents move: by resources]
Here you can type Java code that will be executed when the resource unit arrives to retrieve the agent (material item).
Local variables:
T agent — agent (material item)
Agent unit — resource unit
On retrieval start
[Visible and applies if Take agent from: aisle]
Here you can type Java code that will be executed when the retrieval process begins.
Local variables:
T agent — agent (material item)
Agent unit — resource unit or transporter
double retrievingTime — delay time
StorageCell cell — cell
On retrieval finished
[Visible and applies if Take agent from: aisle]
Here you can type Java code that will be executed when the retrieval process ends.
Local variable: T agent — agent (material item)
On release transporter
[Visible and applies if Agents move: by transporters]
Here you can type Java code that will be executed when the agent (material item) releases the transporter.
Local variables:
T agent — agent (material item)
Agent unit — transporter
On release resource
[Visible and applies if Agents move: by resources]
Here you can type Java code that will be executed when the agent (material item) releases the resource unit.
Local variables:
T agent — agent (material item)
Agent unit — resource unit
On exit
Here you can type Java code that will be executed when the agent (material item) leaves the block.
Local variable: T agent — agent (material item)
On remove
Here you can type Java code that will be executed when the agent is removed from the block by the call of remove() function.
Local variable: T agent — agent (material item)
On task suspended
[Visible and applies only if Agents move: by resources or by transporters and Task preemption policy: Seize any resource or Wait for original resource]
Here you can type Java code that will be executed when agent task is suspended because of the Seize any resource preemption policy, when the resource or transporter is seized by a different task with a higher priority.
Local variables:
T agent — material item
Agent unit — resource unit
On task resume
[Visible and applies only if Agents move: by resources or by transporters and Task preemption policy: Seize any resource or Wait for original resource]
Here you can type Java code that will be executed when the agent task resumes after it has been suspended because of Seize any resource preemption policy.
Local variables:
T agent — material item
Agent unit — resource unit

Functions

Retrieve functions
Function Description
int nWaitingForResource() The number of agents (material items) waiting for resources in the block.
remove(Agent agent) Removes the agent from the block.

Agent agent — a given agent (material item) that is currently residing in the block
There are some nuances in model behavior when this function is called, depending on how the agent (material item) moves from the storage and the timing of the function call.
recalculateResourceChoiceConditions(Agent agent) Recalculates choice conditions for the given agent that is currently waiting in the queue of this block. You can use this function when some resource units that previously weren't available to a particular agent may have become seizable due to changed conditions.

Agent agent — an agent (material item) that is currently waiting in the queue of this block
recalculateResourceChoiceConditions() Recalculates choice conditions for all agents currently waiting in the queue of this block. You can use this function when some resource units that previously weren't available may have become seizable due to changed conditions.
recalculateAgentPriority(Agent agent) Recalculates task priority for the given agent that is currently waiting in the queue of this block. This action may trigger preemption of resource units.

Agent agent — an agent (material item) that is currently waiting in the queue of this block
recalculatePriorities() Recalculates task priority for all agents currently waiting in the queue of this block. This action may trigger preemption of resource units.

Model behavior at the call of remove() function

  • Agents move: by transporters
    • If the agent is waiting for an available transporter when the function is called, the agent is removed. The transporter task is cancelled.
    • If the function is called when the transporter is moving to retrieve the agent from the storage, but it has not reached the slot yet, the agent is removed. The transporter is released and moves to its home location (provided that there are no other tasks).
    • The agent cannot be removed if the function is called when the transporter has started the retrieval process (is moving inside the slot, during the Retrieving time period, is in loading state)
    • The agent cannot be removed if the function is called when the transporter has retrieved the agent from the storage and is currently carrying it to the specified destination.
  • Agents move: by resources
    • If the function is called when the agent is waiting for the resource unit or is being moved by the resource unit away from the slot, the agent is removed. The resource task is cancelled. The resource unit goes back to its home location (provided that there are no other tasks).
    • The agent cannot be removed if the function is called when the agent is moving inside the slot, or during the Retrieving time period, or when the agent is moving down from the upper shelves to the ground.
  • Agents move: independently
    • If the agent is moving away from the slot when the function is called, it is removed from the block.
    • The agent cannot be removed if the function is called during the Retrieving time period, when the agent is leaving the slot, or when the agent is moving down from the upper shelves to the ground.

Ports

in
The input port.
out
The output port.
How can we improve this article?