AGV scheduling logic

AGV scheduling logic

Liam7
Not applicable
412 Views
1 Reply
Message 1 of 2

AGV scheduling logic

Liam7
Not applicable

[ FlexSim 22.2.0 ]

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

0 Likes
Accepted solutions (1)
413 Views
1 Reply
Reply (1)
Message 2 of 2

moehlmann_fe
Collaborator
Collaborator
Accepted solution

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.

0 Likes