question

liam avatar image
0 Likes"
liam asked Felix Möhlmann answered

AGV scheduling logic

Hi,

I'm wondering if there's a way to allocate AGVs across regions based on the shifting demands within each area. In my model, there are two types of AGVs distinguished by color: yellow AGVs are restricted to certain areas, while green AGVs have unrestricted movement. In my model, the two areas operate independently, so both areas independently call upon green AGVs from the middle area for assistance in transportation.1713977388541.png

My objective is to randomly dispatch one green AGV to assist with transportation when the number of items in the queue exceeds 4. This AGV should remain in the area until the queue's count decreases below 4.

If the queue surpasses 6 items, then two green AGVs should be randomly dispatched. Once the queue decreases to between 4 and 6 items, only one green AGV should remain for transportation assistance until all green AGVs leave the area when the count drops below 4. I hope to configure this based on my global table.

1713977403085.png

This control logic has been troubling me for some time, and I'm wondering if you could provide some assistance. I used the institutional email associated with my subscription to reapply for an account."Thank you very much.

agv1_1.fsm

FlexSim 22.2.0
agvagvcontrolagvnetworks
1713977388541.png (836.2 KiB)
1713977403085.png (173.2 KiB)
agv1-1.fsm (3.8 MiB)
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 jourjinaalex commented

Here's one possible approach:

agv1-1_fm.fsm

In your model the "Bay" label controls which NextWork CP an AGV may pull. So to dispatch an AGV to a different area this label has to be changed.

The actual logic that does this is in the On Entry trigger of the A2 and A3 queues. (Though the part that removes an AGV from the area should probably be part of the On Exit trigger, when I think about it more.) The code first checks how many additional AGVs should currently be assigned to the area. If the actual number, which is tracked in an array label, is different, the code tries to find AGVs that do not have an additional area assigned to them yet and adds them to the area of the queue.

I changed the "Get Next Work Point" query to prioritize lower bay numbers and to allow an AGV to pull a CP whose bay is not currently assigned to it (so an AGV can find back out of the area after it is unassigned).

The "Agv-Qty" process flow tries to write values to a table that does not exist, so I deactivated the sources there for now.


agv1-1-fm.fsm (3.8 MiB)
5 |100000

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