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.

Jason Lightfoot avatar image Jason Lightfoot ♦♦ commented ·

Hi @Craig DIckson, was one of anthony.johnson's or Kavika F's answers helpful? If so, please click the "Accept" button at the bottom of the one that best answers your question. 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 ·
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.

Craig DIckson avatar image Craig DIckson commented ·
@anthony.johnson Anthony,

Thanks! I'll look at that. Sounds do-able.

I was really excited to see the updates to AGV in the 22.2 release notes. I'll start to look at them as soon as I get over the current hump in my workload. When I do (September?) I may want to pick your brains and see how you might use the new tools.

0 Likes 0 ·
anthony.johnson avatar image anthony.johnson ♦♦ Craig DIckson commented ·

Sounds good. Actually I'm in the process right now of building a large Kiva model using AGV, running into hang-ups and finding solutions as I go, so there are actually more features queued up for the 23.0 release directed to AMRs:

- An ability to react to and recover from deadlock through listening to the OnAllocationFailed event with a specific 'IsDeadlock' parameter.

- A new OnNavigationFailed event that lets you react when you've added dynamic barriers that prevent the object from reaching its destination, allowing you to readjust and try again.

And a few other little things. Overall, though, the new features have worked pretty well.

amrsimulation.gif

0 Likes 0 ·
amrsimulation.gif (2.4 MiB)
Craig DIckson avatar image Craig DIckson anthony.johnson ♦♦ commented ·

@anthony.johnson

Cool.

Here is a link to a similar but pallet based model animation I did a while ago using A*. I'm looking forward to doing the next on using the new AGV stuff.


Computer Simulation Modeling and Analysis

">A* Pallet ANT model

0 Likes 0 ·
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:

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:

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.

Craig DIckson avatar image Craig DIckson commented ·

Thanks.

My model uses A* for the routing. I tried this, but it still seems to own the node even when hidden - the little diamond shows and the next TE cannot access the node until the first one leaves (after black box processing and unhiding).

1 Like 1 ·
Joerg Vogel avatar image Joerg Vogel Craig DIckson commented ·
@Craig DIckson , untested approach: perhaps you can move TEs in another A*Star grid on a different level.
0 Likes 0 ·
Kavika F avatar image Kavika F ♦ Craig DIckson commented ·

If you're using Network Nodes (NNs), you should be able to set the "Max Travelers" for each node.

1659977941514.png

te-stacking-on-nn.gif

Is this what you mean?

0 Likes 0 ·