question

Larissa R2 avatar image
1 Like"
Larissa R2 asked Joerg Vogel edited

Set Slots according to the SKU

cenario1-manual_VS5.fsmI am working in a conceptual model of a warehouse. At simulation starts, I upload an initial inventory. During the simulation, In the box 'Storage case Picking' i have placers grabbing items that arrive in a queue and placing them in the racks. However, I would like to implement the following change in my code:

  • Create Items in the queue1 and set location by the global table 'Alocacoes' (NEED TO BE DONE)
  • Placer should grab a cart (done)
  • Insert a pallet on the cart (done)
  • Acquire 4 or 5 items on the queue (done)
  • Go to the racks and place the items(I am not sure if the items are being placed in the right slot)

I have 23 SKUs and 960 possible slots. I created a global table called 'Alocacoes' to inform a list of possible slots/addresses to each SKU. So, each SKU has among 42 to 44 slots/addresses to be placed.

When I create a box/item, I would like to check in the table 'Alocacoes' the slot available for that SKU created. Each slot can place 4 boxes. If a slot has 4 box, it needs to be considered full and select the next available address/slot in the list by the SKU.

I am not sure if I was clear enough. I hope you guys can understand me and help me to implement these changes in my simulation.

FlexSim 19.2.3
findslotslotspainted slotsflexsim 19.2.3
· 4
5 |100000

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

Joerg Vogel avatar image Joerg Vogel commented ·

You know the warehouse demo model? Look for the slot labels in properties of warehousing in the toolbox. And please read about slot labels in manual in the new chapter warehousing.

0 Likes 0 ·
Larissa R2 avatar image Larissa R2 commented ·

@Jörg Vogel, thanks for your suggestions.

I read about slot labels in manual as recommended. My model was developed by the warehouse demo model mentioned by you. Although, I still have some doubts.

As mentioned I have a SKU that can be placed in 44 slots/addresses. Actually, in order to assign the acquired Slot to the item, I am using a Custom Code activity. The activity provides two fields to define the Item and Slot respectively, as shown below:

However, I would like to Link an Item to 44 possible slots. Each slot can place 4 boxes. Once the slot has 4 boxes, the next slot that has space should receive that Item.

In the global table 'alocacoes', I already separated the Item with the possibles slots. I don't know how to set this logic in the custom code. Could you please help me? I am new at FlexSim, I am learning as long as I am practicing.

0 Likes 0 ·
1587996554323.png (26.7 KiB)
Joerg Vogel avatar image Joerg Vogel Larissa R2 commented ·

Your Logic depends alone on the InitialInventory global table. You pull for every row of your table the data wether you need it or not. There are many tokens that never creates items because the quantity value is zero. On the other hand you want to assign slots no more on addresses of a global table, you want to assign slots upon slot.SKU label value and slot.length. It is the amount of assigned items to slot.

You will need actually write or change source code of a query in SQL. @anthony.johnson answered a similar request about how to limit items in slots. The main and important variable is slot in a query.

WHERE slot.length < 5 // test if there are less than 5 items stored or assigned
WHERE slot.SKU = "a text matches" // or number value matches or label of an item

You will write a combination of logical comparisons to get a slot for a slot assignment to a storage item.

Often you find the method hasSpace. This method tests if the dimensions of assigned items fitts into a slot based on the available volume of a slot.

Now back to your request. You have a table that contains addresses for slots matching with SKU text strings in the row header. The header text is already in slot labels called SKU at them in the storage system by the painted slots tool. An item got a label called SKU with a matching text string. Now you are querying for a slot in your storage.system WHERE both labels are matching under the additional condition that there aren't already 4 storage.items assigned to.

0 Likes 0 ·
Larissa R2 avatar image Larissa R2 Joerg Vogel commented ·

@Jörg Vogel, I am sorry. But I still didn't get it.

I have the Alocacoes's table, where I say that each SKU can be addressed in 44 different slots, since the

slot.length < 5

I don't know how to program my simulation to understand that the SKU = 'DESINF.PO BRIL.ANT.16X1KG SC' can be placed in Z1-A1-1-1-1 or Z1-A1-1-1-2 or Z1-A1-1-1-3.... (44 slots as an option)

So, in my process flow, in the 'storage case picking', when I create an Item, I would like to have 44 possibles addresses for that Item.

Hence, on Find Slot, I already have the query: (WHERE slot.slotItems.length < 4), I also need to inform the 44 possibles addresses fo each Item according to the global table Alocacoes.

I don't know how to program the query 2 with this logic. Could you please help me? Is it clear? I am sorry about my English

0 Likes 0 ·

1 Answer

Joerg Vogel avatar image
2 Likes"
Joerg Vogel answered Joerg Vogel commented

@Larissa R2, here is an example model. I painted the slots of the first bay of each rack with a label. The label value is a string. My strings are "red","white","blue" and "yellow". I find a slot for a token with the clause:

"WHERE slot.slotItems.length < 2 AND SKU = $1",0,token.mySKU

token.mySKU stores a random chosen value of my color string names.

I create a box in model.

The color is assigned by executing a string:

executestring("Color."+token.mySKU)

Then I transfer the slot data from the token to the item converted as storage system data.

Storage.Item myStorageItem = Storage.Item(token.item);
myStorageItem.assignedSlot = token.mySlot.as(Storage.Slot);

I have just limited space in my rack, not by hasSpace method but through my clause. If there isn't a slot assigned to token label, I divert the created boxes into a queue.

Then I need the rack object as a destination for my move object activity.

token.mySlot.as(Storage.Slot).storageObject

Slot heights are too low to fit all assigned boxes in them, but that is what I wanted to show, that you can limit the slot content and assign by a label value completely independent from any address.

findSlot_slotlabel.fsm


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

Joerg Vogel avatar image Joerg Vogel commented ·

The model depends on the method findSlot of FlexScript Warehousing Class.

0 Likes 0 ·