Segmentation enables using the same structure of elements and equations with different sets of parameters. For example, you may run the same Process Twin multiple times for different products and geographies, or differentiate groups of cases by order value using segmentation. Segmentation enables such multi-dimensional variables, segment-wise operations between variables, and easy visualisation and aggregation across segments to drill down into segments of interest.
Segmentation is only available to organisations on silico.app and on private enterprise clusters. This feature is currently in beta testing and has limited compatibility with other features including functions and formulae. We would greatly value your feedback.
To enable segmentation in a project, go into “Project Setting” in the top left corner. In the “Advanced” section, enable the segmentation toggle. The existing project may be empty or contain a working Digital Twin
Once segmentations are enabled, you will see a new, empty section called “Segmentations” in the left-hand bar of the model builder.
Adding, Renaming and Deleting Segmentations
A segmentation refers to a single dimension used to distinguish and split the data set for which a Digital Twin is run. Examples of segmentations include “Product” or “Geography”.
To add a segmentation to a project, click the “+” icon in the “Segmentation” header in the left-hand column of the model builder. This will create a new segmentation with a default name and an empty list of segments defaulting to “All”.
To rename the segmentation, click on the three dots next to its name to open its context menu and select “Rename”. Specify its new name and confirm with the tick or by pressing enter.
You can delete a segmentation by opening its context menu and selecting “Delete”. Before deletion, you will see a list of simulation elements that use this segmentation and are asked to confirm the deletion.
Assigning Segmentations to Simulation Elements
Segmentations need to be assigned to variables. To assign segmentations to a variable, open its inspector. When segmentation is enabled for your project, the inspector includes a “Segmentations” section. The section consists of a dropdown for aggregation (see “Aggregation Mode” below) and a list of all available segmentations defined for the project.
Click “Choose Segmentation” and select all segmentations that apply to the selected variable. Different variables in the same Digital Twin can have different segmentations. You can remove segmentations from a variable by deselecting it in the list.
Without a data source used to identify segments and feed data into the segmented variables, their simulated and actual series will show “-”. This reflects that the segmentations of the data input do not match the segmentations assigned to the variable.
It is advisable to develop a working Digital Twin without segmentation first. This Digital Twin may reflect, for example, a single segment or aggregated values of all segments. Once this unsegmented Digital Twin works as expected, segmentations can be introduced to scale the Digital Twin up. This approach enables more thorough testing of the Digital Twin’s structure without the additional complexity of reusing the same model structure and aggregating or disaggregating between differently segmented variables.
Loading Segments and Data
Each segment is a single group within a segmentation. For example, the segmentation “Geography” may contain the segments “North” and “South”. Segments are automatically picked up based on the source data. A variable with the segmentation “Geography” will have two time series, one for the segment “North” and one for the segment “South”.
Segments and data points for segmented variables are loaded using the Sync Area and Data Tables. Data Tables must include the same segmentations as the variables they affect. Please visit the Sync Area and Data Table documentation for more details on importing data sets and making them accessible in the model builder.
Once the Data Table has been created and its segmentation columns linked to project segmentations, segments are automatically picked up. We can now use this Data Table to populate a segmented variable with the same segmentations.
Using Segmented Variables
Segmented variables can be used in several ways to facilitate calculations on variables with the same segmentations and to break down and aggregate segments. These different types of calculations can be combined in a single formula as long as the outcome of the formula has the same segmentations as the segmentations assigned to the variable.
Segmented Stocks and Flows
Stocks and their inflows and outflows must have the same segmentations assigned to them. Each segment of the stock is calculated using the same segment’s value at the previous timestep and the same segment of the inflow and outflow.
Variables with the same Segmentations
Segmented variables can be computed based on other ones if the affected and affecting variables have the same segmentations. As for unsegmented variables, the formula field can be used to specify equations. Silico implements a segment-wise calculation, meaning that the segment of an affected variable is calculated based on the values of the same segment of the input variables. Restrictions on the standard library of functions and formulae apply.
Multiplication with a Scalar Value
Segmented variables can be multiplied with a scalar, unsegmented value or variable. In such cases, each segment will be multiplied with the scalar value individually.
Variables with different segmentations can be multiplied using the seg_partial_mul function. For example, the “Cases Processed” variable has the segmentations “Product” and “Geography”. The “Revenue per Case” variable only has the “Product” segmentation. Using the seg_partial_mul function multiplies these two variables. The outcome has the superset of segmentations of all affecting variables - in this case, “Product” and “Geography”.
Aggregating and Removing Segmentations
Silico also has the functionality to aggregate over numerous segments. The function seg_sum adds up all segments of all segmentations to derive a scalar, unsegmented value. It can be used to derive totals over all segments.
The function seg_partial_sum aggregates by removing a single segmentation from an input variable. The example below uses this function to derive the total revenue of each geographic segment section from the segmented input variable. The outcome has the segmentations of the input less the removed segmentation.
Selecting Aggregation Mode
Silico provides functionality to determine which segment is displayed using the segmentation dropdown on the left-hand bar in the model builder and dashboards.
The dropdowns allow selecting a single, specific segment or an aggregation over “All” segments for each segmentation. If specific segments are selected for all segmentations of a variable, the variable will show the series that reflect the selected combination of segments. In the example below, 90 cases are waiting in the stock for the time series North x Bike.
If at least one segmentation assigned to a variable is set to “All”, the time series and values of that variable throughout the model builder and dashboards will include some aggregation. How multiple segments are aggregated depends on the variable’s aggregation mode specified in the inspector’s segmentation tab. If “SUM” is selected, the variable will display the total of all segments. If “MEAN” is selected, the variable will display the segments' arithmetic mean, commonly known as the average. Whether summation or averaging is the right choice for aggregation depends on the nature of a variable and the questions the Digital Twin strives to answer. In the example below, 220 cases are waiting in the stock on the final timestep across all regions and products.
The segment selection also allows combining “All” and specific segments for different segmentations. In such cases, the dropdowns can be thought of as filtering the time serieses that are aggregated. In the example below, 195 bikes are waiting in the stock across all regions.