Learn

Designing high quality simulations

Jul 15, 2024

A Simulation is a model that shows how resources flow through a system over time.

Determine the problem you are trying to solve.

Imagine your vineyard business is booming. You know you want to reinvest profits back into the business, but you’re not sure which area would have the most impact.

Should you invest in equipment to speed up grape processing, OR should you hire a new employee for the coming season?

Your fear is that a new employee will not have enough to do, but improving equipment could increase wine production beyond what the current staff and infrastructure can handle. This is the problem we want to solve: would it be overall better for our company to augment staff or buy more equipment?

I want to Simulate…

“A vineyard to determine if it would be better to buy equipment or augment staff”

https://app.simily.io/sim/240987a2-3d3d-4c1c-92ec-cab722c5cf3a


Determine what resources are most important to solving your problem.

Resources are anything produced or consumed in the simulation. Using our vineyard example above, we need to think about what we are hoping to test and  measure. 

  1. “Labor hours” One of our considerations is hiring new staff, and in as broad of terms as possible what that staff produces is labor. We should be considering labor at all stages of our process.

  2. “Bottles of Wine” If we want to be successful, we need to ensure any changes we make to our process result in an increase in production.

I want to Simulate…

“A vineyard in terms of labor costs and total wine production”

https://app.simily.io/sim/95d85fc7-4006-4079-b00b-846677f0b424


Determine which Formulas are relevant to your problem.

Formulas are the individual working parts of your simulation. Let's consider the journey of a grape through our vineyard, the equipment involved, and the labor costs incurred.

  1. “Grape Harvester” First our grapes must be harvested, which consumes a fair amount of labor and produces fresh grapes for processing.

  2. “Grape Press” The grapes are pressed to extract the juices, this consumes labor (at different rates depending on the equipment involved) and produces grape juice.

  3. “Fermentation Process” The juice is divided into fermentation tanks where it ferments over time. How much fermentation capacity do we need anyway? This consumes juice and transforms it into raw wine.

  4. “Clarification Process” The wine fresh from the fermenter has some impurities that we’d like to filter out. The rate at which this can be accomplished depends on the equipment involved, as does the labor cost. It consumes raw wine and labor, producing a slightly lower volume of wine ready for aging.

  5. “Bottler” Our wine is ready for aging, so we need to dust off our old bottling equipment. This consumes empty bottles, wine, and labor hours, and produces bottles of wine.

  6. “Worker” The grapes require tending at almost every stage, a worker produces labor hours (at a rate of about 8 per day).

I want to simulate…

“A vineyard from grape harvest to grape aging” 

https://app.simily.io/sim/a305968e-83d1-4387-aa86-257cfe9fec04


Think about Caches (AKA Storage)

Caches are where things can accumulate. When a batch of grapes is done pressing, the resulting juice needs to go somewhere! 

Does it flow directly into the fermentation barrels? Or does there need to be a storage tank for accumulating unprocessed juice? If that storage tank fills up, will we be able to continue pressing grapes?

Most processes break down if there is nowhere to accumulate resources, or store outputs.

All Simulations generated by Simily ensure adequate cache space for all resources passing between Formulas.


Define Thoughtful Connections

Connections define how resources flow from one thing to another. Where something goes next is often more important than where it was created. 

In our vineyard example, we must ensure none of our pre-clarification process wine ends up in bottles, so our connections must reflect this.

Further, our connections should determine which Formula gets priority if resources are scarce. Consider two workers: Alice and Bob. Alice is an expert at operating the grape press. We can use connection priorities to ensure that Alice's labor flows to the grape press when needed before any of her other duties. But will that lead to lower priority jobs getting neglected?


Conclusion

By following the steps above we can design simulations that are representative of the real world. With a working simulation we can identify bottlenecks, validate assumptions, try out different scenarios and turn them into real world action.

I want to simulate…

“A vineyard including Formulas for a Grape Harvest, a Grape Press, a Fermentation Process, a Clarification Process, a Bottling Station, and a Worker who provides labor to the other Formulas.”

https://app.simily.io/sim/9525126e-d70e-4d1f-9844-785d2bce9f57

But often the best way to get started is to keep it simple:

I want to simulate…

“A vineyard”

https://app.simily.io/sim/2f4dc11b-5ecf-4783-ac80-17ae312178b5

Related blogs