question

Osama A6 avatar image
0 Likes"
Osama A6 asked Kavika F answered

Model uptime, down time, lunch breaks, shift schedule, etc...

Hello,


I'm trying to model a small workshop that operates 4 shifts per day. Each shift operates for 6 hours. For simplicity, let's assume that we have 3 machines always working in series (M1->M2->M3). Each machine has a queue. Each machine has a setup time and a processing time. I want to add the following:

1- Add (74%, 90%, and 85%) uptime, respectively, for the three machines.

2- Each machine has one operator, and he changed after 6 hours with a new operator. I want to run the simulation for 1 week (5 working days).

3- Each operator is responsible for one machine, and he takes an 1/2-hour lunch break.

4- Assuming we are using two forklifts or two operators to transport parts (who also take a 1/2 hour lunch break), setup time is 1/10 of the processing time.

I want to learn these things one-by-one. Please use FlexSim 2022.

3Machine_no_shifts.fsm

Thank you,



FlexSim 22.2.0
FlexSim 23.0.1
scheduleuptime
· 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.

Jeanette F avatar image Jeanette F ♦♦ commented ·

Hi @Osama A6,

To receive a more accurate solution, please post your model or a sample model that demonstrates your question.

Proprietary models can be posted as a private question visible only to FlexSim U.S. support staff. You can also contact your local FlexSim distributor for phone or email help.

1 Like 1 ·
Osama A6 avatar image Osama A6 Jeanette F ♦♦ commented ·

have added a simple model for the problem.

0 Likes 0 ·

1 Answer

Kavika F avatar image
1 Like"
Kavika F answered

Hey @Osama A6, let me point you to some resources that may be helpful in getting your workshop working.

You mention that your operators work in shifts. You can create a Time Table that outlines the start times, end times, and breaks for each shift.

1678306346966.png

You can add 4 operators per machine and then attach each operator to a different schedule so your operators can rotate working on the machine or taking breaks/going off shift. You can also use this if you have scheduled downtime on a machine that you know will happen at the same time each day/week (for example, M1 goes down 2-2:15PM on Tuesdays for scheduled cleaning). Above is an example Graveyard shift where an Operator will start at midnight, have a break from 03:15 to 03:45 AM, and continue their shift until 06:00 AM. The purple block denotes they're in a "Lunch" down state while the red denotes "scheduled down". You can adjust these states and colors as you like.


If you don't know when your machines will break down or you want some variability in downtimes, then you can use an MTBF/MTTR schedule.

1678306463988.png

This schedule lets you specify around what time the first failure will occur, for how long, and then how long the machine will continue to be up until the next failure. We don't necessarily have a way to input that a machine will be up "90%" of the time, but you can adjust your times and statistical distributions to get close to a desired amount of uptime/downtime ratio. For example, if you set your uptime to be 900 seconds and your downtime to be 100 seconds you'll get an exact ratio of 90% uptime; however, it would be more realistic to set a distribution (like the one in the image) that says uptime is about 1000 seconds and downtime is around 50 - 100 seconds.


For your processors, if your processing times are constant, it will be simple to calculate the setup time and input them respectively. However, if your process times are a distribution, then you may have to do something different. You can use an Object Flow (a type of Process Flow), attach each Machine to it, and then have it calculate the necessary process and setup times.

Here's an example Object Flow and example custom code to set the times.

1678307362694.png

/**Custom Code*/
Object current = param(1);
treenode activity = param(2);
Token token = param(3);
treenode processFlow = ownerobject(activity);

double processTime = triangular(10.0, 20.0, 15.0, getstream(current));
double setupTime = processTime / 10;

// print("processTime:", processTime, "\tsetupTime:", setupTime);

current.setProperty("SetupTime", setupTime);
current.setProperty("ProcessTime", processTime);

When an item arrives at a Processor, a token is created at the "Item Arrives" activity. It moves down to the custom code to calculate and set the processing time (currently a triangular distribution) and the setup time (a tenth of that) to the current processor attached to the Object Flow.

I hope this helps you get started with your model! 3machine-no-shifts_1.fsm


5 |100000

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