Collision of Advanced Transporters

All topics specific to modeling questions in Enterprise Dynamics
Post Reply
ann
Posts: 5
Joined: Monday 18 March, 2013 - 11:27

Collision of Advanced Transporters

Post by ann »

Hello

I have a problem with the advanced transporters I am using for my model. Both transporters are operating in one network. They pick up products at the same network nodes, but they have different destinations. I used a rather complex input strategy, disabling the automatic load option and using 4DS instead. Everything is working as desired, unless both transporters are trying to pick up a product from the same node (which happens sooner or later due to my input strategy). Then one of the transporters stops working which finally blows the whole model. How can I avoid this collision?
Thanks in advance!

Regards,
Ann

Edit: I have problems attaching my model. Which email address can I send it to, if necessary?
marlies
Posts: 301
Joined: Monday 17 January, 2011 - 09:28

Re: Collision of Advanced Transporters

Post by marlies »

Hi Ann,

I checked the model you sent us by email. Nice model so far! I have the following comments:

- The tracer window pops up with the message: Incorrect atom reference in statement 'pickatom'. This happens when you want to pick up an atom, but the queue is empty. In for example the entrytrigger of WheelLoader 3 you will need an extra check on the contents of the queue:

Code: Select all

content(In(Label([IC],i),In(1,c))) > 0
this problem of an empty queue does occur for the other trucks as well.


- Then the problem with the wheelloader 1 and 2. This problem is indeed caused by the fact that these 2 wheelloaders try to take the same product. The choice for the next product is as follows: when the wheelloader unloads a product it decides which item will be picked next. Afterwards it starts driving. During driving of wheelloader 1, the 2nd one unloads and chooses the same item to be picked, based on the exitstrategies. So the problem exists because of the required driving time between the decision to pick up and the actual pick up.
What I suggest to solve this problem is to make a "picking reservation" for an item to be picked. This could be something like this:
1. Keep a label on the queues named [NrReserved].
2. When the transporter wants to pick an atom, check if the content is bigger than the NrReserved (instead of > 0).
3. When this is the case increase the label [NrReserved]
4. Then create a pick assignment for the atom at rank [NrReserved] in the queue (instead of the first()).
5. Important: when a product exits the queue you have to decrease the label NrReserved and OnReset you'll have to set the labels to 0 using the initialize atom.

- The code in the exittrigger would be something like:

Code: Select all

If(
 { check if the content is bigger than the number currently reserved }
 content(In(Label([IC],i),In(1,c))) > Label([NrReserved], In(Label([IC],i),In(1,c))),
 Do(
  { increase the label with 1 }
  Inc( Label([NrReserved], In(Label([IC],i),In(1,c)))),
  AdvancedTransporter_PickAtom(
   c,
   In(Label([IC],i),In(1,c)),
   { pick the atom at rank nr reserved instead of first() }
   Rank(Label([NrReserved], In(Label([IC],i),In(1,c))), In(Label([IC],i),In(1,c)))
  )
 )
)
I think this will solve most of the problems / messages you currently have. If there are any questions left, just let us know!

Kind regards,

Marlies
ann
Posts: 5
Joined: Monday 18 March, 2013 - 11:27

Re: Collision of Advanced Transporters

Post by ann »

Thank you for your reply, Marlies! It helps me a lot!!
ann
Posts: 5
Joined: Monday 18 March, 2013 - 11:27

Re: Collision of Advanced Transporters

Post by ann »

Hello again,

I have another question concerning the transporters operating in one network. As the driving pattern I want to simulate is quite complicated, it would be easier for me just to insert the distance between the nodes in some table or so, instead of using their exact position on the 2d layout as the connection is of course not always straight which would result in an unnecessary complex network of nodes. I thought that this is maybe the purpose of the network controller, however, I did not succeed in solving this problem and hope that you could maybe help me.

Thank you!
marlies
Posts: 301
Joined: Monday 17 January, 2011 - 09:28

Re: Collision of Advanced Transporters

Post by marlies »

Hello Ann,

In case you just need a longer travel time between nodes, you could also edit the speed limit between nodes (right click a node and click the button Edit capacity and speed limit).

But, of course, in that case you wouldn't have an optimized network, based on the real distance. To get that you will have to add the extra nodes, or you could write your own code to optimize the network. The network controller has an internal distance table, which in that case you will have to fill up yourself.

Do you have access to the atom editor and the table atoms within the network controller?

Regards, Marlies
ann
Posts: 5
Joined: Monday 18 March, 2013 - 11:27

Re: Collision of Advanced Transporters

Post by ann »

Hello Marlies,

I want to base the model on the real distances, so adding speed limits would be of little help.
I have access to the atom editor and the distance table, but I'm not sure about how to adapt the distances. I would be grateful about some hints.

Regards,
Ann
marlies
Posts: 301
Joined: Monday 17 January, 2011 - 09:28

Re: Collision of Advanced Transporters

Post by marlies »

Hello Ann,

I made an example model for you, which you will find in the attachment. However, I think that this approach might get tricky especially when you will have to make changes in your network during experimentation. You'll need to be very accurate in keeping tables update (which is in standard functionality done by the network controller).

What I did is:
- I added a table which is called AddDistance, you can use this table to add additional distance between two specific nodes.
- I copied the code from the standard optimize network function in to a user specific function (see atom function editor) and added a small part where the additional distance from the table is taken into account. You will find this part of the code when you read the comments between curly brackets.
- The table has the same layout as the distance table within the the network controller (first in rank below that atom). This table is updated by the network controller, so you need will need to keep the layouts of this table and the adddistance table the same.
- The new function OptimizeNetwork_AddDistance is used in the initialize atom onreset, make sure that you deselect the option optimize onreset in the network controller atom.

Good luck,

Marlies
Attachments
20130408_AdvancedTransporterNetwork.mod
(66 KiB) Downloaded 336 times
ann
Posts: 5
Joined: Monday 18 March, 2013 - 11:27

Re: Collision of Advanced Transporters

Post by ann »

Thank you very much!
Post Reply