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.
Suggested Technique (batching a specified quantity)
1. Specify an output queue capacity for the activity that is at least as great as the largest batch size.
2. In the Batching tab, select Batch for After Activity.
3. Specify the quantity to be batched.
Example: In producing TO-DO pads, the printer groups the pads into batches of 50 as they come off the press (after the Printing activity). The pads are then routed to the Padding activity and then to the Cutting activity.
TO DO: Select the Batching tab of the Printing activity and choose Batch for After Activity, then enter a Batch Size of 50. Select the General tab and enter 50 in the Output Queue Cap. field.
10.1.9 – Grouping or Batching a Variable Quantity at a Specific Time
Collect two or more entities into a batch or group after an activity or queue in order to move them onto the next activity as a batch. Useful for holding entities for daily processing.
Suggested Technique (batching a variable quantity)
1. Make the routing prior to batching activity an Attach routing. In place of a quantity to attach, insert the word ALL.
2. Place a new (temporary) entity with an arrival connector to the batching location.
3. Set the arrival type to match your batching pattern. Often a Daily Pattern arrival will provide all the flexibility needed to set batching times.
Example: Product orders arrive throughout the day but are not processed until 4:00 PM
TO DO: Create a new entity that will act as a trigger to cause batching to occur. Create a Daily Pattern arrival for the “trigger” entity. Set the pattern of arrival, for each day, to have a single entity arrive at the time the batch is to occur. Create a queue, or holding location, for the entities that will be batched. Make the routing an Attach routing from the queue to the batch location with a quantity of ALL.
10.1.10 – Ungrouping or Unbatching After an Activity
Separate an entity batch into individual entities after the completion of an activity. It is assumed that entities have been previously batched. To create entities from a single entity that has not been batched, see 10.2.2 Creating Entities.
1. Select Unbatch in the After Activity section of the Batching tab for the activity.
Example: After being painted and dried in batches, Parts are unbatched before moving on. The Parts enter the Dry activity already grouped (in the Paint activity). They are dried as a batch and then unbatched to be routed to the next activity individually.
TO DO: Select the Dry activity’s Batching tab. Choose Unbatch for After Activity. You may need to define an output queue for the activity if you don’t want to block up the paint and dry activities.
To see how the Parts are grouped before the Paint activity, see Grouping or Batching Before an Activity.
All batches or groups are unbatched whe