AnyLogic
Expand
Font size

Lift

Lift is a space markup shape that graphically defines a vertical reciprocating conveyor. Only two types of networks support this element:

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. To transport pedestrians to a different level (floor), use the elevator space markup shape.

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

Transporters with free space navigation mode can enter the lift from any side. To restrict their movement, draw the walls which will impede the movement of transporters where it is necessary. For example:

You can use the Rectangular wall to draw the obstacle very close to the lift borders. You can also use the simple Wall, but in this case you need to either draw the closed wall or make sure that the distance between the wall and the lift borders is less than the transporter’s width.

To simulate a lift you have to place several lift elements, one per level. 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 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 point where this lift element is located to a horizontal plane in your modeling environment you choose to serve as the reference point. The distance is calculated along the Z axis. For example, such a reference point could be the ground floor of your factory.

Demo model: Two Level Facility with Lift Open the model page in AnyLogic Cloud. There you can run the model or download it (by clicking Model source files).

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 next to the point of the network path or conveyor where you want to establish the connection. Make sure that the ending point of the network path/conveyor is directly opposite to the lift’s port that you will use 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 Lift element specify the corresponding Floor elevation.
  3. Specify the lift element that serves as the main landing in Refers to main landing 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>.

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 agent — If selected, the lift is visible on the upper agent 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 pedestrians and transporters moving in free space mode.

Floor elevation — Here you specify the distance between the floor where this lift element is located, and a horizontal surface in your modeled environment that 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

In all the actions, the local variable agent refers either to the material item, if the lift belongs to a conveyor network, or a transporter, if the lift is a part of a network.

On pickup started — Here you can type Java code that will be executed when agent leaves the ending point of the network path/conveyor connected to the lift. In case of transporters moving in free space, the code is executed when the lift landing has reached the intended level and is ready to accept the transporter.

On dropoff finished — Here you can type Java code that will be executed when agent enters the starting point of the network path/conveyor connected to the lift. In case of transporters moving in free space, the code is executed when the center of the transporter leaves the lift landing.

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

Level — Level to which this element belongs.

X — X-coordinate of the lift shape's centre.

Y — Y-coordinate of the lift shape's centre.

Z — Z-coordinate of the lift shape's centre. This is a relative value and it is calculated from the absolute Z value of the level where the lift element 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.

Functions

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

Failure and 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<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.

isMain — valid values are true and false.
Lift getMainLanding() Returns the main landing out of the set of lift landings this lift belongs to.
void setMainLanding(Lift mainLift) Assigns the main landing status to a specified lift landing.

mainLift — the new main landing.
List<NetworkPort> ports() Returns all ports of this lift.
Level
Function Description
Level getLevel() Returns the level on which this lift is located.
Obstacle
Function Description
boolean isObstacle() Returns true if this lift is considered an obstacle by pedestrians and transporters moving in free space mode. Otherwise, returns false.
void setObstacle(boolean isObstacle) Sets this lift as an obstacle for pedestrians and transporters moving in free space mode.

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.

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.

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.

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.

speed — a new speed value.
units — a constant defining the speed units.
Pick up and drop off time

In all the actions, the local variable agent refers either to the material item, if the lift belongs to a conveyor network, or a transporter, if the lift is a part of a network.

Function Description
double pickingUpTime(Agent agent, TimeUnits units) Returns the specified pickup time. During this time the agent must complete the movement between the ending point of network path/conveyor and the center of the lift in the specified time units.

agent — agent that is currently moving into the lift.
units — a constant defining the time units.
double droppingOffTime(Agent agent, TimeUnits units) Returns the specified dropoff time. During this time the agent must complete the movement between the center of the lift and the starting point of network path/conveyor.

agent — agent that is currently moving into the lift.
units — a constant defining the time units.
Agent selection

In all the actions, the local variable agent refers either to the material item, if the lift belongs to a conveyor network, or a transporter, if the lift is a part of a network.

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.

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(Agent agent) Returns the priority of the agent.

agent — agent in the queue.
boolean comparison(Agent agent1, Agent agent2) Returns the result of evaluating the expression specified by the user in "agent1 is preferred to agent2" parameter.

agent1 — the incoming agent.
agent2 — the agent being compared with the incoming agent.
int queueSize() Returns the number of requests from the agents in the lift’s queue. Only the agents that have reached the lift can send the requests, which means there can only be one agent per lift landing at a time.
Agent getAgentFromQueue (int index) Returns the agent from the queue with the specified index.

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.

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.

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.

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.

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.

rotation — a new rotation value.
Dimensions
Function Description
double getWidth(LengthUnits units) Returns the lift cabin width in the specified units.

units — a constant defining the length units.
void setWidth(double width, LengthUnits units) Sets the lift cabin width in the specified units.

width — a new width value.
units — a constant defining the length units.
double getDepth(LengthUnits units) Returns the lift cabin depth in the specified units.

units — a constant defining the length units.
void setDepth(double depth, LengthUnits units) Sets the lift cabin depth in the specified units.

depth — a new depth value.
units — a constant defining the length units.
Color and texture
Function Description
LiftPlatformDrawingType getPlatformType() Returns the type of the lift’s floor surface.

Valid values:
LIFT_PLATFORM_FLAT
LIFT_PLATFORM_ROLLER
void setPlatformType(LiftPlatformDrawingType platformType) Sets the type of the lift’s floor surface.

platformType — the new type of lift’s floor surface.
Valid values:
LIFT_PLATFORM_FLAT
LIFT_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.

lineColor — the new color.
void setLineColor(Paint lineColor) Sets the line color (or texture) of the lift.

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.

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.

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.
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.
How can we improve this article?