Lift


Lift is a space markup shape that graphically defines a vertical reciprocating conveyor. Only two types of networks support this element: standard Process Modeling Library networks (for path-guided transporters) and Material Handling Library conveyor networks (for material items). Unlike the network port, one Lift element can be used to connect both network paths and conveyors at the same time. However, the agents in these networks can move only via compatible types of network elements, i.e. the material items cannot move along network paths and path-guided transporters cannot be moved by conveyors.

The lift cannot be used by pedestrians in AnyLogic pedestrian simulation models.

Lift can serve as an obstacle on the way of transporters moving in free space navigation mode.

To simulate a lift you have to place several lift elements, one per level. The levels can belong to the same network or to different networks. If the levels are designed as separate networks, for effective 2D animation we recommend to model these networks in the graphical diagram of a single agent. For better 3D animation with properly stacked levels you can create each level in the graphical diagram of a separate agent and then assemble their presentations in the graphical diagram of a single agent and distinguish them vertically by assigning different Z-height values.

One of the lift elements is used as the main landing. All parameters (e.g. lifting speed, picking up time, etc.) are specified for this element only. The rest of the lift elements are used to define the lift's location on other levels and derive their settings from the main landing.

Every element of the lift system must have the floor elevation specified for it: it will be used to calculate and model the time it takes the lift to arrive to the target level from its current position. Floor elevation is the distance from the level where this lift element is located to the ground level - a horizontal plane in your modeling environment you choose to serve as the reference point. For example, it could be the ground floor of your factory.

Demo model: Three Level Facility with Lift

Properties

General

Name - The name of the lift. The name is used to identify and access the lift from code.

Ignore - If selected, the lift is excluded from the model.

Visible on upper level - If selected, the lift is visible on the upper level where this agent lives.

Lock - If selected, the lift's shape is locked. Locked shapes do not react to mouse clicks - it is impossible to select them in the graphical editor until you unlock them. It is frequently needed when you want to prevent editing this shape while drawing other shapes over it.

Visible - Here you specify whether the shape is visible on animation at model runtime, or not. Using the control, choose yes or no.

Agent type - The type of the agent that is transported by this lift.

Is obstacle - If selected, this lift will be considered an obstacle for transporters moving in free space mode.

Floor elevation - Here you specify the distance between the level where this lift element is located and the ground level - a horizontal surface in your modeled environment you choose to serve as the reference point.

Main landing (defines lift properties) - Select this option to use this lift element as the main landing.

Refers to lift - [Visible if Main landing (defines lift properties) option is not selected] Here you select the lift element (main landing) this landing is related to.

Lifting speed - [Visible if Main landing (defines lift properties) option is selected] Here you specify the speed of the lift movement.

Picking up time - [Visible if Main landing (defines lift properties) option is selected] Here you specify the time it takes for an agent to move from the ending point of the network path/conveyor to the center of the lift.

Dropping off time - [Visible if Main landing (defines lift properties) option is selected] Here you specify the time it takes for an agent to move from the center of the lift to the starting point of the network path/conveyor.

Agent selection pattern - [Visible if Main landing (defines lift properties) option is selected] Defines how the lift selects agents from different levels for transportation. May be FIFO (default), Priority-based or Agent comparison.

Priority - [Visible if Agent selection pattern is Priority-based] The priority of the incoming agent (the larger the higher).

"agent1 is preferred to agent2" - [Visible if Agent selection pattern is Agent comparison] Here you specify the boolean expression that is evaluated for every agent "requesting" a lift. The expression compares the new agent to agents that have already made a request and makes a decision depending on the results. If the expression returns true, the new agent is put closer to the head of waiting for the lift queue than the agent from the queue being compared with it.

Actions
On pickup started - Here you can type Java code that will be executed when the agent leaves the ending point of the network path/conveyor connected to the lift.

On dropoff finished - Here you can type Java code that will be executed when the agent enters the starting point of the network path/conveyor connected to the lift.

On failed - Here you can type Java code that will be executed in case of lift failure.

On repaired - Here you can type Java code that will be executed when the lift is repaired.

Appearance

Platform type - Here you can choose how the floor of the lift is designed: either Flat (the surface of the platform is flat) or Roller (the surface of the platform is comprised of rollers).

Fill color - Shape's fill color. Choose No color, if you do not want the area to be filled.

Line color - Outline color. Choose No color, if you do not want outline to be drawn.

Position and size

X - X-coordinate of the point where the lift is located.

Y - Y-coordinate of the point where the lift is located.

Z - Z-coordinate of the point where the lift is located.

Rotation - Orientation of the lift cabin: you can change it either clockwise or counterclockwise.

Width - The width of the lift cabin.

Depth - The depth of the lift cabin.

Advanced

Show in - Here you can choose whether you want the shape to be shown both in 2D and 3D animation, or in 2D only, or in 3D only.

Show name - If selected, the name of the lift is displayed on the graphical diagram.

 To create a lift

First, you have to create the main lift element.

  1. Drag the  Lift element from the Space Markup section of the  Material Handling Library palette to the graphical editor and place the lift element as close as possible to the point of the network path or conveyor where you want to establish the connection.
  2. Click the point of the network path or conveyor and hold the left button of the mouse pressed to drag the point to the intended port of the lift. When the point is highlighted in green, it means the connection has been established and you can release the mouse button.
  3. Go to the Lift element's Properties view and select Main landing (defines lift properties) option.
  4. Specify the parameters for your lift operation.
Next, add lift elements that will define the lift landings on other levels.
  1. Repeat steps 1-2 for every level of your model environment where you want this lift to operate.
  2. In the Properties view of every element specify the corresponding Floor elevation.
  3. Specify the lift element that serves as the main landing in Refers to main lift parameter. Repeat this action for all lift elements that will serve as lift locations. If your levels are designed in the graphical diagrams of different agents, switch Refers to main lift parameter to dynamic value editor and type in the corresponding <agent name>.<lift name>.

Functions

You can dynamically modify the properties of the element at model runtime using the following API.
Failure / repair

Function

Description

boolean isFailed()

Returns true if the lift failed (broke down) and is not operating, otherwise returns false.

void fail()

Initiates the lift's failure. The lift stops working.

void repair()

Repairs the lift. The lift becomes available again.


Main lift and landings

Function

Description

List<NetworkPort> ports()

Returns all ports of this lift.

List<Lift<?>> getLiftLandings()

Returns all landings of this lift, including the main landing.

boolean isMainLanding()

Returns true if this lift is set as the main landing. Otherwise, returns false.

void setMainLanding(boolean isMain)

Sets the lift as the main landing.

Parameter:
isMain - valid values are true and false.

Lift<?> getMainLanding()

Returns the main landing out of the collection of lift elements connected to each other.

void setMainLanding(Lift<?> mainLift)

Assigns the main landing status to a lift from a collection of lift elements connected to each other.

Parameter:
mainLift - the new main lift element.


Ground

Function

Description

Ground getGround()

Returns the ground where this lift is located, or null if the lift does not belong to any ground.

void setGround(Ground ground)

Sets the new ground where this lift will be located.

Parameter:
ground - the new ground.


Obstacle

Function

Description

boolean isObstacle()

Returns true if this lift is considered an obstacle by transporters moving in free space mode. Otherwise, returns false.

void setObstacle(boolean isObstacle)

Sets this lift as an obstacle for transporters moving in free space mode.

Parameter:
isObstacle - if true, the lift is set as an obstacle. Otherwise, not.


Elevation

Function

Description

double getFloorElevation(LengthUnits units)

Returns the distance between the lift and the surface you are using as ground level in the specified length units.

Parameter:
units - a constant defining the length units

void setFloorElevation(double floorLevel, LengthUnits units)

Sets the distance between the lift and the surface you are using as ground level in the specified length units.

Parameters:
floorLevel - a new distance value
units - a constant defining the length units


Speed

Function

Description

double getLiftingSpeed(SpeedUnits units)

Returns the speed of the lift movement in the specified speed units.

Parameter:
units - a constant defining the speed units

void setLiftingSpeed(double speed, SpeedUnits units)

Sets the speed of the lift movement in the specified speed units.

Parameters:
speed - a new speed value
units - a constant defining the speed units


Pick up / drop off time

Function

Description

double pickingUpTime(A agent, TimeUnits units)

Returns the time specified for agent movement between the ending point of network path/conveyor and the center of the lift in the specified time units.

Parameters:
agent - agent that is currently moving into the lift
units - a constant defining the time units

double droppingOffTime(A agent, TimeUnits units)

Returns the time specified for agent movement between the center of the lift and the starting point of network path/conveyor.

Parameters:
agent - agent that is currently moving into the lift
units - a constant defining the time units


Agent selection

Function

Description

LiftSelectionMode getSelectionMode()

Returns the type of agent selection pattern for this lift, i.e. how the lift selects agents from the queue.

Valid values: LIFT_SELECTION_MODE_FIFO - according to FIFO policy
                        LIFT_SELECTION_MODE_PRIORITY - according to the priority of the incoming agent
                        LIFT_SELECTION_MODE_COMPARISON - according to the specified boolean expression that is evaluated for every agent "requesting" a lift

void setSelectionMode (LiftSelectionMode mode)

Sets the new type of agent selection pattern for this lift, i.e. how the lift selects agents from the queue.

Parameter:
mode - new type of selection pattern.
Valid values: LIFT_SELECTION_MODE_FIFO - according to FIFO policy
                        LIFT_SELECTION_MODE_PRIORITY - according to the priority of the incoming agent
                        LIFT_SELECTION_MODE_COMPARISON - according to the specified boolean expression that is evaluated for every agent "requesting" a lift

double priority(A agent)

Returns the priority of the agent.

Parameter:
agent - agent in the queue

boolean comparison(A agent1, A agent2)

Returns the result of evaluating the expression specified by the user in "agent1 is preferred to agent2" parameter.

Parameters:
agent1 - the incoming agent
agent2 - the agent being compared with the incoming agent

int queueSize()

Returns the number of agents (material items) in the lift's queue.

Agent getAgentFromQueue (int index)

Returns the agent from the queue with the specified index.

Parameter:
index - the index of the agent in the queue.


Position

Function

Description

double getX()

Returns the X coordinate of the lift.

void setX(double x)

Sets the X coordinate of the lift.

Parameter:
x - a new X coordinate

double getY()

Returns the Y coordinate of the lift.

void setY(double y)

Sets the Y coordinate of the lift.

Parameter:
y - a new Y coordinate

double getZ()

Returns the Z coordinate of the lift.

void setZ(double z)

Sets the Z coordinate of the lift.

Parameter:
z - a new Z coordinate

Point getXYZ()

Returns the (X, Y, Z) coordinates of the lift.

void setXYZ(double x, double y, double z)

Sets the (X, Y, Z) coordinates of the lift.

Parameters:
x - a new X coordinate
y - a new Y coordinate
z - a new Z coordinate

double getRotation()

Returns the rotation of the lift cabin in radians.

void setRotation(double rotation)

Sets the rotation of the lift cabin in radians.

Parameter:
rotation - a new rotation value


Dimensions

Function

Description

double getWidth(LengthUnits units)

Returns the lift cabin width in specified units.

Parameter:
units - a constant defining the length units

void setWidth(double width, LengthUnits units)

Sets the lift cabin width in the specified units.

Parameters:
width - a new width value
units -  a constant defining the length units

double getDepth(LengthUnits units)

Returns the lift cabin depth in specified units.

Parameter:
units - a constant defining the length units

void setDepth(double depth, LengthUnits units)

Sets the lift cabin depth in the specified units.

Parameters:
depth - a new depth value
units -  a constant defining the length units


Сolor / texture

Function

Description

LiftPlatformDrawingType getPlatformType()

Returns the type of the lift's floor surface.

Valid values are: LIFT_PLATFORM_FLATLIFT_PLATFORM_ROLLER.

void setPlatformType(LiftPlatformDrawingType platformType)

Sets the type of the lift's floor surface.

Parameter:
platformType - the new type of lift's floor surface.
Valid values are: LIFT_PLATFORM_FLATLIFT_PLATFORM_ROLLER.

Color getLineColor()

Returns the line color of the lift, or null if the lift has no color or uses a texture (in this case use getLineTexture() to get the lift's texture).

Texture getLineTexture()

Returns the line texture of the lift or null if the lift has no texture but uses a color (in this case use getLineColor() to get the lift's color).

void setLineColor(Color lineColor)

Sets the line color of the lift.

Parameter:
lineColor - the new color

void setLineColor(Paint lineColor)

Sets the line color (or texture) of the lift.
Parameter:
lineColor - the new texture

Color getFillColor()

Returns the fill color of the lift, or null if shape has no fill color or has textured fill (in this case getFillTexture() should be used instead) 

Texture getFillTexture()

Returns the fill texture of the lift if the lift has fill texture, or null if the lift has no texture but uses a color (in this case use getFillColor() to get the lift's color).

void setFillColor(Color fillColor)

Sets the fill color of the lift.

Parameter:
fillColor - the new fill color, if null, the lift is not filled

void setFillColor(Paint fillColor)

Sets the fill color (or Texture) of the lift.

Parameter:
fillColor - the new fill color, if null, the lift is not filled


Removal

Function

Description

void remove()

Removes the lift element from the presentation. If the element is not a part of presentation, the function does nothing.
Note that removal from the presentation does not necessarily mean removing from the model logic, since logical networks and routes may have been created before the removal and survive it.



Related topics

 Space markup for material handling models

 Material Handling Library

 API reference: Lift class