When Will You Need This?

When you want entities to exit a location, or route to a different location, if entities wait longer than a value you set. This replaces a Renege route when resources are required but may not always be available at the location of the renege.

Renege After Waiting Too Long model image

Model Object

The following model object can be found in the model objects directory: Routings \ Renege After Waiting Too Long.

Ease of Use: Moderate

Ease of Modification: Moderate

How to Use the Model Object

1. Open Your Model

Open your model or create a new blank model.

2. Insert the Model Object into Your Model

1. Locate the model object Renege After Waiting Too Long and select the insert button.

2. Move the cursor to the point of insertion and left mouse-click. The upper left corner of the model object will be inserted at the location of the mouse-click.

3. Connect to Your Model

1. Connect an arrival route or a percentage route from the part of your model where you would like the entities to enter the model object to Hold1.

from your model to Renege After Waiting Too Long

2. Connect the horizontal route (going to the right) leaving the Hold1 to the activity in your model where you want to check for renege time.

from Renege After Waiting Too Long to the rest of your model

4. Define Values

1. Define the values for scenario parameters s_LoopDelay1, s_LoopDelay1, s_Resource1, s_Resource2, s_Resource3, and s_Name_of_Activity_After_Hold based on the information provided under the heading Scenario Parameters below. The values for these Scenario Parameters must be provided before the simulation start.

define scenario parameters in Renege After Waiting Too Long

5. Update Objects

1. Change the names of Hold1 to what maybe appropriate for your model.

6. Completion

The model object is now integrated into your model, you should now be able to save and then simulate the model.

Attributes, Variables, Scenario Parameters and Scenarios Usage

Attributes:

1. a_MaxWait: Do not change. Entity specific allowed wait time.

2. a_Renege: Do not change. Renege counter, 0 = process entity, 1 = renege entity.

3. a_StartWait: Do not change. Time when the entity began waiting.

4. a_TotalWait: Do not change. Current total wait time.

5. a_VATime: Do not change. The value added time at the start of the hold.

Scenario Parameters:

1. s_LoopDelay: User input required. Number of seconds to wait before testing loop repeats (this number can be less than 1 but must be greater than 0 to prevent an endless loop).

2. s_MaxWait: User input required. Maximum allowed waiting time (could be a distribution).

3. s_Resource#: User input required. Name of 1st, 2nd and 3rd resource to be used.

4. s_Name_of_Activity_After_Hold: User input required. The activity name in your model after the Hold where the work gets accomplished.

Advance Topics

How Do I Modify the Model Object to Add More Resource Types?

If additional resource types are needed for resources that arrive at different times for the same shift, simply add the resource names to the to the action logic of the Hold1. Example If a Worker4 was added then the logic Hold action logic, line 9, would be changed to the following:

Else If (FreeUnits(s_Resource1) > 0 Or FreeUnits(s_Resource2) > 0 Or FreeUnits(s_Resource3) > 0 Or FreeUnits(Worker4) > 0) And FreeCap(s_Name_of_Activity_After_Hold) > 0 Then {a_Renege1 = 0}

update logic in Renege After Waiting Too Long

How Do I Build This Model Object Myself?

Set an attribute equal to the current simulation clock time using the Clock() function in the Hold1 storage action logic. This sets the start time of the wait timer.

Using a While . . . Do loop in Hold1’s action logic, check the wait time by subtracting the starting time from the current time. If the current wait time is greater than the maximum allowed wait time, set an attribute to follow the renege route and exit the loop.

Also, inside the loop, check for the availability of the needed resources and capacity in the Process Items activity. If a resource is available and there is capacity, send the entity to the activity to be processed. Otherwise, continue looping until either the requirements are met, or the maximum wait time is met or exceeded.