Cycle-time builtins

This section describes the following builtins:

Imagine that you and three of your colleagues are asked to run an obstacle course. You start at 1:00 PM, and complete the course at 1:35 PM. The first of your colleagues begins at 1:05 PM, and completes the course at 1:42 PM. The second colleague begins at 1:10 PM, and, being somewhat more athletic than you, completes the course at 1:35. The third starts at 1:15 PM, gets stuck somewhere, and exits the course at 2:15 PM. Because you know the start and completion time for each person (or batch) in the group, it's possible to calculate a variety of useful cycle-time metrics.

The cycle-time functions work in an analogous fashion. They rely on the time-stamping of flows at some point in a conserved-flow process, either on the Map or Model layer, or within a Sub-model space. Downstream, flows can subsequently provide this time-stamping information to the builtins, which in turn will calculate metrics regarding the time that material has spent in process, since it was last time-stamped. The flowing figure provides an overview of how to introduce cycle-time metrics into your models. For more information and examples of cycle-time configurations, see the Cycle-Time Introduction .

As suggested by the diagram, the procedure associated with making a cycle-time calculation is straightforward. First, time-stamp a flow (or a set of flows) at some point in a stock/flow chain (to time-stamp a flow, check the check box next to the small stopwatch in the flow's dialog ). Then, determine from which flow, downstream in the same stock/flow chain, you want to calculate the cycle-time metric(s). Use a connector and a converter to tap into the downstream flow. Then, define the converter using the appropriate cycle-time builtin.

The cycle-time builtins are accessible only within converter dialogs, when a connection runs from a downstream flow to the converter, and one or more upstream flows have been time-stamped. The resultant cycle-time calculations apply only to the material coming from those upstream flows which have been time-stamped. Whenever the material gets time-stamped at more than one flow within a chain of stocks and flows, the downstream cycle-time calculation will be based on the most recent time-stamping. When multiple inflows enter a conserved flow chain, cycle-time calculations will be based on all flows which have been time-stamped. The following figure shows these rules in graphical form. The text which follows details the capability of each cycle-time function.

The Cycle-time builtins can only be used when you've selected Cycle-time

CTFLOW(<flow>[,<initial>])

The CTFLOW function returns the amount of a flow associated with time-stamped batches of material moving through the flow. If everything is time stamped, it will be the same as the flow. But everything isn't always time stamped. CTFLOW can be important to report when, in a conserved flow chain, flows which have been time-stamped are mixed with flows which haven't been time-stamped. When this mixing occurs, the resulting downstream flow volume will be greater than the volume of flow used for cycle-time calculations. CTFLOW will tell you how much of the flow has been time-stamped, and so tell you how much is being used for cycle-time purposes.

The optional initial parameter will allow you to provide an initial value for the output. If initial isn't specified, CTFLOW will return a zero for the initial value.

When you're operating in the Normal simulation mode (in the Time Specs dialog, under the Run menu), or when time-stamping has been turned off for all upstream flows in a conserved flow chain, CTFLOW will return a zero. Any initial values of material in a conserved stock/flow chain won't be time-stamped, and hence won't be used for cycle-time purposes.

Example:

In the following figure, the converter 'time stamped flow volume' calculates the time-stamped flow volume associated with stuff that's moving through the flow 'exit process 2'.

CTMAX(<flow>[,<initial>, <instantaneous>])

The CTMAX function returns the maximum cycle-time associated with time-stamped batches of material moving through a flow. CTMAX will operate in one of two distinct modes, depending on whether the optional instantaneous argument is set to 1. When instantaneous isn't specified (or set to zero), CTMAX will return the maximum cycle time associated with time-stamped batches of material which have moved through a flow over the course of a simulation. When instantaneous is set to 1, CTMAX will return the maximum cycle-time associated with time-stamped material which is currently moving through the flow.

The optional initial parameter is applicable only when instantaneous isn't specified (or set to zero). In this case, the initial value will be the value that's returned by the function until the time-stamped portion of the flow volume becomes positive. If initial isn't specified, CTMAX will return a zero until the time-stamped portion of the flow volume is positive.

CTMAX becomes particularly relevant when more than one time-stamped flow enters a conserved flow chain, or when different batches get mixed together somewhere in a process (for example, in a conveyor with variable transit time). In either case, material with different time-stamps can exit the process simultaneously. CTMAX will provide you with the maximum cycle-time associated with stuff which is moving through the flow.

When you're operating in the Normal simulation mode (in the Time Specs dialog, under the Run menu), or when time-stamping has been turned off for all upstream flows in a conserved flow chain, CTMAX will return a zero. Any initial values of material in a conserved stock/flow chain won't be time-stamped, and hence won't be used for cycle-time purposes. When operating in its instantaneous mode, CTMAX will return a zero when the time-stamped portion of the flow volume is zero.

Example:

In the following figure, the converter 'overall max cycle time' calculates the maximum cycle-time of the stuff which is moving through the flow exit process, over the course of the simulation. The converter 'instantaneous max cycle time' calculates the maximum cycle-time of the batches which are currently moving through exit process. Note that time-stamped batches enter the process at two entry points, and that the conveyors in the process each have variable transit times.

CTMEAN(<flow>[,<initial>])

The CTMEAN function returns the cumulative average cycle-time, since the start of a run, associated with the time-stamped portion of the flow of material moving through a conserved flow chain. CTMEAN will perform its cumulative average cycle-time calculation based on the volume of flow. Consider a simulation in which two batches pass through a process. The first batch has a size of 10 and a cycle-time of 1 hour, while the second has a size of 2 and a cycle-time of 5 hours. The CTMEAN calculation provides a metric of the cycle-time averaged across the flow volumes. In this case:

(10 * 1 + 2 *5) / (10 + 2) = 1.67 (hours)

The optional initial value is the value that's returned by the builtin function until the time-stamped flow volume first becomes positive. When the initial value isn't specified, the builtin will initially return a 0. Specifying an initial value is useful when initializing a continuous system to steady-state.

The CTMEAN function is only valid if you've selected Cycle-Time as the integration method. Initial values of material in a conserved stock/flow chain won't be time-stamped, and hence won't be used for cycle-time purposes.

Example:

In the following figure, there are two paths to delivering, one involving producing and preparation, the other involving outsourcing to a third party. If producing and shipping are both 1 box per week, and both the prep time and transit time are 1 week, then the average total cycle time will be 1.5 (1 per week that took 1 week and 1 per week that took 2 weeks). In this example, all the flows and conveyer times are constant, so the CTMEAN value will start at 0 (at week 0), then change to 1 at week 1, then start to go to the steady state value of 1.5 after week 2.

CTMIN(<flow>[,<initial>,<instantaneous>])

The CTMIN function returns the minimum cycle-time associated with time-stamped batches of material moving through a flow. CTMIN will operate in one of two distinct modes, depending upon whether the optional instantaneous argument is set to 1. When instantaneous isn't specified, CTMIN will return the minimum cycle time associated with time-stamped batches of material which have moved through a flow, over the course of a simulation. When instantaneous is set to 1, CTMIN will return the minimum cycle time associated with time-stamped material which is currently moving through the flow.

The optional initial parameter is applicable only when instantaneous isn't specified (or set to zero). In this case, the initial value will be the value that's returned by the function until the time-stamped flow volume becomes positive. If initial isn't specified, CTMIN will return a zero until the time-stamped portion of the flow volume is positive.

CTMIN becomes particularly relevant when more than one time-stamped flow enters a conserved flow chain, or when different batches get mixed together somewhere in a process (for example, in a Conveyor with variable transit time). In either case, material with different time-stamps can exit the process simultaneously. CTMIN will provide you with the minimum cycle-time associated with stuff which is moving through the flow.

When you're operating in the Normal simulation mode (in the Time Specs dialog, under the Run menu), or when time-stamping has been turned off for all upstream flows in a conserved flow chain, CTMIN will return a zero. Any initial values of material in a conserved stock/flow chain won't be time-stamped, and hence won't be used for cycle-time purposes. When operating in its instantaneous mode, CTMIN will return a zero when the time-stamped portion of the flow volume is zero.

Example:

In the following figure, the converter 'overall min cycle time' calculates the minimum cycle-time of the stuff which is moving through the flow exit process, over the course of the simulation. The converter 'instantaneous min cycle time' calculates the minimum cycle-time of the batches which are currently moving through 'exit process'. Note that time-stamped batches enter the process at two entry points, and that the conveyors in the process each have variable transit times.

CTSTDDEV(<flow>[,<initial>])

The CTSTDDEV function returns the standard deviation of measured cycle-times (the value that would be returned by the CYCLETIME builtin), since the start of the simulation run, associated with time-stamped material moving through the flow. Only non-zero cycle-times are used for the CTSTDDEV calculation. When two or more time-stamped batches move simultaneously through a flow, the average cycle-time (again, the value that would be returned by the CYCLETIME builtin) is used in the standard deviation calculation.

The CTSTDDEV function is particularly useful when you want to obtain a measure of the variability of cycle-times, over the course of a simulation.

CTSTDDEV weights its calculations by the magnitude of time-stamped flow volumes. Thus, the CTSTDDEV calculation provides a metric of the variability in cycle-time per unit volume.

The optional initial parameter will allow you to provide an initial value for the standard deviation of the cycle-time. This initial value will be returned until the first time-stamped units pass through the flow. If no initial value is specified, CTSTDDEV will return a zero until the time-stamped portion of the flow volume is positive.

CTSTDDEV is only valid when you've selected Cycle Time as your integration method.

Note: Because the average cycle-time of material moving through a flow is used in the standard deviation calculation, the standard deviation reported by the CTSTDDEV builtin may vary slightly from a distribution set upstream.

CYCLETIME(<flow>[,<initial>])

The CYCLETIME function returns the cycle-time associated with time-stamped batches of material moving through the flow. CYCLETIME thus tells you how much time material has spent "in process", since it was last time-stamped. Whenever more than a single time-stamped flow enters a conserved flow chain, or when different batches get mixed together somewhere in a process (for example, in a Conveyor with variable transit time), material with different time-stamps can exit the process simultaneously. In these cases, what's returned by CYCLETIME will be a weighted average of the different aged material.

Consider a simulation in which two batches exit a process simultaneously. The first has a volume of 10 and a cycle-time of 6 hours. The second has a volume of 100 and a cycle-time of 50 hours. The CYCLETIME builtin will weight its calculation by the magnitude of the respective flow volumes in the combined batch. Thus, the CYCLETIME calculation would give:

(10 *6 + 100 * 50) / (10 + 100) = 46 (hours)

The optional initial parameter will allow you to provide an initial value for the cycle-time. This initial value will be returned until the first time-stamped units pass through the flow. If no initial value is specified, CYCLETIME will return a zero until the time-stamped portion of the flow volume is positive.

The CYCLETIME function can only be used when you've specified Cycle-Time as the integration technique.

Example:

In the following figure, the converter 'total time spent' calculates the cycle-time on a unit volume basis.

THROUGHPUT(<flow>[,<initial>])

The THROUGHPUT function returns the cumulative average throughput (measured in units/time) of the time-stamped flow volume, over the course of the simulation run. THROUGHPUT provides a measure of the average rate of time-stamped flow through the system. THROUGHPUT performs its calculation by summing the time-stamped flow volumes over the course of the simulation, and then dividing this quantity by the current simulation time minus the time that the first time-stamped flow moved through the flow.

When you're operating in the Normal simulation mode (in the Time Specs dialog, under the Run menu), or when time-stamping has been turned off for all upstream flows in a conserved flow chain, THROUGHPUT will return a zero. Any initial values of material in a conserved stock/flow chain won't be time-stamped, and hence won't be used for cycle-time purposes. Finally, if you haven't specified an optional initial value, THROUGHPUT will return a zero until the time-stamped portion of the flow volume is positive.

Example:

In Figure 7-16, the converter 'system throughput' calculates the average throughput (since the start of the run) of the time-stamped stuff moving through the 'completion' flow. In this case, the throughput calculation provides a metric for the average rate of movement of material (in units/time) through a discrete process. The initial value returned by the converter is 6.