Cycle-time builtins

This section describes the following builtins:

Overview

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. 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 following 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 Attribute and Cycle Time Tracking .

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 converters , when a connection runs from a stock or 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 will return 0 when material passes through a stock, or through a non-negative stock when the integration technique chosen is not Cycle Time. Non-negative stocks with biflows will also cause any time stamp information to be lost.

Cycletime and Attribute Value

All of the Cycle-time builtins can be used to look at only specific attribute values or value ranges. This is most useful when the attribute is being used to determine the priority of a batch of material in a queue (see Queue Computation). The arguments specifying the attributes to operate on are always last and can be specified as a single value (for an exact attribute match) or as a range, to match all attributes in range.

minattr specifies the minimum attribute value to display results for. If maxattr is not included the software will look for an exact match. If neither minattr nor maxattr are included the software will not filter by attributes.

maxattr specifies the maximum attribute value to display results for.

Note In order to specify the minimum and maximum attributes you must also specify the initial value (default 0) and, for CTMIN and CTMAX, the instantaneous flag (default 0).

Note If there are no contents in the specified attribute value range, or if there are no attributes specified at all, the functions will always return the initial value specified (generally this should be 0).

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

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.

The optional minattr and maxattr arguments will filter on batches with attribute values in the specified range as discussed in Cycle time and Attribute Values above.

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(<stock or flow>[,<initial>, <instantaneous>, <minattr>, <maxattr>])

The CTMAX function returns the maximum cycle-time associated with time-stamped batches of material in a stock or 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. For stocks the instantaneous value is always returned.

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.

The optional minattr and maxattr arguments will filter on batches with attribute values in the specified range as discussed in Cycle time and Attribute Values above.

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.

Note If you specify an attribute value to filter CTMAX on, the reported for mixed batches may not match the more general cycle time formulation as only the mean age of each individual batch is tracked.

CTMEAN(<stock or flow>[,<initial>, <minattr>, <maxattr>])

For stocks, the CTMEAN function returns the average age of time stamped material within the stock. For Flwos, 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 optional minattr and maxattr arguments will filter on batches with attribute values in the specified range as discussed in Cycle time and Attribute Values above.

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 begin to go to the steady state value of 1.5 after week 2.

The value for average producing cycle time, will be 0 till time 2 and then be 2. This assumed that producing has an attribute value of 1, and third party purchasing 2.

I

CTMIN(<stock or flow>[,<initial>,<instantaneous>, <minattr>, <maxattr>])

The CTMIN function returns the minimum cycle-time associated with time-stamped batches of material in stock or moving through a flow. For flows, 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. For stocks CTMIN will always return the minimum value within the stock.

The optional initial parameter is applicable only when instantaneous isn't specified (or is 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.

The optional minattr and maxattr arguments will filter on batches with attribute values in the specified range as discussed in Cycle time and Attribute Values above.

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.

Note If you specify an attribute value to filter CTMIN on, the value reported for mixed batches may not match the more general cycle time formulation as only the mean age of each individual batch is tracked.

CTSTDDEV(<stock or flow>[,<initial>, <minattr>, <maxattr>])

For stocks, the CTSDDDEV returns the standard deviation of the age or all time stamped material within the stock. For flows, 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.

The optional minattr and maxattr arguments will filter on batches with attribute values in the specified range as discussed in Cycle time and Attribute Values above.

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>, <minattr>, <maxattr>])

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 optional minattr and maxattr arguments will filter on batches with attribute values in the specified range as discussed in Cycle time and Attribute Values above.

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>, <minattr>, <maxattr>])

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.

The optional minattr and maxattr arguments will filter on batches with attribute values in the specified range as discussed in Cycle time and Attribute Values above.

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.

Note: If you filter on attribute value then THROUGHPUT will return the same value as ATTRCOUNT.