question

Emily K avatar image
0 Likes"
Emily K asked Kavika F commented

AGV Intersection passage control rule

Dear all,

When multi AGV meet at the intersection, the order which AGV pass the intersection is based on the allocation of control points, which is FIFO. I wonder if I could replace this rule with the AGV which nearer its destination pass first? Below is my idea:

1. Trigger AGV On Load, use cpdistance to calculate its distance between pickup point and drop off point.

2. AGV speed is fixed, then I could calculate the “finish time” needed by using distance data above.

3. I would like to use Agent System to detect the distance between AGVs and use Behaviors>On Enter Proximity> Activate Agent Behavior to replace the allocation of control points. I think I need to assign a label “RemainingTime” (=finish time-current time) to AGVs so that I could compare the value of label in the Activate Agent Behavior’s condition and let the AGV with less value pass first.

I wish to use AGV template in Flexsim, but I have no idea where should I modify to add an “Assign label” activity.. Or maybe I should build my own process flow?


Your suggestion and help is much appreciated :)

FlexSim 21.2.4
agv process flowproximity agent systemintersectioncontrol rule
· 1
5 |100000

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

Kavika F avatar image Kavika F ♦ commented ·

Hi @Emily K, was Jeanette and Jason's answer helpful? If so, please click the "Accept" button at the bottom of their answer. Or if you still have questions, add a comment and we'll continue the conversation.

If we haven't heard back from you within 3 business days we'll auto-accept an answer, but you can always unaccept and comment back to reopen your question.

0 Likes 0 ·

1 Answer

Jeanette F avatar image
0 Likes"
Jeanette F answered Emily K commented

Hello @Emily K,

@Jason Lightfoot created a solution for this recently. You can find it in this post.

· 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.

Emily K avatar image Emily K commented ·

Hi Jeanette, thanks for your suggestion.

Control area is quite static. As I consider that AGVs might meet each other on the bi-directional path in opposite direction, I would like to use Agent System to detect the proximity instead of using control area.

So that I would able to set the proximity radius according to different state(on the same path with same direction, on the same path with different direction, on the different path).

I add a "RemainingTime" label, value would be getvarnum(agent.object,"totaltraveldistance")-getvarnum(agent.object,"curmaxtraveldistance")

I think I am approximate to what I what to achieve, but how could I compare the value of "RemainingTime" of each agent in the condition field?

1666868338964.png


0 Likes 0 ·
1666868338964.png (61.9 KiB)
Jason Lightfoot avatar image Jason Lightfoot ♦♦ Emily K commented ·

Instead of interpreting those variable nodes why not just use the distancetotravel() function?

When the proximity fires you will have a pointer to the other agent which will allow you to find its remaining distance.

0 Likes 0 ·
Emily K avatar image Emily K Jason Lightfoot ♦♦ commented ·

Thanks @Jason Lightfoot for the information!
But the distancetotravel is not in the tree of task executer, how could I get the value of the destination? The destination of AGV might vary due to the type of load.

Could I Interpret in this way: distancetotravel (agent.object, getvarstr(agent.object, "finalDestCP")?

0 Likes 0 ·
Show more comments