- Field Summary
- Constructor Summary
- Method Summary
- Methods inherited from class com.anylogic.engine.markup.AbstractLevelMarkup
- Methods inherited from class com.anylogic.engine.markup.MarkupShape
- Methods inherited from class com.anylogic.engine.markup.AbstractMarkup
- Methods inherited from class java.lang.Object
- Methods inherited from interface com.anylogic.engine.markup.AbstractPositionalMarkup
- Methods inherited from interface com.anylogic.engine.markup.AggregatableAnimationElement
- Methods inherited from interface com.anylogic.engine.markup.RackUnitAggregator
- Methods inherited from interface com.anylogic.engine.presentation.SVGElement
- Methods inherited from interface com.anylogic.engine.presentation.UsdElement
- Constructor Details
- Method Details
- createAislesGeometry
- setStorageSystem
- getStorageSystem
- isObstacle
- setObstacle
- isSimplifiedAgentAnimation
- setSimplifiedAgentAnimation
- getShelvesColor
- getFrameColor
- setShelvesColor
- setFrameColor
- getLibraryDescriptor
- getAccessibleAgents
- isUnitAccessibleFromLeftAdd
- isUnitAccessibleFromRightAdd
- isUnitAccessibleFromLeftRemove
- isUnitAccessibleFromRightRemove
- getNumberOfRacks
- setNumberOfRacks
- setPlaceSingleRacksAtSides
- setPlaceOddSingleRack
- getPlaceSingleRacksAtSides
- getPlaceOddSingleRack
- getX
- setX
- getY
- setY
- getZ
- setZ
- getNumberOfBays
- setNumberOfBays
- getNumberOfCellsPerSlot
- setNumberOfCellsPerSlot
- getSlotDepth
- getRackDepth
- setRackDepth
- getNumberOfShelves
- setNumberOfShelves
- isSpecifiedInslotSpeed
- setSpecifiedInslotSpeed
- isRestrictedAisleAccess
- setRestrictedAisleAccess
- getAisleCapacityRestriction
- setAisleCapacityRestriction
- getInslotSpeed
- setInslotSpeed
- getCellHeight
- getShelfHeight
- setShelfHeight
- getAisleWidth
- getAisleWidth
- setAisleWidth
- getCellDepth
- getCellDepth
- getUnitLength
- getUnitLength
- getUnitHeight
- getCellCenter
- getAccessZone
- getAccessZone
- setAccessZone
- getLeftPassage
- getLeftPassage
- getRightPassage
- getRightPassage
- getCellWidth
- getCellWidth
- setCellWidth
- unitHasAvailableCells
- getRotation
- setRotation
- getShelvesTiltAngle
- setShelvesTiltAngle
- isLoadingDirectionReversed
- setReverseLoadingDirection
- getRackType
- setRackType
- getRackPlacement
- setRackPlacement
- contains
- getBoundingRectangle
- getCorners
- getNumberOfAisles
- getFullWidth
- getFullWidth
- getWidth
- getWidth
- getFullHeight
- getFullHeight
- capacity
- nStored
- nRetrieved
- utilization
- resetStats
- setReservation
- setReservation
- setReservation
- cancelReservation
- retrieve
- retrieve
- retrieve
- retrieve
- deactivateCells
- deactivateCells
- deactivateCells
- nReservedCells
- hasSpace
- hasSpace
- reservedCells
- reservedCells
- getPositionInAisle
- getPositionInAisle
- getPositionInAisle
- getPositionInAisle
- store
- store
- store
- store
- store
- getAgentInCell
- getAgents
- getCell
- getCell
- getSlot
- getCells
- getRandomAgent
- getRandomAccessibleAgent
- contains
- size
- getRandomAvailableSlot
- getRandomFreeCell
- freeCells
- freeCells
- freeCells
- isFree
- nFreeCells
- nFreeCells
- nFreeCells
- nFreeCells
- enableDebugAnimator
- enableGeometryAnimator
- setIgnoreCellAccessibility
- isIgnoreCellAccessibility
- isSingleUnitFirst
- onAgentStorage
- onAgentRetrieval
- muteCallbacks
- updateSVGProperties
- resetSVGState
- findSVGElement
- isInvertedRack
- updateColorMap
- updateDynamicProperties
- getServiceType
- getRetrievalSystem
- getStackerCraneSystem
- getInputNodes
- getOutputNodes
- getInputConveyors
- getOutputConveyors
- getNearestInputNode
- getNearestOutputNode
- getNearestInputNode
- getNearestOutputNode
- getNearestInputConveyor
- getNearestOutputConveyor
- getNearestInputConveyor
- getNearestOutputConveyor
- setRetrievalSystem
- getStackerCranes
- getStackerCrane
- java.lang.Object
- com.anylogic.engine.markup.AbstractMarkup
- com.anylogic.engine.markup.MarkupShape
- com.anylogic.engine.markup.AbstractLevelMarkup
- com.anylogic.engine.markup.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
| Constructor | Description |
|---|---|
Storage() |
Creates a new Storage with default parameters.
|
Storage |
| Modifier and Type | Method | Description |
|---|---|---|
void | cancelReservation |
Discards any reservations made for the specified agent.
|
int | capacity() |
Returns the maximum possible number of agents that can be stored in the storage.
|
boolean | contains |
Test if the shape contains the point with the given coordinates (relative
to this shape's container, i.e.
|
boolean | contains |
Returns
true if the specified agent is stored in the storage and false otherwise. |
List<RectangularNode<Agent>> | createAislesGeometry() | |
void | deactivateCells | |
void | deactivateCells | |
void | deactivateCells | |
void | enableDebugAnimator | |
void | enableGeometryAnimator() | |
SVGElement | findSVGElement |
This method is internal and shouldn't be called by user.
it may be removed/renamed in future. |
List<StorageCell> | freeCells |
Returns a list of all free cells in the specified rack.
|
List<StorageCell> | freeCells |
Returns a list of all free cells in the specified bay.
|
List<StorageCell> | freeCells |
Returns a list of all free cells in the specified slot
Can be called only after markup initialization.
|
List<Agent> | getAccessibleAgents() | |
double | getAccessZone() | |
double | getAccessZone |
Returns the width of access zone in specified length units.
|
Agent | getAgentInCell |
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.
|
int | getAisleCapacityRestriction() |
Returns maximum number of allowed transporters is the storage aisles.
|
double | getAisleWidth() | |
double | getAisleWidth |
Returns the aisle width in specified length units.
|
BoundingRectangle | getBoundingRectangle() | |
StorageCell | getCell |
Returns the specified cell.
|
StorageCell | getCell |
Returns the cell that contains the specified agent.
|
Position | getCellCenter | |
double | getCellDepth() | |
double | getCellDepth | |
double | getCellHeight() | |
List<StorageCell> | getCells() |
Returns a list of cells ordered according to rack type.
|
double | getCellWidth() | |
double | getCellWidth |
Returns the cell width in specified length units.
|
Point[] | getCorners() | |
Color | getFrameColor() |
Returns the color of rack frame.
|
double | getFullHeight() | |
double | getFullHeight | |
double | getFullWidth() | |
double | getFullWidth | |
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() | |
double | getInslotSpeed |
Returns in-slot speed in specified speed units.
|
double | getLeftPassage() | |
double | getLeftPassage | |
IStorageDescriptor | getLibraryDescriptor() | |
ConveyorPath | getNearestInputConveyor |
Finds and returns the nearest available input
ConveyorPath relative to the
specified rack identifier. |
ConveyorPath | getNearestInputConveyor |
Finds and returns the nearest available input
ConveyorPath relative to the
specified storage cell. |
PointNode | getNearestInputNode |
Finds and returns the nearest available input
PointNode relative to the
specified rack identifier. |
PointNode | getNearestInputNode | |
ConveyorPath | getNearestOutputConveyor |
Finds and returns the nearest available output
ConveyorPath relative to the
specified rack identifier. |
ConveyorPath | getNearestOutputConveyor |
Finds and returns the nearest available output
ConveyorPath relative to the
specified storage cell. |
PointNode | getNearestOutputNode |
Finds and returns the nearest available output
PointNode relative to the
specified rack identifier. |
PointNode | getNearestOutputNode | |
int | getNumberOfAisles() | |
int | getNumberOfBays() |
Returns the number of bays per rack.
|
int | getNumberOfCellsPerSlot() |
Returns the number of cells per slot.
|
int | getNumberOfRacks() |
Returns the number of racks.
|
int | getNumberOfShelves() |
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() | |
RackOddSingleRackSide | getPlaceOddSingleRack() |
Returns the side of the stand alone rack in case of an odd number of racks.
|
boolean | getPlaceSingleRacksAtSides() |
Returns true if stand-alone racks are placed at the sides of the storage.
|
Position | getPositionInAisle |
Returns the position in front of the specified bay (on the side used for storage).
|
Position | getPositionInAisle |
Returns the position in front of the specified bay (on the specified side).
|
Position | getPositionInAisle |
Returns the position in front of the bay where the specified agent is stored (on the side used for storage).
|
Position | getPositionInAisle |
Returns the position in front of the bay where the specified agent is stored (on the specified side).
|
double | getRackDepth |
Returns the rack depth in specified length units.
|
RackPlacement | getRackPlacement() |
Returns rack placement type.
|
RackType | getRackType() |
Returns the rack type.
|
Agent | getRandomAccessibleAgent() |
Returns a random accessible agent stored in the storage.
|
Agent | getRandomAgent() |
Returns a random agent stored in the storage.
|
StorageSlot | getRandomAvailableSlot() | |
StorageCell | getRandomFreeCell() |
Returns the next cell available for reservation in a random slot from the storage.
|
StorageRetrievalSystem | getRetrievalSystem() | |
double | getRightPassage() | |
double | getRightPassage | |
double | getRotation() |
Returns the rotation of the storage in radians.
|
StorageServiceType | getServiceType() |
Returns the type of equipment used by the ASRS system.
|
double | getShelfHeight |
Returns the z-height of a shelf in specified length units.
|
Color | getShelvesColor() |
Returns the color of rack shelves.
|
double | getShelvesTiltAngle() |
Returns shelves tilt angle in radians.
|
StorageSlot | getSlot |
Returns slot address.
|
double | getSlotDepth() | |
StackerCrane<?> | getStackerCrane |
Returns
stacker crane by index if stacker crane exists. |
List<StackerCrane<?>> | getStackerCranes() |
Returns a list of all stacker cranes used by the storage.
|
StackerCraneSystem | getStackerCraneSystem() | |
RackUnitAggregator | getStorageSystem() |
Returns the storage system this element belongs to.
|
double | getUnitHeight() | |
double | getUnitLength() | |
double | getUnitLength | |
double | getWidth() | |
double | getWidth | |
double | getX() |
Returns the X coordinate of this storage.
|
double | getY() |
Returns the Y coordinate of this storage.
|
double | getZ() |
Returns the Z coordinate of this storage.
|
boolean | hasSpace() |
Returns
true if the storage has cells available for reservation and false otherwise. |
boolean | hasSpace |
Returns
true if the specified slot has cells available for reservation and false otherwise. |
boolean | isFree | |
boolean | isIgnoreCellAccessibility() | |
boolean | isInvertedRack | |
boolean | isLoadingDirectionReversed() |
Returns value of parameter 'Reverse loading direction'
|
boolean | isObstacle() |
Returns
true if racks of this storage are considered obstacles by transporters moving in free space mode. |
boolean | isRestrictedAisleAccess() |
If enabled, you can specify maximum number of allowed transporters in each aisle of the storage.
|
boolean | isSimplifiedAgentAnimation() |
Returns
true if stored agent animation is replaced with cell color indication, otherwise returns false. |
boolean | isSingleUnitFirst() | |
boolean | isSpecifiedInslotSpeed() |
Returns
true if specific in-slot speed was enabled and false otherwise. |
boolean | isUnitAccessibleFromLeftAdd | |
boolean | isUnitAccessibleFromLeftRemove | |
boolean | isUnitAccessibleFromRightAdd | |
boolean | isUnitAccessibleFromRightRemove | |
void | muteCallbacks | |
int | nFreeCells() |
Returns the number of free cells.
|
int | nFreeCells |
Returns the number of free cells in the specified rack.
|
int | nFreeCells |
Returns the number of free cells in the specified bay.
|
int | nFreeCells |
Returns the number of free cells in the specified slot
Can be called only after markup initialization.
|
int | nReservedCells() |
Returns the number of reserved (but not occupied) cells.
|
int | nRetrieved() |
Returns the total number of retrieved agents.
|
int | nStored() |
Returns the total number of stored agents.
|
void | onAgentRetrieval |
Calls the storage's
onAgentRetrieval callback code |
void | onAgentStorage |
Calls the storage's
onAgentStorage callback code |
List<StorageCell> | reservedCells |
Returns a list of reserved cells located in the specified bay.
|
List<StorageCell> | reservedCells |
Returns a list of reserved cells located in the specified slot.
|
void | resetStats() |
Resets statistics: the number of stored agents and the number of retrieved agents.
|
void | resetSVGState |
This method is internal and shouldn't be called by user.
it may be removed/renamed in future. |
Agent | retrieve |
Retrieves and returns the next agent from the specified rack.
|
Agent | retrieve |
Retrieves and returns the next agent from the specified bay.
|
Agent | retrieve |
Retrieves and returns the next agent from the specified slot.
|
Agent | retrieve |
Retrieves and returns the previously stored agent from the storage.
|
void | setAccessZone |
Sets the width of access zone in specified length units.
|
void | setAisleCapacityRestriction |
Sets maximum number of allowed transporters is the storage aisles.
|
void | setAisleWidth |
Sets the aisle width in specified length units.
|
void | setCellWidth |
Sets the cell width in specified length units.
|
void | setFrameColor |
Sets the color of rack frame.
|
void | setIgnoreCellAccessibility | |
void | setInslotSpeed |
Sets in-slot speed in specified speed units
|
void | setNumberOfBays |
Sets the number of bays per rack.
|
void | setNumberOfCellsPerSlot |
Sets number of cells per slot.
|
void | setNumberOfRacks |
Sets the number of racks.
|
void | setNumberOfShelves |
Sets number of shelves per rack.
|
void | setObstacle |
Sets the racks of this storage as obstacles for transporters moving in free space mode.
|
void | setPlaceOddSingleRack |
Sets the side of the stand alone rack in case of an odd number of racks.
|
void | setPlaceSingleRacksAtSides |
Places stand-alone racks at the sides of the storage.
|
void | setRackDepth |
Sets the rack depth in specified length units.
|
void | setRackPlacement |
Defines rack placement.
|
void | setRackType |
Sets the rack type.
|
void | setReservation |
Reserves a cell for the specified agent in the specified bay.
|
void | setReservation |
Reserves a cell for the specified agent in the specified slot.
|
void | setReservation |
Reserves a cell for the specified agent in the specified slot.
|
void | setRestrictedAisleAccess |
Enables possibility to specify maximum number of allowed transporters in each aisle of the storage.
|
void | setRetrievalSystem | |
void | setReverseLoadingDirection |
Sets value of parameter 'Reverse loading direction'.
|
void | setRotation |
Sets the rotation of the storage.
|
void | setShelfHeight |
Sets the z-height of a shelf in specified length units.
|
void | setShelvesColor |
Sets the color of rack shelves.
|
void | setShelvesTiltAngle |
Sets the tilt angle of shelves.
|
void | setSimplifiedAgentAnimation |
Controls the way the stored agents are drawn.
|
void | setSpecifiedInslotSpeed |
Enables specific in-slot speed if the argument is
true and disables if the argument is false. |
void | setStorageSystem | |
void | setX |
Sets the X coordinate of this storage.
|
void | setY |
Sets the Y coordinate of this storage.
|
void | setZ |
Sets the Z coordinate of this storage.
|
int | size() |
Returns the number of stored agents.
|
void | store |
Stores the given agent in the storage.
|
void | store |
Stores the agent in the specified rack.
|
void | store |
Stores the agent in the specified bay.
|
void | store |
Stores the agent in the specified slot.
|
void | store |
Stores the agent in the specified slot.
|
boolean | unitHasAvailableCells | |
void | updateColorMap |
This method is internal and shouldn't be called by
user.
it may be removed/renamed in future. |
void | updateDynamicProperties() |
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. |
SVGElement | updateSVGProperties |
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. |
double | utilization() |
Returns the storage's utilization.
|
error, getFullName, getOutsideLevelZ, getPresentable, getSpace, initialize, isClickHandled, isOnly3D, isPublic, onClick, remove, setDrawMode, setOwnerdiscardOwner, executeUserAction, getGroupOrOwner, getInspect, getInspectionWindowString, getName, getOrGenerateUSDId, getSVGComponent, getSVGId, initializeInternal, isVisible, onAggregatorInitialized, onAggregatorVisibilityChanged, removeSVGFromOwner, resetSVGComponent, setInspect, setVisible, updateDynamicPropertiesStructuralexecuteUserAction, getGroupOrOwner, getPresentable, getSVGComponent, getSVGId, isOnly3D, removeSVGFromOwner, resetSVGComponentpublic Storage()
Level.initialize()).
Any operations with cells must be done after markup initialization.@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)
@AnyLogicInternalAPI public List<RectangularNode<Agent>> createAislesGeometry()
@AnyLogicInternalLibraryAPI public void setStorageSystem(RackUnitAggregator rs)
public RackUnitAggregator getStorageSystem()
- Returns:
- StorageSystem this element belongs to
public boolean isObstacle()
true if racks of this storage are considered obstacles by transporters moving in free space mode. Otherwise, returns false.- Returns:
trueif racks of this storage are considered obstacles by transporters moving in free space mode. Otherwise, returnsfalse
public void setObstacle(boolean isObstacle)
- Parameters:
isObstacle- - iftrue, the racks are set as obstacles. Otherwise, not.
public boolean isSimplifiedAgentAnimation()
true if stored agent animation is replaced with cell color indication, otherwise returns false.- Returns:
trueif stored agent animation is replaced with cell color indication, otherwise returnsfalse
public void setSimplifiedAgentAnimation(boolean 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.
Cannot be called after markup initialization.- Parameters:
simplifiedAgentAnimation- -truevalue disables agent animation inside the storage and fills cells with agent color indicating occupancy (best animation performance).falsedraws agents inside the storage as is
public Color getShelvesColor()
- Returns:
- color of rack shelves
public Color getFrameColor()
- Returns:
- color of rack frame
public void setShelvesColor(Color shelvesColor)
- Parameters:
shelvesColor- color of rack shelves
public void setFrameColor(Color frameColor)
- Parameters:
frameColor- color of rack frame
@AnyLogicInternalAPI public IStorageDescriptor getLibraryDescriptor()
@AnyLogicInternalLibraryAPI public List<Agent> getAccessibleAgents()
@AnyLogicInternalLibraryAPI public boolean isUnitAccessibleFromLeftAdd(int unit)
@AnyLogicInternalLibraryAPI public boolean isUnitAccessibleFromRightAdd(int unit)
@AnyLogicInternalLibraryAPI public boolean isUnitAccessibleFromLeftRemove(int unit)
@AnyLogicInternalLibraryAPI public boolean isUnitAccessibleFromRightRemove(int unit)
public int getNumberOfRacks()
- Returns:
- number of racks
public void setNumberOfRacks(int numberOfRacks)
- Parameters:
numberOfRacks- positive integer value
public void setPlaceSingleRacksAtSides(boolean placeSingleRacksAtSides)
- 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.
public void setPlaceOddSingleRack(RackOddSingleRackSide side)
- Parameters:
side- storage side of the stand alone rack
public boolean getPlaceSingleRacksAtSides()
- Returns:
- true if stand-alone racks are placed at the sides of the storage.
public RackOddSingleRackSide getPlaceOddSingleRack()
- Returns:
- the X coordinate of this storage
public double getX()
- Specified by:
getXin interfaceAbstractPositionalMarkup- Returns:
- the X coordinate of this storage
public void setX(double x)
- Parameters:
x- the X coordinate of this storage
public double getY()
- Specified by:
getYin interfaceAbstractPositionalMarkup- Returns:
- the Y coordinate of this storage
public void setY(double y)
- Parameters:
y- the Y coordinate of this storage
public double getZ()
- Specified by:
getZin interfaceAbstractPositionalMarkup- Returns:
- the Z coordinate of this storage
public void setZ(double z)
- Parameters:
z- the Z coordinate of this storage
public int getNumberOfBays()
- Returns:
- number of bays per rack
public void setNumberOfBays(int numberOfBays)
- Parameters:
numberOfBays- positive integer value
public int getNumberOfCellsPerSlot()
- Returns:
- number of cells per slot
public void setNumberOfCellsPerSlot(int numberOfCells)
- Parameters:
numberOfCells- positive integer value
@AnyLogicInternalLibraryAPI public double getSlotDepth()
public double getRackDepth(LengthUnits units)
- Parameters:
units- - length units- Returns:
- rack depth in specified length units
public void setRackDepth(double rackDepth, LengthUnits units)
- Parameters:
rackDepth- - finite positive value in specified length unitsunits- - length units
public int getNumberOfShelves()
- Returns:
- number of shelves per rack
public void setNumberOfShelves(int numberOfShelves)
- Parameters:
numberOfShelves- positive integer value
public boolean isSpecifiedInslotSpeed()
true if specific in-slot speed was enabled and false otherwise.- Returns:
trueif specific in-slot speed was enabled andfalseotherwise
public void setSpecifiedInslotSpeed(boolean enabled)
true and disables if the argument is false.
Use setInslotSpeed(double, SpeedUnits) method to set the speed value afterwards.- Parameters:
enabled- argument flag
public boolean isRestrictedAisleAccess()
- Returns:
trueif you can specify maximum number of allowed transporters is the storage aisles.
public void setRestrictedAisleAccess(boolean restricted)
- Parameters:
restriction- enabled argument flag
public int getAisleCapacityRestriction()
- Returns:
- maximum number of allowed transporters is the storage aisles.
public void setAisleCapacityRestriction(int maxNumber)
public double getInslotSpeed(SpeedUnits units)
- Parameters:
units- - speed units- Returns:
- inslot speed in specified speed units
public void setInslotSpeed(double speed, SpeedUnits units)
- Parameters:
speed- - speed valueunits- - speed units
@AnyLogicInternalLibraryAPI public double getCellHeight()
public double getShelfHeight(LengthUnits units)
- Parameters:
units- - length units- Returns:
- z-height of shelf in specified length units
public void setShelfHeight(double shelfHeight, LengthUnits units)
- Parameters:
shelfHeight- - finite positive value in specified length unitsunits- - length units
@AnyLogicInternalLibraryAPI public double getAisleWidth()
public double getAisleWidth(LengthUnits units)
- Parameters:
units- - length units- Returns:
- aisle width in specified length units
public void setAisleWidth(double aisleWidth, LengthUnits units)
- Parameters:
aisleWidth- finite positive value in specified length unitsunits- length units
@AnyLogicInternalLibraryAPI public double getCellDepth()
@AnyLogicInternalAPI public double getCellDepth(LengthUnits units)
@AnyLogicInternalAPI public double getUnitLength()
@AnyLogicInternalAPI public double getUnitLength(LengthUnits units)
@AnyLogicInternalAPI public double getUnitHeight()
@AnyLogicInternalAPI public Position getCellCenter(int rack, int bay, int shelf, int depth)
public double getAccessZone(LengthUnits units)
- Parameters:
units- - length units- Returns:
- width of access zone in specified length units
@AnyLogicInternalAPI public double getAccessZone()
public void setAccessZone(double zoneWidth, LengthUnits units)
- Parameters:
zoneWidth- - finite positive value in specified length unitsunits- - length units
@AnyLogicInternalLibraryAPI public double getLeftPassage()
@AnyLogicInternalLibraryAPI public double getLeftPassage(LengthUnits units)
@AnyLogicInternalLibraryAPI public double getRightPassage(LengthUnits units)
@AnyLogicInternalLibraryAPI public double getRightPassage()
@AnyLogicInternalLibraryAPI public double getCellWidth()
public double getCellWidth(LengthUnits units)
- Parameters:
units- - length units- Returns:
- cell width in specified length units
public void setCellWidth(double cellWidth, LengthUnits units)
- Parameters:
cellWidth- - finite positive value in specified length unitsunits- - length units
@AnyLogicInternalLibraryAPI public boolean unitHasAvailableCells(int unit, Agent agent)
public double getRotation()
- Specified by:
getRotationin interfaceAbstractPositionalMarkup- Returns:
- rotation of the storage in radians
public void setRotation(double rotation)
- Parameters:
rotation- finite value in radians
public double getShelvesTiltAngle()
- Returns:
- shelves tilt angle in radians
public void setShelvesTiltAngle(double tiltAngle)
- Parameters:
tiltAngle- finite value in radians inside range [0, PI/2)
public boolean isLoadingDirectionReversed()
- Returns:
- value of parameter 'Reverse loading direction'
public void setReverseLoadingDirection(boolean reversed)
true only for storage with stand-alone rack placement.public RackType getRackType()
- Returns:
- rack type
public void setRackType(RackType type)
- Parameters:
type- type of the storage. Cannot be null.
public RackPlacement getRackPlacement()
- Returns:
- rack placement type
public void setRackPlacement(RackPlacement rackPlacement)
- Parameters:
rackPlacement- rack placement type. Cannot be null.
public boolean contains(double px, double py)
MarkupShape- Specified by:
containsin classMarkupShape- Parameters:
px- the x coordinate relative to this shape's containerpy- the y coordinate relative to this shape's container- Returns:
trueif the shape contains the point with the given coordinates
public BoundingRectangle getBoundingRectangle()
- Specified by:
getBoundingRectanglein interfaceHasBoundingRectangle
@AnyLogicInternalAPI public Point[] getCorners()
@AnyLogicInternalAPI public int getNumberOfAisles()
@AnyLogicInternalAPI public double getFullWidth()
@AnyLogicInternalAPI public double getFullWidth(LengthUnits units)
@AnyLogicInternalAPI public double getWidth()
@AnyLogicInternalAPI public double getWidth(LengthUnits units)
@AnyLogicInternalAPI public double getFullHeight()
@AnyLogicInternalAPI public double getFullHeight(LengthUnits units)
public int capacity()
- Returns:
- capacity of the storage
public int nStored()
resetStats().- Returns:
- total number of stored agents.
public int nRetrieved()
resetStats().- Returns:
- total number of retrieved agents.
public double utilization()
- Returns:
- storage's utilization
public void resetStats()
public void setReservation(Agent agent, int rack, int bay, int shelf)
- Parameters:
agent- - the agent that reserves the cellrack- - index of rackbay- - index of bayshelf- - index of shelf
public void setReservation(Agent agent, StorageSlot slot)
- Parameters:
agent- - the agent that reserves a cellslot- - address of the slot
public void setReservation(Agent agent, int rack, int bay)
- Parameters:
agent- - the agent that reserves the cellrack- - index of rackbay- - index of bay
public void cancelReservation(Agent agent)
- Parameters:
agent- - agent for whom the reservation should be canceled
public Agent retrieve(Agent agent)
- Parameters:
agent- - the agent that should be retrieved from storage.- Returns:
- retrieved agent.
public Agent retrieve(int rack, int bay, int shelf)
- Parameters:
rack- - index of rackbay- - index of bayshelf- - index of shelf- Returns:
- retrieved agent
public Agent retrieve(int rack, int bay)
- Parameters:
rack- - index of rackbay- - index of bay- Returns:
- retrieved agent
public Agent retrieve(int rack)
- Parameters:
rack- - index of rack- Returns:
- retrieved agent
public void deactivateCells(int rack)
public void deactivateCells(int rack, int bay)
public void deactivateCells(int rack, int bay, int shelf)
public int nReservedCells()
- Returns:
- number of reserved (but not occupied) cells
public boolean hasSpace(int rack, int bay, int shelf)
true if the specified slot has cells available for reservation and false otherwise.
Can be called only after markup initialization.- Parameters:
rack- - index of rackbay- - index of bayshelf- - index of shelf- Returns:
trueif the specified slot has cells available for reservation andfalseotherwise
public boolean hasSpace()
true if the storage has cells available for reservation and false otherwise.
Can be called only after markup initialization.- Returns:
trueif the storage has cells available for reservation andfalseotherwise
public List<StorageCell> reservedCells(int rack, int bay, int shelf)
- Parameters:
rack- - index of rackbay- - index of bayshelf- - index of shelf- Returns:
- list of reserved cells located in the specified slot.
public List<StorageCell> reservedCells(int rack, int bay)
- Parameters:
rack- - index of rackbay- - index of bay- Returns:
- list of reserved cells located in the specified bay.
public Position getPositionInAisle(Agent agent)
public Position getPositionInAisle(Agent agent, boolean loadingSide)
- Parameters:
loadingSide-truemeans loading side,falsemeans retrieval side.
public Position getPositionInAisle(int rack, int bay)
public Position getPositionInAisle(int rack, int bay, boolean loadingSide)
- Parameters:
rack-bay-loadingSide-- Returns:
public void store(Agent agent)
- Parameters:
agent- - agent to be stored in the storage, cannot be null
public void store(Agent agent, int rack)
- Parameters:
agent- - agent to be stored in the rack, cannot be nullrack- - index of rack
public void store(Agent agent, int rack, int bay)
- Parameters:
agent- - agent to be stored in the bay, cannot be nullrack- - index of rackbay- - index of bay
public void store(Agent agent, int rack, int bay, int shelf)
- Parameters:
agent- - agent to be stored in the slot, cannot be nullrack- - index of rackbay- - index of bayshelf- - index of shelf
public void store(Agent agent, StorageSlot slot)
- Parameters:
agent- - agent to be stored in the slot, cannot be nullslot- - address of the slot
public Agent getAgentInCell(int rack, int bay, int shelf, int deepPosition)
- Parameters:
rack- - index of rackbay- - index of bayshelf- - index of shelfdeepPosition- - index of cell- Returns:
- agent stored in the specified cell.
public List<Agent> getAgents()
- Returns:
- ordered list of agents stored in the storage.
public StorageCell getCell(Agent agent)
- Parameters:
agent- - an agent that is stored in the storage. Cannot be null.- Returns:
- cell that contains the specified agent
public StorageCell getCell(int rack, int bay, int shelf, int deepPosition)
- Parameters:
rack- - index of rackbay- - index of bayshelf- - index of shelfdeepPosition- - index of cell- Returns:
- the specified cell
public StorageSlot getSlot(int rack, int bay, int shelf)
- Parameters:
rack- index of rackbay- index of bayshelf- index of shelf- Returns:
- slot address
public List<StorageCell> getCells()
- Returns:
- ordered list of cells
public Agent getRandomAgent()
- Returns:
- random agent stored in the storage
public Agent getRandomAccessibleAgent()
- Returns:
- random accessible agent stored in the storage
public boolean contains(Agent agent)
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:
trueif the specified agent is stored in the storage andfalseotherwise
public int size()
- Returns:
- number of stored agents
public StorageSlot getRandomAvailableSlot()
public StorageCell getRandomFreeCell()
- Returns:
- next cell available for reservation in a random slot from the storage
public List<StorageCell> freeCells(int rack)
- Parameters:
rack- - index of rack- Returns:
- list of all free cells in the specified rack
public List<StorageCell> freeCells(int rack, int bay)
- Parameters:
rack- - index of rackbay- - index of bay- Returns:
- list of all free cells in the specified bay
public List<StorageCell> freeCells(int rack, int bay, int shelf)
- Parameters:
rack- - index of rackbay- - index of bayshelf- - index of shelf- Returns:
- list of all free cells in the specified slot
@AnyLogicInternalAPI public boolean isFree(int rack, int bay, int shelf, int depth)
public int nFreeCells()
- Returns:
- number of free cells
public int nFreeCells(int rack)
- Parameters:
rack- - index of rack- Returns:
- number of free cells in the specified rack
public int nFreeCells(int rack, int bay)
- Parameters:
rack- - index of rackbay- - index of bay- Returns:
- number of free cells in the specified bay
public int nFreeCells(int rack, int bay, int shelf)
- Parameters:
rack- - index of rackbay- - index of bayshelf- - index of shelf- Returns:
- number of free cells in the specified slot
@AnyLogicInternalAPI public void enableDebugAnimator(ShapeDrawMode mode)
@AnyLogicInternalAPI public void enableGeometryAnimator()
@AnyLogicInternalAPI public void setIgnoreCellAccessibility(boolean ignore)
@AnyLogicInternalAPI public boolean isIgnoreCellAccessibility()
@AnyLogicInternalAPI public boolean isSingleUnitFirst()
public void onAgentStorage(Agent agent, StorageCell cell)
onAgentStorage callback code- Parameters:
agent- - the agent that has been stored in storagecell- - the cell that was occupied by agent
public void onAgentRetrieval(Agent agent, StorageCell cell)
onAgentRetrieval callback code- Parameters:
agent- - the agent that has been retrieved from storagecell- - the cell that was released by agent
@AnyLogicInternalAPI public void muteCallbacks(boolean areCallbacksMuted)
@AnyLogicInternalAPI public SVGElement updateSVGProperties(List<SVGCommand> output, ShapeDrawMode drawMode, boolean publicOnly, SVGElement owner, SVGElement elbehind, boolean isInReplicatedShape)
SVGElementit 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:
updateSVGPropertiesin interfaceSVGElement- Overrides:
updateSVGPropertiesin classAbstractMarkup- Parameters:
output- the list of commands to add todrawMode- TODOpublicOnly- drawing context: if true, only shapes that are marked as public only are updatedowner- the SVG element that serves as a container for this elementelbehind- 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
nullif 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 givenownerwhen the svg element is added to a different place (e.g. GIS map).
@AnyLogicInternalAPI public void resetSVGState(SVGElement elementBeingDeleted, boolean delete, Consumer<SVGCommand> commandOutput)
SVGElementit may be removed/renamed in future.
- Specified by:
resetSVGStatein interfaceSVGElement- Overrides:
resetSVGStatein classAbstractMarkup
@AnyLogicInternalAPI public SVGElement findSVGElement(long svgId)
SVGElementit may be removed/renamed in future.
- Specified by:
findSVGElementin interfaceSVGElement- Overrides:
findSVGElementin classAbstractMarkup
@AnyLogicInternalAPI public boolean isInvertedRack(int rack)
@AnyLogicInternalAPI public void updateColorMap(int unit, int bay, int level, int deepPosition, Color color)
it may be removed/renamed in future.
public void updateDynamicProperties()
AbstractMarkupMethod should be overridden for shapes with dynamic properties. Note that you should call super.updateDynamicProperties() at the end of overridden method
- Overrides:
updateDynamicPropertiesin classAbstractMarkup
public StorageServiceType getServiceType()
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.
@AnyLogicInternalLibraryAPI public StorageRetrievalSystem getRetrievalSystem()
@AnyLogicInternalAPI public StackerCraneSystem getStackerCraneSystem()
public List<PointNode> getInputNodes()
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:
public List<PointNode> getOutputNodes()
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:
public List<ConveyorPath> getInputConveyors()
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:
public List<ConveyorPath> getOutputConveyors()
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:
public PointNode getNearestInputNode(StorageCell cell)
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
nullif no reachable input node exists - See Also:
-
getInputNodes()
public PointNode getNearestOutputNode(StorageCell cell)
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
nullif no reachable output node exists - See Also:
-
getOutputNodes()
public PointNode getNearestInputNode(int rack)
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
nullif no reachable input node exists - See Also:
-
getInputNodes()
public PointNode getNearestOutputNode(int rack)
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
nullif no reachable output node exists - See Also:
-
getOutputNodes()
public ConveyorPath getNearestInputConveyor(StorageCell cell)
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
nullif no reachable input conveyor exists - See Also:
-
getInputConveyors()
public ConveyorPath getNearestOutputConveyor(StorageCell cell)
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
nullif no reachable output conveyor exists - See Also:
-
getOutputConveyors()
public ConveyorPath getNearestInputConveyor(int rack)
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
nullif no reachable input conveyor exists - See Also:
-
getInputConveyors()
public ConveyorPath getNearestOutputConveyor(int rack)
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
nullif no reachable output conveyor exists - See Also:
-
getOutputConveyors()
@AnyLogicInternalLibraryAPI public void setRetrievalSystem(StorageRetrievalSystem retrievalSystem)
public List<StackerCrane<?>> getStackerCranes()
- Returns:
- a list of all stacker cranes used by the storage.
public StackerCrane<?> getStackerCrane(int index)
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 cranebyindexif stacker crane exists. Otherwise, throws error.