Let us help you make better business decisions. Contact us today to start your Business Process Simulation journey.


160 Kemp House, City Road, London, EC1V 2NX, UK

Thank you! Your submission has been received.
Oops! Something went wrong while submitting the form.
The Core Simulation Elements of Silico Simulation Models
Previous Page

The Core Simulation Elements of Silico Simulation Models

What’s a Rich Text element?

The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.

Static and dynamic content editing

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila!

How to customize formatting for each rich text

Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

  1. This is it.


The core elements of a Silico simulation model are Variables, Stocks and Flows. Let’s explore the differences between each, and how they play a part in your simulation models. If you would prefer to learn about core simulation elements in video form, check out our video below:


Variables can be thought of as a column of cells in a spreadsheet, where each cell represents the value of that variable over a given period of time. Variables can hold values (or a value, if it’s a constant) that are pasted in or taken from integrated databases, or they can be determined by a Formula

Understanding the different elements in a Silico model becomes clearer with an example: let’s imagine we are the CFO of a soft drinks company, and we want to create a model that will make projections about our future sales over the next two years under different scenarios. One variable in our model might be the average rate of sale per store per week, i.e. on average, how many units do we sell each week in each store that we are stocked in? For now, let’s assume (based on historical data) that that number stays steady at ten units per store per week throughout the simulation period.

Now imagine we want to determine the total number of drinks sold per week. For this, we also need to know the number of stores stocking our product. The number of stores we are stocked in is something that accumulates over time. As such, that can be best modelled as a stock.


Stocks represent elements that accumulate in a model. Think of things like houses in a neighbourhood or the population of a city. Or things like cash on a balance sheet, the number of employees in a business, or the number of goods in a warehouse. All of these things maintain their value unless changed by, for example, building new houses, births and deaths, revenues and expenses, or shipping goods to and from a warehouse. As such, they should be modelled as a stock. 

In our example, the number of stores that the drink is stocked in today is classed as a stock. This is because it has accumulated over time based on how many stores we have “won” per week (i.e. gained a listing with) and how many we have “lost” per week (i.e. lost a listing with). Let’s say that at the beginning of the simulation (January 2022), our company’s drinks are stocked in 600 stores.

Unlike variables, stocks only need an initial value - a value for the start of the simulation period. In this example, we can therefore enter 600 as the initial value of the stock. Of course, we want this value to change over the course of the simulation. This is to represent our company winning and losing new listings as the simulation progresses. To change the value of a stock, we use flows.


Whilst stocks represent points of accumulation in a system, flows represent the rates of change of those stocks. Something that increases a stock’s value is an “inflow”, whereas something that decreases a stock’s value is an “outflow” (note: if an inflow is a negative number, it will actually decrease a stock that it is connected to. And if an outflow is a negative number, then it will actually increase a stock that it is connected to).

To continue our example, the number of stores we “win” per week is classed as an inflow, and so the arrow of the flow should point into the stock (to represent addition). On the other hand, the number of stores we “lose” per week is an outflow, and so the arrow should be pointing out of the stock (to represent subtraction).

Let’s assume that our company’s sales team typically wins two stores per week. If we enter this as the value for the “win” flow and then connect it to the stock, we can see the stock increasing over the simulation period. The stock increases from the initial value of 600 all the way to 808 at the end of the two years (104-week simulation period, with a weekly increase of 2).

However, we still have to enter a value for the “lost” flow to represent that we also lose stores as well as gain others. Let’s say that, on average, we typically lose one store every week. When we enter this value for the outflow, we see that it slows the growth rate of stores that we are stocked in. Accounting for these lost listings, we will now only be stocked in 704 stores at the end of the simulation period. This is because the net flow (the inflow minus the outflow) is now just one store per week instead of two.

Note: a stock can only grow when its inflow(s) is greater than its outflow(s) and can only decrease when the inverse is true. When a stock’s inflow(s) is equal to its outflow(s), then it will stay in equilibrium (i.e. its value won’t change). 

Identifying when a variable is a stock and when it’s a flow is a learning process, but once it clicks, it becomes second nature. As a general rule of thumb, stocks represent a state at a point of time. For example, the number of employees working for a business on January 1st 2022. Flows, on the other hand, describe the change in those stocks over a given period of time, i.e. the number of people who were hired by that business over the month of January 2022. 

Here are a few other examples of variables that are best modelled as stocks and flows:


Now that we’ve simulated the number of stores that we are stocked in, we can now simulate the number of drinks sold per week, which we can introduce as a new variable. 

Rather than assuming a value for this variable, it will be determined using other variables as inputs. The inputs, in this case, will be “Stores stocking product” and “Drinks sold per store per week”. We can highlight the fact that these are inputs by using the “connectors” in Silico, which highlight the fact that one variable is used to calculate another. 

These inputs will be combined with the below formula, the logic of which is fairly straightforward:

This is similar to using cell references in a spreadsheet. However, instead of referencing by confusing cell names such as “A$31*B33”, we are using real variable names that make the equation much easier to understand. This helps users to avoid the common cell reference errors that partly explain why 90% of spreadsheets have significant errors. 

Once a formula is written in Silico using other variables as inputs, Silico will then automatically calculate a value for each week. So, for example, the number of stores stocking the product in week 52 (652, in this case) will be multiplied by the average rate of sale for week 52 (which, for simplicity in this model, stays at 10) to give the total number of drinks sold in week 52 (6520 drinks sold in that week). 

The value shown on the model interface is the value at the given time period, determined by the cursors at the green bar at the bottom of the page:


It is also possible to add “Actuals” data to each variable/stock/flow. This allows you to paste in (/integrate from a database) actual historical data for a certain variable so that you can compare it to the simulated values for the same period. This is why we usually start simulations in Silico at a past date: it allows us to test the simulations of the model against historical data. So, in this model, we might paste in actual data for the total drinks sold per week from the start of the simulation period (Jan’ 22) until present to see if there is a sufficient match between the simulated data and our actual real data. 

If there is a large discrepancy between actual historical data and the simulated data for this same period, then this should be cause for investigation - perhaps our simulation is missing important variables or overestimating the impact of some. Of course, some variation is expected between actual data and the data generated by any simulation model. This is because simulation models, like all models, are not perfect replicas of reality. Rather, they are tools that help us to navigate the complexity of that reality to help us make better decisions. Think of the way you use a map to get to a destination: the map is not the terrain you are travelling on, but it helps you make the right decisions (turn left here, turn right there) to get to the desired destination! 

In our drinks company model, we have so far used it to make a simple projection about the future number of units sold per week. However, we can also use it to test how different store win rates might impact the units sold or how different rates of the sale in each store might impact sales. Or we could expand our model to include many more parts of the business, such as production expenses, marketing/sales costs, and pricing dynamics. It is when this additional complexity gets added that the true value of simulation models comes to life.

We will begin expanding this model in our next blog post, covering lookup tables!