question

Craig DIckson avatar image
1 Like"
Craig DIckson asked Jason Lightfoot commented

Moving a Flow item/ TE out of A*

I am modeling part of an AMR (AGV) system, using A*. I would like to have some TEs go into a "black box" representing the part of the system I am not modeling. I tried doing this using a Process Flow "Move object" activity to put the TE into a queue representing the unmodeled portion of the system, a PF delay for the processing, and then another "Move object" activity to return the TE to A*. Unfortunately, the TE continues to own the A* node nearest the queue throughout, so the next TE can't get to the location.

How can I temporarily get the TE fully out of A* so it doesn't block traffic while it is "out of the area"? Or is there a way to make an individual node in A* have a capacity > 1?

FlexSim 22.1.3
process flowastara star navigationa starmove object
· 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.

anthony.johnson avatar image
1 Like"
anthony.johnson answered Craig DIckson commented

The A* module has an AStar.Allocation class that lets you get information and manipulate the accumulation allocations of a traveler. These are 'scheduled' accumulation allocations, i.e. each of them has a scheduled start and end time, and represents an allocation of a specific grid cell. When the traveler is idle, its current allocation's end time will be FLT_MAX, i.e. at least for now the allocation does not have an ending time. One of the methods on AStar.Allocation is truncateReleaseTime(), which will move up the release time of an allocation. Using this, you can essentially remove the allocation by changing its release time to the current time. An example of doing this is in the linked model (I uploaded AStarRemoveAllocations.fsm, not sure how to link it). The logic is in the unload trigger of the first AGV.

Unfortunately much of this isn't documented because when I added it I had to move on to something else and did not have the time to fully finish the API and test it robustly (and I'm kind of focusing more on the AGV module now given our previous discussion). But apparently it works fine for this use case.

https://drive.google.com/file/d/1Htei2KoPcoeN_Q1TXMfIhOvPtlU4lQbO/view?usp=sharing


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

Kavika F avatar image
0 Likes"
Kavika F answered Kavika F commented

Hey @Craig DIckson, here's a solution that may work for you. In your Process Flow (PF), you can "hide" a Task Executer (TE) using the command "switch_hideshape". Here's an example of what it can do:

hiding-te-in-astar.gif

I setup a simple PF to spawn boxes in a queue and then have TEs grab them and take them somewhere else (black box). They head to the Glass Door to "change rooms". When they arrive at the Glass Door, I destroy the box they're carrying and hide the TE using this code:

  1. switch_hideshape(token.taskExecuter, 1);

I have them wait a few seconds to "drop off the boxes" (again, black box stuff), and then have them reapear:

  1. switch_hideshape(token.taskExecuter, 0);

They finish their task sequence by going home. When they're hidden, they don't take up any space and don't own any nodes anymore. Hope this helps!


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