Updated: Apr 6
From start to finish, best practices and practical advice for doing a simulation-based project
I was recently invited by Prof Johan Joubert to do a guest lecture to 3rd-year industrial engineering students at the University of Pretoria. The topic? My choice...
At first, it was really difficult to choose from the many things I have learned about simulation and doing simulation-based projects over the last decade or so. It was hard to think back and imagine what I would have liked to know when I was in their shoes....
In the end, I decided to give a more holistic view about doing simulation projects and discuss the life cycle of a typical simulation project, highlighting best practices, practical advice and showing some "simple" examples
Life cycle of a simulation model
Defining the Problem
Analyze the Results
Report on the Findings
This post focuses on the first step and future posts will focus on the remaining steps - you can start watching the lecture from step 1 here, or continue reading the blog post.
Note: Although one does go "back" in later steps to do some activities during previous steps, you by no means redo the entire step. The steps listed above are guidelines of the general steps that a typical project follows. On all steps, you can go backward and revisit previous steps, but unlikely that you will skip a step or move forward before completing a step to at least 80%-90%.
For a more insightful discussion on the matter read here
1) Defining the problem
This is by far the most important step, not only in a simulation-based project but in almost any project.
If you do not define the problem accurately your chances of success drop dramatically.
I break the problem definition phase into 3 steps 1) The problem
2) The scope
3) The model purpose
1.1) The problem
Be very detailed and specific when describing the problem. You need to ensure that you cover:
The who? - Who is experiencing the problem
The what? - What is the problem they are experiencing
The why? - Why is it a problem that is worth solving - talk about the negative impact of not solving it or the positives of solving the problem
The where? - Where is this problem being experienced
Remember to be SPECIFIC but also SUCCINCT!
Proper problem definition is an art that will only be improved through experience and practice.
When you have a problem properly defined you need to critically assess whether or not simulation is the best tool for the job...
Don't be like Dave's boss...
For this exercise, we are going to assume that simulation is the best tool for the job and move on....
1.2) The model purpose
What is the objective of your model? What will you be trying to achieve with your model.... In essence, it should either solve your problem or give you the insight to solve your problem.
The model purpose is usually more abstract and at a higher level than the problem.
1.3) The Scope
Here are some key points to remember:
Don’t try and boil the ocean
Start small, but keep the big picture in mind.
Be specific, scope creep is real!
EDIT: On a LinkedIn post about the full lecture Stefan Bengtsson added a valuable addition to this step by noting that one also need to add special consideration to two very important factors: Stakeholders and Time Frame. Both of these have a significant impact on the model purpose and scope.
Stakeholders: Who will be receiving the model and using it?
A model where a Marketing Director or a CEO is in the loop, most likely should be designed differently than one that just has individuals related to production and logistics. The important questions are usually: 1) How should we visualize to get the message through to the stakeholders? 2) What type of interactivity should be added, given the stakeholders?
Time Frame: Is the model to be used to influence a decision next week or do we have all the time in the world?
The time available to build the model will severely affect the modeling strategy. With less time, we need to cut corners, think more conceptually and use a higher level of abstraction. With more time, the situation is very different. You can structure your model architecture differently, include more visuals and functionality etc.
Now let's look at an example
Image a retail store owner is experiencing higher than normal queue waiting times and customer complaints are through the roof. One of the managers suggests that they move away from their current queue per server setup to a Single queue for multiple server setup.
The owner is all for this change but fears the risks involved in making such a change without knowing if it will really improve the customer queue waiting times or not.
So let's start with the problem definition, which one of the following options provides the best problem definition?
Option 1: A retailer wants to investigate the option of moving from a queue per server setup to a single queue for multiple server setup.
Option 2: A retailer wants to quantify the impact on the customer average queue waiting time in their shop when moving from a queue per server setup to a single queue for multiple server setup.
The problem with option 1 is that the term investigate is very ambiguous. What exactly do we want to investigate? Floor space utilization? Environmental? Social distancing?
Option 2 provides us with an adequate amount of detail about the problem and what exactly the person wants to know.
Should we use simulation?
Simulation sounds like the perfect tool for the job!
Using simulation to create a digital twin of the retailer's shop will allow him to test this new setup. As we all know digital twins are a great solution because they can:
consider all the dynamic interdependencies critical system interdependencies, constraints, complexities and variability
produce a range of likely outcomes for single scenarios, do sensitivity analysis and direct scenario comparisons
creates a low-risk, low-cost way to test the impact of any changes on both operational and financial performance
provide fast feedback, compared to real-life where there might be a significant delay in getting the results from a pilot study or other experiments
Which one of the following options defines the model pupose the best?
Option 1: Model must be able to simulate the customers arriving and queuing in front of servers or queueing in a single queue and then being served.
Option 2: To accurately measure the change in the average customer waiting time between a queue per server setup versus a single queue per multiple server setup.
The problem with option 1 is that simulate does not capture the specific model purpose, whereas option 2 leaves no room for second-guessing.
Now for the easy part... Let’s keep the scope short and simple… at least for the first phase of the project ;-)
Use historical server data for customer arrivals
Servers modeled as a simple delay
Measure customer waiting time in queue
But why not add the following?
Each product in historical customer order modeled individually
Customers will occupy 3D space in the queue based on trolley/basket/bag and number of products
3D layout of the shop
We need to ask ourselves: does this help the model meets its objectives?
Sure, there are some cases where you can argue that the additional features will increase confidence in the model results or that it can be used for model verification. Just be aware that any additional scope you add might cause unneeded complexities and possibly delay the project...
Well done! We have made it through the first phase of the simulation model life cycle!
In the next post, we will take a look at working with the data!
Looking forward to the next post on best practices for building your model?
Watch the full lecture here , the video below starts at step 1
If you liked this post, you are welcome to read more posts by following the links above to similar posts. Why not subscribe to our blog or follow us on any of the social media accounts for future updates. The links are in the Menu bar at the top or the footer at the bottom.
If you want to contact us for some advice, maybe a potential partnership or project or just to say "Hi!", feel free to get in touch here and we will get back to you soon!