We have been shortlisted! We are delighted to be nominated for 5 Tech for Good awards for our work with South African charity Shout It Now. Read more here.
<!– CONTEXTID_266 –> The Cycle Matrix is an additional option to consider for controlling the sequence of work. Most simulations do not need to use it, but in some cases, it can be a useful alternative to help with the flow of work. This is particularly true when the main consideration is the list of tasks done at an Activity, rather than the list of tasks done to Work Items moving through the simulation. To understand how the Cycle Matrix fits into the overall scheme for routing work in Simul8, read the page on Alternative Routing Methods first.
The Cycle Matrix defines the cycles of work at each Activity. To access and update the Cycle Matrix, use the Data and Rules tab.
Rows in the Cycle Matrix
Each row represents a task that Activities connected with the Matrix will cycle through.
Immediately after the simulation is reset, each Activity using the Cycle Matrix will try to perform the first task related to that Activity as listed in the Cycle Matrix. After an Activity has completed its last task, it will start again at the first row in its list.
Columns in the Cycle Matrix
Name of the Activity. Enter the name of the Activity, or double click the cell and select from a list of available Activities.
If a cell is blank, then it assumes the same Activity as the row above it in the Cycle Matrix.
This is the sequence that the Activity does work. For example, each task in the Cycle Matrix for a specific Activity will take a value that is one higher than the previous task. This number is only used by Simul8 to cross reference between rows and Simul8 will search all rows for the value it needs, so there is no requirement to number the tasks sequentially.
Note: Task numbers must be positive integers.
Any text to act as a reminder about the task (not used by Simul8).
This column allocates the type of task to be performed. Enter the name of the task or double click to choose from a list of available tasks. The task type affects the meaning of some other Cycle Matrix columns.
The following task types are available:
- Unload From: Take a Work Item into the Activity from the Simulation Object listed in the ‘From/To’ column (see details below). If the ‘Work Type’ and/or ‘Job’ columns are empty, any Work Item may be loaded from the specified Objects (using priority rules defined externally to the cycle matrix).
Otherwise, the ‘Work Type’ and/or ‘Job’ columns are used to check the labels of the Work Items available in the specified Object and only Work Items that match will be loaded. ‘Work Type’ and ‘Job’ must match the value in the Work Item's respective labels.
The ‘Time’ column determines the time taken to perform the loading operation.
If the Work Item is not available for loading, then the Activity will wait in this stage until it is able to start the loading time (see ‘Waiting%’ column below).
- Load To: Send the Work Item to the simulation Object listed in the ‘From/To’ column. If this route is blocked, the Cycle Matrix will record the time in the ‘Waiting%’ column - see below.
- Work: The Activity will work for the amount of time in the ‘Time’ column. This could be a number, a reference to a distribution or a calculation. If the ‘Work Type’ and/or ‘Job’ columns are non-zero, the labels of the Work Item will be tested. If they do not match, this task will be skipped. This lets you specify several different tasks depending on the nature of the work to be done.
- Wait Begin: Do nothing until the state of the Simulation Object in the ‘From/To’ column matches the state in the ‘State’ column. The state can be defined with a generic state - such as ‘Empty’ or ‘Loaded‘ - or may be a task number listed for the referenced Activity elsewhere in the Cycle Matrix.
An Activity can reference itself for this type of task. For example, ‘WC1’ might ‘Wait’ until ‘WC1’ is ‘Loaded’ because some other Activity in the Cycle Matrix has a task that will ‘Load To WC1’.
Note: Values in the ‘State’ column must be positive.
- Wait End: Do nothing until the Simulation Object in the ‘From/To’ column has completed the state in the ‘State’ column. If the simulation Object in the ‘From/To’ column is not in the specified state when this row of the Cycle Matrix is entered, it will wait until the state does match and it is complete.
Note: Values in the State column must be positive, and the states ‘Empty’ & ‘Loaded’ are not supported for this type of task.
- Goto: Instead of going to the next row in the Cycle Matrix, go to the task number in the ‘State’ column. The number may be a variable or calculation.
If the result of the calculation is –1, the Activity will wait in this state.
If the result of the calculation is 0, the Activity will go to the next task in the list, whatever its task number.
Immediately before the calculation is evaluated, the Visual Logic in the ‘Visual Logic’ column will be obeyed.
Can be blank or can take a value to specify the required value in the Work Item's ‘Work Type’ label (see task type ‘Unload From’ above).
Can be blank or can take a value to specify the required value in the Work Item's ‘Job’ label (see task type ‘Unload From’ above).
For tasks that communicate with other simulation Objects, this column defines the other Object. Enter the Object name or double click the cell to select from a list of available Objects.
The time this stage will take, in time units specified in the Clock Properties menu. Alternatively, specify a ‘Named Distribution’, a ‘Global Data Item’ variable or a calculation to specify the time.
Used to specify a stage to wait for, depending on the content of the ‘Task Type’ column (see above for details).
For example, if the Activity should wait until ‘Activity 2’ is in task number 26, then enter 26 in the ‘State’ column and ‘Wait’ in the ‘Task Type’ column.
Alternatively, if the Activity should wait until 'Activity 2’ is empty, enter ‘Empty’ into the ‘Task Type’ column.
Permitted values for ‘State’ are any positive integer value, ‘Empty’ or ‘Loaded’.
Note: ‘Empty’ and ‘Loaded’ are not supported for ‘Wait End’ task types
The image to be displayed while the Activity is in this stage. Type the name of the Simul8 Image (from the Image Library on the View tab) or double click the cell to select from the available list. Leave this column blank to have Simul8 use the images listed in the normal Activity/ Graphics image animation dialog.
Stage (read only)
Once the simulation has been run, if the Activity has referenced the Cycle Matrix, then this column will show the currently active stage of the cycle.
Waiting% (read only)
Results data. The percentage of time the Activity has spent waiting to start this stage. For example, for a ‘Load’ stage, the Activity will record the time it had to wait if the required Work Item is not available to load.
Active% (read only)
Results data. The percentage of time the Activity has spent working at this stage. For some stage types this will always be zero. For example, ‘Wait’ type stages, where as soon as the waiting reason is satisfied, the Activity moves to the next stage in the cycle.
Cycles (read only)
Results data. The number of times the cycle has been started.
Setting Activities to use the Cycle Matrix
Now the Cycle Matrix has been set up, Activities can use it for their Timing, Routing or both.
To use the Cycle Matrix for timing, select the Activity you want to apply it to, go to the Properties Tab > Timing > Use Cycle Matrix. Clicking ‘Details’ will open the Cycle Matrix.
Similarly, to use the Cycle Matrix for routing decisions, select the Activity you want to apply it to, go to the Properties Tab > either Routing In or Routing Out > Cycle Matrix. Clicking ‘Details’ will open the Cycle Matrix.
Resources are not compatible with the Cycle Matrix.
The Cycle Matrix is a highly advanced feature providing a lot of control. It is designed for the precise control and movement of Work Items through a multi cycle Activity, or group of Activities. It is not recommended for the simulation of staff or any other type of resource - they will need to be simulated separately.