question

Salma Neeq2 avatar image
0 Likes"
Salma Neeq2 asked Felix Möhlmann answered

How can I create orders to pick from racks?

I am creating a distribution model, and I have to pick different products and quantity from the racks, I have 7 types of products and the order could vary for example 3 boxes from the product 1 and 2 from the product 3. I was trying with process flow but is not working. I have to create the orders and the pick up with the task excuters and left them in the "Pre alistamiento" queue. I will appreciate it. Thank you. This is my model

Model Distribution Center_Option.fsm

FlexSim 21.1.4
dispatchcreate ordersdistribution center
5 |100000

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

1 Answer

Felix Möhlmann avatar image
0 Likes"
Felix Möhlmann answered Joerg Vogel commented

First off, if you want to use process flow to transport items from the racks you should deactivate the currently implemented 3d-logic. Otherwise you are likely going to end up with conflicting orders and errors.

Then you have to configure the process flow correctly.

Source:

The first three columns always denote the arrival time the name of the tokens and the quantity to create at that time. The name doesn't really matter here, the quantity should best be one (later more as to why) and the product quantity and type should be label columns, so the value get written to the tokens as labels.

In my opinion it's better to create one token with a product quantity label than multiple tokens with each representing a single item. This will make it easier to load multiple items at a time.

1636701310824.pngList:

The items need to actually be pushed to the list you are trying to pull them from. This could be done in the "On Entry" trigger of the racks or the "Send to Port" option. (Since you are replacing the 3d logic, this won't be needed for anything else.)

Pull From List:

The quantity you pull from the list can be given by a label on the token. Use the query field to only pull items of the correct type. Make sure that the label names you create on the token match the names you enter into these options. What "puller" refers to can be set in the respective field further down, in this case it's the token.

When pulling multiple entries from a list, the label you assign them to will become an array. You can refer to any value in the array with "token.pulled[index]". The number of entries can be read with "token.pulled.length".

1636701479176.pngSub Flow:

Now you can run the load sub flow as many times as there are entries in this array (or you limit it by the capacity of the transport and loop back when there are more items to collect). Each sub flow token should be assigned a single item it's responsible for. This can be done at the bottom of the activity. "creationRank" is incremented for each sub flow token, so the first will have a rank of 1, the second 2 and so on, assigning each one a unique item from the array.

1636701870624.png

Finally, check if all task executer, item and destination references in the load, travel and move activities are correct and the logic should work.


Addendum:

To limit how many items a transport will load at a time the logic could look something like this:

1636702674004.png

1636702156767.png

"Math.min(...)" will return either 4 or the number of entries in the array label, whichever is smaller, effectively limiting the quantity to 4. "token.pulled.pop()" returns the last entry of the array and removes it at the same time. This way, items that are already accounted for will be removed from the array.


The unloading/moving is now also done in a sub flow. Because the items can't be referenced through the "pulled" label (we only load a subset and remove the entries from the label), you could instead simply use the number of number of loaded items ("token.montecargas.subnodes.length") to define the quantity and have each sub flow token move the last loaded item ("token.montecargas.last").
1636702859260.png1636702877195.png

Then you can check if the array is empty or not later. If not, the token loops back to the sub flow.


1636702306781.png



1636701310824.png (15.4 KiB)
1636701479176.png (16.9 KiB)
1636701870624.png (12.8 KiB)
1636702156767.png (13.1 KiB)
1636702306781.png (12.0 KiB)
1636702674004.png (39.8 KiB)
1636702859260.png (9.8 KiB)
1636702877195.png (9.2 KiB)
5 |100000

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