question

apple avatar image
0 Likes"
apple asked Felix Möhlmann commented

Flexsim HC for patient flow

I would like to design a patient flow and set up an elevator group control system using the following steps (preferably without using additional programming).


Background: Hospital elevator floor configuration issue

There are a total of 19 floors, and passengers enter through Glass Doors on each floor. The number of passengers wanting to go up and down on each floor (assuming a Poisson distribution) is randomly distributed during different time intervals. There are six elevators in total, with elevators 1-3 as one group (serving only lower floors) and elevators 4-6 as another group (serving all floors). If multiple elevators are idle, the elevator group control system will assign the elevator closest to the passenger wanting to board. If all elevators are occupied, it will select the elevator with fewer passengers inside at the moment.


Could you help design a simple elevator group control system and the patient flow steps for the entire process?


The attached file contains my initial operation, but there might be some mistakes.
all floor_autosave.fsm

And the following image is a process flow referenced in a related paper, but there are some parts I don't quite understand. I hope it will help in designing the process.
photo.jpg

FlexSim 23.1.2
patient flowhospitalelevator control
photo.jpg (482.2 KiB)
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 Felix Möhlmann commented

If you are not familiar with lists, I'd suggest to work throug the relevant documentation and tutorial, because a list is probably the easiest and quickest way to implement something like this.

The information that will be required is the current floor of the patient, the target floor of the patient, as well as the current passenger count of each elevator bank and the range of floors it serves. (Best to number the floors; numbers are almost always easier to work with than strings.)

Create a list that contains all elevator banks. The list should have three fields. One that checks whether the respective elevator services both the origin and destination floor of the patient. One that calculates the distance between the entry point to the elevator and the patient and one that holds the current number of passengers of that elevator. The passenger number could just a number label on the elevator. The other two fields will be custom expressions.

1704722663394.png

When a patient needs to change floor, you can pull the 'best' elevator (while leaving it on the list) in a simple query.

1704722730662.png

Afterwards, increment the passenger number of the pulled elevator to reflect that a patient is now 'assigned' to it. You can only indirectly control which elevator bank a traveler will use by placing it so that using the pulled elevator results in the shortest overall path. For this, first have the patient travel to the entry point of the elevator on its current floor and only then tell them to move to their actual destination.

1704723066190.png

Depending on the exact placement of the elevator banks the patient might still route to a different elevator. You will just have to experiment with the exact location they are send to.

In the "On Traveler Continue" trigger of the elevator, decrement the passenger number of the elevator again.

1704722924256.png



1704722663394.png (23.1 KiB)
1704722730662.png (37.5 KiB)
1704722924256.png (5.2 KiB)
1704723066190.png (80.9 KiB)
· 14
5 |100000

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