question

sofia avatar image
0 Likes"
sofia asked sofia answered

How to plot the number of AGV's that allocated a control point over the time?

Hello community, I've been asked to display a KPI in my model for calculating the number of AGVs I will need for this model. The KPI I want to display is the number of AGVs allocating a control point over time (I've set the concerned control point to MaxAllocation=10). I tried using StatisticsCollector1 to display the waiting time of each AGV that passes through the concerned control point, but I don't know how to display the graph showing the number of AGVs allocating this control point over time.

The concerned control Point is 9 and 8.

1712579254607.png


FlexSim 24.1.0
controlpoint
· 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.

sofia avatar image sofia commented ·

here's the model

peinture.fsm

0 Likes 0 ·
peinture.fsm (194.2 KiB)
Felix Möhlmann avatar image Felix Möhlmann commented ·
Currently you are using the "On Arrival" event to signify the arrival of an AGV. This event only triggers when the AGV actually comes to a stop at the Control Point. Is this on purpose, to only log those AGVs that actually 'wait'? Or do you want to get the number of allocations which would also include AGVs passing over the point?
0 Likes 0 ·
sofia avatar image sofia Felix Möhlmann commented ·

yes, I want to see only the AGVs waiting in the Control point, not those passing through the Control point without waiting

Thanks for your response

0 Likes 0 ·
Felix Möhlmann avatar image
0 Likes"
Felix Möhlmann answered sofia commented

First thing: The "On Deallocated" event will trigger for each AGV, while the "On Arrival" triggers only for those that come to a stop at the CP. As such your current Statistics Collector will create rows for passing AGVs.

You can workaround this by using a condition that stops the Statistics Collector from registering the "On Deallocated" event if there isn't a row with the correct row value (AGV) currently 'active'. The "On Deallocated" event will 'finish' the row, so an AGV first has to arrive at the CP in order for the deallocation trigger to fire again.

capture1.png

As for your actual question I mostly see two options:

1) You can add a column that denotes the Control Point to your current Statistics Collector and set a placeholder value for the Exit Time when the row is first added. Then you use a second Statistics Collector to listen for any rows getting added/updated and query the table for all rows where the Exit Time has that placeholder value, resulting in only the unfinished rows belonging to waiting AGVs being returned.

2) You can also gather the number of waiting AGVs through a standalone collector. In the attached model I use maps to keep track of the current number of waiting AGVs and which AGV should result in a new row for the "On Deallocation" event.

peinture-fm.fsm


capture1.png (32.3 KiB)
peinture-fm.fsm (139.0 KiB)
· 5
5 |100000

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

sofia avatar image sofia commented ·

Hi @Felix Möhlmann , Thanks for your explanation, it's very clear, and that's what I wanted.

Thank you very much once again!

0 Likes 0 ·
boutayna avatar image boutayna commented ·

hello, still on the model communicated before, I have a small change to make, it's to calculate the total number of agv's in the zone by the time (all control points selected before "buffer_Peinture") and not just one control point selected, I tried to add an "on Allocated" trigger that increments a variable when an agv arrives, and another "on desallocated" trigger that decrement the variable when the agv leaves. I've tried changing the "on allocated" trigger to "on arrival" because I only want to take into account agv's waiting in the buffer zone and not those passing through, but on the other hand the "on desallocated" trigger takes into account all agv's (waiting and passing through) which mixes up the whole calculation.

Thanks for your help,




0 Likes 0 ·
boutayna avatar image boutayna boutayna commented ·

here's the attached modelModèle_AGV_11_sans_buffer_initiale.fsm

0 Likes 0 ·
Felix Möhlmann avatar image Felix Möhlmann boutayna commented ·

You can use the same Statistics Collector as in my original answer with some small changes.

I put the CPs into a group, so the collectors doesn't need a pair of events for each one. I then added a "WaitGroup" label to each CP, signifying which zone they belong to.

Rather than count the number of AGVs by CP, this label value is used in the "NumWaiting" column of the collector to group the CPs together.

modele-agv-11-sans-buffer-initiale-fm.fsm

0 Likes 0 ·
Show more comments
sofia avatar image
0 Likes"
sofia answered

5 |100000

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

sofia avatar image
0 Likes"
sofia answered

Hello community,

Still on the same model, I want on the decision point that is linked to Queue1 (normally my AGV behaves according to this logic, as soon as there is a task available, a single AGV moves to this area, That's why there's always only one AGV that loads in the "Buffer_Essieux" and in the "Buffer_Ponts"), On my model, I want it is always a safety AGV in front of the "Buffer_Essieux" and "Buffer_Ponts" (a single AGV not more), Thank you for your help, I tried several tricks but I could not achieve it.

Thank you again, I'll be very grateful for your help,

5 |100000

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