Doing simulation models is an art that requires a set of skills that is quite vast. What I’m showing on this article is a composition of the skills I have needed for projects I have done or skill that were requested for projects I didn’t end up doing or even skills where I failed, leading to unpleasant situations.
Skill 1 : Simulation Modeling Logic
Duh! This was a pretty obvious one right? Well no it’s not. It is really common to tackle a project with your favorite simulation method, and this is not ok. You need to develop skills in all 3 simulation methodologies: Agent-Based (AB), Discrete-Events (DE) and System Dynamics (SD). For AnyLogic in particular, this requires a robust JAVA proficiency, but System Dynamics requires a completely different set of skills that go far beyond knowing what a stock and a flow are. I have found that people who actually excel in all three methods are extremely rare since there seems to be a complete separation between System Dynamics professionals and Discrete-Events/Agent-Based experts. In my case, System Dynamics projects are rarer but often much more complex to develop. If you want to be a pro, train yourself in all of them and take projects in all of them. If you are an AnyLogic user, you will need to develop skills also in the special libraries (pedestrian, trains, material handling, etc).
Skill 2 : Multiple Simulation Tools
You wanna be more versatile? Learn the most commonly used tools in the industry: Arena, Simio, FlexSim, Simul8, Vensim, Stella, NetLogo, Insight Maker, Python. Each tool is different and even uses different programming languages, but I have been requested to use these tools sometimes and it’s not a bad idea to get into them if possible. There is a huge and growing community of simulation developers who use Python for simulation projects. Python has libraries to develop models using the 3 methodologies: AB, DE and SD. And being all this open-source, it’s possible that in the future, Python will rule the simulation world. Who knows… but better get ready and start learning Python soon. AnyLogic will release in the future a version where Python is going to be the language to use, so if you are an AnyLogic user, there’s no reason why not to learn it.
Skill 3: Reinforcement Learning (RL)
Yeah, this is the new cool thing in the neighborhood. If you don’t know this stuff, you can’t hang out with the cool kids. In fact there are many occasions in which artificial intelligence is key to solve a problem and you have no way around it, in particular with complex sequences, path finding with obstacles and other problems where finding an algorithm is just not possible. For AnyLogic you have the RL4J library to play around with the topic, but there are many more RL resources in the Python world. So again… go learn Python now!
Skill 4: Statistics
You develop an experiment with replications and you need to conclude something based on actual science. Statistics is a fundamental skill that will be used to communicate and report simulation results to the stakeholders. If you don’t know this stuff, go buy a book.
Skill 5: Knowledge Collection and Documentation
What an overlooked skill that can lead to complete project failure. Transforming ambiguous elements communicated by the stakeholders into an objective document that clearly states the necessary knowledge to complete a project. And it seems to be difficult. I am constantly facing clients that just cannot do this and require a lot of help. The thing is that when you write down what you need to do, you discover immediately the things that are unclear or ambiguous. The stakeholder through this process understands things that were not taken into consideration. I really don’t know how to train this skill but the effective development of documents that explain the project can reduce development time and also failure risks. Some Six Sigma tools that can help the diagrammatic implementation of such a document are causal loop diagrams, process flows, BPMN, fishbone diagrams amongst others. You better not start a project without a clear scope and an effective knowledge collection strategy. I can think of 3 times in the last 3 years where I didn’t make this very important effort, and all times I ended up in extreme stress, with extra work and wasted time.
Skill 6 : Data Science
You don’t have to be a data science pro, but you need to learn your basics: databases, cleaning data, finding data, exploratory analysis, distributions, data analysis, etc. Working with data is one of the things you will need to do at some point, so get into this. Python is again a great tool for data science, but you can also use R. Please stop using Excel for this stuff.
Skill 7: Communication
This is one of these soft skills that I have no idea how to develop more than practice, practice, practice. How do you communicate results to a stakeholder? Yeah, these guys love how the simulation looks like with all the agents moving around, but you need to present your results in a very objective way, thinking about who your audience is and what is the context in which you are presenting these findings. What happens if you don’t communicate correctly? Additional work, loss of trust, impossible deadlines, etc. Sometimes some stakeholders are less willing to listen than others and navigating through these mental labyrinths might be quite challenging.
Skill 8: Influencing
Most of the times, stakeholders have no idea that simulations actually exist. And when you are competing with Microsoft Excel, you will have to convince them that simulations is a good option, and sometimes it’s very difficult to really assess if it’s the best option or not considering that it has normally a higher cost in time and effort. This is when the influencing factor comes into play. I have convinced people to do simulations in the past, but sometimes I just don’t. Am I good influencer, I have no idea, but I certainly know that it’s something important to practice and learn.
Skill 9: Bonus skills
If you want to go above and beyond you can have also skills that I normally outsource
- CAD development (to incorporate autocad models to your projects)
- 3D model development (to create your own customized 3D animation agents)
- User Interface design (to make user friendly interfaces)
- Graphic Design (to make a beautiful user interface)
- ArcGis to develop shapefiles and routing files
- Web Development (to implement customized web functionality to run your models online)
Do you think I missed something?
All Comments:
It is a good practice to cite the sources of the images you use:
A. Borshchev, A. Filippov, From System Dynamics and Discrete
Event to Practical Agent Based Modeling: Reasons, Techniques,
Tools, Proceedings of the 22nd International Conference of the
System Dynamics Society, Oxford, UK, July 2004.