question

Martin C10 avatar image
0 Likes"
Martin C10 asked Martin C10 commented

To have elevators only service certain floors

How to let elevators only service certain floors without separate elevator banks, I have tried ussing barrier, but it doesn't work, my elevator bank is adding multiple lifts, I want to let each elevator service certain floors.47945-1643010296023.png

FlexSim 20.0.10
elevator bank
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

1 Answer

Felix Möhlmann avatar image
0 Likes"
Felix Möhlmann answered Martin C10 commented

This isn't possible without essentially rebuilding the elevator bank object. The attached model demonstrates one possible workaround.

Depending on the current and target position, the person is first send to a floor spot in front of an elevator bank. This way, that elevator bank is the closest connection to the other grids and will be used. Which elevator gets chosen is determined by two things: Does the elevator service the current and target floor and which of the possible elevators is currently the least utilized.

The first is controlled by a label array on the elevator banks. A one signifies that it can stop at the respective floor, a zero that it can't. Only if both the value for the current and target floor (floors numbered 1-3) are 1 can the elevator be chosen.

The utilization is determined by two things: The state of the elevator inside the bank (if it is currently idle it will be chosen without checking others) and a second label that tracks the number of travellers set to use that elevator. It is incremented each time a person is send to a corresponding floor spot and decremented in the "On Traveler Continue" trigger on the elevator bank.

ChooseElevatorbank.fsm


· 5
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Martin C10 avatar image Martin C10 commented ·

@Felix Möhlmann you really help me a lot, l have been solving this problem for a long time

2 Likes 2 ·
Martin C10 avatar image Martin C10 commented ·
Very clear, thank you
0 Likes 0 ·
Martin C10 avatar image Martin C10 commented ·
Can I ask one more question? I need to limit the elevator passenger, I notice that in custom code there's a conditional expression, which is <=6, but seems that the whole model still not limit the elevator passenger,I wonder to know what is this expression mean and how can I set limited passenger. Thank you very much if you can help me ☺️.
0 Likes 0 ·
Felix Möhlmann avatar image Felix Möhlmann Martin C10 commented ·

The code is only used to determine in front of which elevator a person should wait. The <= 6 expression is used when the elevator is currently idle, to try and first fill up one elevator before sending people to another elevator. If all elevators are currently busy or have more than 6 travelers assigned, the person is send to the one with fewer assigned travelers to balance the load.

How many people can fit in an elevator car at a time is enforced by the banks itself. Each car has a capacity that can be set in the properties.

1646469410300.pngThis is evaluated against the "traveler capacity usage" a person has; by default this is the area their bounding box occupies (x-size * y-size). With the default settings a car can load up to 4/(0.58*0.4) = 17.24 people. Instead you could set the footprint to 1 for example, so the capacity is simply the number of travelers the evelator can transport at a time.

I also just noticed that the reset trigger of the elevator banks doesn't seem to work, so the "travelers" label didn't get reset between runs. I added some code to the global "On Model Reset" trigger to rectify this and reset the labels.

chooseelevatorbank_2.fsm

0 Likes 0 ·
Martin C10 avatar image Martin C10 Felix Möhlmann commented ·
Thnak you very much,I have learned alot after reading your answer. ☺️
0 Likes 0 ·