Laptop Manufacturing Simulation
Implementing change can be a difficult task for any organization, big or small. For this purpose modeling of complex systems such as manufacturing systems is an arduous task. Simulation has gained importance in the past few years and allows designers imagine new systems and enabling them to both quantify and observe behavior. Whether the system is a production line, an operating room or an emergencyresponse system, simulation can be used to study and compare alternative designs or to troubleshoot existing systems. With simulation models, how an existing system might perform if altered could explored, or how a new system might behave before the prototype is even completed, thus saving on costs and lead times. Modeling and simulation are emerging as key technologies to support manufacturing in the 21st century.
Keywords: operational research, mathematical modelling, optimisation, simulation
Below I present only the most interesting parts of the project. The whole project repository is available here.
- 1. introduction
- 2. Input Analysis
- 3. Model Building
- 4. Output analysis
- 5. Recommnedation
- 6. Conclusion
1. introduction
In this report we will be attempting to model a simplified laptop manufacturing process using Simul8 in order to analyse the production line and suggest possible improvements which can be made with regards to its efficiency. We have been provided with a summary of how each stage of the process works. Each stage has a duration which is randomly distributed according to some probability distribution, however not all of these are given. Our first job is to carry out input analysis on some historical time data of these processes and work out how they are distributed. This will allow us to model our system as accurately as possible. We then move on to detail how we go about implementing our model in Simul8 based on the constraints outlined in the project brief. Each process in the chain uses a certain number of resources and workers, all of which need to be kept track of, whilst some processes need to wait for others to finish before they begin. All of these things add complexity to the model and will be considered below. Finally we will analyse the results produced by our model and try to use them to give helpful recommendations as to how the overall process can be improved.
2. Input Analysis
Using the data provided, we will be attempting to estimate the distributions of task durations using a variety of statistical methods, the details of which can be seen below for each missing distribution. We have data for the last 200 realisations of each of the values we are trying to estimate the distribution of.
2.1 Inter-arrival Time
We are given that the inter-arrival times for laptop orders are exponentially distributed, however, we are unsure of the rate. First, we use maximum likelihood estimation to obtain an estimate for the rate in terms of our observed data. For an exponentially distributed random variable we know this estimate to be:
\[\begin{equation*} \hat{\lambda} = \frac{n}{\sum_{i=1}^{n}x_i} \end{equation*}\]for $n$ data points $x_i$. Substituting in our values for $n$ and $x_i$ we arrive at $\hat{\lambda}=0.157776$. In order to determine the goodness of fit of this exponential distribution to our data we will carry out a Kolmogorov-Smirnov test. We obtain a test statistic of $0.560252$ which is smaller than our $95\%$ critical value of $1.094$ meaning that we cannot reject the null hypothesis and can conclude that this distribution is reasonable.
2.2 Placing the Keyboard and Mouse
We have no distribution given so we will need to estimate this one. Looking at the histogram for the data, it would be reasonable to assume that the data is normally distributed. We will take the mean and variance of the data and use these as our parameter estimates for the normal distribution. As such, we estimate that the time taken to place the keyboard and mouse is distributed approximately $\mathcal{N}(8.105474,1.430553)$. In order to test the goodness of fit of this distribution to our data we will use the Chi-squared test. This gives us a Chi-squared test statistic of $6.1$, which is smaller than our $95\%$ critical value of $14.067$ so we cannot reject our null hypothesis, thus this distribution is appropriate.
3. Model Building
Now we have carried out the required input analysis, we have a good idea of how the durations of each component of the process behave. We can now begin to put the pieces together and build a model of the entire system in Simul8. In this report we will just cover the non-trivial parts of the model that require some explanation, but the whole thing will be available in an accompanying Simul8 file. Below I present only a few steps of the modelling, the rest is available in the full report.
3.1 Arrival Process
Firstly, in our start point we define our inter-arrival distribution as detailed in our input analysis and assign an order size label to our work item, detailing the size of the order which is distributed as described in the project brief. We then move to a routing decision activity, which instantly terminates orders if the global number of laptops in the system plus the order size exceeds 30. If an order is accepted, we move to a dummy activity which assigns each accepted order a unique order number, so we can keep track of all laptops that correspond to a given order. We also time-stamp each order to give us an indication of the start time of its production - this will be useful in calculating the cycle time later on. Finally, we move to the “order_accepted” activity, which updates the global variable of number of laptops in the system, by adding to it the number of laptops in this particular order. It also batches into the number of work items corresponding to 2 times the order size, because there are two process routes which run simultaneously for each laptop.
3.2 Cutting (for the keyboard and mouse)
In the routing out options of the main activity we set our work item to move to the next stage with 80% probability and to our quality check activity with 20% probability. In quality check, we introduce a new label in the routing in “After Loading Work” section, which takes a value of 1 to indicate that this particular work item has been quality checked, before sending it back to the cutting queue. We have defined some visual logic in the “Actions” area of the main activity to send the current work item straight to the next queue if it has a label indicating it has been quality checked. This ensures that no item can be quality checked more than once.
3.3 Quality Assurance
When routing in to the quality check, we start with visual logic after loading the work item to remove the concerned laptop from the global number of laptops in the system, as we consider the manufacturing process complete here. Given that we have two type 4 workers that are required by this activity, we set replicate to 2. On exit, we define two new labels for the departure time of the laptop from the system and the cycle time which is just the difference between the start time and departure time. After this activity we have a dummy activity to add the cycle time to a new global variable which counts the total cycle time of all laptops that have passed through the system. We also define another new global variable to count the total number of laptops we have processed.
4. Output analysis
To analyse the functionality of our system, we will need to record some performance measures. We will start with the average cycle time of a laptop. As mentioned before, we start by time-stamping each laptop with a start time label as they begin the production process. We then time-stamp them again with an end time label when they leave quality check. We consider this to be the end of the production process, as beyond this point laptops sit around in the boxing queue waiting for other laptops in their order before they can be boxed. This means if we record the end time any later than quality check, all laptops will have a cycle time equal to the slowest laptop in the order which won’t give us particularly interesting results. At this stage, we also assign each laptop a cycle time label which is just the difference between its start and end times.
In order to carry out output analysis on a steady-state system we first need to calculate a warm-up time to ensure we are taking performance measures from a system which is in a stable state. We do this by looking at the moving average of the last 10 laptops in the system. To record this, we use some visual logic when a laptop exits the quality check stage. This effectively ensures that only the previous 10 laptops are included in the average cycle time calculation, calculating a new global average cycle time variable which we can plot.
5. Recommnedation
5.1 Quality Checkers
When running our simulation, it’s apparent that there is a frequent bottleneck at the final quality check stage. Running the simulation for 1 year and looking at the performance measures provided by Simul8, we see that the average wait time in the queue before this stage is almost 80 minutes.
This is far in excess of every other queue in the system, with the exception of those we dealt with in the previous part. Looking deeper at this process we see that it is carried out by Type 4 workers, of which there are only two. We investigated the effect of employing two more Type 4 workers, to see if this would benefit the process and if it is something the operators should consider. An immediate benefit of this is that the average wait time in this queue plummets to just 1.78 minutes. We would expect this to have a positive impact on the system as a whole however when we look at the new average cycle time of a laptop it appears to make no difference. If storing these items before they are quality checked is inconvenient or even costly for the factory operators, then this problem can be solved by employing extra staff who can carry out quality checks, or even training current staff members to do that job also.
6. Conclusion
In this report, we began by estimating duration distributions of various processes based on historical data. We used maximum likelihood estimation, among other methods, to estimate these distributions, before evaluating their validity using goodness of fit tests, specifically, the Kolmogorov-Smirnov and Chi-squared tests. These distributions allowed us to build a comprehensive model of the laptop production process in Simul8 which we could use to run trials and evaluate various aspects using a number of performance measures. From this, we were able to recommend that the operators of the laptop factory ensure that they replenish the stocks of their two limited-supply materials more quickly, to ensure that the overall efficiency of the process can increase. Furthermore, employing additional “quality checkers” (Type 4 workers) could have a positive impact if storing products before that are quality checked is a costly or troublesome ordeal. Finally, we highlight the benefits of allowing there to be more laptops in the system at any one time before orders start being rejected. This will have a positive impact on customer satisfaction and ultimately profits, without negatively impacting the efficiency of the factory.
For the full model description, please see the full report here.