How to load randomly by batch of article ?

Bamba_Ousmane
Not applicable
1 View
12 Replies
Message 1 of 13

How to load randomly by batch of article ?

Bamba_Ousmane
Not applicable

[ FlexSim 23.0.1 ]

In my model, I get the Orders as a table. and in the table I have the day the order number, the class, the article and the quantities. My model currently allows to make the preparation by order and by pallet in a random way. That is to say, if I have an order with several articles of different classes or not, my operator searches randomly for each box to put on the pallet. What I want to do now is have my "search item" find the item in the same location or close to the previous item if it is the same item and otherwise it will randomly search the box elsewhere.


Someone can help me with this please ?


attached my model for more details


Mini modele preparation.fsm

0 Likes
Accepted solutions (1)
2 Views
12 Replies
Replies (12)
Message 2 of 13

kavika_faleumuE6HT5
Autodesk
Autodesk
Hey @Ousmane, what criteria classify two items as "the same"? If they have the same class and type? Also, what does "Article" mean in this context? I think I could help if I knew more details about your table setup and what they mean. Thank you.
0 Likes
Message 3 of 13

Bamba_Ousmane
Not applicable

Hey Kavika, thank you for your help.


1679654448928.png

in my table :


Day : mean the days of the simulation

Order : is the id of the order in each day

Classe : I classifiy my items in 3 classes (1 mean F (frequent), 2 mean M(moyen) and 3 mean R (Rare)) (My rack are also classify as Classe but with different name "Type" (1 for F, 2 for M and 3 for R)

Type : there are two types 1 for food and 2 for non-food (but in the model i send i don't realy use this column

Article : is the id of the item


Pallet : is the nimber of pallet in the order

Boxes : is the number of boxes i have to load separatly

So i consider two items are the same if they have the same Article id


In my model I have my operator loaded in batches of 35 boxes. my operator will therefore have to load 12 boxes of article 1 + 14 boxes of article 2 + 9 boxes of article 3 on the same pallet.


what I really want is for my operator to load all 12 boxes of Article 1 into the same slot by matching the Item Classe and the Type of the slot (and if there are not enough boxes to load in the slot, he must look in the nearest one with the same Classe) if he has finished, to load Article 2 he must randomly search for another slot (matching the Classe of the Article 2 with the slot type) not close to where he loaded Article 1


if you don't understand the problem, please let me know.

0 Likes
Message 4 of 13

clair_augsburgerZGWRZ
Collaborator
Collaborator

Hello @Ousmane ,

Here is a sample model that could help you: 2023-03-24 Picking logic.fsm.

gif1.gif


When the operator starts a picking order, he looks for a non-empty pallet with the matching order type, and the closest from his current location, using this query in the Pull from List activity:

WHERE Type = puller.OrderType AND boxes <> 0 ORDER BY distanceFromPickingOperator ASC

After loading a box, if the order quantity is not met, he will load the next box from the same pallet. If the pallet is empty, he will look again for a non-empty pallet with the matching order type, and the closest from his current location.

I hope that some parts of logic in this model will inspire you for your own model.

0 Likes
Message 5 of 13

Bamba_Ousmane
Not applicable
I am thinking about a method, but to do it , i will need to store the Article Id of the the previous box and use a "Decide" to compare the Article id of the two boxes. Do you have a idea how to do that?


Thank you

0 Likes
Message 6 of 13

clair_augsburgerZGWRZ
Collaborator
Collaborator

Before you unload a new box on the pallet, the previous box is the last box on the pallet. You can get a reference to the last box using the last property:

https://docs.flexsim.com/en/23.0/Reference/CodingInFlexSim/FlexScriptAPIReference/Tree/treenode.html...

For example in the picking logic of the model that I posted earlier, this statement:

token.palletToFill.last.Type

would return the type of the last box stored on the pallet to fill.

0 Likes
Message 7 of 13

Bamba_Ousmane
Not applicable
Accepted solution

I developed a model that does approximately what I want.


during my picking, I use a "Decide", where I compare the value of the previous article with the article that I am about to pick. once it's the same label, I pick near to where I picked the previous article, otherwise I pick randomly.


attached my model


Mini modele preparation.fsm

0 Likes
Message 8 of 13

Bamba_Ousmane
Not applicable
it works for one operator, but i have a problem when it is more than one operator. because each operator modify the global vairaible i set.


can i have a variable for each operator ? or is there another way to do what i want to do?

0 Likes
Message 9 of 13

moehlmann_fe
New Member
New Member
You could use a label on each operator instead of a global variable.
Message 10 of 13

Bamba_Ousmane
Not applicable
How can i do that ? can i have a example please ?
0 Likes
Message 11 of 13

moehlmann_fe
New Member
New Member

You would create a label "Changement" (or a different name) on each operator. And whenever you access Changement in the Process Flow you would exchange it with "token.preparateur.Changement". (At least as far as I could see, you only use the value in the section at the bottom left, in which the operator picks the items.)

1679991668705.png

0 Likes
Message 12 of 13

Bamba_Ousmane
Not applicable

Thank you very much, it works has i want.


attached the last version of my model


Mini modele preparation.fsm

0 Likes
Message 13 of 13

jason_lightfootVL7B4
Autodesk
Autodesk

Hi @Ousmane, was one of Ousmane's or Clair A'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