You are here:Home>Learning Center>User's Guide>Chapter 10 - Modeling Techniques>Chapter 10 – Section 5 & 6

User's guide chapter 10 section 5 & 6



Previous: Chapter 9 Next: Chapter 11

10.5 – Resource-Related Techniques

10.5.1 – Using a Resource at an Activity

A resource (employee, machine, etc.) is used at an activity to perform the activity.

Suggested Technique

1. Create the activity where the resource will be used.

2. Create the resource. (Be sure that the Object Type field in the properties dialog indicates Resource.)

3. Connect the resource to the activity.

 Important information to be aware of Alternatively, you may use the GET and FREE statements in the Action logic of the activity. Connected resources will always be captured before resources specified in a GET statement. On the other hand, resource connections that free a resource occur after any Action logic for the activity.

Using a Resource at an Activity

TO DO: Create the resource and connect it to the activity as shown above.

 Important information to be aware of For simple situations like the previous one, it may not be necessary to model the resource unless there are times when it is unavailable due to other activities requiring its use, since it would probably be of no interest to the modeler.

See Also To learn more about resources, see Resources and Resource Assignments.

10.5.2 – Using a Resource to Move Entities

Routing an entity with the use of a resource (employee, machine, etc.).

Suggested Technique

1. Create the routing connection where the resource will be used.

2. Create the resource. (Be sure that the Object Type field in the properties dialog indicates Resource .)

3. Connect the resource to the routing connection using the line tool.

 Important information to be aware of Alternatively, you may use a GET statement in the Action logic of the routing connection and a FREE statement in the Action logic of the next activity. Connected resources will always be captured before resources specified in a GET statement. On the other hand, resource connections that free a resource occur after any Action logic for the routing or activity.

Example: Patients in a waiting room are escorted to a treatment room by a nurse.

Using a Resource to Move Entities

TO DO: Connect the nurse (once created as above) to the appropriate routing.

See Also To learn more about resources, see Resources and Resource Assignments.

10.5.3 – Keep a Resource throughout Multiple Activities

A resource is continuously used throughout a number of activities, including the moves from one activity to another. Useful in modeling resources such as case workers.

Suggested Technique

1. Connect the resource to the activity where the resource will first be used and select Get from the Type field in the properties dialog of the connection.

2. Connect the resource to the activity where the resource will last be used and select Free from the Type field in the properties dialog of the connection

Important information to be aware of Alternatively, you may use the GET and FREE statements in the Action logic of the appropriate activities. Connected resources will always be captured before resources specified in a GET statement. On the other hand, resource connections that free a resource occur after any Action logic for the activity.

Example: Incoming jobs to a copy center are received, copied, and invoiced all by the same clerk in three consecutive steps.

Keep a Resource throughout Multiple Activities

TO DO: Connect the clerk to the Receive activity and select Get from the Type field in the properties dialog. Then connect the clerk to the Invoice activity and select Free from the Type field in the properties dialog.

 See Also To learn more about resources, see Resources and Resource Assignments.

10.5.4 – Using Multiple Resources

Using more than one resource (employee, machine, etc.) to perform an activity.

Suggested Technique

1. Connect the resources to the activity or routing.

2. Make sure that each connection Type is either a Get or Get and Free.

Example: A dental treatment requires the use of a dentist and an assistant.

Using Multiple Resources

TO DO: Connect both resources to the activity.

 Important information to be aware of Alternatively, you may use the GET or JOINTLYGET and FREE statements in the Action logic. Connected resources will always be captured before resources specified in a GET statement. On the other hand, resource connections that free a resource occur after any Action logic for the activity. If each resource is required for different lengths of time, use Get connections and specify the times followed by FREE statements in the activity Action logic. For example:

TIME(3.5 min)
FREE Doctor
TIME(5 min) // Nurse used for 5 additional minutes
FREE Nurse

10.5.5 – Using Alternate Resources

Designating a resource to use as an alternate if the primary resource assigned to the activity or move is unavailable.

Suggested Technique

1. Connect the primary resource to the activity or routing.

2. Connect the alternate resource to the primary resource connection.

 Important information to be aware of Alternative resources may also be captured using the GET or JOINTLYGET statement with the OR operator. Connected resources will always be captured before resources specified in a GET statement. On the other hand, resource connections that free a resource occur after any Action logic for the activity.

Example: Normally the loan officer will help the customer with the loan application at the Application activity, but if no loan officers are available, a customer service representative can take the loan application.

Using Alternate Resources

TO DO: Connect the Service Rep (the alternate resource) to the assignment connection between the Loan Officer and the Application activity as shown above.

See Also To learn more, see Resources and Resource Assignments.

Important information to be aware of If you use a GET connection (instead of a GET & FREE) to capture a resource and then connect an alternate resource to that connection, you must connect a free connection to both the primary and alternate resources when the resource is freed. One free connection is then executed and the others are ignored; the correct resource is freed without you knowing which one was captured.

10.5.6 – Determining the Resource Being Used

When an alternate resource is captured by an entity and a decision or activity time depends on which resource was captured, the OwnedResource function may be used to determine which resource was captured.

Suggested Technique

1. In the action logic of the activity or routing, use the OwnedResource() function without a number between the parentheses to test the name of the most recently captured resource.

2. Execute the appropriate action based on the name returned by the OwnedResource() function.

 Important information to be aware of Alternatively, you may use the GET statement with an OR separating the alternate resources in the Action logic to capture the resources, and then use the OwnedResource() function to determine the captured resource. Connected resources will always be captured before resources specified in a GET statement. On the other hand, resource connections that free a resource occur after any Action logic for the activity.

Example: A receptionist usually answers the phone, but if the receptionist is busy, the filing clerk will answer the phone. If the filing clerk answers the phone, the call lasts about 7 minutes, otherwise it takes about 5 minutes.

Determining the Resource Being Used

TO DO: In the Action logic of the Answer Phone activity, enter:
IF OwnedResource() = Clerk THEN TIME(7 min)
ELSE TIME(5 min)

 See Also To learn more about the OwnedResource() function, see OwnedResource(n).

10.5.7 – Prioritizing Resource Usage

When two different activities each have an entity waiting to use the same resource, one activity may have higher priority over another. When that is the case, the resource will be used at the activity with a higher priority specified in the resource connection.

Suggested Technique

1. Select the resource connection that is attached to the activity with a higher priority.

2. Enter a priority in the Priority field between 0 and 99. The higher the number the higher the priority (the default is 0).

3. Enter the appropriate priorities in the properties dialogs of the remaining resource connections that must be prioritized.

 Important information to be aware of Alternatively, you may use the GET or JOINTLY GET statements in the Action logic with a priority set off by a comma for the resource: GET Resource1, 99 . Connected resources will always be captured before resources specified in a GET statement. On the other hand, resource connections that free a resource occur after any Action logic for the activity.

 Example: A grocery store uses their available cashiers to restock shelves during slow times, but their cashiering duties have a higher priority than restocking. Note: For the priority to work, customers must be waiting in line (in the input queue) when the resource becomes free. If people are not waiting, the priority will not be the determining factor for selection.

Prioritizing Resource Usage

TO DO: Connect the worker to both Restock and Cashiering activities, but enter a priority of 1 for the cashiering connection. (The default for the other connection is a priority of 0.) When there are available cashiers, they will respond first to the cashiering activity since it has a higher priority.

 See Also To learn more about resources, see Resources and Resource Assignments.

10.5.8 – Interrupting Resources

Taking a resource off a task to perform another whether or not it has finished the original task. Then the resource returns to the interrupted task to finish it.

Suggested Technique

1. Select the resource connection that is attached to the activity or routing that should always receive immediate attention.

2. Check the Respond immediately box in the properties dialog of the resource connection.

 Important information to be aware of Alternatively, you may use the GET or JOINTLYGET statements in the Action logic with a priority of 100 set off by a comma for the resource: GET Resource1, 100. (The 100 is an interruptive priority.) Connected resources will always be captured before resources specified in a GET statement. On the other hand, resource connections that free a resource occur after any Action logic for the activity.

Example: A receptionist must type up dictations and answer the phone. When the phone rings the receptionist must interrupt typing the current dictation and answer the phone.

Interrupting Resources

TO DO: Make the connections and check the Respond immediately box as shown above.

10.5.9 – Scheduled Equipment Maintenance

Scheduling equipment for regular maintenance so that it is unavailable for use during certain periods. (If maintenance is done during off hours, it can be safely ignored in the model.)

Suggested Technique

1. Assign a shift to the resource to indicate scheduled downtime (for maintenance or other purposes). For information on creating and assigning shifts, see Defining & Editing Shift & Break Blocks.

 Important information to be aware of Whenever possible, use the shift schedule for scheduled interruptions.

10.5.10 – Equipment Failure

A resource, such as a machine, fails during the simulation.

Suggested Technique

1. Select the resource for which you want to define random failure.

2. In the properties dialog, click on the Availability tab and select the Time option button.

3. Enter the appropriate distributions in the Time between interruptions (the time between failure) and the Interruption time (the repair time) fields.

Example: A copy machine breaks down at random intervals between 5 and 115 hours. The repair takes between 1 and 11 hours.

Equipment Failure

TO DO: Enter the distributions as shown above in the appropriate fields.

 Important information to be aware of If the time defined in the activity or routing where the resource is being used is lengthy, you may want to break up the activity or routing into smaller steps to allow for possible equipment failure, since the resource will not go down until the current activity or routing has freed it. Therefore, modeling equipment failure becomes more statistically significant over multiple replications.

10.5.11 – Employee Absenteeism

Employees, for one reason or another, are not always available. An employee may miss a day, half day, or an hour of work.

Suggested Technique

1. Select the employee (resource) to display its properties dialog.

2. Click on the Availability tab.

3. Select the Time option and enter a Time between interruptions (the number of hours between the employee’s absences). This is usually a distribution to indicate the variability of absenteeism.

4. Enter the number of hours the employee is absent in the Interruption time field. Often this is 8 hours to indicate a full day of work missed. (It could also be a distribution.)

Example: The assembly line has 10 workers. Each worker misses a day of work an average of every 30 days worked (Uniformly distributed between 15 and 45 days).

TO DO: Select the Workers resource and click on the Availability tab. Select Time and enter the values as shown above, using a distribution to introduce variability to absenteeism. Multiply the distribution described above by 24 ash shown below in order to achieve units of days instead of hours.

Employee Absenteeism

10.5.12 – Shifts & Breaks for Resources

In situations where one or more resources are available during different shifts or time periods, it may be useful to reflect this difference in a schedule during the simulation.

Suggested Technique

1. Define a default schedule for all resources that are available during “normal” hours as follows:

1. In the Simulation -> Options dialog (Files tab), select Default Resource Shift File and click Create Shift file… to open the shift editor.

2. Using the Shift Editor , specify a shift to be used as the normal or default shift.

3. After closing the Shift Editor , assign the created shift file as the Default shift in the Options dialog.

2. Define a schedule for each resource that has a working period that is different than the normal working period. This is done as follows:

1. Select Create shift file… in the resource properties dialog under the Shift tab. This opens the Shift Editor.

2. Using the Shift Editor , specify a shift to be used for this resource.

3. Enter the name of this shift file in the Shift file field of the Shift tab.

Example: A Part arrives from an outside vendor and must be inspected and placed in storage before it can be used. The same number of workers are assigned to the Assembly activity both the day and the swing shift, but the technicians assigned to the Inspection activity are scheduled only for the day shift.

Shifts & Breaks for Resources

TO DO: Create a shift file for day and swing shifts (7:00 a.m. to 12 p.m. with two 1 hour lunch breaks) and enter it as the default resource shift file in the Options dialog. Create a day shift file (7 a.m. to 3 p.m. with a hour lunch) and enter it as the shift file for the Tech resource. Check the Interrupt current activity to go off shift or on break box so that the Techs can go home at 3 p.m. even when they are in the middle of inspecting Parts.

 See Also For more information on creating, editing, and assigning shift files, see Defining & Editing Shift & Break Blocks.

10.5.13 – Consumable Resources

Modeling consumable resources such as money, energy, water, etc. Useful for modeling the consumption and replenishment of a resource.

Suggested Technique

1. Create a variable to represent the consumable resource (see Variables).

2. When an activity, storage, or routing uses a consumable resource, decrement the variable’s value using the DEC statement in the Action logic.

3. When the resource is replenished in the model, increment the variable’s value using the INC statement in the appropriate Action logic.

Example: A hydro-electric power plant wants to track its usage of water, a consumable resource. Power Request (the entity flowing through the model) has an attribute called BTU indicating the energy level required to produce the needed power. The Steam activity uses 1,000 gallons of water for every BTU, and the Recycle activity restores about 70% of the water back into the system. The question is, how many gallons are not recovered.

Consumable Resources

TO DO: Create a variable called v_Water. Enter the Action logic as shown above for the appropriate activity.

10.5.14 – Resource Sharing

Sharing resources between two or more activities. Useful when a resource may be used at more than one activity.

Suggested Technique

1. Connect the resource to the activities that use it.

2. Optionally define priorities where activities have higher or lower priority.

3. Check respond immediately when an activity may interrupt another activity’s use of the resource.

Example: A law office has a shared pool of 8 paralegals that perform various activities in the office. When a file is routed to the Point-of-Law Research activity a paralegal is required, and when a file is routed to Appellate Research a paralegal is also required. Both activities have been defined with a capacity of 8 in order to take full advantage of the paralegals when they are available.

Resource Sharing

TO DO: Define the Paralegal as a resource with a quantity of 8 as shown above. Connect the Paralegal to the two activities which require their service. Once a paralegal is available, the activity that is waiting for him or her may be performed.

10.5.15 – Employee Availability

Taking into account the employee’s additional duties, not defined in the model, using resource availability. Useful when an employee is not always available to perform the activity assigned to him or her in the model due to personal circumstances or extraneous duties.

Suggested Technique

1. Select the resource to which additional duties are to be assigned.

2. In the properties dialog, select the Availability tab.

3. Use the percentage option to indicate the percentage of time the employee is available to perform duties within the model.

 Example: A Support Technician is primarily responsible for answering technical support calls, however, about 15% of his time is spent in administrative duties and other activities unrelated to the process.

Employee Availability

TO DO… Select the Technician resource and click on the Availability tab. Enter 85 in the Percent field. Now the Technician is available 85% of the time and performs duties and activities outside the scope of the model 15% of the time.

 Important information to be aware of Optionally, you can assign the resource to one or more activities that represent the extraneous work. Use a periodic arrival to have tasks randomly arrive at these activities.

10.6 – Storage / Inventory Techniques

10.6.1 – Stock Replenishment

A new order is placed when the input queue of an activity, or the contents of a storage, falls to the re-order level specified in the Order Signal. The activity’s input queue, or the storage’s contents must first reach a level higher than the re-order level, then fall to that level, or an order will never be placed. Therefore the size of the activity’s input queue or storage’s capacity must be at least 1 larger than the re-order level.

Suggested Technique

1. Create an ordered arrival connection from the entity to be ordered to the activity or storage where it enters the process.

2. Connect the storage or activity where the inventory level is to be monitored to an ordered arrival or routing connection.

3. Select the Order Signal connection and enter the Reorder level and the Order quantity in the properties dialog.

4. Check Place order at start if you want an order to be placed at time zero of the simulation. (This is useful in initializing the inventory at the activity or storage.)

Example: A storage area containing a box of clear plastic bags is used in the packaging line for shipping computers. When there are 30 bags left, 100 more bags are ordered.

Stock Replenishment

TO DO: Create the Ordered arrival connection from Part A to the Storage Bin. Connect the Storage Bin to the Ordered arrival. For the Order Signal, enter 30 and 100 in the Reorder level and Order quantity fields as shown above. Set the input queue of Assembly1 to zero.

 Important information to be aware of If a storage immediately follows the end point of the Order Signal (where the order arrives), the free capacity of the storage must be equal to or greater than the order quantity. If an activity immediately follows the order arrival point, the sum of the activity’s input queue and capacity must be equal to or greater than the order quantity.

10.6.2 – Produce on Demand (Make to Stock)

Producing additional items when an in-process or finished goods storage has been depleted to a certain level. Useful for producing on demand based on the monitoring of an inventory level. Can also be used for modeling a Kanban system.

Suggested Technique

1. Create an Ordered routing from an activity or storage that is to wait for an order signal before releasing more entities.

2. Connect the storage or activity being monitored to the Ordered routing connection.

3. Select the Order Signal and enter the Reorder level and the Order quantity in the properties dialog.

4. Check Place order at start if you want an order to be placed at time zero of the simulation. (This is useful to initially get entities moving in the system.)

Example: An assembly line pulls assemblies from the Storage Bin . When the Storage Bin ’s quantity drops to 30, an order is placed for 100 more assemblies. Side_Line_A then produces the assemblies from parts in Inventory and routes them to the Storage Bin.

Produce on Demand

TO DO: Create the Order Signal connection and in the properties dialog enter 30 and 100 in the Reorder level and Order quantity fields as shown. Set the input queue of Assembly1 to zero.

10.6.3 – Initializing Storage & Queue Contents

Having an initial quantity or inventory of entities at a storage area or queue when the simulation begins.

Suggested Technique

1. Connect the desired entity to the activity or storage and select Periodic as the arrival type.

2. In the Periodic arrival’s properties dialog, enter zero (0) in the Repeat every field and the First time field. Enter the quantity to arrive in the Quantity per arrival field.

Example: At the beginning of a process, a pre-inspection storage is initialized with 1000 units of inventory.

Initializing Storage & Queue Contents

TO DO: Create the Periodic arrival connection and enter the Quantity per arrival. Enter zero (0) in the Repeat every and First time fields.

10.6.4 – Determining Inventory Levels

Having an activity check the current number of entities on-hand at a particular storage area. Useful for making decisions based on the number of entities in a storage, activity, or range of activities.

Suggested Technique

1. From the Insert menu select Attributes & Variables.

2. In the resulting dialog select the Global Variables tab.

3. Create a variable to track the level of entities at the storage (e.g., Inv_Level).

4. In the Action Logic of the storage, enter INC Var_Name , where Var_Name is the name of the variable you defined.

5. In the Action Logic of every connection routing entities out of the storage, enter DEC Var_Name , where Var_Name is the name of the variable you defined.

6. In the Action Logic of the activity from which you wish to determine the inventory level, enter an IF…THEN statement to test the value of the variable as shown in the example below.

Example: A manager wants to know how many times the business is under-stocked during the week (the length of the simulation run). He defines two variables, Times_Under and Stock_Level.

Determining Inventory Levels

TO DO: Enter the action logic as shown in the above illustration.

10.6.5 – Pulling Items Last In/First Out (LIFO)

The last entity to enter the storage is the first to exit or leave. Thus entities entering 1, 2, 3 exit in the order 3, 2, 1. Useful when it is important to model entities that are processed last in, first out.

Suggested Technique

1. Select the storage where you want to use the LIFO method.

2. Click on the Queuing order list box on the General tab of the properties sheet and select LIFO as shown below.

Example: Orders arriving in a basket (the storage) are processed last in, first out. The last order to be placed is pulled from the top of the stack to be processed.

Pulling Items Last In/First Out

TO DO: Select the storage and on the General tab of the properties sheet, select LIFO from the Queuing order list box.

10.6.6 – Highest Priority Entities First

Pull entities out of a queue based on a priority by using a real or contrived resource as the enabler to move down the routing. This could be based on dollar value, how much time they have spent in the system or even the time of day.

Suggested Technique

1. Place a priority on entities before they arrive at the queue.

2. Pull the highest priority items from the queue by using a resource to capture by priority.

3. Free the resource so that it can capture the next entity

Example: Two types of orders are placed in a storage container. High priority items represent orders for greater than $1,000 and should be processes first.

Highest Priority Entities First

TO DO: Create a attribute named a_Priority (this may be any name). Assign the priority to the entity on the arrival route before it arrives in the storage. From the storage, GET a resource as the enabler and use the priority of the entity as the priority to GET the resource.

 See Also To learn more about Resource Priorities, see Chapter 3, Section 3.7, Resource Assignments.