question

a_ltf avatar image
0 Likes"
a_ltf asked a_ltf commented

Optimize Routing and scheduling in a job shop

JSS.fsm

i want to set a sequence of products parameter to find minimum Run time in total

the model consists of 6 machines 4 products with distinct Quantity, Routing, processing time on each machine, but i am not able to link those tables to the model

i also want the model to route the product in the next machine's queue if the next machine is busy

1664386094388.png

FlexSim 22.2.1
routingjob shopoptquest scheduling
1664386094388.png (155.6 KiB)
jss.fsm (156.3 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

Jeanette F avatar image
1 Like"
Jeanette F answered a_ltf commented

Hello @Ahmed_mohamed L2,

I connected the in queues to their corresponding processor and the processors to their corresponding out queue.

I edited the process time for all the processors to look at the Global Table called Process for the process times.

1664393008540.png

In Process Flow I use an event triggered source that created a token when an item enters the IN queue. From here the Assign labels activity creates a Label called Step that tracks what step the item is on and assigns labels for the In and Out queues for that step. The item is moved to the in queue and then the token waits for when the item enters the out queue. The token then checks if there is another step and either loops the token for the next step or send it to move the item to the OUT queue.

1664393327623.png

I am confused as to what the Sequence Parameter is for. Could you please elaborate on what you are trying to accomplish with that? Is the Global Table called steps supposed to change for each scenario?

jss_JF.fsm


1664393008540.png (12.3 KiB)
1664393327623.png (25.3 KiB)
jss-jf.fsm (164.5 KiB)
· 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.

a_ltf avatar image a_ltf commented ·

hello @Jeanette F
thank you so much for your effort, i appreciate that, the logic seems very convenient however for most items they don't continue their route to the end.
Sequence Parameter here is set priority for which products enters the machine first, thus set the optimizer to minimize the Runtime

i want to make the same model as this video
https://www.youtube.com/watch?v=7FUoaUzSxRY&t=27s

0 Likes 0 ·
Jeanette F avatar image Jeanette F ♦♦ a_ltf commented ·

Hello @Ahmed_mohamed L2, The wait for event should say match instead of assign and this fixes the problem with items moving through the model. I will look into the video and get back to you.

1664400838237.png

I updated the model

jss_JF.fsm

1 Like 1 ·
1664400838237.png (32.0 KiB)
jss-jf.fsm (164.5 KiB)
Jeanette F avatar image Jeanette F ♦♦ a_ltf commented ·

Hello @Ahmed_mohamed L2,

I made the following changes to the model.

On the source on creation trigger I created a label called Priority. This label looks at the Sequence parameter and looks for what index the Type value is in. So if the array was (2,1,4,3), then an item of Type 4 would return a priority label of 3.

Model.parameters["Sequence"].value.indexof(item.Type)

This priority is used in the pull strategy on all the processors. The Pull strategy is to pull an item with the lowest value of the label Priority.

1664404718002.png

Next I created a Tracked variable called RunTime. In the process flow I set that variable before the token is sent to the sink, so when the last token is sent that is the time the last item was moved to the OUT queue. The Performance Measure then references this tracked variable.

In the Experimenter's Optimizer you can set the objective to minimize the performance measure.

1664405189331.png

jss_JF_3.fsm

1 Like 1 ·
1664404718002.png (14.0 KiB)
1664405189331.png (44.6 KiB)
jss-jf-3.fsm (269.6 KiB)
a_ltf avatar image a_ltf commented ·

@Jeanette F i can't thank you enough! , I've been looking for this for weeks.


0 Likes 0 ·