Chapter 10 – Modeling Techniques
10.1 – Activity-Related Techniques
10.1.2 – Activity Time Variation
Activity time that varies randomly due to the variable nature of the entity or activity or as a result of the inconsistent behavior of the resource used at the activity.
1. Determine the probability distribution that best fits the activity time (more on probability distributions).
2. Enter the probability distribution in the Time field of the General properties sheet for the activity (alternatively, a TIME statement can be used in the action logic for the activity).
Example: A phone-in order may have a time that is triangularly distributed with a minimum of 2 minutes, a mode of 5 minutes and a maximum of 12 minutes
TO DO: In the Time field of the General properties dialog enter T(2, 5, 12) as shown above. Alternatively you could enter Action Logic for the activity: TIME(T(2, 5, 12) min).
10.1.2 – Processing Entities Concurrently at an Activity
Multiple entities are allowed to enter an activity and be processed concurrently (at the same time at the same activity), independent of other entities.
1. Set the capacity of the activity to the maximum number of entities that can occupy the activity at any one time.
Example: Because a bank uses five tellers, the Bank_Teller activity is able to concurrently and independently handle up to five Customers at any given time.
TO DO: Create the activity with a Capacity of 5.
10.1.3 – Attribute-Dependent Activities
The activity time or some other activity action is based on the value of a particular attribute of the entity.
1. Define an attribute for the entity in the Insert -> Attributes & Variables dialog. Optionally, you may use one of the predefined attributes listed in Chapter 3.12.3.
2. Set the attribute to the desired value in any action logic in the model using the assignment statement.
3. Use an IF…THEN statement in the Action logic of the activity specifying the time or other action statements to be executed based on that attribute.
IF a_Type = REGULAR THEN
Time 8 Min
Time 5 Min
Example: Two types of Orders are processed in a system: Regular and Pre-invoiced . At the Log In activity, Orders which have been previously designated as Regular orders require an invoice to be printed and therefore take 8 minutes to process. Pre-invoiced orders take only 6 minutes to process.
TO DO: Define a descriptive attribute called Type with the descriptors Regular and Pre Invoiced. Assign the appropriate descriptor to the attribute in some Action logic prior to the Log_In activity. Enter the Action Logic (as shown above) to determine the type of order and act accordingly.
If the attribute assignment is based solely on percentage and this is the only activity where the attribute is used to make a decision, use the Percentage-Dependent Activities technique below.
10.1.4 – Percentage-Dependent Activities
The activity time or some other activity action occurring only a percentage of the time.
Suggested Technique for Activity Times
If only the activity time is different based on percentage, the following technique may be used.
1. Select the General tab of the activity’s properties dialog.
2. Enter a Discrete distribution function in the Time field for simple activity time assignment by percentage.
Example: An activity takes 5 minutes 28% of the time, and 7 minutes 72% of the time.
TO DO: Enter the Discrete distribution (as shown above) in the Time field.
To learn more about the Discrete distribution, see Distributions in Chapter-3.12.1.
Suggested Technique for Activity Actions
1. In the Action logic of the activity, use the Percent() function in an IF…THEN statement.
2. Define Action logic for the true and false cases of the Percent() function.
Example: Twenty percent of the time the X_Ray activity requires the use of a Specialist for 30 minutes. The other 80% of the time X_Ray simply takes 15 minutes with no resource required.
TO DO: In X_Ray ’s Action Logic, enter the logic as shown above.
10.1.5 – Assembly Activities
Attach or join one or more entities (e.g. component parts) to a base entity.
Note that in many instances you may not need to model the actual entities being joined but only the time to join them. If it is known, for example, that the components assembled to a base entity are always available when needed, it is sufficient to specify an assembly time for the base part at each assembly station as it moves through the process.
If it is necessary to model the component entities feeding into the assembly activity, do the following:
1. Route the main or base entity into the assembly activity using any routing other than an Attach.
2. Connect each storage or activity holding the entities to be attached to the assembly activity using the Attach routing (each type of component to be assembled must come from a separate storage or activity).
Example: Four Wheels and a Handle are assembled to a Wagon at the Assembly station
TO DO: Route the Wagon by any routing other than an Attach or Pickup. Route the Wheel (quantity of 4) and the Handle using an Attach routing for each as shown above. The time to perform the assembly activity may be defined in the activity’s Time field.
10.1.6 – Disassembly Activities
Detach one or more entities from another entity to which they have been attached.
1. Create an activity where the disassembly is to occur and define the disassembly time.
2. Use a Detach routing for the entities to be detached from the assembly. (Use Name = entity_name in the Condition field to detach only certain entities.)
3. Define a routing (not a Detach) for the entity to which the others were attached (the base or main entity).
If you want to separate one or more entities from another entity and they have not been previously attached to the entity somewhere in the model, use the create routing. See 10.2.2 Creating Entities.
Example: A store rents Skis to Customers for a random period of time and the Customer later returns the Skis to be checked back into the Ski Storage.
TO DO: Attach the Skis to the Customer at the Rental activity. Define the random rental time in the Rental activity, then route the Customer to the Return_Skis activity. Detach the Skis from the Customer using a Detach routing as shown above and route the Customers out of the Return_Skis activity with a 100% routing.
10.1.7 – Recurring Activities
An activity through which the same entity passes multiple times, possibly with a different activity time or routing with each pass.
1. Define an attribute called Pass (or another appropriate name).
2. In the activity Action logic, increment the Pass attribute: INC Pass
3. Use an IF…THEN statement in Action logic to specify a different activity time for each pass through.
4. Use Conditional routings based on the value of Pass, e.g. Pass = 1 , or Pass =2 if the routing is different with each pass.
Example: A machined Part must pass through the same Wash activity twice. The wash cycle and the routing are different for each pass. The first time through the Part is washed for 5 minutes and then it goes to Station5. The second time through, the Part is washed for 3 minutes and then it goes to Station6.
TO DO: Define an attribute called Pass. Define action logic for the Wash activity as shown above. Connect Wash to each station with conditional routings, their condition fields set as shown above. Route the Part from Station5 back to the Wash activity.
10.1.8 – Grouping or Batching After an Activity
Collect two or more entities into a batch or group after an activity in order to move them onto the next activity as a batch. Useful for accumulating a batch of a specified quantity or recreating a batch that had been previously batched.