question

alvarolimon avatar image
0 Likes"
alvarolimon asked alvarolimon edited

Problem with performance on high initial inventory generation

I am working on a large model that includes over 1,200 SKUs.

The initial inventory for the simulation is provided for each of the SKUs, which are divided into two main categories: hanging clothes and boxed clothes. Boxed items are stored on pallets, each containing 4 to 6 boxes, while hanging items are stored directly on racks.

The racks for hanging are supposed to be 15 racks, 17 bays each, 3 levels, 280 slots, and 2 items per slot (supposed to be 2 tubes for hanging). The initial inventory for the hanging products consists of a total of 388,481 individual items.

I designed a model that generates the items, looks for a slot in the storage system, and then pushes the item's token into a list for later pulling.

The problem i encountered is that, in the hanging item generation, the model seems to slow down drastically. After the first couple of thousands of tokens the rate in which they are created and stored lowers to 50 tokens per second, approximately. At this rate, it would take about 2 hours to just begin with the simulation.

Is there a way to optimize this process, or to utilize the full capabilities of the computer?

Also:

This was tested in a capable computer, with 32gb of ram, a 3.6ghz processor, and a powerful GPU. Only a third of the available RAM was being used and neither the CPU or GPU were being fully utilized.

Unfortunately, i cannot share my model, since this is for a competition organized by Factible, and other competitors might find our question, since consulting in the forum is allowed. However, i can share the following screenshot:

whatsapp-image-2024-12-14-at-140706-09855a4e.jpg

FlexSim 24.2.2
rack storageinventoryperformance
· 2
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 ·
FindSlot or querySlot make an initial setup slow. But you know your empty structure at model start. You can create upon this knowledge addresses to slots and assign them to items directly.

Or you fill your racks systematically and assign attributes later when you retrieve products. If some slots are at start empty and it is minority in contrast to occupied slots, then you can erase them.

Or you start a simulation without any items at all and you put them into your rack only when they are used to be involved in actions of retrieving products.

I know you suggest to use more power of your computer system. But this is not easy accomplished. FlexSim is mostly a single threaded process in a CPU. And if you look into your own process it is also single threaded. Find a slot, then find next slot, then find next slot. This kind of organizing a simulation is a bottleneck in relation to performance. Once a model building is finished and you start an experimenter to run models parallel in more threads and CPU cores then system memory will be your bottleneck, because each instance needs as much memory a single running model has used. Modern CPUs have several cores and maybe hyper threads. You could easily run in parallel 12 models, but does your system have memory capacity for 12 models. If it has not then your computer system will start to swap fast RAM data into slow drive data to utilize all allowed CPU cores in your experimenter setup.

0 Likes 0 ·
alvarolimon avatar image alvarolimon Joerg Vogel commented ·

Hello Joerg,


Thanks for your comment.

Can you think of a way i could assign slots or addresses to each and every token so i can avoid using the "Find Slot" process, then? Also, should i move the objects into the storage system or would it be okay to create them directly in it, provided i have the slot?

0 Likes 0 ·

0 Answers