question

Emily K avatar image
0 Likes"
Emily K asked Emily K edited

AGV Deadlock Avoidance

Hi, I am using Advanced AGV PF.

Due to layout limit, the AGV paths are designed as shown. And it probably will have deadlock when there are 3 AGVs.

AGV is required to transport item from Queue A to Queue IN. Then, from Queue OUT to Queue E.

To solve the deadlock, I have an idea that create a list named "NextPoints" in AGVNetwork and hope to direct the AGVs to the NextPoints when there is deadlock. Is it possible to make changes in the Advanced AGV PF or I will need to create another Object Process Flow?

My idea: Wait for event (AGV On Collision) > Pull From List (NextPoints List) > Travel (Travel to the nearest NextPoints)

Any help and suggestions will be much appreciated!

FlexSim 22.0.0
agvnetworkagv process flowagv deadlock
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

Kavika F avatar image
0 Likes"
Kavika F answered Emily K edited

Hey @Emily K, there's currently no way to check for deadlock, but there will be a way starting in next year's release (v.23.x.x). Something you could do right now to avoid collisions is to add more control points to decrease the likelihood of two AGVs competing for the same CP. You can also add a second "lane" next to the current one and make them unidirectional so two AGVs will never run into each other on those paths.

1658950272608.png


AGVs will have a travel task that moves them from CP to CP along the paths. That CP will tell the AGV if it is currently allocated or not. If it is, then it will wait at its current CP for the desired CP to deallocate and become available. Here's a scenario where deadlocks will occur: you have AGV1, AGV2, CP1, and CP2; AGV1 is on CP1 and AGV2 is on CP2. AGV1 is trying to get to CP2 and AGV2 is trying to get to CP1, but they wont leave their current places until the next CP is deallocated - hence the deadlock.

Avoiding deadlock comes down to good paths and enough CPs to allow AGVs to move when they need to. Changing the Deallocation Type may help a bit too to help them move along:

1658950789513.png


1658950272608.png (26.0 KiB)
1658950789513.png (14.2 KiB)
· 3
5 |100000

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

Emily K avatar image Emily K commented ·

I have changed all the path into Two Way, I found that sometimes the deadlock is supposed to be avoided if AGV not choosing the shortest path?

Is it possible to make any changes to let AGV choose the feasible path instead of the shortest path?

0 Likes 0 ·
Kavika F avatar image Kavika F ♦ Emily K commented ·

One possible solution is to add a conditional to a path so that it can only be traveled if a certain requirement is met (i.e., an AGV is loaded). Here's an example (gif below):

agv-path-conditional.gif

The AGVs can only go on that middle path if they have a load, otherwise they have to take the longer path around. You could do something similar and only allocate the path if there are no agvs on it (i.e., set a CP at the beginning of the path to "enter the zone" and then only allow AGVs onto the path after the current AGV has "exited the zone"). That will force AGVs to go around the path and look for an alternate route rather than deadlock.

0 Likes 0 ·
Emily K avatar image Emily K Kavika F ♦ commented ·
Wow, thanks for providing such great idea!
0 Likes 0 ·