AnyLogic
Expand
Font size

Class Storage

All Implemented Interfaces:
AbstractPositionalMarkup, AggregatableAnimationElement, HasBoundingRectangle, HasLevel, LevelElement, LevelMarkup, RackUnitAggregator, SVGElement, UsdElement, Serializable

public class Storage
extends AbstractLevelMarkup
implements RackUnitAggregator, HasBoundingRectangle, AbstractPositionalMarkup
See Also:
Serialized Form

Field Summary

Fields inherited from interface com.anylogic.engine.presentation.UsdElement

ID_NOT_SET

Constructor Summary

ConstructorDescription
Storage()
Creates a new Storage with default parameters.
Storage(Agent owner, ShapeDrawMode drawMode, boolean isPublic, boolean isObstacle, IStorageDescriptor d, double x, double y, double z, RackType rackType, boolean flipped, RackPlacement rackPlacement, int numberOfStorageUnits, int numberOfBays, int numberOfCellsPerSlot, double rightPassageMeter, double leftPassageMeter, double heightMeter, double widthMeter, double aisleWidthMeter, double slotDepthMeter, double cellWidthMeter, double rotation, double tiltAngle, boolean placeSingleRacksAtSides, RackOddSingleRackSide placeOddSingleRack, Color shelvesColor, Color frameColor, boolean drawLegs, int baysBetweenLegs, boolean simplifiedAgentAnimation, int numberOfShelves, double shelfHeightMeter, StorageServiceType serviceType, StorageRetrievalSystem retrievalSystem) 

Method Summary

Modifier and TypeMethodDescription
voidcancelReservation(Agent agent)
Discards any reservations made for the specified agent.
intcapacity()
Returns the maximum possible number of agents that can be stored in the storage.
booleancontains(double px, double py)
Test if the shape contains the point with the given coordinates (relative to this shape's container, i.e.
booleancontains(Agent agent)
Returns true if the specified agent is stored in the storage and false otherwise.
List<RectangularNode<Agent>>createAislesGeometry() 
voiddeactivateCells(int rack) 
voiddeactivateCells(int rack, int bay) 
voiddeactivateCells(int rack, int bay, int shelf) 
voidenableDebugAnimator(ShapeDrawMode mode) 
voidenableGeometryAnimator() 
SVGElementfindSVGElement(long svgId)
This method is internal and shouldn't be called by user.
it may be removed/renamed in future.
List<StorageCell>freeCells(int rack)
Returns a list of all free cells in the specified rack.
List<StorageCell>freeCells(int rack, int bay)
Returns a list of all free cells in the specified bay.
List<StorageCell>freeCells(int rack, int bay, int shelf)
Returns a list of all free cells in the specified slot Can be called only after markup initialization.
List<Agent>getAccessibleAgents() 
doublegetAccessZone() 
doublegetAccessZone(LengthUnits units)
Returns the width of access zone in specified length units.
AgentgetAgentInCell(int rack, int bay, int shelf, int deepPosition)
Returns the agent stored in the specified cell.
List<Agent>getAgents()
Returns a list of agents stored in the storage, ordered according to rack type.
intgetAisleCapacityRestriction()
Returns maximum number of allowed transporters is the storage aisles.
doublegetAisleWidth() 
doublegetAisleWidth(LengthUnits units)
Returns the aisle width in specified length units.
BoundingRectanglegetBoundingRectangle() 
StorageCellgetCell(int rack, int bay, int shelf, int deepPosition)
Returns the specified cell.
StorageCellgetCell(Agent agent)
Returns the cell that contains the specified agent.
PositiongetCellCenter(int rack, int bay, int shelf, int depth) 
doublegetCellDepth() 
doublegetCellDepth(LengthUnits units) 
doublegetCellHeight() 
List<StorageCell>getCells()
Returns a list of cells ordered according to rack type.
doublegetCellWidth() 
doublegetCellWidth(LengthUnits units)
Returns the cell width in specified length units.
Point[]getCorners() 
ColorgetFrameColor()
Returns the color of rack frame.
doublegetFullHeight() 
doublegetFullHeight(LengthUnits units) 
doublegetFullWidth() 
doublegetFullWidth(LengthUnits units) 
List<ConveyorPath>getInputConveyors()
Returns the set of available ConveyorPath objects acting as input interfaces, where each path itself serves as the nearest available input station for a specific stacker crane operating across the aisles of this Storage.
List<PointNode>getInputNodes()
Returns the set of available input PointNode objects, where each element is the nearest available pickup node to a specific stacker crane operating across the aisles of this Storage.
doublegetInslotSpeed(SpeedUnits units)
Returns in-slot speed in specified speed units.
doublegetLeftPassage() 
doublegetLeftPassage(LengthUnits units) 
IStorageDescriptorgetLibraryDescriptor() 
ConveyorPathgetNearestInputConveyor(int rack)
Finds and returns the nearest available input ConveyorPath relative to the specified rack identifier.
ConveyorPathgetNearestInputConveyor(StorageCell cell)
Finds and returns the nearest available input ConveyorPath relative to the specified storage cell.
PointNodegetNearestInputNode(int rack)
Finds and returns the nearest available input PointNode relative to the specified rack identifier.
PointNodegetNearestInputNode(StorageCell cell)
Finds and returns the nearest available input PointNode relative to the specified cell.
ConveyorPathgetNearestOutputConveyor(int rack)
Finds and returns the nearest available output ConveyorPath relative to the specified rack identifier.
ConveyorPathgetNearestOutputConveyor(StorageCell cell)
Finds and returns the nearest available output ConveyorPath relative to the specified storage cell.
PointNodegetNearestOutputNode(int rack)
Finds and returns the nearest available output PointNode relative to the specified rack identifier.
PointNodegetNearestOutputNode(StorageCell cell)
Finds and returns the nearest available output PointNode relative to the specified cell.
intgetNumberOfAisles() 
intgetNumberOfBays()
Returns the number of bays per rack.
intgetNumberOfCellsPerSlot()
Returns the number of cells per slot.
intgetNumberOfRacks()
Returns the number of racks.
intgetNumberOfShelves()
Returns the number of shelves per rack.
List<ConveyorPath>getOutputConveyors()
Returns the set of available ConveyorPath objects acting as output interfaces, where each path itself serves as the nearest available output station for a specific stacker crane operating across the aisles of this Storage.
List<PointNode>getOutputNodes()
Returns the set of available output PointNode objects, where each element is the nearest available drop-off node to a specific stacker crane operating across the aisles of this Storage.
RackOddSingleRackSidegetPlaceOddSingleRack()
Returns the side of the stand alone rack in case of an odd number of racks.
booleangetPlaceSingleRacksAtSides()
Returns true if stand-alone racks are placed at the sides of the storage.
PositiongetPositionInAisle(int rack, int bay)
Returns the position in front of the specified bay (on the side used for storage).
PositiongetPositionInAisle(int rack, int bay, boolean loadingSide)
Returns the position in front of the specified bay (on the specified side).
PositiongetPositionInAisle(Agent agent)
Returns the position in front of the bay where the specified agent is stored (on the side used for storage).
PositiongetPositionInAisle(Agent agent, boolean loadingSide)
Returns the position in front of the bay where the specified agent is stored (on the specified side).
doublegetRackDepth(LengthUnits units)
Returns the rack depth in specified length units.
RackPlacementgetRackPlacement()
Returns rack placement type.
RackTypegetRackType()
Returns the rack type.
AgentgetRandomAccessibleAgent()
Returns a random accessible agent stored in the storage.
AgentgetRandomAgent()
Returns a random agent stored in the storage.
StorageSlotgetRandomAvailableSlot() 
StorageCellgetRandomFreeCell()
Returns the next cell available for reservation in a random slot from the storage.
StorageRetrievalSystemgetRetrievalSystem() 
doublegetRightPassage() 
doublegetRightPassage(LengthUnits units) 
doublegetRotation()
Returns the rotation of the storage in radians.
StorageServiceTypegetServiceType()
Returns the type of equipment used by the ASRS system.
doublegetShelfHeight(LengthUnits units)
Returns the z-height of a shelf in specified length units.
ColorgetShelvesColor()
Returns the color of rack shelves.
doublegetShelvesTiltAngle()
Returns shelves tilt angle in radians.
StorageSlotgetSlot(int rack, int bay, int shelf)
Returns slot address.
doublegetSlotDepth() 
StackerCrane<?>getStackerCrane(int index)
Returns stacker crane by index if stacker crane exists.
List<StackerCrane<?>>getStackerCranes()
Returns a list of all stacker cranes used by the storage.
StackerCraneSystemgetStackerCraneSystem() 
RackUnitAggregatorgetStorageSystem()
Returns the storage system this element belongs to.
doublegetUnitHeight() 
doublegetUnitLength() 
doublegetUnitLength(LengthUnits units) 
doublegetWidth() 
doublegetWidth(LengthUnits units) 
doublegetX()
Returns the X coordinate of this storage.
doublegetY()
Returns the Y coordinate of this storage.
doublegetZ()
Returns the Z coordinate of this storage.
booleanhasSpace()
Returns true if the storage has cells available for reservation and false otherwise.
booleanhasSpace(int rack, int bay, int shelf)
Returns true if the specified slot has cells available for reservation and false otherwise.
booleanisFree(int rack, int bay, int shelf, int depth) 
booleanisIgnoreCellAccessibility() 
booleanisInvertedRack(int rack) 
booleanisLoadingDirectionReversed()
Returns value of parameter 'Reverse loading direction'
booleanisObstacle()
Returns true if racks of this storage are considered obstacles by transporters moving in free space mode.
booleanisRestrictedAisleAccess()
If enabled, you can specify maximum number of allowed transporters in each aisle of the storage.
booleanisSimplifiedAgentAnimation()
Returns true if stored agent animation is replaced with cell color indication, otherwise returns false.
booleanisSingleUnitFirst() 
booleanisSpecifiedInslotSpeed()
Returns true if specific in-slot speed was enabled and false otherwise.
booleanisUnitAccessibleFromLeftAdd(int unit) 
booleanisUnitAccessibleFromLeftRemove(int unit) 
booleanisUnitAccessibleFromRightAdd(int unit) 
booleanisUnitAccessibleFromRightRemove(int unit) 
voidmuteCallbacks(boolean areCallbacksMuted) 
intnFreeCells()
Returns the number of free cells.
intnFreeCells(int rack)
Returns the number of free cells in the specified rack.
intnFreeCells(int rack, int bay)
Returns the number of free cells in the specified bay.
intnFreeCells(int rack, int bay, int shelf)
Returns the number of free cells in the specified slot Can be called only after markup initialization.
intnReservedCells()
Returns the number of reserved (but not occupied) cells.
intnRetrieved()
Returns the total number of retrieved agents.
intnStored()
Returns the total number of stored agents.
voidonAgentRetrieval(Agent agent, StorageCell cell)
Calls the storage's onAgentRetrieval callback code
voidonAgentStorage(Agent agent, StorageCell cell)
Calls the storage's onAgentStorage callback code
List<StorageCell>reservedCells(int rack, int bay)
Returns a list of reserved cells located in the specified bay.
List<StorageCell>reservedCells(int rack, int bay, int shelf)
Returns a list of reserved cells located in the specified slot.
voidresetStats()
Resets statistics: the number of stored agents and the number of retrieved agents.
voidresetSVGState(SVGElement elementBeingDeleted, boolean delete, Consumer<SVGCommand> commandOutput)
This method is internal and shouldn't be called by user.
it may be removed/renamed in future.
Agentretrieve(int rack)
Retrieves and returns the next agent from the specified rack.
Agentretrieve(int rack, int bay)
Retrieves and returns the next agent from the specified bay.
Agentretrieve(int rack, int bay, int shelf)
Retrieves and returns the next agent from the specified slot.
Agentretrieve(Agent agent)
Retrieves and returns the previously stored agent from the storage.
voidsetAccessZone(double zoneWidth, LengthUnits units)
Sets the width of access zone in specified length units.
voidsetAisleCapacityRestriction(int maxNumber)
Sets maximum number of allowed transporters is the storage aisles.
voidsetAisleWidth(double aisleWidth, LengthUnits units)
Sets the aisle width in specified length units.
voidsetCellWidth(double cellWidth, LengthUnits units)
Sets the cell width in specified length units.
voidsetFrameColor(Color frameColor)
Sets the color of rack frame.
voidsetIgnoreCellAccessibility(boolean ignore) 
voidsetInslotSpeed(double speed, SpeedUnits units)
Sets in-slot speed in specified speed units
voidsetNumberOfBays(int numberOfBays)
Sets the number of bays per rack.
voidsetNumberOfCellsPerSlot(int numberOfCells)
Sets number of cells per slot.
voidsetNumberOfRacks(int numberOfRacks)
Sets the number of racks.
voidsetNumberOfShelves(int numberOfShelves)
Sets number of shelves per rack.
voidsetObstacle(boolean isObstacle)
Sets the racks of this storage as obstacles for transporters moving in free space mode.
voidsetPlaceOddSingleRack(RackOddSingleRackSide side)
Sets the side of the stand alone rack in case of an odd number of racks.
voidsetPlaceSingleRacksAtSides(boolean placeSingleRacksAtSides)
Places stand-alone racks at the sides of the storage.
voidsetRackDepth(double rackDepth, LengthUnits units)
Sets the rack depth in specified length units.
voidsetRackPlacement(RackPlacement rackPlacement)
Defines rack placement.
voidsetRackType(RackType type)
Sets the rack type.
voidsetReservation(Agent agent, int rack, int bay)
Reserves a cell for the specified agent in the specified bay.
voidsetReservation(Agent agent, int rack, int bay, int shelf)
Reserves a cell for the specified agent in the specified slot.
voidsetReservation(Agent agent, StorageSlot slot)
Reserves a cell for the specified agent in the specified slot.
voidsetRestrictedAisleAccess(boolean restricted)
Enables possibility to specify maximum number of allowed transporters in each aisle of the storage.
voidsetRetrievalSystem(StorageRetrievalSystem retrievalSystem) 
voidsetReverseLoadingDirection(boolean reversed)
Sets value of parameter 'Reverse loading direction'.
voidsetRotation(double rotation)
Sets the rotation of the storage.
voidsetShelfHeight(double shelfHeight, LengthUnits units)
Sets the z-height of a shelf in specified length units.
voidsetShelvesColor(Color shelvesColor)
Sets the color of rack shelves.
voidsetShelvesTiltAngle(double tiltAngle)
Sets the tilt angle of shelves.
voidsetSimplifiedAgentAnimation(boolean simplifiedAgentAnimation)
Controls the way the stored agents are drawn.
voidsetSpecifiedInslotSpeed(boolean enabled)
Enables specific in-slot speed if the argument is true and disables if the argument is false.
voidsetStorageSystem(RackUnitAggregator rs) 
voidsetX(double x)
Sets the X coordinate of this storage.
voidsetY(double y)
Sets the Y coordinate of this storage.
voidsetZ(double z)
Sets the Z coordinate of this storage.
intsize()
Returns the number of stored agents.
voidstore(Agent agent)
Stores the given agent in the storage.
voidstore(Agent agent, int rack)
Stores the agent in the specified rack.
voidstore(Agent agent, int rack, int bay)
Stores the agent in the specified bay.
voidstore(Agent agent, int rack, int bay, int shelf)
Stores the agent in the specified slot.
voidstore(Agent agent, StorageSlot slot)
Stores the agent in the specified slot.
booleanunitHasAvailableCells(int unit, Agent agent) 
voidupdateColorMap(int unit, int bay, int level, int deepPosition, Color color)
This method is internal and shouldn't be called by user.
it may be removed/renamed in future.
voidupdateDynamicProperties()
Updates dynamic properties of this shape only (without structural contents, if any) in a given context.
Method should be overridden for shapes with dynamic properties.
SVGElementupdateSVGProperties(List<SVGCommand> output, ShapeDrawMode drawMode, boolean publicOnly, SVGElement owner, SVGElement elbehind, boolean isInReplicatedShape)
This method is internal and shouldn't be called by user.
it may be removed/renamed in future.
Updates SVG properties of the element that are then sent to the rendering client.
doubleutilization()
Returns the storage's utilization.

Methods inherited from class com.anylogic.engine.markup.AbstractLevelMarkup

getDrawMode, getLevel, setLevel

Methods inherited from class com.anylogic.engine.markup.MarkupShape

error, getFullName, getOutsideLevelZ, getPresentable, getSpace, initialize, isClickHandled, isOnly3D, isPublic, onClick, remove, setDrawMode, setOwner

Methods inherited from class java.lang.Object

equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Methods inherited from interface com.anylogic.engine.markup.AbstractPositionalMarkup

getSpace, isVisible

Methods inherited from interface com.anylogic.engine.markup.AggregatableAnimationElement

initializeInternal, onAggregatorVisibilityChanged, postInitialize

Methods inherited from interface com.anylogic.engine.markup.RackUnitAggregator

getName

Methods inherited from interface com.anylogic.engine.presentation.SVGElement

executeUserAction, getGroupOrOwner, getPresentable, getSVGComponent, getSVGId, isOnly3D, removeSVGFromOwner, resetSVGComponent

Methods inherited from interface com.anylogic.engine.presentation.UsdElement

getOrGenerateUSDId

Constructor Details

Storage

public Storage()
Creates a new Storage with default parameters. Parameters may be changed before markup initialization (see Level.initialize()). Any operations with cells must be done after markup initialization.

Storage

@AnyLogicInternalCodegenAPI
public Storage(Agent owner,
 ShapeDrawMode drawMode,
 boolean isPublic,
 boolean isObstacle,
 IStorageDescriptor d,
 double x,
 double y,
 double z,
 RackType rackType,
 boolean flipped,
 RackPlacement rackPlacement,
 int numberOfStorageUnits,
 int numberOfBays,
 int numberOfCellsPerSlot,
 double rightPassageMeter,
 double leftPassageMeter,
 double heightMeter,
 double widthMeter,
 double aisleWidthMeter,
 double slotDepthMeter,
 double cellWidthMeter,
 double rotation,
 double tiltAngle,
 boolean placeSingleRacksAtSides,
 RackOddSingleRackSide placeOddSingleRack,
 Color shelvesColor,
 Color frameColor,
 boolean drawLegs,
 int baysBetweenLegs,
 boolean simplifiedAgentAnimation,
 int numberOfShelves,
 double shelfHeightMeter,
 StorageServiceType serviceType,
 StorageRetrievalSystem retrievalSystem)

Method Details

createAislesGeometry

@AnyLogicInternalAPI
public List<RectangularNode<Agent>> createAislesGeometry()

setStorageSystem

@AnyLogicInternalLibraryAPI
public void setStorageSystem(RackUnitAggregator rs)

getStorageSystem

public RackUnitAggregator getStorageSystem()
Returns the storage system this element belongs to.
Returns:
StorageSystem this element belongs to

isObstacle

public boolean isObstacle()
Returns true if racks of this storage are considered obstacles by transporters moving in free space mode. Otherwise, returns false.
Returns:
true if racks of this storage are considered obstacles by transporters moving in free space mode. Otherwise, returns false

setObstacle

public void setObstacle(boolean isObstacle)
Sets the racks of this storage as obstacles for transporters moving in free space mode.
Parameters:
isObstacle - - if true, the racks are set as obstacles. Otherwise, not.

isSimplifiedAgentAnimation

public boolean isSimplifiedAgentAnimation()
Returns true if stored agent animation is replaced with cell color indication, otherwise returns false.
Returns:
true if stored agent animation is replaced with cell color indication, otherwise returns false

setSimplifiedAgentAnimation

public void setSimplifiedAgentAnimation(boolean simplifiedAgentAnimation)
Controls the way the stored agents are drawn. true value disables agent animation inside the storage and fills cells with agent color indicating occupancy (best animation performance). false draws agents inside the storage as is. Cannot be called after markup initialization.
Parameters:
simplifiedAgentAnimation - - true value disables agent animation inside the storage and fills cells with agent color indicating occupancy (best animation performance). false draws agents inside the storage as is

getShelvesColor

public Color getShelvesColor()
Returns the color of rack shelves. For drive in storage an error will occur.
Returns:
color of rack shelves

getFrameColor

public Color getFrameColor()
Returns the color of rack frame.
Returns:
color of rack frame

setShelvesColor

public void setShelvesColor(Color shelvesColor)
Sets the color of rack shelves. For drive in storage, shelves color will be ignored.
Parameters:
shelvesColor - color of rack shelves

setFrameColor

public void setFrameColor(Color frameColor)
Sets the color of rack frame.
Parameters:
frameColor - color of rack frame

getLibraryDescriptor

@AnyLogicInternalAPI
public IStorageDescriptor getLibraryDescriptor()

getAccessibleAgents

@AnyLogicInternalLibraryAPI
public List<Agent> getAccessibleAgents()

isUnitAccessibleFromLeftAdd

@AnyLogicInternalLibraryAPI
public boolean isUnitAccessibleFromLeftAdd(int unit)

isUnitAccessibleFromRightAdd

@AnyLogicInternalLibraryAPI
public boolean isUnitAccessibleFromRightAdd(int unit)

isUnitAccessibleFromLeftRemove

@AnyLogicInternalLibraryAPI
public boolean isUnitAccessibleFromLeftRemove(int unit)

isUnitAccessibleFromRightRemove

@AnyLogicInternalLibraryAPI
public boolean isUnitAccessibleFromRightRemove(int unit)

getNumberOfRacks

public int getNumberOfRacks()
Returns the number of racks.
Returns:
number of racks

setNumberOfRacks

public void setNumberOfRacks(int numberOfRacks)
Sets the number of racks. Cannot be called after markup initialization.
Parameters:
numberOfRacks - positive integer value

setPlaceSingleRacksAtSides

public void setPlaceSingleRacksAtSides(boolean placeSingleRacksAtSides)
Places stand-alone racks at the sides of the storage.
Parameters:
placeSingleRacksAtSides - is true if there are stand-alone racks at the sides of the back-to-back storage. The value cannot be false if the current number of racks is odd.

setPlaceOddSingleRack

public void setPlaceOddSingleRack(RackOddSingleRackSide side)
Sets the side of the stand alone rack in case of an odd number of racks.
Parameters:
side - storage side of the stand alone rack

getPlaceSingleRacksAtSides

public boolean getPlaceSingleRacksAtSides()
Returns true if stand-alone racks are placed at the sides of the storage.
Returns:
true if stand-alone racks are placed at the sides of the storage.

getPlaceOddSingleRack

public RackOddSingleRackSide getPlaceOddSingleRack()
Returns the side of the stand alone rack in case of an odd number of racks.
Returns:
the X coordinate of this storage

getX

public double getX()
Returns the X coordinate of this storage.
Specified by:
getX in interface AbstractPositionalMarkup
Returns:
the X coordinate of this storage

setX

public void setX(double x)
Sets the X coordinate of this storage. Cannot be called after markup initialization.
Parameters:
x - the X coordinate of this storage

getY

public double getY()
Returns the Y coordinate of this storage.
Specified by:
getY in interface AbstractPositionalMarkup
Returns:
the Y coordinate of this storage

setY

public void setY(double y)
Sets the Y coordinate of this storage. Cannot be called after markup initialization.
Parameters:
y - the Y coordinate of this storage

getZ

public double getZ()
Returns the Z coordinate of this storage.
Specified by:
getZ in interface AbstractPositionalMarkup
Returns:
the Z coordinate of this storage

setZ

public void setZ(double z)
Sets the Z coordinate of this storage. Cannot be called after markup initialization.
Parameters:
z - the Z coordinate of this storage

getNumberOfBays

public int getNumberOfBays()
Returns the number of bays per rack.
Returns:
number of bays per rack

setNumberOfBays

public void setNumberOfBays(int numberOfBays)
Sets the number of bays per rack. Cannot be called after markup initialization.
Parameters:
numberOfBays - positive integer value

getNumberOfCellsPerSlot

public int getNumberOfCellsPerSlot()
Returns the number of cells per slot.
Returns:
number of cells per slot

setNumberOfCellsPerSlot

public void setNumberOfCellsPerSlot(int numberOfCells)
Sets number of cells per slot. Cannot be called after markup initialization.
Parameters:
numberOfCells - positive integer value

getSlotDepth

@AnyLogicInternalLibraryAPI
public double getSlotDepth()

getRackDepth

public double getRackDepth(LengthUnits units)
Returns the rack depth in specified length units.
Parameters:
units - - length units
Returns:
rack depth in specified length units

setRackDepth

public void setRackDepth(double rackDepth,
 LengthUnits units)
Sets the rack depth in specified length units. Cannot be called after markup initialization.
Parameters:
rackDepth - - finite positive value in specified length units
units - - length units

getNumberOfShelves

public int getNumberOfShelves()
Returns the number of shelves per rack.
Returns:
number of shelves per rack

setNumberOfShelves

public void setNumberOfShelves(int numberOfShelves)
Sets number of shelves per rack. May not be called after initialization of markup.
Parameters:
numberOfShelves - positive integer value

isSpecifiedInslotSpeed

public boolean isSpecifiedInslotSpeed()
Returns true if specific in-slot speed was enabled and false otherwise.
Returns:
true if specific in-slot speed was enabled and false otherwise

setSpecifiedInslotSpeed

public void setSpecifiedInslotSpeed(boolean enabled)
Enables specific in-slot speed if the argument is true and disables if the argument is false. Use setInslotSpeed(double, SpeedUnits) method to set the speed value afterwards.
Parameters:
enabled - argument flag

isRestrictedAisleAccess

public boolean isRestrictedAisleAccess()
If enabled, you can specify maximum number of allowed transporters in each aisle of the storage.
Returns:
true if you can specify maximum number of allowed transporters is the storage aisles.

setRestrictedAisleAccess

public void setRestrictedAisleAccess(boolean restricted)
Enables possibility to specify maximum number of allowed transporters in each aisle of the storage.
Parameters:
restriction - enabled argument flag

getAisleCapacityRestriction

public int getAisleCapacityRestriction()
Returns maximum number of allowed transporters is the storage aisles.
Returns:
maximum number of allowed transporters is the storage aisles.

setAisleCapacityRestriction

public void setAisleCapacityRestriction(int maxNumber)
Sets maximum number of allowed transporters is the storage aisles. Restriction is enabled only if a positive value is specified.

getInslotSpeed

public double getInslotSpeed(SpeedUnits units)
Returns in-slot speed in specified speed units.
Parameters:
units - - speed units
Returns:
inslot speed in specified speed units

setInslotSpeed

public void setInslotSpeed(double speed,
 SpeedUnits units)
Sets in-slot speed in specified speed units
Parameters:
speed - - speed value
units - - speed units

getCellHeight

@AnyLogicInternalLibraryAPI
public double getCellHeight()

getShelfHeight

public double getShelfHeight(LengthUnits units)
Returns the z-height of a shelf in specified length units.
Parameters:
units - - length units
Returns:
z-height of shelf in specified length units

setShelfHeight

public void setShelfHeight(double shelfHeight,
 LengthUnits units)
Sets the z-height of a shelf in specified length units. Cannot be called after markup initialization.
Parameters:
shelfHeight - - finite positive value in specified length units
units - - length units

getAisleWidth

@AnyLogicInternalLibraryAPI
public double getAisleWidth()

getAisleWidth

public double getAisleWidth(LengthUnits units)
Returns the aisle width in specified length units.
Parameters:
units - - length units
Returns:
aisle width in specified length units

setAisleWidth

public void setAisleWidth(double aisleWidth,
 LengthUnits units)
Sets the aisle width in specified length units. Cannot be called after markup initialization.
Parameters:
aisleWidth - finite positive value in specified length units
units - length units

getCellDepth

@AnyLogicInternalLibraryAPI
public double getCellDepth()

getCellDepth

@AnyLogicInternalAPI
public double getCellDepth(LengthUnits units)

getUnitLength

@AnyLogicInternalAPI
public double getUnitLength()

getUnitLength

@AnyLogicInternalAPI
public double getUnitLength(LengthUnits units)

getUnitHeight

@AnyLogicInternalAPI
public double getUnitHeight()

getCellCenter

@AnyLogicInternalAPI
public Position getCellCenter(int rack,
 int bay,
 int shelf,
 int depth)

getAccessZone

public double getAccessZone(LengthUnits units)
Returns the width of access zone in specified length units.
Parameters:
units - - length units
Returns:
width of access zone in specified length units

getAccessZone

@AnyLogicInternalAPI
public double getAccessZone()

setAccessZone

public void setAccessZone(double zoneWidth,
 LengthUnits units)
Sets the width of access zone in specified length units. Cannot be called after markup initialization.
Parameters:
zoneWidth - - finite positive value in specified length units
units - - length units

getLeftPassage

@AnyLogicInternalLibraryAPI
public double getLeftPassage()

getLeftPassage

@AnyLogicInternalLibraryAPI
public double getLeftPassage(LengthUnits units)

getRightPassage

@AnyLogicInternalLibraryAPI
public double getRightPassage(LengthUnits units)

getRightPassage

@AnyLogicInternalLibraryAPI
public double getRightPassage()

getCellWidth

@AnyLogicInternalLibraryAPI
public double getCellWidth()

getCellWidth

public double getCellWidth(LengthUnits units)
Returns the cell width in specified length units.
Parameters:
units - - length units
Returns:
cell width in specified length units

setCellWidth

public void setCellWidth(double cellWidth,
 LengthUnits units)
Sets the cell width in specified length units. Cannot be called after markup initialization.
Parameters:
cellWidth - - finite positive value in specified length units
units - - length units

unitHasAvailableCells

@AnyLogicInternalLibraryAPI
public boolean unitHasAvailableCells(int unit,
 Agent agent)

getRotation

public double getRotation()
Returns the rotation of the storage in radians.
Specified by:
getRotation in interface AbstractPositionalMarkup
Returns:
rotation of the storage in radians

setRotation

public void setRotation(double rotation)
Sets the rotation of the storage. Cannot be called after markup initialization.
Parameters:
rotation - finite value in radians

getShelvesTiltAngle

public double getShelvesTiltAngle()
Returns shelves tilt angle in radians.
Returns:
shelves tilt angle in radians

setShelvesTiltAngle

public void setShelvesTiltAngle(double tiltAngle)
Sets the tilt angle of shelves. Cannot be called after markup initialization. May be zero or positive but less then pi/2 (90 deg).
Parameters:
tiltAngle - finite value in radians inside range [0, PI/2)

isLoadingDirectionReversed

public boolean isLoadingDirectionReversed()
Returns value of parameter 'Reverse loading direction'
Returns:
value of parameter 'Reverse loading direction'

setReverseLoadingDirection

public void setReverseLoadingDirection(boolean reversed)
Sets value of parameter 'Reverse loading direction'. Cannot be called after markup initialization. May be set true only for storage with stand-alone rack placement.

getRackType

public RackType getRackType()
Returns the rack type.
Returns:
rack type

setRackType

public void setRackType(RackType type)
Sets the rack type. Cannot be called after markup initialization.
Parameters:
type - type of the storage. Cannot be null.

getRackPlacement

public RackPlacement getRackPlacement()
Returns rack placement type.
Returns:
rack placement type

setRackPlacement

public void setRackPlacement(RackPlacement rackPlacement)
Defines rack placement. Cannot be called after markup initialization.
Parameters:
rackPlacement - rack placement type. Cannot be null.

contains

public boolean contains(double px,
 double py)
Description copied from class: MarkupShape
Test if the shape contains the point with the given coordinates (relative to this shape's container, i.e. in the same system with the coordinates of this shape, x and y)
Specified by:
contains in class MarkupShape
Parameters:
px - the x coordinate relative to this shape's container
py - the y coordinate relative to this shape's container
Returns:
true if the shape contains the point with the given coordinates

getBoundingRectangle

public BoundingRectangle getBoundingRectangle()
Specified by:
getBoundingRectangle in interface HasBoundingRectangle

getCorners

@AnyLogicInternalAPI
public Point[] getCorners()

getNumberOfAisles

@AnyLogicInternalAPI
public int getNumberOfAisles()

getFullWidth

@AnyLogicInternalAPI
public double getFullWidth()

getFullWidth

@AnyLogicInternalAPI
public double getFullWidth(LengthUnits units)

getWidth

@AnyLogicInternalAPI
public double getWidth()

getWidth

@AnyLogicInternalAPI
public double getWidth(LengthUnits units)

getFullHeight

@AnyLogicInternalAPI
public double getFullHeight()

getFullHeight

@AnyLogicInternalAPI
public double getFullHeight(LengthUnits units)

capacity

public int capacity()
Returns the maximum possible number of agents that can be stored in the storage. Deactivated cells are excluded from the result.
Returns:
capacity of the storage

nStored

public int nStored()
Returns the total number of stored agents. May be reset via resetStats().
Returns:
total number of stored agents.

nRetrieved

public int nRetrieved()
Returns the total number of retrieved agents. May be reset via resetStats().
Returns:
total number of retrieved agents.

utilization

public double utilization()
Returns the storage's utilization. Utilization is a double value in range [0, 1] that is calculated as a ratio of occupied cells to capacity.
Returns:
storage's utilization

resetStats

public void resetStats()
Resets statistics: the number of stored agents and the number of retrieved agents.

setReservation

public void setReservation(Agent agent,
 int rack,
 int bay,
 int shelf)
Reserves a cell for the specified agent in the specified slot. This reservation is implicit. Can be called only after markup initialization.
Parameters:
agent - - the agent that reserves the cell
rack - - index of rack
bay - - index of bay
shelf - - index of shelf

setReservation

public void setReservation(Agent agent,
 StorageSlot slot)
Reserves a cell for the specified agent in the specified slot. This reservation is implicit. Can be called only after markup initialization.
Parameters:
agent - - the agent that reserves a cell
slot - - address of the slot

setReservation

public void setReservation(Agent agent,
 int rack,
 int bay)
Reserves a cell for the specified agent in the specified bay. This reservation is implicit. Can be called only after markup initialization.
Parameters:
agent - - the agent that reserves the cell
rack - - index of rack
bay - - index of bay

cancelReservation

public void cancelReservation(Agent agent)
Discards any reservations made for the specified agent. Can be called only after markup's initialization.
Parameters:
agent - - agent for whom the reservation should be canceled

retrieve

public Agent retrieve(Agent agent)
Retrieves and returns the previously stored agent from the storage. Can be called only after markup initialization.
Parameters:
agent - - the agent that should be retrieved from storage.
Returns:
retrieved agent.

retrieve

public Agent retrieve(int rack,
 int bay,
 int shelf)
Retrieves and returns the next agent from the specified slot. Can be called only after markup initialization.
Parameters:
rack - - index of rack
bay - - index of bay
shelf - - index of shelf
Returns:
retrieved agent

retrieve

public Agent retrieve(int rack,
 int bay)
Retrieves and returns the next agent from the specified bay. Can be called only after markup initialization.
Parameters:
rack - - index of rack
bay - - index of bay
Returns:
retrieved agent

retrieve

public Agent retrieve(int rack)
Retrieves and returns the next agent from the specified rack. Can be called only after markup initialization.
Parameters:
rack - - index of rack
Returns:
retrieved agent

deactivateCells

public void deactivateCells(int rack)

deactivateCells

public void deactivateCells(int rack,
 int bay)

deactivateCells

public void deactivateCells(int rack,
 int bay,
 int shelf)

nReservedCells

public int nReservedCells()
Returns the number of reserved (but not occupied) cells.
Returns:
number of reserved (but not occupied) cells

hasSpace

public boolean hasSpace(int rack,
 int bay,
 int shelf)
Returns true if the specified slot has cells available for reservation and false otherwise. Can be called only after markup initialization.
Parameters:
rack - - index of rack
bay - - index of bay
shelf - - index of shelf
Returns:
true if the specified slot has cells available for reservation and false otherwise

hasSpace

public boolean hasSpace()
Returns true if the storage has cells available for reservation and false otherwise. Can be called only after markup initialization.
Returns:
true if the storage has cells available for reservation and false otherwise

reservedCells

public List<StorageCell> reservedCells(int rack,
 int bay,
 int shelf)
Returns a list of reserved cells located in the specified slot. Can be called only after markup initialization.
Parameters:
rack - - index of rack
bay - - index of bay
shelf - - index of shelf
Returns:
list of reserved cells located in the specified slot.

reservedCells

public List<StorageCell> reservedCells(int rack,
 int bay)
Returns a list of reserved cells located in the specified bay. Can be called only after markup initialization.
Parameters:
rack - - index of rack
bay - - index of bay
Returns:
list of reserved cells located in the specified bay.

getPositionInAisle

public Position getPositionInAisle(Agent agent)
Returns the position in front of the bay where the specified agent is stored (on the side used for storage). Horizontal rotation is set towards the cell containing the agent. Vertical rotation is set to 0.

getPositionInAisle

public Position getPositionInAisle(Agent agent,
 boolean loadingSide)
Returns the position in front of the bay where the specified agent is stored (on the specified side). Horizontal rotation is set towards the cell containing the agent. Vertical rotation is set to 0.
Parameters:
loadingSide - true means loading side, false means retrieval side.

getPositionInAisle

public Position getPositionInAisle(int rack,
 int bay)
Returns the position in front of the specified bay (on the side used for storage). Horizontal rotation is set towards the cell containing the agent. Vertical rotation is set to 0.

getPositionInAisle

public Position getPositionInAisle(int rack,
 int bay,
 boolean loadingSide)
Returns the position in front of the specified bay (on the specified side). Horizontal rotation is set towards the cell containing the agent. Vertical rotation is set to 0.
Parameters:
rack -
bay -
loadingSide -
Returns:

store

public void store(Agent agent)
Stores the given agent in the storage. The position is chosen according to the storage type. If there are no cells available for reservation, an error will occur. Can be called only after markup initialization.
Parameters:
agent - - agent to be stored in the storage, cannot be null

store

public void store(Agent agent,
 int rack)
Stores the agent in the specified rack. The position is chosen according to the storage type. If there are no cells available for reservation, an error will occur. Can be called only after markup initialization.
Parameters:
agent - - agent to be stored in the rack, cannot be null
rack - - index of rack

store

public void store(Agent agent,
 int rack,
 int bay)
Stores the agent in the specified bay. The position is chosen according to the storage type. If there are no cells available for reservation, an error will occur. Can be called only after markup initialization.
Parameters:
agent - - agent to be stored in the bay, cannot be null
rack - - index of rack
bay - - index of bay

store

public void store(Agent agent,
 int rack,
 int bay,
 int shelf)
Stores the agent in the specified slot. The position is chosen according to the storage type. If there are no cells available for reservation, an error will occur. Can be called only after markup initialization.
Parameters:
agent - - agent to be stored in the slot, cannot be null
rack - - index of rack
bay - - index of bay
shelf - - index of shelf

store

public void store(Agent agent,
 StorageSlot slot)
Stores the agent in the specified slot. The position is chosen according to the storage type. If there are no cells available for reservation, an error will occur. Can be called only after markup initialization.
Parameters:
agent - - agent to be stored in the slot, cannot be null
slot - - address of the slot

getAgentInCell

public Agent getAgentInCell(int rack,
 int bay,
 int shelf,
 int deepPosition)
Returns the agent stored in the specified cell. Can be called only after markup initialization.
Parameters:
rack - - index of rack
bay - - index of bay
shelf - - index of shelf
deepPosition - - index of cell
Returns:
agent stored in the specified cell.

getAgents

public List<Agent> getAgents()
Returns a list of agents stored in the storage, ordered according to rack type. See help for more info. Can be called only after markup initialization.
Returns:
ordered list of agents stored in the storage.

getCell

public StorageCell getCell(Agent agent)
Returns the cell that contains the specified agent. Can be called only after markup initialization.
Parameters:
agent - - an agent that is stored in the storage. Cannot be null.
Returns:
cell that contains the specified agent

getCell

public StorageCell getCell(int rack,
 int bay,
 int shelf,
 int deepPosition)
Returns the specified cell. Can be called only after markup initialization.
Parameters:
rack - - index of rack
bay - - index of bay
shelf - - index of shelf
deepPosition - - index of cell
Returns:
the specified cell

getSlot

public StorageSlot getSlot(int rack,
 int bay,
 int shelf)
Returns slot address.
Parameters:
rack - index of rack
bay - index of bay
shelf - index of shelf
Returns:
slot address

getCells

public List<StorageCell> getCells()
Returns a list of cells ordered according to rack type. See help for more info. Can be called only after markup initialization.
Returns:
ordered list of cells

getRandomAgent

public Agent getRandomAgent()
Returns a random agent stored in the storage. If the storage is empty, returns null. Can be called only after markup initialization.
Returns:
random agent stored in the storage

getRandomAccessibleAgent

public Agent getRandomAccessibleAgent()
Returns a random accessible agent stored in the storage. If the storage is empty or there aren't accessible agents, returns null. Can be called only after markup initialization.
Returns:
random accessible agent stored in the storage

contains

public boolean contains(Agent agent)
Returns true if the specified agent is stored in the storage and false otherwise. Can be called only after markup initialization.
Parameters:
agent - - agent that you want to check
Returns:
true if the specified agent is stored in the storage and false otherwise

size

public int size()
Returns the number of stored agents. Can be called only after markup initialization.
Returns:
number of stored agents

getRandomAvailableSlot

public StorageSlot getRandomAvailableSlot()

getRandomFreeCell

public StorageCell getRandomFreeCell()
Returns the next cell available for reservation in a random slot from the storage. Can be called only after markup initialization. Note that this method cannot be used with LIFO and FIFO flow storage types.
Returns:
next cell available for reservation in a random slot from the storage

freeCells

public List<StorageCell> freeCells(int rack)
Returns a list of all free cells in the specified rack. Can be called only after markup initialization.
Parameters:
rack - - index of rack
Returns:
list of all free cells in the specified rack

freeCells

public List<StorageCell> freeCells(int rack,
 int bay)
Returns a list of all free cells in the specified bay. Can be called only after markup initialization.
Parameters:
rack - - index of rack
bay - - index of bay
Returns:
list of all free cells in the specified bay

freeCells

public List<StorageCell> freeCells(int rack,
 int bay,
 int shelf)
Returns a list of all free cells in the specified slot Can be called only after markup initialization.
Parameters:
rack - - index of rack
bay - - index of bay
shelf - - index of shelf
Returns:
list of all free cells in the specified slot

isFree

@AnyLogicInternalAPI
public boolean isFree(int rack,
 int bay,
 int shelf,
 int depth)

nFreeCells

public int nFreeCells()
Returns the number of free cells. Can be called only after markup initialization.
Returns:
number of free cells

nFreeCells

public int nFreeCells(int rack)
Returns the number of free cells in the specified rack. Can be called only after markup initialization.
Parameters:
rack - - index of rack
Returns:
number of free cells in the specified rack

nFreeCells

public int nFreeCells(int rack,
 int bay)
Returns the number of free cells in the specified bay. Can be called only after markup initialization.
Parameters:
rack - - index of rack
bay - - index of bay
Returns:
number of free cells in the specified bay

nFreeCells

public int nFreeCells(int rack,
 int bay,
 int shelf)
Returns the number of free cells in the specified slot Can be called only after markup initialization.
Parameters:
rack - - index of rack
bay - - index of bay
shelf - - index of shelf
Returns:
number of free cells in the specified slot

enableDebugAnimator

@AnyLogicInternalAPI
public void enableDebugAnimator(ShapeDrawMode mode)

enableGeometryAnimator

@AnyLogicInternalAPI
public void enableGeometryAnimator()

setIgnoreCellAccessibility

@AnyLogicInternalAPI
public void setIgnoreCellAccessibility(boolean ignore)

isIgnoreCellAccessibility

@AnyLogicInternalAPI
public boolean isIgnoreCellAccessibility()

isSingleUnitFirst

@AnyLogicInternalAPI
public boolean isSingleUnitFirst()

onAgentStorage

public void onAgentStorage(Agent agent,
 StorageCell cell)
Calls the storage's onAgentStorage callback code
Parameters:
agent - - the agent that has been stored in storage
cell - - the cell that was occupied by agent

onAgentRetrieval

public void onAgentRetrieval(Agent agent,
 StorageCell cell)
Calls the storage's onAgentRetrieval callback code
Parameters:
agent - - the agent that has been retrieved from storage
cell - - the cell that was released by agent

muteCallbacks

@AnyLogicInternalAPI
public void muteCallbacks(boolean areCallbacksMuted)

updateSVGProperties

@AnyLogicInternalAPI
public SVGElement updateSVGProperties(List<SVGCommand> output,
 ShapeDrawMode drawMode,
 boolean publicOnly,
 SVGElement owner,
 SVGElement elbehind,
 boolean isInReplicatedShape)
Description copied from interface: SVGElement
This method is internal and shouldn't be called by user.
it may be removed/renamed in future.
Updates SVG properties of the element that are then sent to the rendering client. If the element is not yet in the SVG scene, generates "C" command, if it is there, but some properties are out of date, generates "U" command. If SVG drawing of this element is not needed because of public only settings, or permanently not needed, or not supported yet, returns false and does nothing.
Specified by:
updateSVGProperties in interface SVGElement
Overrides:
updateSVGProperties in class AbstractMarkup
Parameters:
output - the list of commands to add to
drawMode - TODO
publicOnly - drawing context: if true, only shapes that are marked as public only are updated
owner - the SVG element that serves as a container for this element
elbehind - the SVG element behind this one, or null if none or if order is irrelevant
Returns:
the actual owner this element has been added to or null if element is not drawn (e.g. drawing of this element is not needed because of public only settings, permanently not needed or not supported - hence SVG id is not set). The actual owner may differ from the given owner when the svg element is added to a different place (e.g. GIS map).

resetSVGState

@AnyLogicInternalAPI
public void resetSVGState(SVGElement elementBeingDeleted,
 boolean delete,
 Consumer<SVGCommand> commandOutput)
Description copied from interface: SVGElement
This method is internal and shouldn't be called by user.
it may be removed/renamed in future.
Specified by:
resetSVGState in interface SVGElement
Overrides:
resetSVGState in class AbstractMarkup

findSVGElement

@AnyLogicInternalAPI
public SVGElement findSVGElement(long svgId)
Description copied from interface: SVGElement
This method is internal and shouldn't be called by user.
it may be removed/renamed in future.
Specified by:
findSVGElement in interface SVGElement
Overrides:
findSVGElement in class AbstractMarkup

isInvertedRack

@AnyLogicInternalAPI
public boolean isInvertedRack(int rack)

updateColorMap

@AnyLogicInternalAPI
public void updateColorMap(int unit,
 int bay,
 int level,
 int deepPosition,
 Color color)
This method is internal and shouldn't be called by user.
it may be removed/renamed in future.

updateDynamicProperties

public void updateDynamicProperties()
Description copied from class: AbstractMarkup
Updates dynamic properties of this shape only (without structural contents, if any) in a given context.
Method should be overridden for shapes with dynamic properties. Note that you should call super.updateDynamicProperties() at the end of overridden method
Overrides:
updateDynamicProperties in class AbstractMarkup

getServiceType

public StorageServiceType getServiceType()
Returns the type of equipment used by the ASRS system. See StorageServiceType.

Possible values are:

  • EXTERNAL - External resources/without resources: equipment integrated with the rack is not used (the agent will be operated by a transporter, resource, or will move independently).
  • STACKER_CRANES - Stacker cranes: stacker cranes are used in the rack.
Returns:
the type of equipment used by the ASRS system.

getRetrievalSystem

@AnyLogicInternalLibraryAPI
public StorageRetrievalSystem getRetrievalSystem()

getStackerCraneSystem

@AnyLogicInternalAPI
public StackerCraneSystem getStackerCraneSystem()

getInputNodes

public List<PointNode> getInputNodes()
Returns the set of available input PointNode objects, where each element is the nearest available pickup node to a specific stacker crane operating across the aisles of this Storage.

This method effectively resolves the optimal input interface for every active stacker crane and returns the aggregated collection. The result serves as a pre-calculated routing map for inbound operations.

Returns:
a list of nearest available input nodes (typically one per active crane); never null, but may be empty if no cranes are active or no input nodes are reachable
See Also:

getOutputNodes

public List<PointNode> getOutputNodes()
Returns the set of available output PointNode objects, where each element is the nearest available drop-off node to a specific stacker crane operating across the aisles of this Storage.

This method effectively resolves the optimal output interface for every active stacker crane and returns the aggregated collection. The result serves as a pre-calculated routing map for outbound operations.

Returns:
a list of nearest available output nodes (typically one per active crane); never null, but may be empty if no cranes are active or no output nodes are reachable
See Also:

getInputConveyors

public List<ConveyorPath> getInputConveyors()
Returns the set of available ConveyorPath objects acting as input interfaces, where each path itself serves as the nearest available input station for a specific stacker crane operating across the aisles of this Storage.

Resolves the optimal conveyor-based entry point for every active crane and returns the corresponding conveyor paths ready for inbound material flow.

Returns:
a list of nearest available input conveyors (typically one per active crane); never null, but may be empty if no input conveyors are reachable
See Also:

getOutputConveyors

public List<ConveyorPath> getOutputConveyors()
Returns the set of available ConveyorPath objects acting as output interfaces, where each path itself serves as the nearest available output station for a specific stacker crane operating across the aisles of this Storage.

Resolves the optimal conveyor-based exit point for every active crane and returns the corresponding conveyor paths ready for outbound material flow.

Returns:
a list of nearest available output conveyors (typically one per active crane); never null, but may be empty if no cranes are active or no output conveyors are reachable
See Also:

getNearestInputNode

public PointNode getNearestInputNode(StorageCell cell)
Finds and returns the nearest available input PointNode relative to the specified cell.

Evaluates the physical distance from the given cell to all reachable input nodes across the storage aisles and resolves the optimal one for routing efficiency. Unlike getInputNodes(), which resolves nodes per crane, this method resolves the nearest node from an arbitrary storage location.

Parameters:
cell - the reference storage cell
Returns:
the closest available input node, or null if no reachable input node exists
See Also:
getInputNodes()

getNearestOutputNode

public PointNode getNearestOutputNode(StorageCell cell)
Finds and returns the nearest available output PointNode relative to the specified cell.

Evaluates the physical distance from the given cell to all reachable output nodes across the storage aisles and resolves the optimal one for routing efficiency. Unlike getOutputNodes(), which resolves nodes per crane, this method resolves the nearest node from an arbitrary storage location.

Parameters:
cell - the reference storage cell
Returns:
the closest available output node, or null if no reachable output node exists
See Also:
getOutputNodes()

getNearestInputNode

public PointNode getNearestInputNode(int rack)
Finds and returns the nearest available input PointNode relative to the specified rack identifier.

Evaluates the physical distance from the given rack to all reachable input nodes across the storage aisles and resolves the optimal one for routing efficiency. Unlike getInputNodes(), which resolves nodes per crane, this method resolves the nearest node from an arbitrary rack location.

Parameters:
rack - the index of the rack
Returns:
the closest available input node, or null if no reachable input node exists
See Also:
getInputNodes()

getNearestOutputNode

public PointNode getNearestOutputNode(int rack)
Finds and returns the nearest available output PointNode relative to the specified rack identifier.

Evaluates the physical distance from the given rack to all reachable output nodes across the storage aisles and resolves the optimal one for routing efficiency. Unlike getOutputNodes(), which resolves nodes per crane, this method resolves the nearest node from an arbitrary rack location.

Parameters:
rack - the index of the rack
Returns:
the closest available output node, or null if no reachable output node exists
See Also:
getOutputNodes()

getNearestInputConveyor

public ConveyorPath getNearestInputConveyor(StorageCell cell)
Finds and returns the nearest available input ConveyorPath relative to the specified storage cell.

Evaluates the physical distance from the given cell to all reachable input conveyors across the storage aisles and resolves the optimal one for routing efficiency. The returned ConveyorPath itself acts as the input station for the stacker crane. Unlike getInputConveyors(), which resolves paths per crane, this method resolves the nearest station from an arbitrary storage location.

Parameters:
cell - the reference storage cell
Returns:
the closest available input conveyor, or null if no reachable input conveyor exists
See Also:
getInputConveyors()

getNearestOutputConveyor

public ConveyorPath getNearestOutputConveyor(StorageCell cell)
Finds and returns the nearest available output ConveyorPath relative to the specified storage cell.

Evaluates the physical distance from the given cell to all reachable output conveyors across the storage aisles and resolves the optimal one for routing efficiency. The returned ConveyorPath itself acts as the output station for the stacker crane. Unlike getOutputConveyors(), which resolves paths per crane, this method resolves the nearest station from an arbitrary storage location.

Parameters:
cell - the reference storage cell
Returns:
the closest available output conveyor, or null if no reachable output conveyor exists
See Also:
getOutputConveyors()

getNearestInputConveyor

public ConveyorPath getNearestInputConveyor(int rack)
Finds and returns the nearest available input ConveyorPath relative to the specified rack identifier.

Evaluates the physical distance from the given rack to all reachable input conveyors across the storage aisles and resolves the optimal one for routing efficiency. The returned ConveyorPath itself acts as the input station for the stacker crane. Unlike getInputConveyors(), which resolves paths per crane, this method resolves the nearest station from an arbitrary rack location.

Parameters:
rack - the index of the reference rack
Returns:
the closest available input conveyor, or null if no reachable input conveyor exists
See Also:
getInputConveyors()

getNearestOutputConveyor

public ConveyorPath getNearestOutputConveyor(int rack)
Finds and returns the nearest available output ConveyorPath relative to the specified rack identifier.

Evaluates the physical distance from the given rack to all reachable output conveyors across the storage aisles and resolves the optimal one for routing efficiency. The returned ConveyorPath itself acts as the output station for the stacker crane. Unlike getOutputConveyors(), which resolves paths per crane, this method resolves the nearest station from an arbitrary rack location.

Parameters:
rack - the index of the reference rack
Returns:
the closest available output conveyor, or null if no reachable output conveyor exists
See Also:
getOutputConveyors()

setRetrievalSystem

@AnyLogicInternalLibraryAPI
public void setRetrievalSystem(StorageRetrievalSystem retrievalSystem)

getStackerCranes

public List<StackerCrane<?>> getStackerCranes()
Returns a list of all stacker cranes used by the storage.
Returns:
a list of all stacker cranes used by the storage.

getStackerCrane

public StackerCrane<?> getStackerCrane(int index)
Returns stacker crane by index if stacker crane exists. Otherwise, throws error.
Parameters:
index - - index of stacker crane in stacker crane system used by the storage
Returns:
stacker crane by index if stacker crane exists. Otherwise, throws error.