question

Williem Olivier DJ avatar image
0 Likes"
Williem Olivier DJ asked Joerg Vogel commented

How can I allocate different item types to different cells in racks?

Good day,

I'm building a model to simulate how long it would take to sort a warehouse. The products are located at different locations and I would like to sort the same products together from where they currently are.

The warehouse has about 19 racks of 4 levels and 12 bays each. The products are stored according to the following for example: B201 means that it is in rack B, level 2, bay 01 (ordered from the front to the back). About 53 products need to be sorted. For example product A is currently stored at B201 and D112. I would like to simulate a forklift to move the product from D112 to B201. And I would like to sort the other 53 products as well. Currently I modeled the source so that 537 products are produced once the model starts since the total number of boxes are 537 of 53 products. The blue boxes are the one's that don't have to be moved since the red ones are moved to the blue ones of the same product ( or thats the plan).

Should I use a global table? I tried to insert custom code to search the location of the itemtype in the global table, but just does not want to work.

Currently 2 forklifts are used since I can't find a way to move products between certain racks from one specific location to the next location.

The idea is then to see how long it would take to sort the warehouse and then I can calculate how much it would cost. Please find the model attached.

Kind regards

Willie

warehouse.fsm

FlexSim 7.7.4
rackssortingrack sorting
warehouse.fsm (47.4 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.

1 Answer

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

The racks hold all items and you explicitly release the items. This means you set at the racks properties in the Flow function Send To the option Do Not Release. Now you have the full control when, where and through which port the item leaves the rack. Each rack has got an output connector to the other racks. This way you set the output port number in the command "releaseitem(obj item in a rack, port number to the destination rack)".

You need a list of the blue items. In your current FlexSim version this will be a global table. The columns contain the type, rack, bay and level. You can fill the racks with items and then fill the table in an investigation over all racks, bays, levels to find the blue items, or you you fill the data in the global table at each racks' properties function Place in Level. There you have the bay as a variable, the type of the item, the level the item will be placed and obviously the rack itself as the data to put in the global table. And now it is up to you if you look for the first global table data row a suitable item to release. Or you look for the first item in the first rack a matching item type in the global table. Then you need the output port number the item must leave its current rack. You find this port by testing all outobjects connected to the rack the item belongs to. You get the other racks and other out objects by the command outobject( node object, and it's output port number ).

I am not sure if you can put pointer directly in a global table in your FlexSim version. If it doesn't work, you convert the treenode or object pointer into a number by the command tonum(object node) and you put that number in your global table. If you need to compare object nodes, you can compare the converted numbers or you convert the number back to a node or pointer with the command tonode(object number) as a treenode.

You find needed commands in the Command Manual Categorical Index in the section Rack. For example rackgetitembybaylevel to get a treenode reference of the item in a cell of the rack. If you know an item, the rack is the container of the item. You get the rack by up(object or node of item).

The Transport isn't complicated to achieve. You connect all your racks to dispatcher object by Centerport connection and activate just the Use Transport option in Quick Properties or the Racks Properties. The standard will create transport Tasksequences which are send to the Dispatcher, which are connected at the first centerport. You connect the Transporter by an Object connector (A-type) from the Dispatcher to Transporter. At the time you executes the releaseitem -command with the reference of item an output port, the FlexSim engine creates automatically by the option Use Transport the transport tasksequence and dispatch the sequence to the the Dispatcher, who will transfer the sequence to the first available Transporter.

You need probably a path network to prevent the Tranporter to driver through the racks. Please look into the tutorials and the manual, or ask a new question.

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

Ranggi M avatar image Ranggi M commented ·

Hello, regarding this answer it will works if the object origin and destination is different. How I can make it works if, the origin and destination object is the same rack but different bay or level? And I need a transporter to do this action.Thank you!

0 Likes 0 ·
Joerg Vogel avatar image Joerg Vogel Ranggi M commented ·
Please ask a new question. This answer applies to an older FlexSim version 7 to 19.1. If you have a different version, then this answer doesn’t suit your needs.
1 Like 1 ·