question

hikel avatar image
0 Likes"
hikel asked hikel edited

How to customize Barrier in A* network to allow for multi direct

I am trying to create a rule for controlling forklift traffic in a warehouse aisle.

1737657475800.png The aisle is unidirectional by default but can temporarily allow two-way traffic under certain conditions. Specifically, I want to implement the following logic:

  1. When there are no forklifts in the aisle, it can become two-directional to allow a forklift to enter from the opposite direction. like number 2 above
  2. Once a second forklift enters the aisle, it should revert to being unidirectional again to avoid congestion or deadlock with two way. like number 1 above
  3. Here is another example answer by @Jason Lightfoot but this one is using time which is not the case here. @Felix Möhlmann do you have suggestion or solution to this problem. Thank you!

Here is my model loading-1.fsm

FlexSim 24.2.2
warehousea star navigationtaskexecutorsbarriers
1737657475800.png (446.4 KiB)
loading-1.fsm (104.1 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 hikel edited

You could use the same logic I utilize in the article I just posted to let turning cars wait for oncoming traffic. A control area is placed over the aisle. When a request is made, the logic determines in which direction the transporter wants to travel based on its current position. If the area is empty or currently in the correct 'mode', the transporter can enter. Otherwise it has to wait until the area becomes empty.

For this to work properly, you have to make sure that the transporters never turn around inside the aisle and that they leave enough space for other transporters to exit while waiting to be allowed to enter. In the attached model I force them to drive a small loop at the end of the aisle to achieve this.

loading-2.fsm


loading-2.fsm (116.9 KiB)
· 9
5 |100000

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

hikel avatar image hikel commented ·

Thank you @Felix Möhlmann for your answer. I am going trough the code right now. Interesting model you did post! your approach is definitely going to work if only all pick are in the same Aisle which not the case for mine. The picks always start from the beginning of the Aisle I am doing that by pulling

1737952560480.png

so we always start picking from the beginning of the Aisle. once it finish the available parts in Aisle 1

  1. If it is done it can go to unload either option 2 if no one is in the Aisle, and if there is one it will take option 3 normally.
  2. If the pick if not done the forklift need to picks from Aisle 2 as well after finishing picking parts from Aisle 1 it will do the same thing which is option 2 if no one is in the Aisle and start picking from start point blue. and if there is one it will take option 3 normally.

1737952527332.png

For the Travel location do I need to change X location depends on each Aisle or there an easy way to do that?

1737952941208.png

Here is the example model loading-2.fsm

0 Likes 0 ·
1737952527332.png (324.7 KiB)
1737952560480.png (133.7 KiB)
1737952941208.png (86.1 KiB)
loading-2.fsm (118.0 KiB)
Felix Möhlmann avatar image Felix Möhlmann hikel commented ·
You can of course check the "Mode" of the area outside the request event. After the transporter leaves the aisle, check if it can travel back through it (correct mode or no mode set). If not, send it around the long way by either utilizing an extra travel task to a waypoint to force it to use the long path. Or place a barrier/object in the aisle that you only activate while the transporter is calculating its path.
0 Likes 0 ·
hikel avatar image hikel Felix Möhlmann commented ·

@Felix Möhlmann Now it is working properly when I have 2 transporters in Aisle but when I am adding 3 transporters is not working. at time 76 you can see the transporters 3 when there transporter 2 behind it goes to the end of Aisle. but middle transporters 2 goes toward transporter 1 which is not correct bs it is behind. is there a way to logic to work this way. once transporters 2 finish from Aisle 1 it should go like transporter 3 (end of Aisle) always while picking. here is the model loading-2.fsm

1738096460331.png

and for Travel location I using look up using global table it worked, but if there is a way an easy to way to do such as knowing Aisle from storage

1738096753668.png

1738096773701.png


0 Likes 0 ·
1738096460331.png (165.6 KiB)
1738096753668.png (110.7 KiB)
1738096773701.png (12.4 KiB)
loading-2.fsm (123.3 KiB)
Show more comments