[menu_anchor name="Chapters"] [separator style_type="none" top_margin="0" bottom_margin="40" sep_color="" icon="" width="" class="" id=""]
| Activities | |
|---|---|
| 10.1.1 | 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. |
| 10.1.2 | Multiple entities are allowed to enter an activity and be processed concurrently (at the same time at the same activity), independent of other entities. |
| 10.1.3 | The activity time or some other activity action is based on the value of a particular attribute of the entity. |
| 10.1.4 | The activity time or some other activity action occurs only a percentage of the time. |
| 10.1.5 | Attach or join one or more entities (e.g. component parts) to a base entity. |
| 10.1.6 | Detach one or more entities from another entity to which they have been attached. |
| 10.1.7 | An activity through which the same entity passes multiple times, possibly with a different activity time or routing with each pass. |
| 10.1.8 | Collect two or more entities into a batch or group after an activity in order to move them on to the next activity as a batch. |
| 10.1.9 | Hold all items until a specific time of day, then batch all entities in the queue. |
| 10.1.10 | Separate an entity batch into individual entities after the completion of an activity. It is assumed that entities have been previously batched. |
| 10.1.11 | Collect two or more entities in the input queue of an activity in order to process them together as a batch. |
| 10.1.12 | For entities routed to an activity as a batch, it may be desirable to unbatch the entities prior to the activity (in the input queue) for processing each entity individually. |
| 10.1.13 | Create a batch that is the same size as a previous batch without specifying a quantity. |
| 10.1.14 | A grouped entity (as a result of attaching or picking up) enters an activity input queue where each entity in the group entity is processed individually. |
| 10.1.15 | In situations where one or more activities are performed during different shifts or time periods, it may be useful to reflect this difference in a schedule during the simulation. |
| 10.1.16 | Stop the processing and hold entities from further processing or movement until a condition is fulfilled. |
| 10.1.17 | In situations where an activity is scheduled to go off shift or on break, it is sometimes desirable to interrupt the current activity rather than wait until it is finished. |
| Entities | |
| 10.2.1 | Attaching one or more entities to a base entity. |
| 10.2.2 | One or more new entities are created or split off from another entity at an activity. |
| 10.2.3 | Set an attribute, variable, or expression to control whether one or more new entities are created or split off from an existing entity. Also control the quantity of entities to be created. |
| 10.2.4 | A single entity is divided up into two or more entities. |
| 10.2.5 | Reunite or join one or more entities to the entity from which they were either created or detached. |
| 10.2.6 | The entity requesting the pickup is attached to the requested entity. |
| 10.2.7 | Separating entities that were previously attached or picked up. |
| 10.2.8 | An activity that examines the name or some other attribute of an entity to determine how to route the entity for further processing. |
| 10.2.9 | Changing the name of an entity at an arrival, activity, or move time (routing). The name is important because statistics are reported by entity name when entities exit the system |
| 10.2.10 | An entity attribute is assigned a different value or descriptor based on a random percentage. |
| 10.2.11 | A customer is waiting for service and decides to leave rather than continue waiting. |
| 10.6.6 | Pull entities out of a queue based on a priority. |
| Arrivals | |
| 10.3.1 | An arrival that supplies entities to the attached activity whenever that activity has the capacity to take more entities (any input queue capacity is ignored). |
| 10.3.2 | Arrivals in which one or more entities arrive at fixed time intervals. |
| 10.3.3 | An average number of entities arrive randomly throughout a specified period. Useful in modeling situations where no specific pattern seems to exist. |
| 10.3.4 | Arrivals occurring at specifically scheduled times such as office appointment schedules. |
| 10.3.5 | Arrivals occurring at specifically scheduled times with provision for variable early and late adjustment. |
| 10.3.6 | Scheduled arrivals that are grouped in an activity (usually the first) using the Rebatch selection in the Batching tab, thereby grouping the same quantity of entities that arrived for that particular scheduled arrival. |
| 10.3.7 | A production schedule in which a sequence of different items is repeatedly produced. |
| 10.3.8 | A job shop produces a sequence of jobs with varying quantities for a specific time period, e.g., a day or week. |
| 10.3.9 | Replenishing inventory once that inventory reaches a certain level. Useful in maintaining certain levels of stock for production processes. |
| 10.3.10 | The arrival rate of customers fluctuates according to a daily pattern. Useful for modeling customer traffic with busy and slow periods. |
| Routings | |
| 10.4.1 | Routing entities from one activity to one of several subsequent activities based on percentages, e.g. 40% go here and 60% go there. |
| 10.4.2 | Routing entities based on a condition such as the value of a variable or attribute. |
| 10.4.3 | Routing entities to an alternate storage or activity when the primary routing condition cannot be met. |
| 10.4.4 | Entities are routed to the next activity only when the next activity is ready for it. Useful for simple just-in-time or pull systems. |
| 10.4.5 | An entity is routed to activity or storage to pick up another entity which has been routed to the same activity or storage. The other entity is then attached to the entity doing the picking up. |
| Resources | |
| 10.5.1 | A resource (employee, machine, etc.) is used at an activity to perform the activity. |
| 10.5.2 | Routing an entity with the use of a resource (employee, machine, etc.). |
| 10.5.3 | A resource is continuously used throughout a number of activities, including the moves from one activity to another. |
| 10.5.4 | Using more than one resource (employee, machine, etc.) to perform an activity. |
| 10.5.5 | Designating a resource as an alternate to be used if the primary resource assigned to the activity or move is unavailable. |
| 10.5.6 | When an alternative 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. |
| 10.5.7 | When a resource is used at more than one activity or routing, 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 when both activities are trying to capture the resource at the same time. |
| 10.5.8 | 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. |
| 10.5.9 | Scheduling equipment for regular maintenance so that it is unavailable for use during certain periods. |
| 10.5.10 | A resource, such a a machine, fails during the simulation. |
| 10.5.11 | Employees, for one reason or another, are not always available. An employee may miss a day or a half day or an hour of work. |
| 10.5.12 | 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. |
| 10.5.13 | Modeling consumable resources such as money, energy, water, etc. Useful for modeling the consumption of a resource. |
| 10.5.14 | Sharing resources between two or more activities. Useful when a resource may be used at more than one activity. |
| 10.5.15 | Taking into account the additional duties of employees that are not defined in the model by 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. |
| Inventory/Storage | |
| 10.6.1 | Reordering more items when an inventory level has been depleted to a certain level. Useful for stock replenishment based on a reorder level. |
| 10.6.2 | 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. |
| 10.6.3 | Having an initial quantity or inventory of entities at a storage area or queue when the simulation begins. |
| 10.6.4 | Having an activity check the current number of entities that are onhand at a particular storage area. Useful for making decisions based on the number of entities in a storage, activity, or range of activities. |
| 10.6.5 | 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 first in, last out. |
| Decision Making | |
| 10.7.1 | Making a decision based on a particular condition. Useful when an activity time, action logic, or routing decision is based on the value of an attribute or variable. |
| 10.7.2 | Making a decision based on probabilities—on a percentage basis. Useful when an activity time, action logic, or routing decision is based on a random percentage. |
| Costs | |
| 10.8.1 | Tracking the cost of using resources (people, machines, etc.) in the model. |
| 10.8.2 | Tracking the cost of an activity. |
| 10.8.3 | Tracking the cost applied to the time an entity spends in the model waiting to be processed at an activity or moved to the next activity. |
| 10.8.4 | Tracking additional costs based on special circumstances. |
| Special Statistics | |
| 10.9.1 | Counting the total number of entities meeting a special condition. |
| 10.9.2 | Tracking the time weighted average number of entities occupying a stage in the process that consists of more than a single activity. |
| 10.9.3 | Tracking the length of time spent in a particular stage of a process. |
| 10.9.4 | Counting the number of times that an activity or other time consuming events fell within a particular range. |
| 10.9.5 | Tracking the number of times a particular resource is used for a particular activity or set of activities. |
| 10.9.6 | Creating an on-screen clock that will display the time of day and day of week. |
| 10.9.7 | Show dynamic variables while the simulation runs. |
| Animation | |
| 10.10.1 | Changing the name and graphic representation of an entity at some point in the model. Two techniques are given. Change the statistics or not depending on the technique used. |
| 10.10.2 | Making the connection invisible entities appear to move without a path connecting the origin and destination of the entity. |
| 10.10.3 | Creating a background for the model. Useful in illustrating your model. |
| 10.10.4 | Adjusting the rate of the animation to speed past uneventful time segments in the simulation, show only important time periods, or slow the simulation to examine details. |
| 10.10.5 | Import graphics to be used as entities to enhance the dynamic representation of your model. |
A process engineering tool for improving business processes. It has been said that nothing is more powerful than an idea whose time has come. ProcessModel is a process engineering tool for visualizing, analyzing, and improving business processes. Designed specifically for managers and planners, ProcessModel combines simple flowcharting technology with powerful simulation capability to bring flowcharts to life through graphical animation.
A decision-making tool. With the increasing challenge confronting businesses to improve their processes and the advent of powerful computing technology, computer simulation is emerging as a powerful decision making tool for process engineering. Simulation uses a computer to mimic a process in order to visualize and analyze its performance in terms of cycle times, throughput capacity, and resource utilization. ProcessModel gives you the best simulation information as a basis for your decisions.
A tool for trying out new ideas. Imagine being in a highly competitive industry and managing a manufacturing or service operation that is burdened by outdated technologies and inefficient work practices. To stay competitive, you know that changes must be made, but you are not sure what changes would work best, or even if certain changes will work at all. You would like to try out new ideas for improving your business processes, but recognize that this would be very time consuming, expensive, and disruptive to the current operation. ProcessModel can provide a way to run these tests efficiently.
A powerful tool for performing “what-if” analyses. Suppose that there were some cost and risk free way to rearrange any activity, reallocate any resource, or change any operational procedure. What if you could even try out completely new technologies and methods of operation? Suppose that all of this experimentation could be done risk free—without committing any capital, wasting any time, or disrupting the actual process. This is precisely the kind of capability that ProcessModel provides. This powerful tool lets you perform “what-if” analyses with a computer model of your process in compressed time giving you insight into ways to improve your processes that would otherwise be unattainable.
[menu_anchor name="Why-Use-ProcessModel"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]ProcessModel is quick and easy to use. It takes only minutes to learn because it uses basic flowcharting techniques. The on-line, context sensitive help system provides all the information needed to define your model quickly and easily. And the User’s Guide is full of examples of common modeling situations, giving you a repository of knowledge before you even begin.
ProcessModel is useful for improving all types of business processes including transaction processing, customer servicing, production and assembly operations, and transportation services. ProcessModel takes the guesswork out of decision making enabling you to make informed and confident decisions. Typical ProcessModel applications include:
• Staff scheduling and shift planning
• Task prioritization and interruption
• Method selection
• Capacity planning
• Lot sizing
• Appointment scheduling
• Job sequencing
• Production scheduling
• Productivity improvement
• Cycle time reduction
• Cost reduction
• Quality management
• Bottleneck analysis
• Activity and resource-based costing
• Resource scheduling for breaks and downtime
Another reason to use ProcessModel is that it provides replication analysis, user definable variables and attributes, and standard and customized reports.
Additionally, ProcessModel allows you to create hierarchical models to better organize and manage large modeling projects. Teams can define different parts of a complex model and then put them together to simulate the entire process. The possibilities are endless with ProcessModel.
To realize your best possibilities, ProcessModel makes available the power of special features: LIVE Animation™, OneStep™ modeling approach, and Visual Staffing™, as well as Process Optimization.
[menu_anchor name="LIVE-Animation"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]To communicate changes or visually evaluate your current processes. LIVE Animation™ stands for Life-like Validating and Envisioning Animation. ProcessModel provides much more than just blinking boxes. With ProcessModel, you can actually see people, paperwork, and other objects flowing through the system, making it easy to recognize bottlenecks and see how extensive they are. LIVE Animation™ is a powerful tool for communicating changes or visually evaluating your current processes.
[menu_anchor name="OneStep-Modeling-Approach"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]To describe processes easily in a minimum of steps. Processes that are difficult or even impossible to define using other tools are easily described using ProcessModel’s OneStep™ approach. This modeling approach is designed to make modeling common processes as easy as one step. Other tasks are also reduced in complexity, so a minimum number of steps are required to define process logic.
[menu_anchor name="Visual-Staffing"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]To include people and resources in your model, so you improve the success rate of your implementation. ProcessModel gives you the ability to put people back into the process. Extensive staffing functions allow you to model any situation including the use of multiple resources or personnel. It is easy to use, allowing more people to become involved in the modeling process. ProcessModel is a great communication tool. By animating changes, employees will be able to visualize the effects of proposed changes on their jobs, making implementation easier.
[menu_anchor name="Process-Optimization"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]To evaluate your existing ProcessModel simulation models and perform “what-if” analyses to find better ways to achieve the results you desire. ProcessModel uses the sophisticated optimization algorithms of the SimRunner application to help you optimize multiple factors simultaneously. By controlling input settings, ProcessModel will find the course of action that will optimize your entire system’s performance.
[menu_anchor name="ProcessModel-Features"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]ProcessModel provides the following features:
• Single level or true hierarchical modeling
• Push / pull flow control
• Reorder-point inventory replenishment
• Individual or group processing
• Assembly and disassembly of items
• Realistic visual representation
• Dynamically updated scoreboard with key performance indicators
• On-screen variables
• Changing of graphics during simulation
• Ability to import graphics from the program of your choice
• Use of multiple or alternative resources
• Prioritized or interruptive use of resources
• Shift assignments
• Random or planned failure or loss of time
• Downtime specifications
• Routing of items based on type, percentage, or user-defined conditions
• Continuous, periodic, fluctuating, or scheduled customer or work item arrivals
• Matching of orders to the correct customer
• Document splitting and tracking
• Customers dropping out of line (reneging)
• Unlimited branching and merging
• Multiple scenario analysis
• Multiple replication analysis
• Advanced Process optimization
• Cost tracking
• Value added, non value added, and book value added
• Total project cost
• Cost per entity
• Pre-defined and user-defined attributes and variables
• User-defined logic for special circumstances
• Full trace capability during simulation
• Data spreadsheet import and export capability
• Process templates
• Model objects—for reusable building blocks
• Link models to Excel.
[menu_anchor name="ChangeLog"] [separator style_type="shadow" top_margin="0" bottom_margin="40" sep_color="" icon="" width="" class="" id=""]In this section you will find the necessary instructions to get your copy of ProcessModel installed and running on your system. Please Note that while you can run ProcessModel on the minimum required hardware, you should use the fastest PC (fast processor) with the most RAM that is available to you in order to enjoy faster simulation and smoother animation.
[menu_anchor name="System-Requirements"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]See the System Requirements [popover title="" title_bg_color="" content="Opens in a new page / tab" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] page.
Request a trial [popover title="" title_bg_color="" content="Opens in a new page / tab" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] or contact support [popover title="" title_bg_color="" content="Opens in a new page / tab" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] for install instructions.
ProcessManager is a stand-alone web based document management system hosted by ProcessModel, Inc. It runs independently from the ProcessModel application, though there is a link to the ProcessManager on ProcessModel’s File menu. Because it is web based, no installation is necessary on individual computers. After purchasing this application from your ProcessModel account manager, you will be setup with a company account which will be authorized for the specific number of user accounts you have purchased. Your login username will be your email address.
If you would prefer to host the ProcessManager and all associated documents yourself, you can purchase a version that can be installed on your own local server and access the application through your company intranet.
For a description of the benefits and features of the ProcessManager, See “ProcessManager” FAQ.
[menu_anchor name="ProcessModel-Technical-Support"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]If you have any questions or comments, you may contact technical support [popover title="" title_bg_color="" content="Opens in a new page / tab" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Monday through Friday 8:00 AM to 5:00 PM Mountain Time.
ProcessModel comes with one year free Maintenance & Support.
Maintenance and Support includes:
1. Customer support
2. Queries & help regarding models
3. Help with any simulation errors
4. Access to the Model Objects Library
5. Access to the Knowledgebase
6. Access to the User's Cafe'
7. Upgrades within the same version number
To renew Maintenance & Support for your ProcessModel software call Sales [popover title="" title_bg_color="" content="Opens in a new page / tab" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover].
ProcessModel helps you identify and implement changes that will maximize performance.
While victory in gaining competitive advantage lies in streamlining company processes, the results of making changes to processes are not always predictable. Process complexity and variability combine to obscure relationships between cause and effect.
Most companies fail to consider overall process performance as they create new policies and procedures designed to meet the shifting needs of their market, industry or strategy. Often, the resulting growth in processes creates huge inefficiencies.
First, ProcessModel helps analyze mission-critical processes.
Using ProcessModel, you’ll document existing business processes by creating a process map, typically in the form of a flowchart. Adding data about how the process operates takes the flowchart to the next level of sophistication, and allows a more rigorous analysis of potential problems.
The type of data required is relatively simple, but more detailed data can also be used if it is available.
ProcessModel combines the process map and data to create a ‘model’ that is used to identify problems within the process. The model has two powerful diagnostic tools—an animation of your processes in action, and a detailed statistical report. The animation works similar to video, allowing you to fast forward, zoom-in, and pause to identify problem areas. The statistical report is also invaluable in identifying problems and their causes. Typical process-related problems include duplication, bottlenecks, staff scheduling issues, excessive non-value added time, and so on. ProcessModel clients often see the effects of these problems in their businesses in the form of long waiting times, late deliveries, high internal costs, dissatisfied customers, etc.
Second, ProcessModel allows you to experiment—risk free.
Once problems have been identified, these models are used to experiment with multiple ideas for improving your processes. Ideas can be measured and directly compared against your specific performance metrics. This means no more expensive trial and error—all the experimentation takes place in a simulated model that is entirely risk free.
ProcessModel’s optimization module will even automate the process of defining experiments. Simply define your success criteria, and let the software go to work.
Now, every decision you make takes on new levels of confidence and predictability. You're fully aware of the effects of changing processes long before you begin implementation. And, ProcessModel’s animation capability is a powerful visual tool for generating “buy-in” for proposed process changes.
Third, ProcessModel helps you improve your actual operations.
Confident in your plan, you’ll implement one set of changes in the real world—the right one.
ProcessModel clients don’t make expensive mistakes, or upset actual operations with “well-intentioned” fixes. Instead, mission-critical processes are dramatically improved, risk free, building competitive advantage and aligning processes with customer requirements.
[menu_anchor name="Chapter-1-2"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]This section provides step-by-step instructions for creating a process model, running the simulation, and viewing the output reports and graphs. It is designed as a hands-on exercise which can be followed using the software. It contains the step-by-step instructions to help you learn how to:
• Define the Process Flow • Define Resource Assignments • Enter Process Information • Simulate your ProcessModel • View the Output Reports
In addition, this chapter answers the following questions:
• What is a Process Model? • What are the main components of the ProcessModel Modeling Environment? • What are the basic objects used in a Process Model? • What are connections?
"Streamlining cross-company processes is the next great frontier...where this decade’s productivity wars will be fought.” Michael Hammer, “The Superefficient Company,” The Harvard Business Review September 2001[menu_anchor name="Chapter-1-2-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
This section presents the concepts necessary to successfully complete the process for creating a process model, running the simulation, and viewing the output reports and graphs. Specifically you need to understand:
• Process Models • The Modeling Environment • Layout Window • Toolbox • Simulation Menu • Properties Dialog • Gallery • Shape Palette • Objects • Entities • Activities • Resources • Connections • Entity Arrivals • Entity Routings • Resource Assignments
“As the (Six Sigma) industry moves forward, simulation tools will be of great benefit in processes that are more difficult to pin down. Processes that are integrated across a variety of departments or business units are a great example...These complex environments almost demand process simulation.” – Eric Edwin, Vice President, SBTIProcess Models
A process model is a flow diagram with associated operational information for simulating a process. A process flow diagram consists of objects (the graphic shapes in the flowchart) and connections (the lines connecting the graphic shapes). Objects represent the elements of the process while connections depict element relationships. A Properties Dialog displays the operational information for each object and connection.

The layout window for drawing the flow diagram is a scrollable drawing area that is divided into pages. Pages correspond to what you would see if the diagram were printed. You may start the diagram anywhere on the layout although it is usually best to start in the upper left corner. The diagram can be easily moved later if needed.
The Toolbox is the column of buttons displayed on the left side of the layout window. (The Toolbox can be opened and closed by selecting. The primary buttons in the toolbox are the pointer button used to select objects, the shape button used to place new shapes on the layout, and the line button used to connect the shapes. The other buttons are for adding text, zooming and changing the line style.
The Simulation menu allows you to run the simulation, define scenarios or experiments, run experiments and set simulation options.
The Properties Dialog allows you to define simulation information for each object and connection in the model. It stays open when you select a different object or connection, and if you close it, double-clicking on an object will open it again.

The Properties Dialog changes context when you select another object. This allows you to view model element information instantly and edit all elements without having to open and close dialog windows each time you select another element.
The Gallery is a formatting command center. From the Gallery you can place shapes for your model, change color, font, line style, line ends and shadowing. The Gallery is positioned on the right hand of the screen for easy access, but can be positioned anywhere as a floating toolbar.
A shape palette allows you to select each shape used to represent each object in the model. The default shape palette is called General and contains shapes that are commonly used for process diagramming. Other palettes and shapes may also be used if desired.
“As Six Sigma is deployed throughout a company, Black Belts face increasingly difficult problems which require advanced approaches and tools. Delighting the customer is what it’s all about, and that comes from consistent end-to-end process performance. Understanding complex processes, and identifying the optimal way to serve customers and shareholders is where process simulation plays a key role.” – Kevin Weiss, President, The Capability Group
Entities The items or people being processed, e.g., products, documents, customers, etc.
Activities The tasks performed on entities such as assembly, document approval or customer checkout.
Resources The agents used to perform activities and move entities such as service personnel, operators or equipment.
Entity Arrivals Define where, when and in what quantities entities enter the system to begin processing. Entity arrivals are defined by connecting an entity to the activity or storage where it begins processing. Multiple arrival connections can be created from an entity to one or more activities/storages.
Entity Routings Define the processing flow for entities. An entity routing is defined by connecting an activity or storage to the next activity or storage in the processing sequence. An activity or storage may have multiple input routings and multiple output routings. Entities do not move to the next activity or storage until there is available capacity and the condition or rule for routing the entity has been satisfied.
Resource Assignments Define the use of resources in performing activities or moving entities. A resource assignment is defined by connecting a resource to either an activity or a routing depending on whether it is used for an activity or to make a move. Resources may be captured before any activity or routing and freed after any activity or routing. Multiple or alternative resources may be used for an activity or routing.
[menu_anchor name="Chapter-1-2-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]This section provides the step-by-step instructions for how to build a process model.
Specifically, it describes how to:
• Define the Process Flow • Define Resource Assignments • Enter Process Information • Simulate your Process Model • View the Output Reports
“With process simulation as part of their training, Six Sigma Experts will be more successful in individual projects and companies will be more successful with their overall Six Sigma deployment.” – Rick Murrow CEO of Air Academy Associates
In this tutorial you will build a model of a familiar business process—a help desk. It illustrates the power and simplicity of creating a working model using ProcessModel. The purpose of the model is to show how ideas for improvement can be tested using ProcessModel. This diagram shows the model we will create:

Incoming calls arrive at the help desk about every 5 minutes and a support representative evaluates the nature of each problem. The representative is able to resolve 75% of the calls immediately. However, 25% of the calls require that other support representatives do research and make a return call to the customer. The research itself combined with the return call requires 20 minutes.
[menu_anchor name="Chapter-1-2-4"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Use this procedure to define all objects and connections in the process flow. The first step to take in building a model is to define and connect the entity and each activity of the process. You will do this by placing shapes on the layout to represent the entity and each activity in the process sequence. Each shape is connected to the previous shape as it is placed on the layout. The diagram will be constructed from left to right.
1. Click once on the telephone symbol named Call in the Shape Palette to select it.
2. Move the cursor to the left side of the Layout and click once to place the shape.
3. Click once on the rectangle named Process in the Shape Palette to select it.
4. Move your cursor to the Layout and position it over the Call shape. Click on it and drag to the right.
5. With the Process shape selected, type Take Call.
6. Click on the rectangle named Process in the Shape Palette again.
7. Move your cursor over the Take Call shape. Click on it and drag to the right.
8. Type Perform Research.
9. Repeat steps 6 and 7 to create Return Call.
10. Click on the Connector Line Tool in the Toolbox.
11. Place your cursor over the Take Call shape. Click on it and drag down.
1. Click once on the telephone symbol named Call in the Shape Palette to select it.

2. Move the cursor to the left side of the Layout and click once to place the shape.

3. Click once on the rectangle named Process in the Shape Palette to select it.

“Outdated systems crush ideas that could save a life. Redundant processes prevent us from adapting to evolving threats with the speed and agility that today’s world demands.” – Donald Rumsfeld, Secretary of Defense
4. Move your cursor to the Layout and position it over the Call shape. Click on it and drag to the right.
• Notice that your cursor changes shape as you move it over the Call shape.

• A new shape is placed on the Layout with a double arrow connection between it and Call. The double arrow indicates an Entity Arrival into the system. If you do not drag the shape, the connection will not be made and you will have to create it manually or delete the new shape and try again.
5. With the rectangular shape Process selected, type Take Call.
• If the shape is not selected, simply click on it.
6. Click on the rectangle named Process in the Shape Palette again.
7. Move your cursor over the Take Call shape. Click on it and drag to the right.
8. Type Perform Research.
9. Repeat steps 6 through 8 to create Return Call as shown below:

10. Create an exit routing for the 75% of the calls that the Level 1 representative can handle immediately by clicking on the Connector Line Tool in the Toolbox.

11. Place your cursor over the Take Call shape. Click on it and drag down.

For this model, you need to define two customer support representatives, one to answer calls and one to do research and return calls. To define these resources, follow these steps:
1. Click on the shape of a person wearing a headset named Operator in the Shape Palette.
2. Move your cursor to the Layout above the Take Call activity and click to place the shape, then type Support 1.
3. Repeat steps 1 and 2, placing the second Operator shape above the Perform Research activity and naming it Support 2.
4. To connect the resources to their activities, click on the Connector Line Tool in the Toolbox.
5. Place your cursor over the Support 1 resource, click once and drag a connection down to the Take Call activity, then repeat steps 4 and 5 to connect Support 2 to Perform Research.
6. Repeat steps 4 and 5 to draw a connection from Support 2 to Return call.
1. Click on the shape of a person wearing a headset named Operator in the Shape Palette.

2. Move your cursor to the Layout above the Take Call activity and click to place the shape, then type Support 1.
3. Repeat steps 1 and 2, placing the second Operator shape above the Perform Research activity and naming it Support 2.

4. To connect the resources to their activities, click on the Connector Line Tool in the Toolbox.

5. Place your cursor over the Support 1 resource, click once and drag a connection down to the Take Call activity, then repeat steps 4 and 5 to connect Support 2 to Perform Research.

• Notice the green dots around the perimeter of the activity boxes when you drag a connection over them.
• Also notice the dashed lines with circles on each end between the resources and activities, indicating they are resource connections.
6. Support 2 also returns calls and has to be connected to that activity. Repeat steps 4 and 5 to draw a connection from Support 2 to Return Call.
[menu_anchor name="Chapter-1-2-6"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]You are now ready to complete the process information for the model. By double clicking on an entity, activity, resource, or connection, you open the Properties Dialog, which reflects the process information for that shape.
In this section, we will define the frequency of arrivals, enter activity times for the Take Call and Perform Research activities and define the percentage of calls that go to Perform Research and that exit the system. Finally, we will add cost information for the resources.
1. Click on the Selector Tool, the arrow at the top of the Toolbox.
2. Double click on the Entity Arrival connection between Call and Take Call to open the Properties Dialog. Click on the drop down menu arrow next to the Type field and select Periodic. Type 5 into the field labeled Repeat Every.
3. Double click on the Take Call activity. Type 2 into the field labeled Time.
4. Double click on the connection between Take Call and Perform Research. Change the Percent field to 25.
5. In the New Name field, type in HardCall.
6. Click on the Perform Research activity. In the Properties Dialog, enter 20 in the Time field.
7. Click on Return Call and enter 3 in the Time field.
8. Select the Support 2 resource and click on the Cost tab. In the Hourly Cost field, enter 20, for $20 an hour.
9. Select Support 1. Enter 12 in the Hourly Cost field.
1. To select any object or connection, click on the Selector Tool, the arrow at the top of the Toolbox, then click on the object.

2. Double click on the Entity Arrival connection between Call and Take Call to open the Properties Dialog. Click on the drop down menu arrow next to the Type field and select Periodic. Type 5 into the field labeled Repeat Every (i.e., repeat this arrival every 5 minutes).

3. To make the duration of the Take Call activity 2 minutes, double click on the Take Call activity. Type 2 into the field labeled Time.

4. To define the percentage of the calls that go to Perform Research, which is 25%, double click on the connection between Take Call and Perform Research. In the Properties Dialog, change the Percent field to 25.

• The percent field was automatically set previously to 50 (percent) because two branches were created earlier, balancing the percentages. After changing this routing to 25%, the other routing exiting down out of Take Call is automatically updated to 75% since there are only two percentage routings from this activity.
• While you are in this Percentage Routing Properties Dialog, you can separate the statistics that are displayed in the output report for the calls requiring research from the normal calls. This means that all of the easy call statistics (the ones that can be dealt with in two minutes) won't be lumped together with hard calls. You will be able to see what is happening to customers requiring advanced help.
5. In the New Name field, type in HardCall.

• Just by typing in a new name the statistics will automatically be separated for any entity that follows this path.
Note: The word HardCall must be one word (i.e. HardCall or Hard_Call, not Hard Call.)
6. The Perform Research activity takes 20 minutes. To enter this time, click on the Perform Research activity. In the Properties Dialog, enter 20 in the Time field.

• This would be a good time to further explain the Activity Dialog general tab. In this dialog there is an Input Queue, a Capacity and an Output Queue. You can think of these as a desk containing an inbox, a work area and an outbox. The default setting is to provide a large inbox, a work area for 1 entity and no outbox.
7. Since the Return Call activity takes 3 minutes, click on it and enter 3 in the Time field.

8. Select the Support 2 resource and click on the Cost tab. In the Hourly Cost field, enter 20, for $20 an hour.

9. Select Support 1. Notice that the Cost tab remains selected. Enter 12 in the Hourly Cost field.

You have now completed all of the steps to construct a basic model.
“ProcessModel is one of the main tools in our toolkit. We train every Black Belt to use it. Recently, process simulation was critical in streamlining our sales admin process… That project alone saved between three million and ten million dollars.” Angel Rivera, Master Black Belt, Cordis, Johnson & Johnson[menu_anchor name="Chapter-1-2-7"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
ProcessModel has updated the default way a model is saved / opened by ProcessModel to always save / open as a model package; previously the ‘Create / Install Model Package’ was a separate option. With the new Save/Open the creation of model package has now been unified.
Model Packages are a collection of all the files associated with a model, encapsulated and compressed into a single file that can be transferred to another user or department. Not only do Model Packages include the model files but they also contain all associated files, including spreadsheets, import files, documents, pictures, avi or wave files, etc. These files can be located in different directories or drives. When a model package is installed, all of associated files are placed in the same directory and all internal directory references are rewritten.
1. Start ProcessModel.
2. Open or create the model you wish to rename or save.
3. Click File \ Save, or the Save icon in the toolbar to save the model, click File \ Save As to save an already saved model with a different name. The following window will open.

4. Browse to the location where you wish to save the model, name/rename the model as desired, click on the save button to save the model. If you wish to save a model using a different file extension, for example .IGX you may do so my changing the extension type under ‘Save as type:’ (ProcessModel recommends that you only open/save models as a model package (.SPG).)
5. In a case where files are attached to ProcessModel that ProcessModel cannot find, a window will be displayed showing the missing files.
Creating a Model Package is the best way to assure that your model will run exactly as developed, with all the submodels, shifts, output formatting and external files. Transferring this one compressed file will take the headache out of trying to manually locate files that are in different directories or even on different computers.
With Open function (File \ Open, or clicking the Open icon in the toolbar) you can now open a model package by default, simply click Open and find the model package you wish to open. ProcessModel can still open files with the following extensions, .IGX, .FLO, .ABC, .AF3, .AF2, .PFD, .DRW, .IGT, .AFT, .PFT, .AGW, .AFW, .DRW, or .VSD, to open a file with any of these extensions, simply change the ‘Files of type” in the ProcessModel Open window to the one desired. ProcessModel recommends that you only open/save models as a model package (.SPG).
1. Start ProcessModel.
2. Click File \ Open, or the Open icon in the toolbar. The following window will open.

3. Browse to the location where you have saved your model, click on the model and press open. If the model you are looking for was not saved as a model package / has an extension other than .SPG, please select the appropriate extension from the ‘Files of type’. Older models built using ProcessModel, maybe saved with a .IGX extension. (ProcessModel recommends that you only open/save models as a model package (.SPG).)
4. Once the model opens, you can continue to edit, or simulate the model normally.
[menu_anchor name="Chapter-1-2-8"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The model is now complete and you are ready to run the simulation. Simulating your diagram is easy. With a click of the mouse, ProcessModel transforms this flowchart into an animated process simulation.
1. Click on the Simulate button, or click the Simulation pull down menu and select Save & Simulate.
2. Type in Help Desk as the name of your file and click on Save.
1. Click the Simulate button, or on the Simulation pull down menu and select Save & Simulate.

2. You will be prompted to save your process model. Type in Help Desk as the name of your file and click on Save.

After the file has been saved, the simulation will begin to run and the simulation window will appear. As you are watching the simulation, you may want to take note of the following items:

• Telephone calls moving through the flowchart provide visual feedback of calls flowing through the process.

• Resources have a status light associated with them indicating when they are in operation. The status light is green when the resource is being utilized and blue when it is idle.

• Counters are located above and to the left of each activity. They represent the number of calls waiting to process.

• The speed of the simulation can be controlled by moving the Speed Control Bar left for slower, right for faster.
• An on-screen Scoreboard keeps track of system statistics such as Quantity Processed, Cycle Time, Value Added Time, and Cost Per Unit.
"I've long ago left management of the industrial engineering function in our company (Thiokol Propulsion), but I'm continually impressed with the capability and utility of your software product based both on the monthly stories published in your magazine and the applications for the modeling software at our company. Keep up the good work!” – Jim Ekstrom, Thiokol[menu_anchor name="Chapter-1-2-10"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
The reports and graphs in the Output Module can provide you with the information you need to make better decisions that will result in achieving the goals of the company, organization, or group. You will be able to identify problems and opportunities that may not have been readily apparent at the outset. You could find potential processing bottlenecks, under-utilized resources, or unused capacity.
There are two types of output reports. One is an Output Summary which gives basic management overview information. The other provides Output Detail in the form of graphs, charts, and other decision-making information for the model builder.
1. Click on Yes in the Yes / No question box that pops up after the simulation run ends.
2. Scroll down towards the bottom of the report to view the Resource States By Percentage and Entity Summary sections.
3. Click on the button depicting a bar graph called View a State or Utilization Summary Graph.
4. Select Resource States from the State and Utilization Graph window and click on OK.
5. Click anywhere on the bar next to Support 2 to view this information in a pie chart.
6. To exit after the output data has been reviewed and analyzed, click on the File Menu and select Exit.
1. Click on Yes in the Yes / No question box that pops up after the simulation run ends.

• Clicking on Yes will open the Output Detail report as shown below.

2. Scroll down towards the bottom of the report to view the Resource States By Percentage and Entity Summary sections.

• You can see that Support 1 was in use 40% of the time, and Support 2 is in use almost all the time. This imbalance may indicate a problem area in your process. You may want to add more resources, change the assignment of resources or be prepared to have customers wait for extended periods for support. With ProcessModel, you can experiment with many different options to find the optimal solution.
• Move your cursor along the buttons at the top of the screen. The name of each button appears in the lower left hand corner of the screen as you pass your cursor over it.
3. To view this information in a graph, click on the button depicting a bar graph called View a State or Utilization Summary Graph. It is the seventh button from the left.
• You will see the State and Utilization Graph window.

4. Select Resource States from the State and Utilization Graph window and click on OK.

5. Click anywhere on the bar next to Support 2 to view this information in a pie chart.

6. To exit after the output data has been reviewed and analyzed, click on the File Menu and select Exit.

“Process simulation should be a part of every Black Belts toolkit. Over time, Black Belts are forced to look beyond the low hanging fruit. And that typically means working with processes that are more complex and difficult to visualize. Tools like ProcessModel become invaluable.” – Steve Fleming, CEO of Sigmax Solutions[menu_anchor name="Chapter-1-2-11"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
1. To view the Output Summary, click on View and select Output Summary.
2. To see the total cost for running the process for the week, click on Total Cost.
3. To see the average cost of each entity type, click on Entity Cost.
4. To obtain cost breakdowns for the resources in the process, click on Resource Cost.
5. To obtain cycle time for each entity type that exits the model, click on Cycle Time.
6. To obtain the amount of cycle time that adds value to the entity, click on Value Added Time.
“In recent years, forward-thinking companies like IBM, Texas Instruments, and Duke Power have begun to make the leap from process redesign to process management. These companies are emerging from all those changes as true process enterprises--businesses whose management structures are in harmony, rather than at war, with their core processes. And their organizations are becoming much more flexible, adaptive, and responsive as a result.” -- Michael Hammer, Harvard Business Review
1. View the Output Summary, click View and select Output Summary.

• The Output Summary provides information that a business manager would require to make a decision on a process change.
2. To see the total cost for running the process, click on Total Cost.

• Total Cost represents the sum of all the cost to run the process plus the addition of all unused resource costs.
3. To see the average cost of each entity type, click on Entity Cost.

• Entity Cost provides you with a realistic picture of the cost to produce one entity. Unused resource costs are applied to each entity type so you get a realistic picture of all costs involved in producing an entity.
4. To obtain cost breakdowns for the resources in the process, click on Resource Cost.

• Resource Cost provides a breakdown of the cost of the resource for time utilized and for the time that the resource was utilized. This table helps you to quantify the resource waste in your process.
5. To obtain cycle time for each entity type that exits the model, click on Value Added Time.

• Cycle Time is the length of time that an entity remains in the simulation model. Cycle Time is given as a average.
6. The amount of cycle time that adds value to the entity, is found in the same location shown above.
• Value Added Time is broken into Value Added, Non Value Added, and Book Value Added. These breakdowns allow you to determine what part of your process provides the values and what part does not.
[menu_anchor name="Chapter-1-3"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]“The strongest benefit I see from ProcessModel is actually seeing a simulated process. You can always give a paper presentation and tell people what changes they should make, but with ProcessModel, they can actually see how their flow can improve. I can show people areas their hurting in, where their bottlenecks are, and, basically where they can save money. The visualization aspect of ProcessModel helps out tremendously.” – Todd Vernon, GE Capital Auto Financial Services[menu_anchor name="Chapter-1-3-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
Now that you know a little about how to build a ProcessModel, this section will focus on how to use the software to make process improvement decisions. Like section 1.2, it is designed as a hands-on exercise that can be followed using the software. To make this exercise more realistic, we will use a slightly more complex version of the Help Desk model you just created. Specifically, this chapter contains the step-by-step instructions to help you learn how to:
• Open the New File • Run the Simulation • Print and Analyze the Output Reports • Change the Model
In addition, this chapter answers the following questions:
1. How does ProcessModel calculate cost? 2. What are the current output results of the Help Desk process? 3. What goals should be met by improving the process? 4. What changes can be made to the process?
We will be using a simple model of a familiar business process to quickly demonstrate the power of simulation as a decision-making tool. The same techniques can also be applied to understand and improve extremely complex processes. You will be shown a ProcessModel of a hypothetical help desk that accurately reflects the process as it is currently performed.You will then have an opportunity to identify specific process improvement opportunities and test the results of any changes against pre-determined goals.
"In every potential customer briefing we demonstrate the modeling and simulation capabilities of ProcessModel. Every customer has sat in awe of the simulation and have remarked that they were unaware of how easily and quickly models can be made.” – Chuck Aucoin, Senior Process Simulation Engineer, Dynamics Research Corporation
This section presents the concepts necessary to successfully complete this exercise. Specifically you need to understand:
• The help desk is open Monday through Friday from 8:00 a.m. to 5:00 p.m. • Calls arrive in a normally distributed pattern, with extra calls on Monday to reflect the help desk being closed on weekends. • All processing times are expressed as distributions to simulate randomness. • Calls on hold for 5 minutes become abandoned • It takes Support1 about 3 minutes to answer and resolve 75% of the calls. T(2,3,4) • The information from the other 25% of the calls is passed on to Support2 for additional research. • It takes about 20 minutes to perform the research. T(15,20,25) • It takes about 5 minutes for a supervisor to review the research. T(2,5,8) • It takes about 5 minutes for a Support2 to call the customer back and relay the information. T(3,5,7) • To simplify the model for our purposes, the only costs associated with the process are the salaries of the personnel. • Support1 makes $12/hr., Support2 makes $20/hr., and the Supervisor makes $30/hr. • We have set the simulation run time for one week, ending at 6:00 p.m. on Friday.
• It currently costs $2,786.12 to run the process for one week. • About 34 calls a week are lost because they are not answered within 5 minutes. • Calls requiring research take an average of 5.6 hours to complete. • The Support2 resource is busy 97% of the time, but Support1 only 52% of the time.
• Reduce the total cost of running the process for a week to less than $2,025. • Answer every call within 5 minutes • Resolve every customer issue within 1 hour and 15 minutes. • If possible, balance resource utilization so that no one resource is overburdened.
The cost shown in the Output Detail report reflects Activity Based Costing. It calculates the cost for individual entities based on the cost of associated resources and the amount of time an entity is being processed by those resources. It does not calculate the cost of resources when they are not actively processing an entity. To view the total operating cost of the process, you need to view the Output Summary report.
You are free to make any changes to the model that you think will help reach the specified goals. However, this chapter contains step by step instructions for the following changes you may want to consider:
• Eliminating any non-value-added activities • Investing in a new database that will reduce the average research time • Upgrading the website and phone system to answer more questions and re-direct callers, thereby reducing call volume • Cross-training resources • Hiring an additional resource
[menu_anchor name="Chapter-1-3-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]This section provides the step-by-step instructions for completing the exercise that will illustrate how to use ProcessModel to make decisions. Specifically, it describes how to:
• Open the New File • Run the Simulation • Print and Analyze the Output Report • Change the Model
Whenever you make changes to a model for the purpose of comparing the output results and making process improvement decisions, you should only make one change at a time. You should save the model under a new name after each change so you can run a separate simulation to isolate the results of each change. You can then save models that test combinations of changes until your process improvement goals are accomplished.
“I have used ProcessModel to support the development of New Product Introduction in a number of countries. It has proved immensely valuable in understanding process capability. I see ProcessModel as an invaluable tool.” – David Jeffries, GE Global Consumer Finance[menu_anchor name="Chapter-1-3-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
1. Click on the File pull-down menu in the upper left hand corner of the screen and select Open.
2. Select Help Desk2 and click on Open.
1. Click on the File pull-down menu in the upper left hand corner of the screen and select Open.

2. Select Help Desk2 and click on Open.

• If the Demos folder does not open automatically, you may need to navigate to find it. Typically, ProcessModel will install the following sequence of directories: C:\Program Files\ProcessModel\5.5\Models\Demos\Help Desk2 • When you open the Help Desk2 file, the following model will appear:

1. Click the Simulate button, or on the Simulation pull down menu and select Save & Simulate. 2. Click on Yes in the Yes / No question box that pops up after the simulation run ends.
“Continual pressure to accomplish more results with the same, or even reduced, resources has led to an assessment and analysis of where resources are expended. Sarasota County Government has embraced ProcessModel as an aid in our efforts to this end. We have found this software useful not only in quantifying the steps of a process, but also in clarifying and communicating those steps.” – Lora Hegener, IT Project Manager, Sarasota County Government
1. Click the Simulate button, or on the Simulation pull down menu and select Save & Simulate.

2. Click on Yes in the Yes / No question box that pops up after the simulation run ends.

• Clicking on Yes will open the Output Detail report as shown below.

1. Click on the File pull-down menu from the Output Report Screen and select Print.
2. Click on OK in the Print Window.
3. Find the Resources section of the report and make a note of the % Utilization.
4. Find the Entity Summary section and make a note of the Qty Processed for Abandoned, the Average Cycle Time, and the Average Cost.
5. Close the Output Report by clicking on the X in the upper right hand corner of the screen.
6. Click on the View pull-down menu and select Output Summary.
7. Click on Total Cost to view the total operating cost of running the process for one week.
1. Click on the File pull-down menu from the Output Report Screen and select Print.

2. Click on OK in the Print Window.

3. Find the Resources section of the report and make a note of the % Utilization.

4. Find the Entity Summary section and make a note of the Qty Processed for Abandoned, the Average Cycle Time, and the Average Cost.

• The cost shown in the Output Detail report reflects Activity Based Costing. To view the total operating cost of the process, you need to view the Output Summary report as shown below.
5. Close the Output Report by clicking on the X in the upper right hand corner of the screen.
6. Click on the View pull-down menu and select Output Summary.

7. Click on Total Cost to view the total operating cost of running the process for one week.

You are free to make any changes to the model that you think will help reach the specified goals. However, you may want to consider beginning with the following changes:
1. While holding down the Shift key, click once each on the Supervisor resource and the Supervisor Review activity to select them.
2. Press the Delete key and the Delete/Cut Verification box will appear.
3. Click on the Yes button, and the Supervisor and Supervisor Review shapes will be deleted.
4. Click on the File menu and select Save As.
5. Name the file No Supervisor and click on Save.
“I have had some great experiences with ProcessModel. ProcessModel really helps to drive discipline in the process mapping of our procedures. It has been a real eye-opener and helps to illustrate bottlenecks. ProcessModel certainly should be part of the Six Sigma toolbelt.” – Todd Brognan, GE Energy Services
Often times processes evolve over time, especially in businesses that are experiencing rapid growth. Frequently this evolution results in adding process steps that lose their value as things continue to change. These non-value-added steps are typically easy to identify once an organization focuses on finding them. If your use of ProcessModel helps you identify such steps, removing them from the model is easy.
1. While holding down the Shift key, click once each on the Supervisor resource and the Supervisor Review activity to select them.

2. Press the Delete key and the Delete/Cut Verification box will appear:

“Within ProcessModel, there is great application to six sigma. GE thrives on sigma levels, and ProcessModel shows us how we can reach our targeted goal. ProcessModel is definitely a value-adding tool.” – Todd Vernon, Black Belt, GE Capital Auto Financial Services
3. Click on the Yes button, and the Supervisor and Supervisor Review shapes will be deleted.

4. Click on the File menu and select Save As.

5. Name the file No Supervisor and click on Save.

Sometimes the actual time to perform a given process step can be reduced. This is often accomplished by the use of technology. Some examples include networks, databases, or peripherals like Palm Pilots and barcode scanners.
1. Click on the Perform Research activity to open the Properties Dialog.
2. Click and drag across the Time field in the Perform Research Properties Dialog to highlight it.
3. Type T(10,15,20) with no spaces. This is a triangular distribution which means that it takes at least 10, usually 15, and sometimes 20 minutes to Perform Research.
4. Click on the File menu and select Save As.
5. Name the file Faster Research and click on Save.
1. Click on the Perform Research activity to open the Properties Dialog.
2. Click and drag across the Time field in the Perform Research Properties Dialog to highlight it.

3. Type T(10,15,20) with no spaces. This is a triangular distribution which means that it takes at least 10, usually 15, and sometimes 20 minutes to Perform Research.
4. Click on the File menu and select Save As.

5. Name the file Faster Research and click on Save.

“Using the power of simulation to model processes, Newport News Shipbuilding is able to illustrate high cost process flows and recommend cost saving solutions. ProcessModel helps us identify the redundancies in a process, the waste, and the non-value added activities.” – Mark Ristow, Production Engineer, Newport News Shipbuilding[menu_anchor name="Chapter-1-3-7"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
Hiring new team members is expensive. ProcessModel can help you assess the impact of potential new team members before you go through the costly hiring and training process.
1. Click on the Support1 resource. This will open the Properties Dialog box.
2. Enter the number 2 in the Quantity field, as shown.
3. Click on the Take Call activity. This will open the Properties Dialog box.
4. Enter the number 2 in the Capacity field, as shown.
5. Click on the File menu and select Save As.
6. Name the file Additional Resource and click on Save.
1. Click on the Support1 resource. This will open the Properties Dialog box.

2. Enter the number 2 in the Quantity field, as shown.
3. Click on the Take Call activity. This will open the Properties Dialog box.

4. Enter the number 2 in the Capacity field, as shown.
5. Click on the File menu and select Save As.

6. Name the file Additional Resource and click on Save.
“ProcessModel is well suited for analyzing, understanding and improving various logistical and business processes. It was selected because it is user friendly, flexible, cost effective, and it provided the detailed features to satisfy the project requirements.” Scott Sutherland, PricewaterhouseCoopers, LLP[menu_anchor name="Chapter-1-3-8"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
Making better use of existing staff is usually a better alternative than additional hiring. Cross-training is a way of providing current employees with the skills to perform new responsibilities. ProcessModel can easily help you evaluate the effect of having existing resources help out in other areas.
1. Click on the Connector Line Tool near the upper left corner.
2. Click once on Support1, then move your cursor to the connection between Support2 and Perform Research. When you see a small flashing circle on the end of the cursor, click again to place the connection.
3. The Properties Dialog will show that this is an Alternate Routing.
4. Since you now have 2 additional resources available, click on Perform Research, and increase the capacity to 3.
5. Click on the File menu and select Save As
6. Name the file Cross Train and click on Save As.
1. Click on the Connector Line Tool near the upper left corner.

2. Click once on Support1, then move your cursor to the connection between Support2 and Perform Research. When you see a small flashing circle on the end of the cursor, click again to place the connection.

3. The Properties Dialog will show that this is an Alternate Routing.

4. Since you now have 2 additional resources available, click on Perform Research, and increase the capacity to 3.

5. Click on the File menu and select Save As.
6. Name the file Cross Train and click on Save As.

Companies can sometimes decrease the amount of work coming into the system. Examples include the call center which implements a new phone menu system that answers some of the most common questions, or the company that adds more details to their on-line FAQ list. Outsourcing of a particular type of work is another example of how this may be accomplished.
1. Click on the Entity Arrival Routing (double-headed arrow) between Call and Take Call to open the Properties Dialog.
2. Click on Define Pattern to open the Daily Pattern box and click the 8:00am - 12:00pm, N(65,5) option in the Start - End, Quantity box.
3. Click on the Quantity field and change the 65 to 60. Then click on the 12:00pm - 5:00pm, N(55,5) line in the Start - End, Quantity field.
4. Click on the Quantity field and change the 55 to 50, then click on Tuesday in the Day field.
5. Click on the Quantity field and change the 48 to 45, then click on the 8:00am - 12:00pm, N(48,2) line in the Start-End, Quantity field.
6. Click on the Quantity field and change the 48 to 45, then click on the Copy Day button.
7. Click on Wednesday in the Day field, then click on the Paste Tuesday button.
8. Repeat Step 7 for Thursday and Friday, then click on the Close button.
9. Click on the File menu and select Save As.
10. Name the file Reduced Arrivals and click on Save.
1. Click on the Entity Arrival Routing (double-headed arrow) between Call and Take Call to open the Properties Dialog.

2. Click on Define Pattern to open the Daily Pattern box and click the 8:00am - 12:00pm, N(65,5) option in the Start - End, Quantity box.

3. Click on the Quantity field and change the 65 to 60. Then click on the 12:00pm - 5:00pm, N(55,5) line in the Start - End, Quantity field.

4. Click on the Quantity field and change the 55 to 50, then click on Tuesday in the Day field.

5. Click on the Quantity field and change the 48 to 45, then click on the 8:00am - 12:00pm, N(48,2) line in the Start-End, Quantity field.
6. Click on the Quantity field and change the 48 to 45, then click on the Copy Day button.

7. Click on Wednesday in the Day field, then click on the Paste Tuesday button.

8. Repeat Step 7 for Thursday and Friday, then click on the Close button.
9. Click on the File menu and select Save As.
10. Name the file Reduced Arrivals and click on Save.
You have experienced the simplicity and power of creating models with ProcessModel and have only scratched the surface of its features and capabilities. The real story is how this product will help you improve your workplace. ProcessModel is a product that allows everyone to participate in the process engineering process. It lets those who know the most about the process become the architects for change and to effectively communicate the process and proposed changes to others. It will help you compete in the new global marketplace—working smarter and creating more profits as a result.
[menu_anchor name="Chapter-2"] [separator style_type="shadow" top_margin="0" bottom_margin="40" sep_color="" icon="" width="" class="" id=""]1. Click Start on the Windows taskbar.
2. Point to All Programs, then to ProcessModel and click on ProcessModel 5 (on Windows 8 ProcessModel 5 will appear on the start screen).
3. By default, after starting ProcessModel, a demo model will open based on your chosen default industry. You can change both your default industry, and whether the demo model opens by clicking Tools / Preferences.
The ProcessModel window has several default toolbars and the Gallery palette.

1. Click the File menu, and select New Process.
2. On the File menu, click Page Setup.
3. Under Orientation, select Landscape to change the page orientation.
4. Click the Margins tab.
5. Type .50 or your preferred setting in each of the four margin boxes. Notice the preview shows how the page will look with the selected margin settings.
6. Click the Header and Footer tab.
7. Click the Custom Header button. You can add items to appear at the top of all pages in any of three positions (Left, Center, or Right Section).

8. Select the items you want to appear on the page. The chart name or any text of your choosing, page number, page number of the page total, date, or time can appear on the chart.
9. Click the Custom Footer button. Set the footer by following the same steps you used to set the header.
10. Click OK to return to Page Setup.
11. Click OK to return to Document.
[menu_anchor name="Chapter-2-1-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Layers let you organize objects by letting you separate related objects from other objects. A common use of layers is with background and foreground objects. You can place background objects on one layer, and then you can place foreground objects on a different layer, and manipulate them without disturbing the background.
Another use of layers is to organize model notes on layers that can help you during model development, but be made invisible during presentation.
The Layer Manager lets you add, delete, and set layer options.
1. To access the Layer Manager, go to the Arrange menu and click on Layers. Then select Layer Manager.
2. To change the layer name, click Rename, type Notes, and then click OK. Notice that the layer name changes in the list.
3. To add a layer called Chart, click Add, type Chart, and then click OK. Notice that the Chart layer now appears in the list.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] The layers appear in the list in the same order in which you added them to the model. Layers at the top of your list appear behind items at the bottom of your list.
4. On the Layer Manager screen, review the options (Visible, Printable, or Locked) for each layer.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You can set the visible, printable, and locked layer options by selecting the appropriate box for each layer. Visible and Printable let you see and print a layer, respectively. When a layer is locked, you cannot access it without unlocking it.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You must select the Visible option for a particular layer on the Layer Manager before you can access that layer to make additions or changes.
5. Click OK. Notice the tabs at the bottom left of the chart area. These are the layer tabs. The tab contains the name of the layer. To activate the layer, click the tab. The active tab becomes highlighted.
![]()
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] When you have more than two layers, the arrow buttons to the left of the tabs let you scroll through the layer tabs.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You can also access the options for a particular layer by clicking the right mouse button on that layer tab and selecting from the menu. This menu also allows you to access the full Layer Manager menu.
Layers allow you 1) to place a background behind your model, 2) to create notes that will help you during development but be invisible during presentation, or 3) to organize different elements of your model.
This tutorial starts from the page setup you created in Chapter 2, Section , Add layers.
How To - Work with Objects on Different Layers
1. Click the Chart layer tab to activate the Chart layer, if necessary.
2. On the Gallery palette, select the first item and place it on the screen.
3. Go down to the bottom tabs and select the Notes tab.
4. Select the Text tool. Then click on the model layout wherever you wish to place these notes. Type Notes for the entity.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Any new items placed on the screen will be placed on the active layer. You can only access and change an item when you have activated the layer on which the item was originally created.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To access a layer, you must first select the option “Visible” for that layer on the Layer Manager.
5. To temporarily make the text of the notes invisible, click on the Chart layer, then right mouse click on any tab (Chart or Notes in this case).
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] When a layer is activated, you cannot de-select the Visible option for text on that layer.
6. Select Layer Manager.
7. To hide the Notes, deselect the box Visible. Click OK. The item/object remains visible, but the text of the notes now becomes invisible.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] When a layer is selected, you can edit only the objects and text from that layer. You can see objects or text from any other layers for which you have selected the option Visible on the Layer Manager, but you cannot access them (unless you have selected Edit All Layers).
8. To make the Notes visible again, right mouse click on the tab Notes again at the bottom of the screen. Click Layer Manager. Select the box Visible. Click OK.
9. On the File menu, click Close. When prompted to save the chart, click No.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] It is possible to edit all layers at once. You can reach the Edit All Layers option by going to the pop-up menu for Tabs or to the Layer Manager. It is also possible to edit objects on all layers at once by clicking the right mouse button on a layer tab, and then clicking Edit All Layers.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If you are going to connect elements from different layers, you must be in Edit All Layers mode.
In ProcessModel, shapes offer important capabilities that make them more powerful than ordinary graphics. Shapes have properties that allow them to represent your business operations and become part of simulations to test those operations. In contrast, graphics are simple pictorial enhancements to the charts on your screen displays. Graphics do not enhance the simulations. Instead, they offer you the capability to present more explanation as part of your screen displays.
ProcessModel also enables you to convert Shapes into Graphics or Graphics into Shapes through the Arrange menu. This ability means that you can design custom graphics, and easily embellish your models by adding new components.
Whether you are creating an organization chart or a process model, shapes are the components that make up a chart. ProcessModel provides the Gallery of hundreds of predrawn shapes and a drawing tool that lets you draw your own shapes. From this Gallery, you can select a set of shapes for each of your projects, create other unique shapes for those projects, and place all the shapes for a project on a specialized Palette. You can save any specialized Palette for later use.
The first three sections of this tutorial teach you to:
• Open the Gallery and identify shapes • Place shapes from the Gallery into the ProcessModel • Position shapes on the page • Number shapes
1. Click the File menu, and click on New Process.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] The General palette contains shapes typically used in flowcharts. To complete this tutorial, you should have the General palette open. If the General palette is not open, press F9 to bring up the Manage Media menu. In Public Media Collections, double click on ProcessModel 5, and then double click on the General palette.
2. Rest the pointer over the green globe on the top row of the Shape palette. Its name is Item (Entity). Left click the green globe. It will be highlighted on the palette.
3. Move the pointer to the chart area, and click in the position where you wish to place the green globe. ProcessModel places the globe where you clicked.
4. To place additional shapes on the chart, return to the Shape palette. Highlight and place each shape by repeating steps 3 through 5.
1. Click on the Process shape on the left toolbar.
2. Position the pointer on the green globe you placed on the chart in the previous tutorial. The pointer changes to an image of two shapes connected by a line.

3. Point inside the globe shape, press and hold the left mouse button, and drag the pointer to the right of the shape. When you release the mouse button, the Process shape appears and is connected to the globe shape by a line.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You can click a shape in the Shape palette and drag it onto your chart. However, to automatically connect a new shape to an existing shape, you must use the method described in step 3.
4. On the File menu, click Close. Click No when prompted to save the chart.
1. Double click on the Selector tool at the top of the left toolbar.
2. Click on the Box entity on the Shape palette. The Box will be highlighted.
3. Move the pointer to the chart area, and click in the position where you wish to place the first Box. ProcessModel places the Box where you clicked.
4. Move the pointer to another part of the chart, click to reset the tool, and click again. ProcessModel places another Box on the chart.
5. You can place as many Boxes as you wish on your chart by repeating this step. The copying mode for the Box remains activated until you click on another object on the palette or another option on the left toolbar.
6. On the File menu, click Close. Click No when prompted to save the chart.
After a shape has been placed on the layout, it can be exchanged for any other shape. This avoids having to reconnect lines or re-enter data that has been entered previously.
1. Click on the graphic(s) in the layout to be changed.
2. From the Arrange menu, select Replace Shape.
3. From the Replace Shape dialog select a shape from the Share Media tab, from the Shape Library tab by clicking on the Replace button. Alternatively a graphic can be pasted that was previously copied to the clipboard by clicking the Paste from Clipboard button.

No matter what type of graphic (Entity, Resource, Activity, etc.) is used to replace the current shape, the original settings of the shape on the layout will remain unchanged.
In addition to placing predefined shapes into the chart, you can draw your own shapes. You can draw these shapes with the Draw tool:

1. Click the File menu, and click on New Process.
2. Click on the Draw button on the Standard Toolbar to activate the Draw Toolbar.
![]()
3. Click the Draw tool on the lower toolbar. A menu of shapes appears.
4. Click Ellipse.
5. Move the pointer to the center of the chart.
6. Press and hold the left mouse button, and drag the mouse down and to the right until the ellipse is two inches long and one half inch high.
7. Release the mouse button.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Use the tick marks on the ruler as you draw to measure how long the shape is.
8. Click the Draw tool, and then click Circle.
9. Draw a circle so that it fits neatly inside the ellipse.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If you need to reposition the circle after drawing it, follow the directions in Chapter 2, Section , Moving Shapes.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To resize a shape, see “Stretch or resize a shape” in Chapter 2.1.5.
Begin this exercise by drawing the Ellipse and Circle shape as you did in Draw shapes.
1. Click the Selector tool.
2. Click on the circle shape so you can move it. It will be highlighted on the screen with a frame surrounding it.
3. To move the whole shape, click in one of the hatched sections of the frame or hold the ALT key and click on the inside of the shape.

4. When the pointer becomes a four-headed arrow, you can drag the frame so the circle fits inside the ellipse.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] The box will show eight black squares or handles that allow you to stretch the shape. If you position the pointer on one of the black handles and drag the shape, the shape will distort. To move the whole shape without stretching or resizing it, position the pointer ONLY in one of the hatched sections of the frame or hold the ALT key and select any portion of the graphic.
Begin this exercise by drawing the Ellipse and Circle shape as you did in Draw shapes.
1. Click the Selector tool.
2. Click on the circle shape. It will be highlighted on the screen with a frame surrounding it.
3. Left click on any one of the eight black handles on the frame, and hold down while you drag the handle.
4. Release when you have stretched the circle shape into the desired shape. Notice that it is possible to change the circle into an elliptical shape by stretching the circle disproportionately along its two axes.
5. You may also reshape any shape by right-clicking on it, and selecting the option Reshape from the menu.
ProcessModel has the power to align and space shapes by snapping the shapes to a grid or by aligning shapes to ruler guidelines.
1. On the File menu, click New Process.
2. Place several shapes on the Layout.

3. On the Arrange menu, point to Grid and select Show Grid Dots. A grid of dots appears on the chart area.
4. Click the Selector tool.
![]()
5. Drag each shape so that the middle of the shape aligns to the same row of dots on the grid. Notice the shapes snap to the grid.
6. On the Arrange menu, point to Grid and select Show Grid Dots to turn off the grid dots.
1. Point to the ruler on the left side of the window.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If rulers do not appear on the page, go to the View menu and click Rulers to make the rulers visible.
2. Press and hold the left mouse button, and drag a guideline out of the ruler.
3. Release the mouse button when the guideline is aligned with the 2-inch mark.
4. Drag each shape so that each is lined up with the guideline, creating line of three shapes on the page. Notice the shapes snap to the guideline.
5. To turn the guidelines off, go to the Arrange menu, point to Guidelines, and select Snap to Guidelines.
6. On the File menu, click Close. Click No when prompted to save the chart.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] When you turn the guidelines off, they still exist and can be displayed by going to the Arrange menu, clicking on Guidelines, and choosing Snap to Guidelines. To end the display, click Guidelines again, and choose Snap to Guidelines again. To remove the guidelines, drag them back to the ruler.
1. On the File menu, click New Process.
2. Add two activities to the layout in a way that they do not align.
3. Click the Selector tool. Drag a box encompassing both shapes on the layout.
4. On the Arrange menu, point to Align and click Middle. All the shapes will align horizontally.
5. On the Arrange menu, point to Space Evenly and select Across Centers. All shapes will move so that they are spaced evenly.
6. On the File menu, click Close. Click No when prompted to save the chart.
Each shape is numbered in the order in which you placed it on the chart. You can display or hide these numbers, and you can renumber the shapes if necessary.
1. Click a rectangular activity shape on the Gallery, and then click the chart three times to place three shapes on the page.
2. On the Format menu, point to Numbering, and then click Show All Shape Numbers.
3. On the Format menu, point to Numbering, and then click Manual Renumber.
4. Type 100.
5. Click on the object from which you want to begin the renumbering.

6. Click the pointer on each shape from left to right. The numbers on the shapes change to reflect the new numbers.
7. On the File menu, click Close. Click No when prompted to save the chart.
[menu_anchor name="Chapter-2-1-6"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]When you have customized graphic or a set of shapes you want to use again, you can store them in a Palette. The best graphics format are WMF or EMF. Other graphic formats may be imported with varying success.
1. Right-mouse-click on any shape in the palette.
2. Select Add Files.

3. Move to the directory that contains the graphics to be imported. Select the files to be added by holding down the CTRL key while selecting the graphics. Press the Add button when finished selecting graphics. All of the graphics selected will be added to the current palette.

You can adjust the size of the icons in any shape palette by left clicking on any one of the shapes, then dragging the lower right hand corner of the icon to the size you would like.

1. In the Gallery, select the Options button.

2. Select New/Subject.

3. Type in the name of the Subject (palette) to be created. Then type in the name of the Collection the Subject will be placed under or which existing Subject it will be placed under.

4. Press OK to create the new Collection and Subject.

• To add new shapes to the palette, see “Storing New Shapes in a Palette” in Chapter 2.1.6.
[menu_anchor name="Chapter-2-1-9"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]There are many icons available in the different shape palettes. Browsing for the one you want can be difficult. However, there is a Find feature available from the gallery Options Menu.
![]()
Not all icons have had keywords or descriptions entered. But some of the ProcessModel 5 palettes have them for you to experiment with, then add your own searchable keywords and descriptions. After clicking the Find option, enter the word you would like to search for (doctor in this example) and click the Find Now button.
![]()
All palette icons matching your search criteria will be displayed in the gallery for your use.
![]()
If you would like to save this new palette, you can click the Save button in the Find window.
All gallery icons are searchable by name. In addition, you can add keywords and descriptions to classify your icons into groups or categories, then search by those items. To add keywords or descriptions, right click an icon and select Properties.

Enter the words you would like to search on in the Keywords and Descriptions fields and click OK.
[menu_anchor name="Chapter-2-1-10"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]ProcessModel gives you the ability to use two types of lines in your models: 1) connector lines and 2) Draw tool lines. Connector lines are best for flowcharts because they attach to shapes and remain attached, even when the shape is moved. In contrast, lines that you create with the Draw tool do not attach to shapes and cannot represent modeling information.
The remaining sections of this tutorial teach you to:
• Draw different types of Connector lines
• Draw lines using the Draw tool
• Change the style of lines
There are several types of Connector lines: Direct, Right Angle, Curved, Org Chart, Cause and Effect, and Lightning Bolt lines. When you draw a Connector line, the line end defaults to an arrow.
The Direct Connector line is an alternate to the Right Angle line and can be used in creating process flow diagrams.
1. On the File menu, click New Process.
2. Place several shapes on the layout as shown below.

3. Click the arrow below the Connector Line tool, and click Direct Line. ![]()
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] The button displays the currently selected Connector line. If the Direct Line is shown on the button, click the button rather than the arrow.
4. Left mouse click on the right center edge of Process, and drag the pointer to the left center edge of Process2. When you release the mouse button, a straight line with an arrow head is drawn.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Instead of dragging a line, you can click, move the pointer to the end point, and then click to end the line.
5. On the File menu, click Close. Click No when prompted to save the chart.
A Right Angle line is a default line used in developing a process model.
1. On the File menu, click New Process.
2. Place several shapes on the layout as shown below.

3. Click the arrow below the Connector Line tool, and click Right Angle Line. ![]()
4. Left mouse click on the right center edge of Process, and drag the pointer to the left center edge of Process2. When you release the mouse button, a right angle line with an arrow head is drawn.

5. On the File menu, click Close. Click No when prompted to save the chart.
The Curved Connector Line is a specialty line that should be used sparingly in ProcessModel because it takes up a additional memory during simulation.
1. On the File menu, click New Process.
2. Add two activities to the document in a way that they do not align.
3. Click the arrow below the Connector Line tool, and click Curved Line. ![]()
4. Drag the pointer from the center of the left edge of Process to the center of the right edge of Process2. A curved line is created automatically. Notice the handles that appear when you finish the curve. These handles are called control points and let you reshape the curve.

5. Click the Selector tool. ![]()
6. Drag the top control point to the right. A line attached to the end point of the line appears. This control moves with your pointer and affects the curvature of the line. The blue line is a preview of how the curve will look when you finish.
The Org Chart Line is a specialty line for creating organizational charts where multiple lines to shapes must stack on top of each other. It is also useful for creating general tree diagrams or for creating process models when the line behavior of an Org Chart line is desired.

1. Click the arrow below the Connector Line tool, and click Org Chart Line. Org Chart lines work best when dragging a shape from another shape. ![]()
2. Click a Process shape on the Shape palette, and click the chart area.
3. To place a second process shape, click a Process shape again in the Shape palette.
4. Point to the first Process shape you placed on the chart. The pointer changes to an image of two shapes connected by a line.
5. Click and hold the left mouse button, and drag the pointer down and to the right of the shape. ![]()

6. To place a 3rd Process shape, click the Process shape in the palette.
7. Move the pointer onto the top Process shape, and drag the pointer down and to the left of the shape.

The two lines connecting the lower process shapes will be aligned with each other.
The Cause and Effect Line is a specialty line used to define Ishakawa or fishbone diagrams. Cause and Effect Lines should not be used to develop process models.
1. On the File menu, click New Process.
2. Click the arrow below the Connector Line tool, and click Cause and Effect Line. ![]()
3. Click the left mouse button, and drag a line. This is the backbone of the cause-and-effect line.
4. Click a spot on the line, and draw a new line outward. Notice if you move the pointer, the line snaps to certain angles.
5. Release the mouse button. The text cursor appears at the end of the line so you can type a label.

6. Click the Selector tool. ![]()
7. On the Edit menu, click Select All, and then press Delete.
A lightning bolt line represents more than the simple transfer of items between process steps. It depicts a break in the system during which there is behind-the-scene activity.
The lightning bolt line allows you to add a line after a ProcessModel is developed or to replace a process routing line.
1. On the File menu, click New Process.
2. Add two activities to the document in a way that they do not align.
3. Click the arrow below the Connector Line tool, and click Lightning Bolt Line. ![]()
4. Left mouse click on the right center edge of Process, and drag the pointer to the left center edge of Process2. When you release the mouse button, a lightning bolt line with an arrow head is drawn.
5. To draw a Lightning Bolt line with an origin outside one of your processes and a connect point in Process 2, click on Lightning Bolt.
6. Click outside Process 2 and drag a line to the bottom edge of Process 2. When you release the mouse button, a lightning bolt line with an arrow head is drawn, ending at Process 2.

7. On the File menu, click Close. Click No when prompted to save the chart.
The lines you draw with the Draw tool are not like other lines in the process models you create. Draw lines do not represent a process route and do not carry ProcessModel information. They are graphics only.
Draw tool lines offer you the advantage of adding graphical information to your process depiction. They can also exist on a background layer of the ProcessModel separate from the main model. Draw tool lines are not used in running the simulation, and you do not collect statistics related to them.
You access the Draw tool by clicking on the pencil symbol on the upper toolbar. This displays a separate toolbar across the bottom of the screen. On that toolbar, you can click on the Draw tool to select from a menu of shapes and lines. You can also manipulate the shapes, access the Layer Manager, and set features of the lines such as color, weight, style, types of arrowheads, and crossovers.
The Draw tool gives you two options for drawing lines: Jointed Line and Curved Line. With the jointed line, you can also draw straight lines, and with the curved line, you can also draw arcs.
1. Click the Draw tool.
2. Click Jointed Line. ![]()
3. Click the left mouse button, drag the pointer and release to draw a line.
4. Click the left mouse button, move the pointer, and click to draw a line. Continue to click the mouse button at various points to create new line segments. Then double-click to complete a jointed line.

5. To move the entire jointed line, click in the hatched area of the frame. When the pointer changes to the four-headed arrow, you can drag and release to place the whole frame in a new location.
6. To stretch the graphic, click on one of the six handles on the frame and drag.
7. On the File menu, click Close . Click No when prompted to save the chart.
You can set many formatting styles for both Connector lines and lines drawn with the Draw tool. Formatting options include dotted or dashed, heavy or light, line ends, color, fill, and crossovers.
1. On the File menu, click New Process.
2. Add four shapes to the layout as shown below.

3. Using the connector lines connect, the activities opposite to each other.
4. Click on the Draw button to activate the draw toolbar (if the draw toolbar at the bottom of the screen is not already showing).
5. Click the line between the two yellow shapes.
6. Click the arrow on the Line Color button, and click red. ![]()
7. Click the Line Weight button, and click the third option. ![]()
8. Click the Line Style button, and click the second option.![]()
9. Click the line between the two blue shapes.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You can also format lines using the Line/Border command on the Format menu.
10. Click the Crossovers button, and click the second option. This affects lines that cross each other. ![]()

11. Click the right-angle line to the right of the Decision shape.
12. On the File menu, click Close . Click No when prompted to save the chart.
When attaching connector lines, connect points appear on the target shape. The line end snaps to the connect point.
1. Click the File menu, and click on New Process.
2. Place two activity shapes from the Gallery on the chart, one beside the other.
3. Click the arrow on the Connector Line tool, and click Direct Line. ![]()
4. Click anywhere on the first shape. Notice the points that appear around the outline of the shape. These are the connect points.
5. Move the pointer to the middle point on the right side of the shape. The line snaps to the point.

6. Drag the line toward the second shape. Notice the connect points appear on the second shape.

7. Click when the line is attached to the middle point on the left side of the second shape.
8. Click the Finished button when finished.
9. Drag the second shape down one inch. The Connector line remains attached to both shapes.
Once a Connector line is attached to a shape, you may want the line attached to a different point. You can change the point to which the line is connected.
1. Click the Connector line to select it.
2. Move the pointer to the connect point on the left shape. The pointer changes to a plus sign with a Direct line indicating you can change the connect point. ![]()
3. Drag the point to the lower right corner point, and release the mouse button.
4. Move the pointer to the connect point on the right shape.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You can change the attachment point of filled lines in the same manner as non-filled lines.
5. Drag the point to the upper left corner point, and release the mouse button.

6. On the File menu, click Close . Click No when prompted to save the chart.
[menu_anchor name="Chapter-2-1-11"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]These connectors provide an easy method of tracing routings for a model that is printed and placed in a binder. When Off-Page Connectors are activated, all routings that cross page boundaries are divided and a corresponding flag is placed on each side of the break. Some examples of Off-Page Connectors are shown below.

1. On the Format menu, click Diagram.
2. From the Format Diagram dialog, click on the Off_page Connectors tab.
3. Select the appropriate check boxes.
1. Select the routing for which you would like to show Off-Page Connectors.
2. Right-mouse click on the selected line.
3. From the pop-up menu, select Format.
4. From the Format dialog, select the Arrows and Crossovers tab.
5. Select the Connectors check box.
[menu_anchor name="Chapter-2-1-12"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]You can add text to your chart in several ways. Free form text is a separate text object that is not attached to a shape and can be moved freely around the page. You can also attach text to a shape or line so that it moves with the shape or line.
This tutorial has three sections:
• Adding and Editing Free form Text • Attaching Text to Lines • Editing Attached Text
This tutorial is designed to teach you to:
• edit free form text • attach text to lines • edit attached text
1. Click the New Process button on the toolbar. ![]()
2. Click the Text tool. ![]()
3. Click in the upper left portion of the screen, and type Yellow and Blue.
4. Click the Selector Tool. ![]()
5. Click on the Font tab in the Gallery.
6. Change the font size to 32.

7. Change the font style to Bold, by pressing the Bold button.
8. Change the font style by selecting another font.
9. Click on the Draw button to activate the Draw Toolbar (if it is not already activated). ![]()

10. Highlight the word Yellow.
11. Click on the Text Color button and select yellow as the color. ![]()
12. Click on the Fill tab in the Gallery.
13. From the drop down box, select Fill Gradient.

14. Select a horizontal gradient fill. ![]()
15. Select the End Color from the bottom of the page.

16. Change the end color to light gray, then click outside the text box.

You can easily attach text to lines so that when they are moved, the text moves with them.
1. Click on a route that is attached to a line.
2. Type Yes. The text attaches to the line.
3. If the line runs through the text, select a fill color of white.

[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If you have difficulty selecting text that is attached to lines, drag a selection box around the text that is large enough to encompass the text but not other graphics.
1. With the selector tool highlighted, select any attached text.

2. Any typing will replace the current text...or
3. Click a second time on the text to enter into a edit text mode.
![]()
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You can change the format of any text (size, color, font) using the methods described in this section.
You can use departments to display the flow of information and materials between different roles, groups or organizational units. These departments, or lanes, show a division of work that is apparent without disturbing the overall flow of the process.
Since Swimlane charts help identify what happens in each department during a process, they are good tools for tracking time and quality management.
As a model operates, ProcessModel can visually communicate the handoffs between departments. These points become opportunities to reduce errors and miscommunication.
ProcessModel refers informally to departments as Swimlanes because the graphic representation of the departments resembles a swimming pool with separate travel lanes marked for each participant (or department). In the model, you depict the activities of each department in its separate area on the chart, and watch them operate in relationship with each other.
The intelligent departments in ProcessModel combine a flow chart's depiction of logic with an interaction diagram's depiction of responsibility. In process diagramming, departments help show how tasks flow through groups such as manufacturing and customer service toward a final outcome or creation of a product. Many processes contain sub-processes that appear in their own departments.
Shapes behave the same in departments as they do on a normal diagram page. You can still connect lines, edit points, size, move, delete, change the text, or change the color of shapes. In addition, you can:
• Name departments • Set the vertical or horizontal orientation of departments • Expand or shrink departments • Reorder departments • Move the location of department names
[menu_anchor name="Chapter-2-2-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]This section contains a tutorial in which you will create a ProcessModel with several departments. Setting Up Departments: Basic Procedures contains a series of basic procedures you will use to create that ProcessModel. These procedures will be a useful reference as you build future models.
In creating this Swimlane chart, you will learn to:
• Create lanes using the Department tool • Label department headers • Label department shapes • Connect shapes between lanes
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To change Swimlane properties, right mouse click on your Swimlane chart. Click Properties to add departments and change settings such as colors, department names, line styles, and lane widths.
You will create a ProcessModel of an organization with four departments.
1. Click the File menu, and point to New Process.
2. Click on the Department symbol on the left toolbar.

The Insert Departments dialog box appears.
3. In the Insert Departments dialog box, both the Department Orientation and the Text Orientation should be set to Horizontal.
4. In the display box, click the default department name. ProcessModel highlights the default name Dept. 1.
5. Click Edit.

6. Type Sales and click Add. ProcessModel displays a model with Sales as the label on the first department.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] When you create departments for the first time in a diagram, you can set the department orientation and text orientation for headers. After you have created your departments, you edit them in the diagram space.
7. Click the Department tool. The Insert Department screen appears. Click Add.
8. In New Department Name, type Shipping. Click Add. The new department name Shipping appears on the Department list.
9. Click Add again. In New Department, type Mfg. Click Add.

10. Repeat steps 5 and 6 to add Accounting (Acct.) to the Department list.
11. Click OK and the completed Swimlane chart appears, showing the four departments.
You will place an entity and a series of process steps in the ProcessModel. You will also show the process route that the entity will follow through these steps.
1. Go to the Palette and click on the first item (the green globe). The green globe will be the entity that flows through the process steps.
2. Place the globe in the Sales Department by clicking in the blank Swimlane to the right of the box labeled Sales. (ProcessModel will not allow you to place the globe in the department label space.)

3. To place a Process related to the green globe entity, go to the Palette and click on the Process symbol (rectangle).
4. Click on the globe on your model, hold down the mouse, and drag the Process symbol to the right. The ProcessModel route shows that Process involves the globe entity.
5. To add a second process, go to the Palette, and click on the Process symbol. Click in the activity called Process and drag to the right and then down.
(Notice that the Swimlane expands vertically to accommodate Process 2.) Process 2 is now linked to Process by a ProcessModel route.

[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If any part of a graphic (entity, activity, resource, etc.) touches a department divider, then the department will expand to encompass that shape. When a graphic is moved into the next department, the preceding lane department lane will shrink to the minimum size possible to encompass the remaining graphics.
6. To change the department in which Process 2 occurs, click on the edge of Process 2 and drag it down into the Manufacturing department. The process route line automatically lengthens to reach into the new department and the sales department lane resizes to fit the remaining graphics.
7. To place the next process in the Shipping department, select the Process activity from the Palette, click in Process 2, and drag to the right and then up into the Shipping lane.
8. Repeat this procedure to place Process 4 in the Accounting Department. (If the box representing Process 4 crosses the dotted line on the screen, it means that the model is wider than the 8-1/2 by 11-inch page.)
You will reorder the Departments into this sequence: Sales, Manufacturing, Shipping, and Accounting.
1. Click on the department label of the Manufacturing department. The box will be highlighted.
2. Click any area on the frame between the black squares. The cursor changes to four arrows.

3. Drag the Manufacturing lane to a position above the Shipping lane. The four lanes or departments now appear in this order: Sales, Manufacturing, Shipping, and Accounting.
4. The processes in the four lanes realign automatically to simplify the routing lines.
You will rename the Sales department as the Sales Organization department.
1. Click on the Sales department label. Click on the word Sales. The Text tool becomes highlighted and the cursor changes to a text cursor.
2. Position the Text tool at the end of the word Sales and add the word Organization. Notice that part of the word wraps to the next line.

3. To widen the title box, click on the Selector tool and drag the right side of the box to the right. The label will now appear on one line.

4. On the File menu, click Close. Click No when prompted to save the chart.
[menu_anchor name="Chapter-2-2-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]1. On the Insert menu, click Department, or click the Department tool. ![]()
2. In the Insert Departments dialog box, type in the name of the new department and click Apply.
3. Click OK.
1. Click the Department tool.
2. Under Department Orientation, select Horizontal or Vertical.
3. Click OK.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You can only set the lane orientation of departments the first time you add departments to a diagram.
1. Click the Department tool.
2. Under Text Orientation, select Horizontal or Vertical.
3. Click OK.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You can only set the text orientation of department labels the first time you add departments to a diagram.
1. In an active diagram, click a department label.
2. Click the right mouse button, and click Format Diagram.
3. In the Process tab, select a name location from the Department Name Area list.
4. Click OK.
1. In an active diagram, click a department label.
2. In the Gallery, click the Fill tab, select Fill Color, Fill Pattern, or Fill Gradient, and then click a color, pattern, or gradient.
3. Repeat the same procedure for lines and shadows/3D.
1. In an active diagram, click a department label.
2. Click the right mouse button, and click Format Diagram.
3. Click the Borders and Dividers tab, and select the area you would like to apply borders or dividers from the list.
4. Select from the various line types, styles, widths, and colors available.
5. Click OK.
1. Click the department header.
2. The cursor changes to a text cursor.
3. Delete the text, and type a new name.
1. Click the department header, and press DELETE.
1. Click the department header that you want to move.
2. Click any area between the black squares.
3. The cursor changes to four arrows.
4. For horizontal departments, drag the department up or down to the desired position.
5. For vertical departments, drag the department left or right to the desired position.
1. In an active diagram, click a department label.
2. Click the right mouse button, and click Format Diagram.
3. Click the Lanes tab, and change the bottom margin, end margin, and minimum lane size.
4. Click OK.
[menu_anchor name="Chapter-2-3"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]To improve the outcome of a situation, we must understand the factors operating in it. ProcessModel gives you the tools to understand the effects of timing, delays, and interactions among components in a process. However, other types of factors may require another analysis tool called a cause-and-effect chart. Cause-and-effect analysis helps to highlight all the causes of a problem and to identify the root causes before trying to solve it.
[menu_anchor name="Chapter-2-3-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]ProcessModel offers a process analysis feature for gathering, sorting, and relating information in cause-and-effect charts, also called Ishikawa or fishbone charts. These charts can be used to relate causes to their effects and to determine their levels of influence. They are also excellent for documenting team brainstorming sessions.
An Ishakawa chart shows the major causes which may contribute to a problem. Then for each major cause you can diagram the contributing primary causes. For each primary cause you may also identify sub causes. Sub Causes, or root causes, are the underlying factors that affect a situation.
Cause-and-effect lines, however, do not have process properties. In other words, they carry no processing information behind them. Instead, the cause-and-effect analysis is a support diagram that helps you understand problems. Because the cause-and-effect diagram can help you determine where to focus your further analysis, it is the basis for designing an accurate ProcessModel of your process.
[menu_anchor name="Chapter-2-3-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]This section describes how to use ProcessModel to analyze a problem with a cause-and-effect chart. This tutorial has four sections:
• Stating the problem • Identifying major causes • Identifying primary causes and sub-causes • Using information to improve processes
In creating this cause-and-effect chart, you will learn to:
• Set up and label a cause-and-effect chart • Move causes from one area of the chart to another • Add and delete causes
Use the example of a procurement department that is slow in processing its purchase requisitions. You want to find out why the department is not able to process more requisitions. You resist a quick fix and decide to look at all the possible causes. A good way to do this is to develop a cause-and-effect chart.
Begin with a clear statement of the basic problem or desired effect: the Procurement Department processes too few transactions.
Then identify major causes of the effect. These can be skills, procedures, information systems, authority, or any other relevant causes that lead to the situation you are examining.
When considering the causes of any effect, examine the five Ms:
• Man (people) • Machine (technology) • Method (process) • Material (structure) • Milieu (environment)
In each of these five areas, review the process in the procurement department to identify major causes that lead to slow processing. For example, the number of workers in the office may affect the number of transactions that the Procurement Office can process. Identify each primary cause, and identify sub-causes for each cause. Your diagram will ultimately display a complete list of causes and sub-causes.
In the procurement department example, you identify two problems that can be solved simply. The first problem occurs in the area of Process, where you find that incomplete forms are being recorded in the log. The second problem occurs in the area of Structure, where you find that company regulations require the Procurement Manager to review and authorize all discrepancies. This step creates a backlog whenever the manager is unavailable.
For the third major cause, People, the primary cause of slow processing is a need for software training. In Technology, the primary cause is the need for a form that staff can e-mail to the procurement department.
By identifying the root causes, you can improve the process and solve the problem. By eliminating the problems identified in Process and Structure, you can expect to see improvement. By providing the training identified in People and Technology, you can expect to see more improvement.
The cause-and-effect diagram provides a method for a group of people to define, categorize and agree on the major causes of a problem process.
1. Click the Selector tool. ![]()
2. On the General Palette, click the rounded rectangle.
3. Click on the right side of the work area to place the shape for the effect or problem.
4. While the box is selected, type the problem statement: Procurement handles orders too slowly.
5. Click on the Connector Line tool on the left toolbar, and select the cause-and-effect style line to draw a horizontal line from a point on the left side of the work area toward the Effect box on the right. This forms the spine of the “fish." ![]()

1. For each major cause, draw a diagonal line from the top of the work area to the spine or from the bottom of the work area to the spine.
2. For those major causes that you identify, place a rectangle shape at the end of the diagonal lines (leaning left). Adjust lines and size the shapes as necessary. In our example, we identify four major causes: process, people, technology, and structure.
3. Label each of these by typing while the box is still selected. The mode automatically changes to Text.

The chart is easy to edit. Simply drag lines from their midsections and snap lines to and from other lines. Movement works by hierarchy. If you move the spine, all attached lines will move. If you move a major cause, all sub-causes and root causes will move, but not the spine.
1. For each major cause, identify the primary causes.
In our example, we identify two problems that can be solved simply. For the major cause People , the primary cause of slow processing is a need for software training. In the major cause Technology, the primary cause is the need for a form that staff can e-mail to the procurement department.
2. Identify each primary cause and label it on a horizontal line leading from the major causes.

3. Identify sub-causes for each cause, and add them to your diagram as diagonal and horizontal lines radiating from each cause until you have enough detail. The diagram will ultimately display a complete list of causes and sub-causes.

Move the text block as needed and use the Fill tab in the Gallery to color the background of the text as desired.
By identifying the root causes, you can improve the process and solve the problem. By eliminating the problem identified in Process and Structure, you can expect to see some improvement. By providing the training identified in People and the new form required in Technology, you can expect to see more improvement.
[menu_anchor name="Chapter-2-3-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]1. Click the Selector tool. ![]()
2. On the General Palette, click the rounded rectangle.
3. Click on the right side of the work area to place the shape for the effect or problem.
4. While the box is selected, type the problem statement.
5. Click on the Connector Line tool selector on the left toolbar, and select the cause-and-effect style line.

6. Draw a horizontal line from a point on the left side of the work area toward the Effect box on the right. This forms the spine of the “fish.”

7. Click on the Line Connector tool.
8. Click on a point above the spine. Press and hold the left mouse button, and drag downward to draw a new line that attaches to the spine.
9. Add a cause-and-effect line for each cause you identified. Arrange the lines above or below the spine so they are evenly spaced and easy to read.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Double-click on the Connector Line tool to draw several cause lines in succession. Select the finish button to exit the line mode.
1. For each major cause you identify, place an activity shape at the end of the diagonal lines you have drawn.
2. Label each cause box by selecting the box. When the mode automatically changes to text, you can type a label in the box.
3. Press and hold Shift, and click to select all of the shapes you labeled.
4. On the Arrange menu, point to Make Same Size, and click Fit to Text.
1. Click the line you want to move.
2. Drag the line to the new location. The line, the shape at the end of it, and all dependent lines pointing to it will move with it.
3. To stretch the line, click on the line. Handles appear on either end of the line.
4. Grab the handle of the line and drag until it is the length you desire.
1. Click the line attached to the shape you want to delete.
2. Press Delete. The line, the shape at the end of it, and all dependent lines pointing to it are deleted.
[menu_anchor name="Chapter-2-4"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]With ProcessModel you can create several types of business charts to establish understanding of difficult concepts or relationships. These charts can then be used separately or linked with process models to create a complete picture of the operating environment in which a process operates. Business diagrams that can be created with iGrids include:
• Block • Circle and Spoke • Cascade • Checklist • Comparison • Deployment • Pyramid • Target • Timeline

Example business diagrams created using iGrids are shown above.
[menu_anchor name="Chapter-2-4-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Business charts are easy to create because ProcessModel has built-in automation called iGrids. These iGrids prompt you for the information to make professional looking business diagrams quickly. A tutorial for a Pyramid chart follows to demonstrate the basic procedure. Each of the other iGrids work in a similar fashion.
[menu_anchor name="Chapter-2-4-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]This tutorial has five sections:
• Inserting the Pyramid iGrid • Labeling the Pyramid levels • Adding color to the Pyramid levels • Changing the Pyramid levels • Adding a 3D effect
In creating this pyramid chart, you will learn to:
• Insert the Pyramid iGrid • Label the Pyramid levels • Add color to the Pyramid levels • Change the Pyramid settings • Add a 3D effect
In this tutorial, you create the following pyramid chart using a iGrid.

The first step is to select the basic shape you will use and to set the number of levels and dimensions for the layers of the pyramid.
1. Click the File menu, and point to New Process.
2. Click Blank Page.
3. On the Insert menu, click iGrid. A dialog box of available iGrids opens. Basic is selected.
4. Select Pyramid, and click OK.
5. Type 4 in the Number of Levels box, type 1.5 in the Level Height box, .2 in the Spacing Between Levels box, and 6.5 in the Pyramid Base Width box.

6. Click OK . The pyramid outline appears on the screen. This outline is the iGrid.

You will select the font, font size, and font style for the labels on each level of the pyramid. Then you will place those labels on each level.
1. In the Gallery, click on Font.

2. Type 18 in the Font Size box. Click the Bold button to apply the bold style.

3. Click on the General palette in the Gallery. Click the Process shape in the Shape palette.

4. Click each of the pyramid levels. The shape is placed in the pyramid, and each shape conforms to the outline.

5. Click the Selector tool.
6. Click the top level of the pyramid, and type Teamwork.
7. Click the second level, and type Communication.
8. Click the third level, and type Customer Support.
9. Click the bottom level, and type Quality Products and Services.
1. Click the top level.
2. Click Fill tab in the Gallery, and click light blue.
3. Fill each level with different shades of blue, from lightest to darkest.
When you insert a iGrid, you specify settings for the chart. In the case of the Pyramid chart, you set the number of levels, level height, space between levels, and base width. After the chart is on the page, you can change these settings.
1. Click the right mouse button on the iGrid. Do not click one of the levels, however. You must click outside the chart.

2. Click Edit iGrid. Handles appear on the chart, and a new toolbar opens.

[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] The toolbar contains buttons that let you insert, delete, and split a level in half. To activate these buttons, you must select one of the levels in the chart.
3. Point to one of the handles. The pointer changes to indicate you can adjust the chart size.
4. Drag the pointer up. The chart height tightens. Dragging the pointer down lengthens the chart.
5. Click the Finished button on the Pyramid toolbar.
1. Click the Selector tool.
2. Click the top level of the pyramid.
3. Press and hold Shift while clicking the other three levels of the pyramid. This selects all levels at once.
4. Click the Shadow/3D tab in the Gallery.

5. Click the option in the first row, first column.

6. On the File menu, click Close. Click No when prompted to save the chart.
[menu_anchor name="Chapter-2-5"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Statistical Process Control (SPC) charts support your quality and process engineering. You can use them to identify key areas for improvement in a process, and then to monitor process improvement over time. They present complex data in easy to understand formats.
There are several types of SPC charts: Histograms, Run charts (trend charts), Pareto charts, Control charts, Scatter charts, and Pie charts. They are all valuable as planning tools. The next two parts of this section will focus on Pareto charts as an example of how you can use SPC analysis to improve your business planning. The final two parts of this section discuss the use of Control charts to track variation in performance.
[menu_anchor name="Chapter-2-5-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]To select and place SPC charts in a diagram, use the DataAnalyzer Chart wizard on the Insert menu. Select which SPC chart you want to use, and then type your information into the active spreadsheet in the diagram space. DataAnalyzer will graphically convert the data for display in the diagram.
[menu_anchor name="Chapter-2-5-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Pareto charts allow you to gather data about the problems you are examining and present graphic representation of the frequency or size of each problem. This provides a way to identify those problems that offer the greatest opportunities for improvement.
The Pareto chart is based on the idea known as the 80-20 Rule: that 80 percent of any result can be attributed to 20 percent of the activities. For example, of 100 errors, 80 can be eliminated by correcting only 20 percent of the causes. The Pareto chart allows you to present your cause data so you can prioritize the causes on which you will focus. It also guides you away from choosing solutions that will worsen the existing situation.
A Pareto chart gives you a different type of information than other ProcessModel analyses provide. Typically, a ProcessModel identifies 1) processing bottlenecks, 2) interdependency problems, 3) resource constraints, 4) cycle time problems, and 5) non-determinate processes. In contrast, a Pareto chart 1) identifies how significant each contributing cause is in a situation, and 2) gives you a visual format to show that relative significance to other people.

The basic steps for analyzing a situation with a Pareto chart are:
1. Identify the general problem area you want to investigate and, within that problem, select the specific issues you will analyze.
2. Choose the most useful unit of measurement (such as frequency or cost) for your data collection.
3. Choose the time period for your data collection.
4. Gather current data or review historical data.
5. Compare the relative frequency or cost of each problem category.
6. Set up a Pareto graph by placing the problem categories on the horizontal line and the frequencies on the vertical line. Include the unit of measurement in the chart labels.
7. (Optional) Draw a cumulative percentage line showing the portion of the total that each problem category represents.
8. Interpret the results. Ask: What factor has the most impact on the goals of our business and customers? Remember that the most frequent or most expensive factor is not always the most important.
Variations of the basic Pareto chart can provide additional information by displaying the basic data in different ways. Frequently used variations include:
• Major Cause Breakdowns—Break down the tallest bar (i.e. often the cause with greatest effect) into subcauses in a second, linked Pareto.
• Before and After Comparisons—Draw “new” Pareto bars side by side with the original Pareto to show the effect of a change. Present the comparison as one single chart or two separate charts.
• Data from Multiple Sources—In side-by-side Pareto Charts, show data you have collected on the same problem but from different departments, locations, equipment, and so on.
• Data in Different Measurement Scales—Use the same categories, but measure your results differently. For example, compare the measurement of cost and frequency for the same categories.
[menu_anchor name="Chapter-2-5-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]1. Click the File menu, and point to New Process.
2. On the Insert menu, click the SPC Chart button. The Chart wizard will appear.
3. On the wizard, click Next to view a list of chart types.
4. Select the Pareto chart from the list in the Chart wizard.
5. Click Finish. A blank data chart will appear.

1. Notice the tabs in the lower left corner. The Spreadsheet tab lets you view and modify the spreadsheet data. The Chart tab lets you view and modify the chart.
2. Double-click the column heading Label. The Column Header Text dialog box opens.
3. Type Process Step, and click OK. Notice the column is not wide enough to display the entire heading.
4. Point to the line between the two column headings. A horizontal double headed arrow appears. ![]()
5. Drag the line to increase the width of the column until you can see the entire heading.

6. Label the other column Idle Time (hours).
7. Type in the names of the process steps and the idle times in hours.

1. Once you have the Idle Time information and Step Labels in the spreadsheet, click Chart at the bottom of the spreadsheet. A Pareto chart appears, displaying the data you entered.

2. The following results are shown:
The “Receive Approved Purchase Requisition from Manager” step appears first and displays at the far left position. It shows five hours of Idle Time. The next-largest Idle Time step is the “Interoffice Mail Form to Manager” step.
The vertical line at the left of the chart displays the amount of Idle Time. The cumulative frequency (up to 100 percent) is the vertical line at the right of the chart.
The Pareto Chart also displays a curve that identifies what portion of the total causes are attributed to each individual cause.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If you wish to change the color of the bars, the style of the background, or the placement of the legend on the chart, follow the procedures in Change the chart appearance.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To delete the chart, follow the procedure in Delete a chart.
Compare the relative contribution of each factor to the results you are observing in the model.
The chart illustrates that the greatest amount of idle time results from two causes: 1) staff must wait to receive the manager’s approval of their purchase requisitions, and 2) staff does not have an interoffice mail form to submit purchase information quickly to the manager. It is likely that if you can solve the problems in these two areas, you can resolve 55 percent of all the reasons for customer calls about slow service. Therefore, the Pareto chart has given you valuable information on how to focus your business resources.
[menu_anchor name="Chapter-2-5-4"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]1. Click the File menu, and point to New.
2. In the Zoom box, click 100%.
3. On the Insert menu, click SPC Chart. The Chart wizard opens.
4. Click Next. A list of SPC charts displays. Pareto Chart is already highlighted.
5. Click Finish. A spreadsheet opens where you enter the data to be charted.
Use the chart you created in Insert a Pareto chart.
1. Notice the tabs in the lower left corner. The Spreadsheet tab lets you view and modify the spreadsheet data. The Chart tab lets you view and modify the chart.
2. Double-click the column heading Label. The Column Header Text dialog box opens.
3. Type a label for the first column (e.g. Process Step), and click OK.
4. If the column is not wide enough to display the entire heading, point to the line between the two column headings. A horizontal double-headed arrow appears. ![]()
5. Drag the line to increase the width of the column until you can see the entire heading.

6. Type the label Idle Time (hours) for the other column.
1. Click the Chart tab. The chart appears. No data is in the chart unless you are using the chart created in the previous section.
2. Click the right mouse button on the heading, Pareto Chart, and then click Format Title.
3. If needed, drag to highlight the text in the Text box, type Purchase Requisitions, and then click OK.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You can reposition the heading by left clicking on it and dragging it to the desired location on the chart.
4. Click the right mouse button on the y axis label, # of errors, and then click Format Title.
5. Drag to highlight the text in the Text box, type Idle Time (hours), and then click OK.
6. Click the right mouse button on the bottom line, the x axis, and then click Insert Titles.
7. Select Category (X) Axis, and then click OK.
8. Click the right mouse button on the x axis label, and then click Format Title.
9. Drag to highlight the text in the Text box, type Process Step, and then click OK.

10. Drag the chart toward the title to leave more room at the bottom for the process step labels.
11. Point to the bottom handle of the hatched area, and drag downward to increase the height of the chart.

Use the chart you formatted in Format the chart.
1. On the View menu, click the Spreadsheet tab.
2. Click the first cell in the Process Step column.
3. Type the following information in the appropriate columns:

4. Click the Chart tab. The chart data appears on the chart.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You may also use the Data Import Wizard tool from the Tools menu to import an existing data file.
Use the chart you created in Step 2: Putting Data into the Spreadsheet.
1. Click the right mouse button on one of the red bars. The bars on the chart are called the series.
2. Click Format Series.
3. Click the Fill Color box, click blue, and then click OK. The bars change to blue.
4. Click the right mouse button to the side of the chart, and then click Format Chart.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Stay inside the hatched lines while working with the chart.
5. Click the Backdrop tab.
6. Click Gradient, click the To Color box, and click yellow.
7. Click OK.
8. Drag the legend to the lower right corner.
9. Click the right mouse button beside the chart, and then click View in 3D.
10. Click outside the hatched lines to place the final chart on the page. To make changes to the chart, right click and select Micrografx SPC Chart Object.
11. On the File menu, click Close. Click No when prompted to save the chart.
Use the chart you created in Add data.
1. Click the Selector tool on the Toolbar.
2. Click the SPC chart.
3. Press DELETE.
4. On the File menu, click Close. Click No when prompted to save the chart.
[menu_anchor name="Chapter-2-5-5"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]A control chart allows you to track consistency of performance within an identified range of values. Variations within the range are assumed to be normal, whereas variations outside the range alert you to some special problem that should be investigated. Control charts are complex statistical tools. You should refer to detailed sources for additional information. This section describes how you can use ProcessModel to create a control chart.

Control charts operate on the premise that all processes have some inherent variation. You should pay attention to extreme variances from the average (called special causes), but normal variances from the average (called common causes) should be ignored in the short term and improved through a long-term process improvement effort.
[menu_anchor name="Chapter-2-5-6"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]To use our procurement example again, let’s say you want to track the average cost over time of processing a purchase requisition.
Gather your information about the costs of all purchases within a period of time; for example, one week. Average the costs and record this information, as well as the highest and lowest cost for that period. We will use the data shown in Step 2: Creating the Control Chart. We will plot it on an X Avg, R (X Average, Range) Control Chart by using the Chart wizard.
1. On the insert menu, click the SPC Chart button. The Chart wizard will appear.
2. On the wizard, click Next to view a list of chart types.
3. Select the X Avg, R control chart.
4. Enter the data into the spreadsheet.

5. To display the data as a control chart, click Chart. ProcessModel defines the Upper Control Limit (UCL) and Lower Control Limit (LCL) and displays the information on two charts.
The top chart displays the average values within the UCL and LCL. The average values do not vary as much as the range values do, since these values are averaged numbers of all the values for a period of time.

The bottom chart displays the range of values. Notice that the values in this chart vary widely. These values vary so much more than the top chart because the bottom chart shows the difference between the highest and lowest of all the values.

Both charts are helpful when trying to determine if the process is in statistical control.
The Control chart indicates the range of variability over time. A high degree of variability may indicate that your process can be improved. Range values outside the UCL and LCL also indicate a special-causes situation. Research and address any special causes that are outside the boundary of the UCL or LCL.
These charts indicate something happened during week 25 that resulted in a loss of statistical control in the process.

[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Evaluation Applied to a Process When you apply the control chart to a process, look for occurrences outside the UCL or LCL. These occurrences indicate that the process is “out of control.” Over time, efforts to improve the process should reduce the distance between the UCL and LCL, indicating an improvement in process stability.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Evaluation Applied to a Maintenance Program You may w ant to track gas mileage performance of your car or a fleet of vehicles. Set up a form to gather gas mileage information that you need. With ProcessModel’s control chart, you can check that the data falls within range. When the data falls out of range, you may check whether the truck needs a tune-up, air in its tires, or other maintenance. This process also helps identify a regular maintenance program that may be justifiable, since it can reduce gasoline costs
This variation in week 25 is probably an area where you will want to focus further analysis. Identifying the cause of the variation could lead to a revision of your process and a return to process stability.
1. On the File menu, click Close.
Click No when prompted to save the chart.
[menu_anchor name="Chapter-3"] [separator style_type="shadow" top_margin="0" bottom_margin="40" sep_color="" icon="" width="" class="" id=""]
[menu_anchor name="Chapter-3-1"]
[separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
ProcessModel requires names and numbers to be entered following some simple rules. You should be familiar with these conventions to ensure that valid entries are made in your model.
Using descriptive, but short, names is recommended. The name you enter in the properties dialog for a resource, for instance, could be used in Action logic. If the name is too long and cumbersome, entering the logic statements could become tedious. If the name is too short or cryptic, you may not remember what it is later. However, you are free to adopt your own naming convention within the limits of the following rules:
• All letters are case insensitive ("A" is the same as "a"). • Only the letters A through Z (upper or lower case), the digits (0-9) and the underscores "_" may be used. No other symbols or characters may be used in ProcessModel names. • Names must begin with a letter of the alphabet or an underscore “_”. (e.g. Item5 or _Item5, but NOT 3_Item). • Names must be single words (use underscores "_" for spaces). • DO NOT use hyphens, e.g., High-Color would be invalid.
You should note that if no name is assigned to an object, a default name will be assigned. Also note that some words are reserved. Using one of these words will result in an underscore being appended to the name.
When entering numbers as a constant or within an expression, you should follow these rules:
• Do NOT use commas. The number 2,984.43 should be entered as 2984.43. • Enter negative numbers using the dash (e.g.-345.23, not (345.23) or <345.23>)
All values, such as quantity and time values, may be expressed as a number such as 23.5 or 9.25.
[menu_anchor name="Chapter-3-2"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Entities are the items or people being processed—e.g., products, documents, customers, etc. An entity is defined by selecting an entity shape from the shape palette, placing it on the layout, and entering any applicable information for that object in the properties dialog.
Each pre-defined entity graphic is assigned a number by ProcessModel. These numbers are used only for the NewGraphic statement (see NEWGRAPHIC).
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] ProcessModel contains several predefined entity shapes. Each predefined entity shape has the word ‘entity’ placed in parentheses in the shape name. However, you may also define custom entity shapes.

Name The name of the entity (e.g. Customer, Product_A, etc.). The entity name is used primarily for decision making and reporting purposes. It is simply a descriptive attribute that may be changed during the simulation and tested for making process decisions. Entity statistics are reported based on the final name of the entity.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] When you add an additional text label to an entity, place the label on the center of the entity. Otherwise, the entity will appear smaller during simulation.
Statistics: Yes / No This selection determines whether statistical information will be collected, displayed in the scoreboard, and reported in the Output Module for this entity.
Object Type Allows the type of object to be changed from Entity to something else.
[menu_anchor name="Chapter-3-2-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The identification of cost is optional and has no effect on the behavior of the model.

Initial cost The initial value assigned as the cost of each newly created entity (negative 1,000,000 to 1,000,000). Once assigned, the entity cost may be increased automatically during the simulation based on waiting time, activity time, and resource usage. This cost is added to the pre-defined Cost attribute of the entity.
Waiting cost The cost that is added to the entity per hour of waiting time. Cost may range from negative 1,000,000 to 1,000,000. This cost is added to the pre-defined Cost attribute of the entity.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about costs, see “ProcessModel and Activity-based Costing” in xx.
Activities are the tasks performed on entities—e.g., assembly, document approval or customer checkout. An activity is defined in terms of the activity time as well as any resource requirements. User-defined action logic may also be specified for an activity. Activities have a processing capacity and may have input and output queues associated with them. Resources connected to an activity are captured before the activity takes place and freed after it has ended.
[menu_anchor name="Chapter-3-3-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
Name The name of the activity (e.g. CheckIn).
Capacity The maximum number of entities (1 - 999,999) that can be processed concurrently (either individually or in batch). Scenario Parameters may be used in place of numeric values. INF may be used to represent the largest numeric value allowed (999,999).
Stats on This check box allows you to turn off statistics collection for individual activities in your model. By default, this option remains checked.
Time The time to perform the activity. Any expression including distributions, attributes, or variables may be entered as the time value. If a resource is connected to the activity, the resource is captured before the time is taken. Activity times may also be defined using TIME statements in the Action section of the dialog.
Input Queue Cap. The capacity of the input queue. The input queue is like a waiting area. If the input queue has available capacity, entities may be routed into it to wait until the activity has available capacity to process the entity. If the queue has no available capacity, entities must wait at the previous activity (or in that activity’s output queue) until capacity becomes available in the input queue or the activity (0–999,999). Scenario Parameters may be used in place of numeric values.
Output Queue Cap. The capacity of the output queue. The output queue is like a waiting area where entities will wait for available capacity at the intended destination (0–999,999). Scenario Parameters may be used in place of numeric values.
Object Type Allows the type of the object to be changed to something other than an activity. For instance, you may want to change an activity object into a storage or resource.
[menu_anchor name="Chapter-3-3-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The batching tab allows you to hold entities in queue until a specified quantity is reached. For example, parts might be held in front of a heat treating oven until a specified quantity is reached. The group of part is moved into the oven and the entire batch is heat treated for a specific time. The batch is then moved out of the oven. This batching is performed to increase the efficiency of an expensive resource allowing it cycle only when it has a full load.
When the batch is created in the input queue, one entity is moved into the capacity for processing (the batch). The processing time will be for the batch. If the batch is created in the output queue, then the routing time will be for one entity (again the batch).
A basic explanation of how ProcessModel works may prove helpful. When the batch quantity is reached, all entities are then attached to a new entity (the batch). You may change graphics, set attributes, accumulate cost and assign resources to the new entity. Recognize you are making assignments to the new entity. If the batch is unbatched, the batch entity goes away and the attached entities are removed from the batch and continue on. VA Time accumulated as a batch will be divided among the unbatched entities. Cost added to the batch will also divide to the unbatched entities.
If a resource is assigned (Get) to an entity prior batching, the resource will be trapped in the batch. If you have less resources than the quantity of the batch, the models will be unable to process the request to get the next resource and entities will stop at the Get statement. If a resource is assigned to a batch and is unbatched before the resource is released (Free), the resource will be transferred to the first exiting entity from the batch.
When and unbatch occurs, entities will exit the batch in the same order as they entered the batch.
A batch can consist of other batches. When unbatching, only one level of batch is unbatched at a time.
It is possible to accomplish many other types of batching. For example you could
1. Batch at the end of a shift regardless of quantity – see the model object “short batches”
2. Batch all waiting entities – see the model object “all waiting entities at a specific time”
3. Produce separate batches for different entities -- see the model object “group similar entity types”
4. Batch based on multiple criteria -- see the model object “smaller quantity because the batch was open too long”

• None No batching occurs before the activity. (No Batch Size field appears.) • Batch The activity will batch or group incoming entities (whether or not the entities have already been batched) and process them as a batch. The number batched is defined by the Batch Size field.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] An input queue with a capacity that meets or exceeds the maximum batch size is required.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] An Attribute may be used in the Batch Size field to set the number to be batched. The specified batch quantity is evaluated each time an entity is batched. If the entity attribute is less than or equal to the number already waiting to be batched, the batch is formed (with possibly a new size) and released for processing. This allows the specified batch quantity to vary if desirable. It also allows for the creation of short batches.
• Unbatch The activity unbatches or ungroups the incoming entity (if the entity has not been batched, the unbatching is ignored) and processes each entity individually.
• Rebatch The activity will batch or group the same number of entities back together that were unbatched previously. This means you don’t have to know how many entities were previously unbatched in order to rebatch them—no batch size is required.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] An input queue with a capacity that meets or exceeds the maximum batch size is required.
• None No batching occurs after the activity. (No Batch Size field appears.) • Batch The activity will batch or group entities (whether or not the entities have already been batched) after the activity has completed processing. The number batched is defined by the Batch Size field.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] An output queue with a capacity that meets or exceeds the maximum batch size is required.
• Unbatch The activity unbatches or ungroups entities after the activity has completed processing. If the entity has not been batched, the unbatching is ignored. No output queue capacity is required, but without sufficient capacity downstream, processing could be delayed while the unbatching occurs. • Rebatch The activity will batch or group the same number of entities back together that were unbatched previously or arrived in quantities greater than one (in which case the quantity batched is the quantity of the arrival). This means you don’t have to know how many entities were previously unbatched in order to rebatch them—no batch size is required.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] An output queue with a capacity that meets or exceeds the maximum batch size is required.
Batch Size Determines the number of entities to be included in each batch. (Used only when batching entities.) An Attribute may be used in the Batch Size field to set the number to be batched. The specified batch quantity is evaluated each time an entity is batched. If the entity attribute is less than or equal to the number already waiting to be batched, then batch is formed (with possibly a new size) and released for processing. This allows the specified batch quantity to vary if desirable. It also allows for the creation of “short batches,” or batches that formed early before the normal size is achieved.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Before using batching, consider that your batch may just as easily be modeled as a single entity (see Section 10.3.8, Job Shop Scheduling). Also, remember that batching may require an input queue or output queue. Follow the directions on the properties dialog. If a queue is needed, make sure it has sufficient capacity to hold an equal or greater number of entities than the expected maximum batch size. Also note that all batches or groups are unbatched when the batched entity exits the model in order to complete statistics collection on each entity. However, if a batch or group has had an entity attached to it during the simulation, ProcessModel will not unbatch that particular batch (or any groups within that batch).
Develop customized behavior for entities at an activity. In addition to the information set in the General tab of the activities properties dialog, logic can be developed to report statistics, control processing, collect information and a host of other items. Variables, entity attributes, systems information and if-then statements allow expansive capabilities to be accessed from the action tab.

Action logic is processed when the entity enters the Capacity of an activity, and then entities also process the time entered on the General tab. For this reason, when action logic is used, often a TIME statement is included in the action logic and the General tab time is set to 0.
Action logic does not occur in the Input Queue of an activity. If a situation requires action logic in the input queue, see the model object “Flow control – action logic in the input queue”
For additional information see Section 3.11, Action Logic.
[menu_anchor name="Chapter-3-3-4"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The cost tab provides a method of adding cost to each entity as it moves through the process. The cost tab also provides a means for classifying how time is accounted at the activity (VA, NVA, BVA). Other costs may be added by the usage of resources (see section 3.4.3 Resource Costs), routings (see section 3.6 Entity Routing Costs) and the initial costs of an entity (see section 3.2.2 Entity Costs).
The identification of cost is optional and has no effect on the behavior of the model.

Hourly cost Cost added to each entity per hour of time spent performing this activity. Cost values may range from negative 1,000,000 to 1,000,000. Idle time, while waiting for resources, is not counted. This cost is added to the pre-defined Cost attribute of the entity being processed.
Activity cost Cost added to each entity completing this activity. This cost is added to the pre-defined Cost attribute of the entity being processed.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If costs are entered as a negative number and final completed production is entered as a positive then a net revenue number can be obtained from the Summary Report. See “Output Summary Reports” in Chapter 6.2.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about costs, see ProcessModel and Activity-based Costing.
VA Time How the time for each entity completing this activity is categorized. As an entity is processed its total time in the system will be divided into three categories Value Added, Non-Value Added and Book Value Added. This allows an accurate accounting of how much of the total process time adds value from
• VA -- Value Added - Time for those work elements that transform the product or service in a way the customer is willing to pay for. • NVA -- Non-value Added - Adding Time for those work elements that are not used to transform the product or service in a way the customer is willing to pay for.
• BVA -- Book-value Added - Time for those work elements that are required to stay in business. Often government required steps will be classified as BVA.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] The time that an entity spends in the Input queue, Output queue or in route is Non-Value Added.

Shift file The name of the shift file which defines the times when this activity can be performed. A default shift file for all activities may be defined in the Options dialog under the Simulation menu.
Browse Allows you to search through one or more directories to locate a shift file.
Interrupt current activity to go off shift or on break Check this option if the current activity is to be interrupted in order to go off shift or on break. If not checked, the shift will interrupt the activity only after it has completed processing the current entity.
Create shift file Opens the shift editor for defining a shift and saving it as an.SFT file. For more information, see Section 3.10.1, Shift Definition.
[menu_anchor name="Chapter-3-3-6"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The submodel tab (shown below) allows you to reference a subprocess chart when you are creating hierarchical models. All activities have a submodel tab in their properties dialog. For more information, see Chapter 7, Hierarchical Modeling.

Subchart If the activity is to be linked to a subprocess, enter the name of the subchart file defining the subprocess.
Simulate subchart If a subchart is defined, it may be ignored for a particular run by unchecking this option. If checked, information defined for the activity is ignored as control drops to the subchart.
Activate If a subchart is defined, that chart will be opened. If a new name is entered into the Subchart field a new blank model will be created and activated.
[menu_anchor name="Chapter-3-4"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Resources are the agents used to perform activities and move entities such as service personnel, operators or equipment. More than one unit of a particular resource may be defined if they are used interchangeably and have the same operating characteristics. Resources may be shared between several activities. If no resource is assigned to an activity, it is assumed that no resource is required.


Name The name of the resource (e.g. Worker).
Quantity The number of units of this resource type (1 - 9999). Scenario parameters may also be used. The quantity value is read only once at the beginning of the simulation so using values which change during a simulation (such as variables) cannot be used.
Object Type Allows the type of object to be changed from Resource to something else.
[menu_anchor name="Chapter-3-4-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
Percent Available Enter the percentage of time the resource is to be available for use. If a percent is entered that is less than 100, interruptions will occur randomly and last for times that are also random with an average time of five minutes. Any expression excluding attributes is valid.
Time Available As an alternative to entering a percent availability, you may define availability in terms of Time between interruptions and the Interruption time, both of which may be defined as probability distributions or any other expression excluding attributes. Another way to look at this would be Mean Time To Failure (MTTF) and Mean Time To Repair (MTTR).
[menu_anchor name="Chapter-3-4-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The identification of cost is optional and has no effect on the behavior of the model.

[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If costs are entered as a negative number and final completed production is entered as a positive then a net revenue value for the process can be obtained from the Summary Report.
Hourly cost Cost per hour for using this resource. This cost (negative 1,000,000 to 1,000,000) is added to the pre-defined Cost attribute of the entity using the resource.
Cost per use Cost each time the resource is used. This cost (negative 1,000,000 to1,000,000) is added to the predefined Cost attribute of the entity using the resource.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about costs, see ProcessModel and Activity-based Costing.

Shift file The name of the shift file which defines the times during which this resource is scheduled to be available. If different units of the same resource have a different schedule, they should be defined as separate resource types (e.g. Shift1_operators, Shift2_operators).
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] A default shift file for all resources may be defined in the Options dialog under the Simulation menu.
Browse Allows you to search through one or more directories to locate a shift file.
Interrupt current activity to go off shift or on break Check this option if the current use of the resource is to be interrupted in order to go off shift or on break. If not checked, the priority is 99 which is the highest non-interruptive priority.
Create shift file Opens the shift editor for defining a shift and saving it as an.SFT file. See Section 3.10.1, Shift Definition.
[menu_anchor name="Chapter-3-5"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Arrival connections define how entities enter the system to begin processing. Entity arrivals are defined by connecting an entity object to an activity or storage object and then entering any defining information in the properties dialog for the connection. Multiple arrival connections can be created from an entity to one or more activities or storages.

There are two common tabs on the properties dialog for arrivals: Action and Name. These tabs are explained in this section first followed by a description of each type of arrival.
Assign custom behavior to a model when entities arrive in the model. In addition to the arrival information set in the General tab of the arrival properties dialog, assignment statements and IF...THEN statements can reference user-defined entity attributes as well as predefined attributes and variables.

Action logic is processed at the instant the entity is created but before entering any activity. To learn more about Action Logic, see Section 3.11, Action Logic.
The Name tab (shown below) allows you to define route names when you are linking hierarchical models. All arrival connections have a Name tab in their properties dialog. For more information, see Chapter 7, Hierarchical Modeling.

Connection name This name is used when mapping connections between different charts (main model and submodel). For hierarchical modeling only. See “Connection Naming” in Chapter 7.3.3.
Following is a description of each type of arrival that can be defined. To change the arrival type, select the desired type from the Type option under the General tab of the Arrival properties dialog. The following types are available:
• Continuous • Daily Pattern • Ordered • Periodic • Scheduled
[menu_anchor name="Chapter-3-5-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]A continuous arrival causes entities to continuously feed the connected activity whenever processing capacity is available at the activity; any activity input queue is ignored. This type of an arrival should only connect to activities and requires no other information to be defined.

[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You should be aware of the following operating constraints when using the Continuous arrival:
• DO NOT bring other arrivals into the same activity or storage to which the Continuous arrival is attached. • Since the input queue is ignored when using the Continuous arrival, any batching activity set to occur before the activity will be ignored as well.
[menu_anchor name="Chapter-3-5-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]A daily pattern arrival shows the rate at which entities arrive for different time periods during the day. Arrivals are assumed to occur randomly within each period. The pattern for each day of the week can be different from the others.

[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If a shift file has been defined for the activity where entities arrive, it is a good idea to synchronize the arrival periods with the activity schedule.

Day The list of days of the week. A pattern may be defined for each day.
Start - End, Quantity The list of period entries showing the start time, end time, and quantity of entities to arrive during that period for the day currently selected.
Copy day Button to copy a day’s pattern in order to paste it later on another day. Prevents tedium of entering the same periods for each day of the week that has the same arrival pattern.
Paste day Once a day has been copied, the Paste button becomes active and lists the name of the day that will be copied in the button itself. Select another day in the Day list and press the button to paste the pattern into the new day.
New Creates a new period entry in the Start - End, Quantity list with default times and quantity. The order of the new entry in the list will automatically be adjusted to maintain a chronological list.
Delete Removes an arrival period from the list.
Start time The start time edit field for the currently selected period.
End time The end time edit field for the currently selected period.
Quantity The quantity edit field for the currently selected period. Any valid expression may be used.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Time entries for a Daily Pattern many not overlap (Correct example: Monday 8:00-9:00, 9:00-10:00. Incorrect example: Monday 8:00-9:00, 8:30-9:30 -- these time slots overlap).
1. Click on the Define Pattern button to display the Daily Pattern dialog.
2. Click the New button to create a new entry in the pattern dialog. This creates the Monday 8:00am – 9:00am, 1 default entry. (The quantity and times may be changed as desired.)
3. Repeat step 2 for each time period to be defined in which arrivals occur.
4. Once a particular day’s pattern has been defined, you can copy the pattern to another day by selecting the defined day, clicking on the Copy day button, then selecting the day to which the pattern will be copied and clicking the Paste button. (The name of the weekday appears on the Paste button, so you will know which day is being copied.)
When you use the Daily Pattern arrival or Scheduled Arrival, you must understand that statistics, especially resource statistics, may be affected due to the way the clock works in ProcessModel. Each ProcessModel simulation begins at 12:00 a.m. (midnight) on Monday morning of the first week. Therefore, Daily Pattern or Scheduled arrivals may skew statistical results, especially with regard to resource and input and output queue utilization. The solution is the use of Shifts in conjunction with your Daily Pattern or Scheduled arrivals. For more information see Schedules—Shifts & Breaks.
[menu_anchor name="Chapter-3-5-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]An ordered arrival is used in connection with an order signal connection to place an order for more entities to arrive (see Section 3.8, Order Signals).

Lead Time This is the time required for the entities to arrive once an order is placed. Any expression excluding attributes is valid.
[menu_anchor name="Chapter-3-5-4"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]A periodic arrival causes entities to arrive at repeating time intervals. It is also useful for initializing inventory levels at the beginning of the simulation. This is done by entering a time of zero (0) in the Repeat Every field.

Repeat every The time between arrivals. Any expression excluding attributes is valid. A time value of zero (0) will cause only one entry for this arrival.
Quantity per arrival The number of entities that arrive after each time interval. Any expression excluding attributes is valid.
First time The time (relative to the beginning of the simulation) that the first arrival should occur. Use a time of zero (0) to initialize the model with entities at the beginning of the simulation.
[menu_anchor name="Chapter-3-5-5"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]A scheduled arrival causes a quantity of entities to arrive at a storage or activity at set times such as appointments or incoming shipments. Multiple scheduled arrivals for the same time occur in the order in which they are defined.

Arrivals [Time, Quantity] The list of defined arrivals listing the quantity, the week number, the day of the week, and the time the arrivals begin to come into the system.
New This button allows you to create a new arrival based on the data held currently in the edit fields of the dialog.
Delete Allows you to delete the selected entry from the Arrival list.
Week This is the week in the simulation when the arrivals are to occur (numbered from 1 in ascending order).
Day This is the day of the week on which the entities are to arrive.
Time This is the time of day that the arrival occurs. If more than one arrival is scheduled for the same time, the arrivals will occur in the order in which they were defined.
Quantity The number of entities to arrive at the scheduled time.
Action Although not required, you may enter Action logic for each scheduled arrival. This is useful for assigning a value or descriptor to an attribute at the time of arrival based on the particular arrival entry in the dialog. Select the arrival in the Arrivals list above and enter the logic in the Action text box. To learn more see Action Logic.
1. Click on the Define Schedule button to display the Scheduled Arrivals dialog. A default arrival is automatically created as shown on the previous page.
2. To create an additional arrival click on the New button. (Edits to the quantity and time fields are updated to the currently selected arrival once you move to another field or press New.)
1. Create scheduled arrivals with a quantity of zero for the number of arrivals anticipated.
2. From the Tools menu select Export Data. Export the data to the chosen application.
3. Open the exported file. Modify the Excel or Access File by adjusting the desired parameters and save.
4. Press the file import button to import the changed data into ProcessModel.
When you use the Daily Pattern arrival or Scheduled Arrival, you must understand that statistics, especially resource statistics, may be affected due to the way the clock works in ProcessModel. Each ProcessModel simulation begins at 12:00 a.m. (midnight) on Monday morning of the first week. Therefore, Daily Pattern or Scheduled arrivals may skew statistical results, especially with regard to resource and input and output queue utilization. The solution is the use of Shifts in conjunction with your Daily Pattern or Scheduled arrivals. For more information, see Schedules—Shifts & Breaks.
[menu_anchor name="Chapter-3-6"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Entity routings define direction and conditions for the flow for entities. An entity routing is defined by connecting activities and storages to depict the direction and sequence of flow. An activity or storage may have multiple input routing connections and multiple output routing connections. Entities do not move to the next activity or storage until there is available capacity and the condition or rule for routing the entity has been satisfied.
If resources are connected to the routing, they are captured after the entity has been cleared to move to the next activity and freed after the move time has elapsed.
The General properties tab allows you to select the type of routing and set certain information specific to that type of routing. Then each routing dialog consists of three tabbed sheets on which you can define information about the routing. The Cost tab allows you to define cost data, and the Action tab allows you to define specific actions to take place prior to the move. The Name tab allows you to route entities to and from submodels. Since the Cost, Action, and Name tabs are common for all routings, they are defined first in this section.
ProcessModel allows you to assign a cost to the routing of an entity from one activity or storage to the other. The cost is added to the pre-defined Cost attribute of the entity in the model after the move is completed.

All routing connections have a cost tab in their properties dialog. The identification of cost is optional and has no effect on the behavior of the model.
Cost per move The cost added to each entity after completing a particular routing. This cost (negative1,000,000 to 1,000,000) is added to the pre-defined Cost attribute of the entity being moved.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about costs, see ProcessModel and Activity-based Costing.
Develop customized behavior for entities that follow this route. In addition to the information set in the General tab of the routing properties dialog, logic can be developed to report statistics, control movement or processing, collect information and a host of other items. Variables, entity attributes, systems information and if-then statements allow expansive capabilities to be accessed from the action tab.

A routing’s Action Logic is processed when the condition for routing to the next activity (activity or storage) has been satisfied and any resources have been captured to make the move but before the actual move takes place. You may think of this logic as exit logic or logic processed just prior to exiting the activity. For additional information see Action Logic.
The linkage tab (shown below) allows you to define connection names used when you are creating hierarchical models. For more information, see Chapter 7, Hierarchical Modeling.

Connection name This is used to map connections into and out of the activity that represents the submodel. A connection going into this activity will route the entity to a like named connection in the submodel. A connection coming from this activity receives entities from the submodel’s like-named connections.
The following routing types are available:
• Alternate • Attach • Conditional • Create • Detach • Else • Ordered • Percentage • Pickup • Renege
And they are explained in detail on the following pages.
When you use multiple routings from an activity, the order in which they were created or connected to the originating activity is the same order in which ProcessModel will consider each routing connection to determine which routing the entity will take.
The order in which routings are created is usually only important when you create more than one of the same routing type from the same activity or storage. For instance, you want to pick up an entity from one of two activities. If an entity is waiting at activity one, it should be picked up. The entity waiting at activity two should only be considered if activity one has no entity waiting. To model this, the Pickup routing should be connected to activity one first.
The order in which ProcessModel considers routing connections can be changed by disconnecting the routings from the originating activity and then reconnecting them in the order you want them to be considered.
[menu_anchor name="Chapter-3-6-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]An alternate routing is executed if the destination for its primary routing has no capacity for additional entities. The alternate routing is created when you connect a line from a routing (the primary routing) to the alternate destination as illustrated below.
If capacity is unavailable at the alternate destination, the entity is routed to the first destination with available capacity. DO NOT attach more than one alternate to any routing so that it is always clear which routing is the alternate. However, an alternate routing may itself have an alternate routing; as many alternate routings as needed may be defined.
Simple directional decisions based on no room at the destination are made with the alternate routing

Type Any routing connected from another routing must be an alternate, so this field cannot be changed.
Move Time This allows you to specify a different move time for the alternate routing. Any expression is valid.
[popover title="" title_bg_color="" content="Caution" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] An alternate routing may be used with the following routing types:
• Alternate • Else • Conditional • Percentage • Create • Renege • Detach
DO NOT use an alternate routing with an Attach , Ordered , or Pickup routing. Instead, use the Else routing with these signal activated routings.
Example
Military aircraft land for refueling and are directed to a series of hydrants (which is the fastest method of refueling). If all of the hydrants are full then the aircraft is diverted to a series of large fuel bladders. If all of the fuel bladders are being used the aircraft is sent to a parking spot where trucks fuel the aircraft. Refueling by truck is the slowest method of refueling and thus selected only when the other options are not available.

Alternate routes are drawn by selecting the line connector tool
and drawing from an existing route to a destination activity or storage.
An Attach route causes the routing entity to be attached to an entity waiting at the destination activity or storage. The presence of another entity (routed from a different routing) at the destination signals the attach routing to occur. The other entity at the destination activity or storage is detained until the attachment occurs.
To use an analogy, the Parent (or main entity) requests a Child to join it (Attach). The Child stays put (before the attach routing) until a parent requests it. The Child then travels the attach routing and becomes part of the Parent. The Child is carried by the parent, unless specifically Detached. See Detach.
The attach action takes place prior to any activity time defined at the destination activity
If you don’t want to hold up processing entities that are behind the entity waiting to be attached, define an output queue with sufficient capacity.
• The attach routing is the primary method of assembling entities. A Parent or main entity is the base and the attach (s) is (are) the subcomponent (s). The assembly will not move to the next activity until the subcomponent is attached. • When the attach is coupled with the create route it acts to hold the further processing of the main entity until all of the child entities related to that parent have been attached. An order may create all of it’s components at the start of a model and then hold the order until all of the components are completed and attached.

Move Time Time to move to the next activity or storage. Any expression is valid.
Quantity The quantity of entities to be attached. If you wish to attach every entity waiting in the input queue of the activity where the attaching takes place, enter ALL . Any expression is valid. A quantity of zero results in no attachment.
Attach to Choose whether the entity is to be attached to any entity (for general assembly) or to the entity that created it (for re-attachment to the entity that Created it).
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To collect statistics on any entity that has been attached to another entity, it must be Detached prior to exiting the model.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To attach all the children created by a parent, set the Quantity to ALL and the Attach To to entity that created it. This means that if some parent entities created no children, then none will be attached, while parent entities that created many entities will require all of those entities to be attached before moving to the next activity.
Example Suppose that a software order can generate two possible options in addition to its own processing. The first option is inclusion of training which happens 70 percent of the time. The second option is inclusion of one day of consulting which happens 30 percent of the time. If the options are included, additional work needs to be completed in parallel with the order and then be inserted into the order before the shipment is released to the customer. In some instances neither training or consulting will be included. In other instances both training and consulting will be needed. In either case if something was created, it must be attached and if nothing was created the order should not be delayed.

Training orders are created using a variable quantity. See Chapter 3, Section , Common Distributions. Seventy percent of the time a need for Training will be created. For information on the create route see Chapter 3, Section 3.6.4, Create.

With the quantity set to ALL and the Attach To set to entity that created it, all children created from this parent are required to be attached before the parent will be released to the next activity.
[menu_anchor name="Chapter-3-6-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]A conditional route causes entities to choose a routing based on some condition (usually a name or other entity attribute). This is one of the most powerful and diverse routes available in ProcessModel.
• The name of an entity creates a need to process along a different set of activities. For example Calls are processed one way while Faxes are processed by different activities.

• The process routing changes based on the time of day. If it is before 10:00 PM then one route is followed, but between 10:00 PM and 6:00 AM another route is followed. This time based decision would require that the variable be changed to reflect the time of day. See “Creating User-Defined Variables” in Chapter 3.12.4. • The process routing changes based how high a priority, how valuable, if the entity is over due or if it has already been down a route. These entity specific types of decisions would require the creation and assignment of an attribute. See “Creating User-Defined Attributes” in Chapter Chapter 3.12.3. • The process routing changes based on the number of resources available in process alternatives. Making resource based decisions requires definition of resources and the use of Functions. See “FreeUnits(name of activity or resource)” in Chapter 3.11.1. Many other model parameters may be checked. • In a job shop (production facility designed to manufacture a wide variety of products) the number of entities and the potential variation of routings can be overwhelming if conventional model building techniques are used. To simplify the building process, conditional routings may be used at each processing juncture. An attribute may be defined to correspond with each juncture. Instead of many entity types, one entity type can be defined with attributes that tell the entity which route to take at each juncture. Scheduled arrivals are defined with attributes so that the entity “knows” what path to take at each juncture. For more information on Scheduled Arrivals see Chapter 3, Section 3.5.5, Scheduled.
Move Time Time to move to the next activity or storage. Any expression is valid.
New Name Optionally assign a new name to the entity. This also assigns a new graphic to the entity if that graphic is defined as an entity on the layout.
Condition This is the condition for selecting this route (e.g Name = entity name). You may leave the field blank for a single unconditional routing which is equivalent to specifying a 100% routing. Complex expressions are also allowed using AND and OR operators (e.g. Att1 = 2 OR Att1 = 5). Any expression is valid. Valid comparison operators in conditional expressions are as follows:
= equal to > greater than < less than >= greater than or equal to <= less than or equal to <> not equal to OR one of or both expressions AND both expressions
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If one or more Conditional routings are defined together, a conditional routing with the Condition field left blank may be used as a “last resort” routing. This Conditional routing must be the last routing connected to the activity. If none of the conditions in the other Conditional routings are satisfied, the entity will be routed along this “last resort” routing.
A Create routing defines the creation of additional entities either before or after an activity. Created entities (such as a created order) can later be reattached to the creating entity or to some other entity by using the Attach or Pickup routing.
To use an analogy, a Parent has a Child (create). The child is related to the parent and may be reunited with its unique parent at a latter point in the model.
Usage
• A customer order may have many separate parts that require parallel processing. For example an order may require a credit check from the finance department and a feasibility confirmation from engineering while the order is being processed. The create route is used to start all of the separate parts of the order. The attach route can be used to assure that the separate parts of the order are all accounted for before the order is completed. See “Attach” in Chapter 3.6.2.

• The quantity created can be controlled by an attribute on the parent. This technique is useful for the arrival of a truck that will “unload” a unique amount of entities. See “Attributes” in Chapter 3.12.3.

• A create might occur for some of the Parent entities and not for others. See Note.
Create After Activity or Before Activity The new entity may be created and routed before or after the activity time and Action logic occur. If created before the activity, it may be reattached to the originating entity at the activity itself.
Move Time Time to move to the next activity or storage. Any expression is valid.
Quantity The quantity of entities to be created (0 - 9999). Any expression is valid and is evaluated each time a creation occurs. A value of zero causes the creation to be ignored. This means that creations can occur based on system conditions or entity attributes.
Created Entity Name The name of the newly created entity. To define a different graphic for this new entity, place a new entity object for it on the layout (it does not need to be connected to another object).
[menu_anchor name="Chapter-3-6-5"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]A Detach routing causes entities that have been attached to the current entity to be detached and routed to the connected activity.
• Any time statistics are needed for items that have been previously attached use the detach at the end of the model.
• A bus route has people loading the bus (Attach route) and people unloading (Detach route) at predetermined stops. An attribute can be used to tag individuals. This tag is later used in the detach routing to signal them to leave the bus. See “Attributes” in Chapter 3.12.3.

Move Time Time required to move to the next activity or storage. Any expression is valid.
Detach After Activity or Before Activity The entity may be detached before or after the activity. Detaching before the activity allows the detached entity to be reattached as part of the same activity.
Condition An optional condition to be satisfied for detaching entities that are to use this routing. This allows multiple detach routings to be defined with different conditions. This could be used to detach and route specific entities (previously attached) to specific destinations.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You may only connect one Detach routing to a process step. If you specifiy a condition for the detach, only the entities matching that condition will be detached and follow that route. If the condition field is left blank, all attached entities will detach and follow the detach route.
An Else routing is executed if none of the one or more Attach , Pickup , or Ordered routings with which it is associated can be executed. An analogy might help to explain how the Else route would work in conjunction with an Attach route. An understanding of the attach route is important before this analogy will make sense. If the main entity is the Parent and the attaching entity is the Child then the Else route would tell the child what to do if the Parent didn’t show up. The Child arrives at the activity that has the attach route and looks for a corresponding parent at the destination. If the Parent has not yet arrived, then the Child follows the Else route. The Else route in conjunction with the Pickup route allows for the Parent to leave if the Child is not ready when the Parent arrives.

Only one Else routing may be defined from an activity or storage having Attach, Pickup, or Ordered routings. However, an Else routing may have an alternate routing attached to it, which effectively allows for multiple Else routings.
If the Else routing is unable to be executed because of insufficient capacity at the next activity, the first of all the routings that can be satisfied is executed. For example, if an activity has two Attach routings and an Else routing connected from it, and neither of the Attach routings have an entity waiting for an attaching entity, then the Else routing will be executed if capacity is available. If capacity is unavailable, the entity waits for the first routing that can be executed.
If no entity is waiting at the connecting activities for this entity to be attached, the entity will be routed via the Else route.

If no order signal has been given, the entity will be routed via the Else route.

If no entities are waiting to be picked up at the destination activity or storage, the entity doing the picking up will be routed via the Else route.

Move Time Time to move to the next activity or storage. Any expression is valid.
[popover title="" title_bg_color="" content="Caution" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] DO NOT use an Else routing with an Alternate, Conditional, Detach, Else, Percentage, or Renege routing. Doing so will cause an error to occur when you run the simulation.
An ordered routing causes the routing entity to wait until an order signal is received (see Order Signals). Entities will wait in the output queue of the activity (or in the storage) from which the Ordered routing is connected until the Order Signal is received. If you want to continue processing entities behind the entity waiting for an order signal, make sure the capacity of the output queue or storage is sufficient.
• Just-in-time systems require that production inventory is controlled. The Ordered route in conjunction with the Order Signal allow the control of when and how much is ordered from an upstream activity.

Move Time Time to move to the next activity or storage. Any expression is valid.
[menu_anchor name="Chapter-3-6-8"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The Percentage routing causes a specified percentage of the output entities to be routed to the connected activity or storage. Multiple percentage routes can be defined from an activity. If capacity is unavailable at the connected activity or storage, the entity waits until capacity becomes available before moving.
• Single routes from one activity to another default to Percentage. That is to say that 100% of the time they will move from the current process to the next.
• Simple decisions that cause an entity to follow a yes or no path based on a percentage.
• Decisions involving more than two outcomes that are selected by percentage. The result of the decision is the route that is selected.
• Tagging entities with specific information a percentage of the time. For example 10% of the parts could be marked as high priority by setting an attribute in the action tab of the entities that traversed the 10% percentage route. See “Attributes” in Chapter 3.12.3 and also See “Action Logic” in Chapter.3.11.

Move Time Time to move to the next activity or storage. Any expression is valid.
Percent The percentage of output entities using this routing. The total percentage for multiple percentage routings must total 100% (If you have only two percentage routings from one activity or storage, ProcessModel automatically balances the percentage fields to equal 100%). Decimal fraction values (e.g. 25.5) may be entered. Only constant values are valid here.
New Name Optionally assign a new name to the entity. Statistics for the output report will be reported under this new name. This also assigns a new graphic to the entity if that graphic is defined as an entity on the layout.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To develop a percentage route that changes for each entity type, use conditional routes and set the condition in the action tab of the activity. See “Conditional” in Chapter 3.6.3 and see “Action Logic” in Chapter.3.11.
The pickup routing functions the same as the attach routing except that the controlling entity retrieves the attached entity instead of having the entity sent to it. To continue the analogy of the Parent and Child, in a Pickup routing, the Child notifies the Parent that it is ready to be picked up. The Parent then moves along the pickup route. after the Parent arrives at the destination the Child is joined to the Parent. The key difference between this route and the Attach is that the Parent must stay behind the Pickup route until requested and yet still perform as the entity that reports statistics in the output report.
A pickup route causes the routing entity to move to the activity when an entity to be picked up enters the input queue of the activity. The entity being picked up is attached to the entity having the pickup routing. The pickup action takes place prior to any activity time defined.
• At a fast food restaurant the Parent or main entity places the order (create route). The Parent entity the goes to the waiting area. The Child entity is the order and is processed behind the scene. When the Child (order) is ready the Parent (customer) is notified (pickup route) and comes to claim the order.

Move Time Time to move to the next activity or storage. Any expression is valid.
Pick up any entity / Pick up created entity Choose whether each entity is to pick up any entity waiting for pickup or its own created entity (i.e. an entity which was created from it).
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To collect statistics on any entity that has been attached to another entity, it must be detached prior to exiting the model.
[popover title="" title_bg_color="" content="Caution" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If you use resource connections at the destination of the Pickup routing to capture resources, the resources will be assigned to the entity being picked up, and you will not be able to free that resource until the entity that is picked up has been detached. In other words, the resource will be trapped. To assign a resource to the entity doing the pickup, so that it will not be trapped, use the GET or JOINTLYGET statements in Action logic rather than resource connections. See “Action Logic” in Chapter.3.11.
The Renege routing is used to cause entities (usually customers) to be routed to another activity or out of the system if they have not started the activity before a specified amount of time has expired. This phenomenon of dropping out of the waiting queue is referred to as reneging or abandonment. The entity will exit the system if you do not connect the routing to another activity or storage. An activity with a renege routing must have an input queue size of one or more.
• Customers tire of waiting in line or on hold and leave.
• If a customer problem is not handled in the required time, the problem is escalated (renege route) to another process.
• Material waiting processing has an expiration time (such as glue strips or oxygen absorption pads). If the expiration time has lapsed, then the expired material must be removed.

Move time Time to move to the next activity or storage. Any expression is valid.
Renege after The maximum time that an entity will wait for available capacity at the activity before reneging. If capacity becomes available in the activity before the renege time has expired, the entity will not renege, so any additional time spent waiting to capture a resource before beginning the activity is not considered. Any expression is valid.
New Name Optionally assign a new name to the entity. This also assigns a new graphic to the entity if that graphic is defined as an entity on the layout. Assigning a new name is a way to cause separate statistics to be gathered for the entities that actually renege.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 1. If the renege time is based on entity type, you can make a prior assignment of the renege time to an attribute and reference it in the Renege after field.
2. If a resource is connected to the activity from which reneging takes place, be sure that the resource is always available to avoid waiting additional time to get the resource. You can do this by making the resource dedicated to the activity or by selecting Respond immediately in the resource assignment connection’s properties dialog. In other words, if there is room to move out of the input queue, but a resource is required but not available, the entity will not be able to renege (it is already committed to move forward).
3. Remember that a renege only happens from the input queue. If the entity has already moved to the capacity area of the activity, then it can't renege.
Resource assignments define the use of one or more resources in performing an activity or moving an entity. For each entity that is processed or moved, each assigned resource is captured and held until it is freed via the resource connection or a FREE statement in Action logic. While the resource is captured, it is not available for use by other activities or routing connections. To be pulled away from a task the resource is performing, it must be interrupted by a resource assignment that has the Respond immediately box checked.
Resources may be captured for performing an activity or a move. They may also be freed or kept after the activity or move is completed. Multiple or alternative resources may be used for an activity or move.
A connected resource is always captured BEFORE any defined activity or move time and freed AFTER an activity or move time. If an input queue is defined for an activity, the connected resource is captured prior to the entity entering the activity. If no input queue is defined, the entity enters the activity and then captures the resource. Multiple resources required for an activity or routing are not captured until they are all available. To capture multiple resources as each becomes available, use a GET statement in the Action logic of the activity or routing.
Following is an explanation of each type of resource assignment and the information in its properties dialog.
• Get and Free • Get • Free • Alternate
You may use multiple resources and mix the resource connection types. You can mix multiple and alternate resources. When defining multiple resource connections, remember that they are executed in the order in which they were defined. To change that order, disconnect the resource connections and reattach them in the order you desire.
[menu_anchor name="Chapter-3-7-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The Get and Free resource connection allows you to use the resource for the duration of the activity or move, and once the activity or move is complete, the resource is freed.

Quantity The number of units of this resource that are required. Any expression is valid.
Priority Enter the priority (0 - 99) for responding to this activity. Higher values have higher priorities. A priority is only necessary if the resource is assigned to multiple tasks that may be competing for the services of the resource.
Respond immediately Check this box if the resource is to interrupt any other activity in order to respond immediately to this activity. This selection is only meaningful if the resource is assigned to multiple tasks. (A resource that is off shift or on break will not respond until back on duty by this request.)
[menu_anchor name="Chapter-3-7-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The Get resource connection allows you to get the resource and hold it until you explicitly free it later using a Free resource connection or FREE statement in Action logic.

Quantity The number of units of this resource that are required. Any expression is valid. You may leave this field blank or enter 0 if the actual getting of the resource is done explicitly in the Action logic of the activity or routing. In this case, the connection serves only as a graphic representation of the resource being used.
Priority Enter the priority (0 - 99) for responding to this activity. Higher values have higher priorities. A priority is only necessary if the resource is assigned to multiple tasks that may be competing for the services of the resource.
Respond immediately Check this box if the resource is to interrupt any other activity in order to respond immediately to this activity. This selection is only meaningful if the resource is assigned to multiple tasks. (A resource that is off shift or on break will not respond until back on duty by this request.)
[menu_anchor name="Chapter-3-7-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The Free resource connection frees a resource that was previously captured using the Get resource connection. If you attempt to free a resource that has not been captured, the Free connection is simply ignored.

Quantity The number of units of this resource to be freed. Any expression is valid.
[menu_anchor name="Chapter-3-7-4"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]To use a resource as an alternate to another resource, connect the alternate resource to the other resource’s assignment connection as shown in the illustration below. If the resource units of the connection to which it is attached are unavailable, the alternate resource will be used. If neither one is available, the first available resource will be used.

To define an alternate resource for an alternate resource, simply connect the resource to the other alternate connection as shown below. No more than one alternate may be connected to another resource connection so that the order of preference in selecting resources is clear. To define multiple alternate resources, simply continue connecting an alternate resource to each previously connected alternate resource.

When an alternate resource is connected to a Get resource connection as shown in the following illustration, the resulting captured resource must be freed with either a Free resource connection or a FREE statement in Action logic.

Since you cannot know which resource will be captured when assigning resources as alternates to a Get resource connection, you must create a Free resource connection for every possible resource as shown above. Doing this will free the resource that was captured and ProcessModel will ignore the other Free resource connections. See “FREE” in Chapter 3.11.2 for the use of FREE ALL in action logic.
Define an alternate resource on a different shift in the same manner as the alternate descriptions provided above. Assign each resource type to the appropriate shift. See “Defining & Editing Shift & Break Blocks” in Chapter 3.10.1. If a resource is off shift, a check will be made to see if the alternate is available.
[menu_anchor name="Chapter-3-8"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]An Order Signal is a connection from an activity or storage to an Ordered arrival or routing which notifies the arrival or routing to order or release additional entities. The signal is triggered by a drop in inventory level at the storage or activity input queue.

Reorder Level The level to which the storage or activity input queue must drop before signaling an order for more entities. Any expression is valid.
Order Quantity The quantity to order when an order is placed. Any expression is valid.
Place order at start Check if an initial order is to be placed at the beginning of the simulation run. If the initial order is insufficient to raise the queue or storage level above the reorder level, a Periodic arrival should be defined, in addition to the Ordered arrival, with its First time field set at time zero (0) to initialize the inventory level (see Periodic).
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] When an order signal is used to order entities at an arrival connection (the Order Signal is connected to an arrival connection), the arrival type must be Ordered . To learn more, see Ordered.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] For ordering to continue, the inventory level must rise above the reorder point. If your system functions so that inventory trickles in and never allows the quantity to rise above the reorder point, another method of re-ordering entities must be used. For an alternate ordering method multiple capabilities in ProcessModel will be required. Continuous along with WAIT UNTIL.
Storages are waiting areas, stock places, etc. where entities can wait for further processing. Storages are useful when controlling the order in which entities are allowed to move on through the model. Since an activity provides the option to have a built-in input and output queue, a storage is for visual purposes or to model special queuing conditions such as multiple activities sharing a common input queue.


Name The name of the storage (e.g. StockRoom ).
Capacity The maximum number of entities that can occupy this storage (1 - 999,999). Scenario Paramenters may also be used in this field.
Queuing order The order in which entities are queued to leave the storage: none, first-in first-out, last-in first-out.
• None -- Entities that have completed their Action Logic are free to process any routing logic independent from other entities that have finished their Action Logic. Will process FIFO if no other routing requirements are enforced (i.e. Conditional Routes, Get with a priority, etc.).
• First In, First Out (FIFO) -- The first entity completing its Action Logic must be routed first.
• Last In, First Out (LIFO) -- The last entity completing its Action Logic must be routed first.
Object Type Allows the type of object to be changed from Storage to something else.
[menu_anchor name="Chapter-3-9-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
Action Develop customized behavior for entities at an storage. Logic can be developed to report statistics, control processing, collect information and a host of other items. Variables, entity attributes, systems information and if-then statements allow expansive capabilities to be accessed from the action tab. For additional information see Section 3.11, Action Logic.
[menu_anchor name="Chapter-3-10"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Weekly shifts and breaks for activities and resources are defined using the Shift editor and may start and end at any minute of the day. Defining shifts for resources and activities in a model is only necessary when there are activities or resources with different work schedules. Otherwise the simulation can be run for a single block of time as though there was no off-shift time.
Shifts and breaks are defined by blocking out sections of time on a grid divided into days and hours. Once a weekly shift and break schedule has been defined, it may be saved in a shift file, which has an.SFT extension. This allows you to use the shift definition in models you create later.

This screen shot of the Shift Editor shows a shift defined to begin at 8 a.m. and end at 4:30 p.m. with two short breaks and a lunch break.
1. Open the Options dialog from the Simulation menu and click on the Files tab.
or...
Click on the Shift tab of the properties dialog when a resource or activity is selected.
2. Click on the Create Shift File button.
The Shift editor consists of a menu bar, Shift and Break mode buttons, time control buttons, and a grid representing one week of time. (All shown on the previous page.)
The remainder of this section describes the Shift Editor menus and the following procedures:
• Drawing a Block of Time for a Shift or Break • Selecting a Block • Resizing a Block • Editing the Begin or End Time • Deleting a Block • Duplicating a Specific Day’s Shift • Customizing Shift and Break Colors
The menus used in the Shift editor are accessible from the menu bar at the top of the editor and include the following:
File For opening shift files and saving open shift files.
Edit For deleting unwanted shift and break blocks. You may also duplicate a specific day of the shift. If you delete a shift, it deletes the shift as well as the breaks in the shift.
View For access to status and tool bars.
Options For customizing the colors which represent shifts and breaks.
You define a shift by selecting the Shift tool and drawing a shift block for each day that is to represent time on the shift. The break block tool can then be selected to draw break blocks over any portion of the defined shift. A break differs from off-shift time in that if a resource or activity is busy when a break time is scheduled to occur, the duration of the break time remains unchanged even if it could not immediately take effect. Off-shift time, in contrast, is reduced by any delay in going off shift, i.e., the activity comes back on shift at the scheduled time regardless of any delay in going off shift. This behavior typifies most real world situations.
When drawing a shift or break block, you must be sure to follow these rules:
• Shift blocks may not overlap with other shift blocks. • Break blocks may only be drawn on top of shift blocks. • Break blocks may not overlap or be adjacent to other break blocks.
1. Click on the Shift or Break button to designate the type of block.

2. Begin dragging the mouse on the grid at the day and time that the block should begin.
3. Release the mouse button at the time that the block should end. If you want to define a block more precisely than the grid allows, see Editing the Begin or End Time below.
[popover title="" title_bg_color="" content="Caution" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If the block you draw is invalid, it is ignored and will not appear on the time grid.
• Click on the block. A border appears to show that the block has been selected.

• Click on the selected block or click on the white area of the window.
1. Select the block.
2. Click and drag the border of the block until the block is the desired size.
3. Release the mouse button.
1. Select the block.
2. Adjust the begin or end time accordingly using the buttons at the top of the screen. Click on the part of the time display you want to change (the hour, the minutes, or the AM/PM label). While that part of the display is highlighted, use the arrow buttons to increase or decrease the time, or to switch between AM and PM.
![]()
• Select a block and choose the Delete option from the Edit menu.
or...
• Select a block and press the Delete key on the keyboard.
1. Select any shift or break segment for the day you wish to duplicate.
2. Select Duplicate button from the toolbar. ![]()
3. In the shift schedule, click on the day to which you wish to copy the shift block.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To duplicate the same shift multiple times, hold the SHIFT key down while clicking were the shift is to be duplicated. Release the SHIFT key on the last duplication to exit the duplication mode.
1. From the Options menu, select Define Shift or Define Break.
2. Choose Colors under the Options menu. The colors dialog box appears.

3. Click on the desired color.
[menu_anchor name="Chapter-3-10-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Once one or more shift files have been defined, resources and activities may be assigned to these shift schedules in the model. To designate a particular shift as the default shift for all activities or resources, see Default Shift File. To override the default shift, you may assign a shift schedule to a particular resource or activity in its properties dialog. If different units of the same resource have a different schedule, they should be defined as separate resource types (e.g. Shift1_operators, Shift2_operators).

1. Select the resource or activity on the layout. (Double click if the properties dialog has been closed.)
2. Click on the Shift tab to display the shift schedule properties.
3. Enter the name of the shift file or use the Browse button to find the file. Or click on the Create shift file button to create the file and return to enter the name.
4. Check the Interrupt current activity to go off shift or on break box if the activity or resource is to be interrupted, if busy, in order to go off shift or on break. If not checked, the priority is 99 which is the highest non-interruptive priority, meaning that the activity will finish processing the entity or the resource will complete its assignment before going off shift or on break.
The Files tab on the Options dialog accessed from the Simulation menu allows you to specify a default shift file for activities and a default shift file for resources. A default shift file may be overridden by selecting a different file in the properties dialog for that specific activity or resource.
1. From the Simulation menu, select Options and select the Files tab in the dialog.

2. Select Default Activity Shift File or Default Resource Shift File , then click on the Create shift file button.
3. Create a shift file following the instructions in Shift Definition.
4. Enter the name of the shift file in the File Name field.
5. Check the Interrupt activity/resource to go off shift or on break box if activities or resources that are currently busy are to be interrupted in order to go off shift or on break. If not checked, the priority is 99 which is the highest non-interruptive priority.
6. Click on the Close button when finished.
[menu_anchor name="Chapter-3-11"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]ProcessModel allows you to design custom behavior in your model by using action logic in which you enter simple but powerful logic statements. Action logic allows you to define special logic that may not be easily defined using the normal property fields. Examples would include assigning values to attributes and variables or performing a test using an IF...THEN statement.
Action logic can be defined for any activity, storage, arrival or routing by clicking on the Action tab of the properties dialog.
Depending on the object or connection for which the action is defined, only certain statements and other logic elements are meaningful and therefore valid. The valid statements and logic elements (variables, attributes, resources, distributions, operators, and scenario parameters) are displayed in the list box in the action dialog. These statements and elements may be pasted from the list box into the action window to help you construct the desired action logic. If a larger work space is needed for action logic, click on the Zoom button to expand the window.

1. Select the type of element (including statements) you want from the pull down box.
2. Select the specific element or statement from the list box.
3. Press the Paste button to insert the element at the position of the cursor in the action edit window or simply double-click the item.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Action Logic often uses expressions (combinations of attributes, variables, numbers, and operators) in assigning values to attributes or variables, testing the value or state of a variable or attribute, etc. For more information on expressions and valid operators, see Expressions.
Functions provide you with critical system information at any given time during the simulation. They can be used in an assignment statement to set the value of a variable or attribute or in an IF...THEN statement to make a decision based on system information. There are several system functions: Clock(), Contents(), FreeCap(), FreeUnits(), GroupQty(), OwnedResource(), Percent(), and ResQty().
Clock(min) Clock(sec) Clock(hr) Clock(Day) Clock(Wk)
The default clock function returns the elapsed time of the simulation clock in minutes. It can be accessed, but not assigned a value. For example a variable could be assigned the value of the clock in minutes: v_Var1 = Clock() would result in the number of minutes elapsed in the simulation assigned to the variable. To assign the number of hours that have elapsed, use v_Var1 = Clock(hr), and to get the number of seconds, use v_Var1 = Clock(sec).
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If you change the default time units to hours, then the value returned will be divided by 60. If you change the default time units to seconds, then the value returned will be multiplied by 60.
Returns the total number of entities at an activity. Use CONTENTS() to make decisions based on how busy an activity is. Using CONTENTS() to keep track of the number of entities at an activity requires fewer steps and allows more flexibility than using variables to count the number of entities that enter and exit an activity. For example, the second syntax does in one statement what would require several statements without the CONTENTS() function.
Example
A car wash has an activity called Wash that often gets too busy for one operator to handle so the supervisor then comes to help. The logic below models this situation with an IF...THEN statement and the CONTENTS() function. As long as the activity contains fewer than three cars, the worker processes any arriving car. However, if the contents of the activity are greater than three, the Supervisor may also be used.
IF CONTENTS(Wash)<3 THEN {
GET Worker
} ELSE {
GET Worker OR Supervisor
}
Returns the available capacity of an activity (an integer).
Example
Suppose an entity can be routed to one of two identical ovens for a curing process. However, you would like to ensure the ovens are loaded as evenly as possible at all times. The following logic could be used to set an attribute (called a_Router) to a 1 or a 2 based on the available capacity of the ovens. Conditional routings would then be used to route to the appropriate oven:
IF FREECAP(Oven1) > FREECAP(Oven2) THEN {
a_Router=1
} ELSE {a_Router=2}
Returns the free units of an activity or resource (an integer).
Example
The example below demonstrates the use of the FREEUNITS() function to adjust the processing time for an entity based on the number of units of a resource available to process it. Once a Plane arrives at a passenger gate, it captures a certain number of resources named BH (Baggage Handlers). Operation logic at the gate determines how many BH resources have been captured and, accordingly, how long it will take to service the Plane. The more Baggage Handlers a Plane captures, the less time it takes to service it.
WHILE FREEUNITS(BH) <3 {
DO TIME(2 min)
} IF FREEUNITS(BH)>=5 THEN {GET 5 BH} ELSE {
GET FREEUNITS(BH) BH TIME(60/RESQTY(BH) min)
}
Returns the number of entities in a batched or loaded entity (a loaded entity is an entity with other entities attached to it). If the entity is a loaded entity, it will return only the number of loaded entities, not the base entity. For example, if you attach four Castings to a Pallet, the GroupQty() will return the number of Castings (i.e. 4), which does not include the entity Pallet.
In the case of multiple levels of groups and loads, GroupQty() returns the number of entities in the uppermost level only.
Example
A group of documents called Folder arrives at the Secretary in-box and is processed for some amount of time according to the number of documents in the folder. Each document takes 3.0 minutes to process.
TIME (GROUPQTY() *3.0 min)
Returns the n th resource currently being used by the entity. Each resource is referenced according to the order it was put into use so that the longest held resource is OwnedResource(1). The most recently captured resource can be referenced by omitting the number: OwnedResource().
Example
The OwnedResource() function is useful when a decision must be made based on the resource that was captured. For example, suppose an entity captures either Worker_1 or Worker_2 in order to perform an activity. If Worker_1 is used, the activity takes 5 minutes. If Worker_2 is used, the activity takes 6.5 minutes. This can be defined using the following Action logic.
GET Worker_1 OR Worker_2 IF OWNEDRESOURCE() = Worker_1 THEN {TIME(5.0 min)} ELSE {TIME(6.5 min)} FREE OWNEDRESOURCE()
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] This function cannot be assigned a resource name in Action logic. For example, an assignment statement like OwnedResource() = Worker_1 will generate an error.
The percent function allows you to execute one or more statements only a certain percentage of the time. Used in an IF...THEN statement, the function returns a TRUE or FALSE.
To use the percent function, enter PERCENT(n) where n is the percentage of the time that the statement will return a TRUE condition in an IF...THEN statement.
Example
In the first example, logic following the THEN statement is executed 21.5% of the time. In the second, logic following the THEN statement is executed 35% of the time and the logic following the ELSE statement is executed 65% of the time.
1) IF PERCENT(21.5) THEN... 2) IF PERCENT(35) THEN...
ELSE...
Returns the number of units of a specific resource that the current entity owns. You can use RESQTY() to determine the amount of time necessary to process an entity based on the number of units of a resource the entity owns.
Example
The example below demonstrates the use of RESQTY() to adjust the processing time for an entity based on the number of resources available to process it. Once a Plane arrives at a passenger gate, it captures a certain number of resources named BH (Baggage Handlers). Operation logic at the gate determines how many BH resources have been captured and, accordingly, how long it will take to service the Plane. The more Baggage Handlers a Plane captures, the less time it takes to service it.
[menu_anchor name="Chapter-3-11-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]IF FREEUNITS(BH)>=5 THEN {GET 5 BH} ELSE {
GET FREEUNITS(BH) BH
} TIME(45/RESQTY(BH) min)
Statements are simply commands to be executed at particular stages in an entity’s progress through the process. The following pages explain in detail each statement listed below.
( ) = ( ) assignment ANIMATE DEC DISPLAY FREE GET INC IF...THEN...ELSE JOINTLYGET NEWGRAPHIC NEWNAME PAUSE REPORT STOP TIME WAIT UNTIL WHILE...DO
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Comments You can add explanatory comments to your action logic by placing special characters in front of the comment. Comment lines are for user information only and the simulation ignores them during run time. To include a single-line comment, use a pound sign "#" or two forward slashes "//" at the beginning of the line. Multiline comments begin with a "/*"... and end with a "*/". Some statements and functions such as GET or FREE are not ignored when found in a single comment line. To ensure they are ignored, you must use the multiline /* . . . */ comment indicators, and the ending “*/” must appear on a different line than the opening “/*”.
For example:
IF Test = Reject THEN INC RejectQty /*Number of rejects increased for each test reject.*/
or...
// The logic below describes how rejects are handled.
This is the assignment statement which allows you to assign a value (or descriptor) to a variable or to one of the attributes defined for your entities.
Syntax
assignee = assignor
assignee The variable or attribute to which the value is assigned. assignor The value assigned to the variable. This could be another variable or attribute, a pre-defined descriptor, or a mathematical expression.
Example
In the first example, the attribute a_ Attr1 is assigned a value of 2. The second example assigns the value of a_ PO_No to the attribute a_ Invoice_No . Number three assigns the descriptor Red to the attribute a_ Color . And the last example assigns the product of 5 and the value of Base to the attribute a_ Size.
1) a_Attr1 = 2 2) a_Invoice_No = a_PO_No 3) a_Color = Red 4) a_Size = 5 * Base
The ANIMATE statement allows the control of the animation speed through the action logic dialog.
Syntax
ANIMATE(speed)
speed A numeric value between 0 and 100. One is the slowest and one hundred is the fastest speed of animation. A speed of zero turns the animation off.
Example
In the first example, ANIMATE statement is used to turn the animation off so that the model will run ahead in time quickly. In the second example the speed of animation is set very slow (usually to show a particular entity or activity). In the third example the speed of animation is set to the highest possible speed with animation still on (often used to help the user gain a “feel” for the general flow and buildups that would occur over time.
1) animate(0) 2) animate(10) 3) animate(100)
The ANIMATE statement is usually implemented by placing a separate entity, arrival and activity combination in the existing model. Scheduled arrivals work well because the exact time can be assigned for the arrival(s) and individual action logic applies for each scheduled arrival. The first arrival could be used to “fast forward” to a time in the model of particular importance, while the next arrival could be used to slow the animation for inspection of a particular aspect of the simulation and then a third to again “fast forward” to see the results.
The decrement statement allows you to decrement a variable or attribute’s value. It subtracts one (the default) or more from the value of the variable or attribute.
Syntax
DEC name [, expression]
name This is the name of the variable or attribute to be decremented.
[expression] You can optionally decrement the variable or attribute by more than one using an expression which can be a constant or a mathematical expression. The name and expression must be separated by a comma. (The square brackets illustrate only that this element is optional.)
Example
The following are several easy-to-understand examples. The first decrements the value of v_ Var1 by one. The second decrements the value of a_ Attr1 by five. The third decrements the value of Number_in_System by the value of an attribute called a_ Batch_Size.
1) DEC v_Var1 2) DEC a_Attr1, 5 3) DEC Number_in_System, a_Batch_Size
Pauses the simulation and displays a message. The simulation will resume when the user selects OK.
Syntax
DISPLAY "< text string >" [,< attribute / variable / function call >] DISPLAY "Now completing the 100th set" DISPLAY "The current number of entries is: ", Var1 DISPLAY "Var1 = ", Var1 $ CHAR(13) $ "Attr1 = " $ Attr1
text string The message ProcessModel will display. The text string must be enclosed in quotes.
[attribute / variable / function call] The text string or numeric value you wish to display.
After the original set of information (i.e. text string, variable) the “$” character is used to add additional information (i.e another text string or variable). You can force a carriage return by using the statement CHAR(13). Each new item that is appended to the statement must be prefaced with the “$” character.
Example
This example displays a message whenever a new order type begins processing at the current activity. A variable, v_ Last_Order , stores the order type of the last entity processed at the activity. If the current entity’s a_ Order_Type attribute value is different from the previous order type, ProcessModel displays a message stating the new order’s type.
IF Order_Type <> Last_Order THEN {
DISPLAY “New Order Type: ”, a_Order_Type v_Last_Order = a_Order_Type
}
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] The display statement is valuable for debugging complex models and for halting a model temporarily during a presentation to display information.
The free statement allows you to free a resource (or resources) being used by the current entity.
Syntax
FREE [ quantity ] resource FREE [ quantity ] resource , [ quantity ] resource , ... FREE ALL
[quantity] The number of units of the following resource to free. If no quantity is used, the quantity is assumed to be one. (The square brackets illustrate only that this element is optional.)
resource The name of the resource or list of resource names to be freed. If any resource specified is not being used by the current entity, it is simply ignored.
ALL The keyword used with the FREE statement to free all captured resources.
Example
In the following example, an entity, which earlier captured the resource Operator, frees the Operator after a three minute activity time. This action is followed by an increment of the variable called v_TimesUsed.
TIME(3 min) FREE Operator INC v_TimesUsed
If no action statements follow the freeing of a resource, the resource can just as easily be freed by drawing a Free resource assignment connection between the resource and the activity.
The get statement enables an entity to obtain a resource. ProcessModel attempts to capture the resources in the order they are listed. If multiple resources are requested, but not available, those that are available will be captured and tied up until all are available.
Syntax
GET [ quantity ] resource, [ priority ] GET [ quantity ] resource, [ priority ] AND [ quantity ] resource, [ priority ] GET [ quantity ] resource, [ priority ] OR [ quantity ] resource, [ priority]
[quantity] You can optionally specify the number of resources to get if the resource has multiple units defined for it. (The square brackets illustrate only that this element is optional.)
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] By default, quantity is equal to one unit of the resource.
resource The name of the resource to be captured.
AND Used to capture more than one resource as each becomes available. To wait until all become available before capturing any of them, use the JOINTLYGET statement.
OR Used to capture one resource or the other. Useful for situations where one of several resources could be used to accomplish the same thing.
[priority] You can optionally specify priority level to get the resource (0-99). The higher the number, the higher priority. A priority above 99 will become an interrupt priority, to learn more see Chapter 10, Section 10.5.8, Interrupting Resources. (The square brackets illustrate only that this element is optional.)
Example
The following examples demonstrate the use of the GET statement. The first shows a simple request for a resource called Operator . The second tests the Size attribute to determine whether or not the Operator and Helper are needed. And the third requests three units of the resource called Operator.
1) GET Operator 2) IF Size > 10 THEN GET Operator AND Helper 3) GET 3 Operator
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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.
This statement allows you to test a variable or attribute’s value and if the test is true to execute another statement. Optionally, an alternative statement can be executed if the test is not true.
Syntax
IF conditional expression THEN statement_1 IF conditional expression THEN statement_1 ELSE statement_2
conditional expression Is a comparative expression using comparison operators like the equals sign (=) and the less than/greater than symbols (< >). The result of this expression is either true or false (yes or no). Multiple or alternative conditions can be tested using the operators AND and OR. Parentheses may be used for nesting expressions.
statement_1 This statement is executed if the conditional expression is true. This can also be a block of statements started with a BEGIN keyword or symbol ({ ) and ended with the END keyword or symbol ( }).
statement_2 This statement, preceded by the keyword ELSE, is executed if the conditional expression is false. This can also be a block of statements started with a BEGIN keyword or symbol ({ ) and ended with the END keyword or symbol ( }).
Example
In the following examples the IF...THEN...ELSE statement is used to make decisions about what happens in the model. In the first example, the variable v_Calls is incremented if the Name has the same descriptor value as Phone_Call. The second example shows a decision made based on the a_Patient_Type. If the patient is critical, both a Nurse and a Doctor resource are needed. Otherwise, only a nurse is captured and the activity takes less time.
1) IF Name = Phone_Call THEN INC v_Calls
2) IF a_Patient_Type = Critical THEN {
GET Nurse AND Doctor TIME(N(30, 5) min) FREE ALL
} ELSE {
GET Nurse TIME(N(8, 1) min) FREE ALL
}
The increment statement allows you to increment a variable or attribute’s value. It adds one (the default) or more to the value of the variable or attribute.
Syntax
INC name [, expression]
name This is the name of the variable or attribute to be incremented.
[expression] You can optionally increment the variable or attribute by more than one using an expression which can be a constant or a mathematical expression. The name and expression must be separated by a comma. (The square brackets illustrate only that this element is optional.)
Example
The following are several easy-to-understand examples. The first increments the value of v_ Var1 by one. The second increments the value of a_ Attr1 by five. And the third increments the value of v_ Number_in_System by the value of v_ Num_Processed plus one.
1) INC v_Var1 2) INC a_Attr1, 5 3) INC v_Number_in_System, v_Num_Processed +1
This statement allows an entity to get more than one resource, but not until they all become available.
Syntax
JOINTLYGET [ quantity ] resource, [ priority ] JOINTLYGET [ quantity ] resource, [ priority ] AND [ quantity ] resource, [ priority ] JOINTLYGET [ quantity ] resource, [ priority ] OR [ quantity ] resource, [ priority]
[quantity] Optionally specify the number of units of the resource that you want to capture. (The square brackets illustrate only that this element is optional.)
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] By default, quantity is equal to one unit of the resource.
resource The name of the resource you want to capture.
AND Used to capture more than one resource once they all become available. To capture multiple resources as each one becomes available, use the GET statement.
OR Used to capture one resource or the other. Useful for situations where one of several resources could be used to accomplish the same thing.
[priority] You can optionally specify priority level to get the resource (0-999). The higher the number, the higher priority. (The square brackets illustrate only that this element is optional.)
Example
The following examples demonstrate the use of the JOINTLYGET statement. The first shows a simple request for a resource called Operator and a resource called Helper. The second tests the a_ Size attribute to determine whether or not the Operator needs two Helper resources. The third example requests the Operator and three units of the resource called Helper . If three helpers are not available, the statement may get two operators and two helpers.
1) JOINTLYGET Operator AND Helper 2) IF a_Size > 10 THEN JOINTLYGET Operator AND 2 Helper 3) JOINTLYGET (Operator AND 3 Helper) OR (2 Operator AND 2 Helper)
This statement allows you to change an entity’s graphic without changing the name of the entity. The NEWGRAPHIC statement will permit you to graphically depict a change in an entity’s state without affecting the statistics collected for the original entity. The NEWGRAPHIC statement allows depiction of:
• assembly, by adding to the complexity of graphics • value or size change, by increasing the size of the graphics • exception tracking, by changing the color of the graphic.
Syntax
NEWGRAPHIC(id#)
id# The identification number of the new entity graphic you want to use in the animation. Numbers (1-20) are pre-assigned to the entities in the standard entities shape palette. When you place entity graphics on the layout, ProcessModel adds them internally as graphic number 21, 22, 23, . . . and so on.
Example
Suppose you want a completed order to appear with a different graphic. To do this, you would use the NewGraphic statement for the entity (e.g. Order) to change its ID from 21 to 22 (this will substitute a new graphic for the original). At the activity or connection where the change takes place, enter the following statement in the Action logic:
NEWGRAPHIC(22)
This statement allows you to change the name of an entity along with its graphic so that model animation as well as statistical reports will reflect the change. In effect, this statement reassigns the entity the name enclosed in parentheses and changes the graphic i.d. number appropriately.
Syntax
NEWNAME(name)
name The new name assigned to the entity with its accompanying graphic if defined on the layout. The new entity and its graphic must be previously defined on the layout when using this statement.
Example
We want to see completed orders as a different graphic and collect statistics on the completed orders, so we use the NewName statement on the entity named Order. At the activity or connection where the change takes place, enter the following in properties dialog Action logic:
NEWNAME(Completed_Order)
Pauses the simulation and (optionally) displays a user-specified message. This pause allows you to examine the system in detail by using menu items from the Options and Information menu. The simulation will continue only when the user selects Resume Simulation from the Simulation menu.
Syntax
PAUSE [< text string >] PAUSE PAUSE "Work in Process levels are critically low."
text string The optional message ProcessModel will display.
Example
The simple example below pauses the simulation after the 100th Claim has been processed at activity Quality Check. The purpose for doing this might be to view the current state of the system at this particular point in time.
INC v_Total IF v_Total >= 100 THEN {
PAUSE “Total = 100” v_Total=0
}
Calculates and reports the current statistics to the output database. This is useful to get a snapshot of the model at various points during the simulation.
The REPORT statement may be followed by the WITH RESET option to reset the statistics after the report is made to the database. When you use the WITH RESET option, you generally want to provide some periodic looping event that will call the report function at specific times.
Used with the AS option, REPORT creates a report with the name specified in the expression.
Syntax
REPORT [WITH RESET] [AS < text string >] REPORT REPORT WITH RESET IF v_thruput = 50 THEN REPORT AS "RepOvr50"
text string A unique name given to the report so it can be easily identified in the General Stats dialog in the Output Program. If any reports have the same name, a number is tacked on the end of the name to make it unique.
Example
To get a snapshot report every 40 hours, schedule a “dummy entity” to arrive periodically (every 40 hours) at a “dummy activity.” In the action logic field, enter the statement REPORT WITH RESET AS 40HOUR and set the activity time to 0.

This results in reports named, 40HOUR, 40HOUR2, 40HOUR3, etc.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Variables are not automatically reset. You will need to manually reset the variables with the report statement if they are being used to track statistics.
Terminates the current replication and optionally displays a message. The simulation will then continue with the next replication. Use STOP to end a replication when a user-defined condition becomes true.
Syntax
STOP [<“ text string” >] STOP STOP "Normal termination"
text string An optional message to display when the replication stops.
Example
The example below uses a STOP statement to terminate the simulation whenever the variable v_Total_Complete reaches 100.
INC v_Total_Complete IF v_Total_Complete = 100 THEN
STOP
The time statement allows you to require the entity to spend time at an activity and has the same effect as entering a time value under the General tab of the properties dialog. This permits you to define a processing time based on logical criteria such as the value of an entity attribute.
Syntax
TIME( time expression <wk/day/hr/min/sec >)
time expression The amount of time to detain the entity at the activity. It can also be expressed as a distribution to add variability to the processing time.
<hr/min/sec> The time unit for the expression.
[popover title="" title_bg_color="" content="Caution" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] DO NOT use this statement in an arrival connection’s Action logic. Doing so will result in an error when you run the simulation.
Example
In the first example, a 5-second activity time is specified. In the second, the activity time is a normal distribution with a mean of 10 minutes and a standard deviation of 2.5 minutes. The third example illustrates a discrete distribution function where the activity has a 20% chance of taking 5 minutes, a 30% chance of taking 8 minutes, and a 50% chance of taking 10 minutes. The fourth example uses a mathematical expression to indicate an activity time in hours equal to 2.5 times the value of the a_ Size attribute.
1) TIME(5 sec) 2) TIME(N(10, 2.5) min) 3) TIME(D3(20, 5, 30, 8, 50, 10) min) 4) TIME(a_Size * 2.5 hr)
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] The time expression and time unit must be used together and separated by a space. A Day time unit equals 24 hours and Week time unit equals 168 hours.
Delays processing of the current logic until the Boolean expression is true. The rest of the model continues to process during the delay. Note that if the expression initially evaluates to be false, ProcessModel reevaluates it only when a variable in the expression changes. ProcessModel releases multiple entities waiting on the same condition one at a time. This allows a released entity to reset the variable value and prevent the release of other waiting entities.
Syntax
WAIT UNTIL <Boolean expression> WAIT UNTIL v_Var1 > 3 WAIT UNTIL v_Var1 < a_Attr3 AND v_Var2 >= 5
Boolean expression The condition that must be satisfied to continue processing the entity or resource. One side of the Boolean expression must contain a variable that can change due to some other event in the model.
Example
The following example uses the WAIT...UNTIL statement to group a variable number of people at an airport shuttle stop. As each person arrives at the shuttle stop, a variable (v_Total) is incremented to keep track of the number of people waiting. The WAIT...UNTIL statement causes all people to wait at this point until the variable, v_Total, is equal to or greater than five.
INC v_Total WAIT UNTIL v_Total >= 5
Repeats logic or logic block continuously while a condition remains true.
Syntax
WHILE <Boolean expression> DO <Statement> WHILE v_Var1 > 3 DO TIME(10 min) WHILE v_Var1 < a_Attr3 AND Var2 >= 5 DO {
...
}
Boolean expression The condition that must be satisfied to continue processing the entity or resource. One side of the Boolean expression must contain a variable that can change due to some other event in the model.
Example
The following example uses the WHILE...DO loop to track the day of the week. v_Var1 is a variable that is set to zero at the beginning of the simulation and remains constant, so the loop will continue for the length of the simulation. v_Day_of_Week is a variable that changes every 24 hours and is reset to one on the eight day.
[menu_anchor name="Chapter-3-12"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]While v_Var1 = 0 DO {
INC v_Day_of_Week IF v_Day_of_Week = 8 THEN v_Day_of_Week = 1 TIME(24 Hr)
}
An expression provides a value based on an evaluation of the names, constants, and symbols in the expression. Some expressions provide a numeric value; these are called numeric expressions. Others provide a true/false value; these are called Boolean expressions.
Expressions allow you to introduce variability into your model. They let you track, control, and respond to events. To create an expression you may use any combination of constants, probability distributions, attributes, and variables. These elements allow you to expand the scope and improve the credibility of your model.
This section shows you how to create expressions and how to use distributions, attributes, and variables in your model to accurately reflect the variability and randomness of the real world.
Unless otherwise stated in this manual, expressions refer to numeric expressions which consist of elements (attributes, variables, distributions, and constants) combined with normal mathematical operators ( + , - , etc.) that result in a numeric value. A numeric expression may be as simple as a variable name or as complex as a formula.
The following table illustrates the expression elements.
| Element | Meaning | Examples |
|---|---|---|
| attribute name | Attribute’s current value | a_Weight a_Pkg_Qty a_SerialNumber |
| variable name | Variable’s current value | v_Num_In_System v_Qty_To_Go v_Total_Pieces |
| distribution | A probability distribution | T(5, 15, 45) N(34, 3) U(50, 5) |
| constant | A specific number | 5 10.25 19.01 |
The following table illustrates the use of mathematical operators.
| Item | Meaning | Examples |
|---|---|---|
| + | addition | a_Weight + 2.5 a_Pkg_Qty + 3.4 |
| - | subtraction | v_Num_In_System - 5 100 - v_Qty_To_Go |
| * | multiplication | 5 * v_Total_Pieces a_Weight * 0.98 |
| / | division | v_Total_Pieces / 100 a_Pkg_Qty / v_Bin_Qty |
You may combine items to form a compound expression. Parentheses may be used to set off parts of the expression to be evaluated first. For information on the order in which operators are evaluated to determine the expression’s value, see Operator Precedence.
a_Attr1 50.91 v_Var1 + 5 v_Total_Pieces + 5 * a_Pkg_Qty (a_Weight + 5) * (a_Pkg_Qty / 2) N(25, 4.8) + a_Weight * (v_Total_Pieces - 10)
In addition to numeric expressions, you may use logical operators to create Boolean expressions that compare two numeric expressions yielding a result of True or False. These expression may be used in IF...THEN statements and condition fields to make specific decisions in the model based on the values of two numeric expressions.
The following table lists and illustrates the use of Boolean operators to create Boolean expressions.
| Item | Meaning | Examples |
|---|---|---|
| = | equal to | a_Weight = 2.5 v_Total_Pieces = 50 |
| > | greater than | a_Weight > 2.5 v_Total_Pieces > 50 |
| < | less than | a_Weight < 2.5 v_Total_Pieces < 50 |
| <> | not equal to | a_Weight <> 2.5 v_Total_Pieces <> 50 |
| >= | greater than or equal to | a_Weight >= 2.5 v_Total_Pieces >= 50 |
| <= | less than or equal to | a_Weight <= 2.5 v_Total_Pieces <= 50 |
| AND | both expressions | a_Weight = 25 AND v_Total = 30 v_Total >= 20 AND v_Total <= 30 |
| OR | Done or both expressions | a_Weight > 5 OR v_Total <= 20 v_Total = 30 OR a_Weight =15 |
You may use simple or compound numeric expressions on either side of the Boolean operator.
IF v_Total_Pieces > 5 * a_Pkg_Qty THEN...
IF (a_Weight + 5) <= (a_Pkg_Qty / 2) THEN...
IF N(25, 4.8) + a_Weight = v_Total_Pieces - 10 THEN...
IF a_Weight >= v_Total_Pieces AND a_Pkg_Qty > 20 THEN...
IF v_Total_Pieces = a_Pkg_Qty OR a_Pkg_Qty > 35 THEN...
As in conventional mathematics, ProcessModel evaluates expressions with more than one operator according to certain rules of precedence. Expressions with more than one operator are evaluated from left to right in the following order:
1. Terms inside parenthesis: ( ) 2. Multiplication: *; and Division: / 3. Addition: +; and Subtraction: - 4. Equalities and Inequalities: =, <>, >, >=, <, <=
[menu_anchor name="Chapter-3-12-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]In the real world, events tend to occur randomly, according to certain statistical patterns or distributions. Distributions allow you to add randomness or variability to your model in order to make it more accurately reflect reality. ProcessModel is capable of creating random sample values that fit a specific theoretical or user-defined distribution.
You can use a distribution when specifying time values and quantities or when assigning a value to an attribute or variable. For example, this statement:
TIME (T(2, 2.6, 4) min)
would make the activity last for a time randomly selected from a triangular distribution with a minimum time of 2 minutes, a most likely time of 2.6 minutes, and a maximum time of 4 minutes.
Distribution functions are built-in functions that generate random values from numbers using pre-determined patterns. Distributions may be discrete, selecting one among a finite number of possible solutions, or continuous according to the pattern provided by the input parameters. An example of using a discrete distribution is when an entity can randomly route to one of several places, or when randomly generating a batch size. Examples of continuous distributions include service and inter-arrival times. The distributions directly available to you in ProcessModel are:

Many additional distributions can be used because of conversions made by Stat::Fit to ProcessModel distributions. See Using Stat::Fit to Choose Distributions.
The following is a list of the most commonly used distributions and the syntax used to define them. The s parameter is optional (see discussion of streams following this list).
| Common Distributions | Syntax | Components |
|---|---|---|
| Normal | N(a, b, s) | a = mean, b = standard deviation, s = stream (optional) example: N(30,5) |
| Triangular | T(a, b, c,s) | a = minimum, b=mode, c=maximum, s = stream (optional) example: T(2,10,13) |
| Uniform | U(a, b, s) | a = mean, b=half range, s = stream (optional) example: U(20,4) |
| User-Defined | D n (% 1 ,x 1 ,...% n ,x n ) | % = percentage (entries must total 100%) x = value (numeric or pre-defined descriptor) n = number of%, x entries between 2 and 5 example: D3(20, 35, 30, 45, 50, 37.5) |
The following illustration shows an example of each of the common distributions:

Triangular This distribution is probably the most versatile yet easy to understand. It allows you to set a lower limit, an upper limit, and a most likely point. In the above example, the distribution would return a random number where the minimum value could be 2, the most likely value would be 5, and the maximum value could be 12.
For example, a call center may take as little as 1 minute with a call but usually takes 3.4 minutes and sometimes takes up to 15 minutes to complete the call. To model this in the Time field of the activity, you would enter: T(1, 3.4, 15)
Generally, you should express time values using the triangular distribution since it is flexible and realistic, yet easy to understand. Studies have shown that activity times are never uniformly distributed and rarely normally distributed. Generally, activity times approximate a triangular distribution that is skewed to the right as shown in the example above
Normal A normal Bell curve, this distribution allows you to designate a mean (average) and a standard deviation to generate a random number within that curve, the most likely number to be generated being the mean. The previous example shows a normal distribution with a mean or average of 30 and a standard deviation of 5.
Uniform This distribution allows you to generate a completely random number since any number under its curve is just as likely to be selected as any other. It is very useful when you want to have a random number unaffected by a most likely point. The previous example will result in a random number from 16 to 24 (i.e. 20 ± 4).
For example, suppose you want to assign a random number from 0 to 30 to an attribute called a_Cover_Time. Enter a_Cover_Time = U(15, 15) in the Action logic where the assignment needs to take place.
User-Defined This distribution is specialized to allow you to generate a specific number based on percentages. You can create two, three, four, or five possible outcomes. The previous example, D3(20, 35, 30, 37.5, 50, 45), will generate the number 35 exactly 20% of the time, 30% of the time the number will be 37.5, and 50% of the time 45 will be the number.
For example, two types of patients require different preparation times. About 38% of the time a nurse takes 25 minutes to prepare the patient and 62% of the time it takes 43 minutes. Enter D2(38, 25, 62, 43) in the Time field of the preparation activity.
To see the parameters for other distributions found in ProcessModel, select the Action tab for an Activity and select Distributions from the drop down filter. Select the desired distribution then select the Paste button to move a distribution into action field. This will show the parameters used to build up a distribution.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] For detailed on all available distributions, use the Stat::Fit Help or the Stat::Fit user’s guide found in “C:\Program Files\ProcessModel\x.x\StatFit\SF Manual V2.pdf”.
An optional stream number (1 - 100), shown as the S in the above tables, can be used to generate independently random numbers for the distribution. If this option is omitted, ProcessModel will use stream 1.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Any negative values returned by a distribution that are used for a time expression will be automatically converted to zero.
Stat::Fit takes raw data (e.g. collected service times) and turns them into a single distribution that represents the collected data. For example, data collected on the length of breakdowns can be turned into a single distribution and be placed in a ProcessModel field.

Stat::Fit is accessed from the Tools menu. It allows you to improve the accuracy of your models by using collected data to determine the best distribution to use in order to reflect that data (See “Distributions” in Chapter 3.12.1).
Distribution fittings are built-in functions that generate random numbers using predetermined patterns. Distributions may be discrete, randomly returning one value among a specified list of values, or they can be continuous and interpolate randomly according to the pattern provided by the input table or parameters. There are several steps in determining the best distribution to use given raw data from observations of the process being modeled. First, you must determine whether the data is discrete or continuous, then follow the appropriate instructions. For instructions on finding the best discrete or continuous distribution, see Discrete distribution.
Stat::Fit is capable of much more than fitting data to distributions, but you need only take advantage of a few of its easy-to-use features when fitting your data to a ProcessModel distribution.
The following example shows you how Stat::Fit can help you create more accurate models. A bank wants to model its teller operations, including the amount of time that it takes to serve each customer. Therefore, for a week, the time each customer spent with a teller is recorded. The data is entered in a text file which can be read by Stat::Fit. Using Stat::Fit, the data is analyzed and an activity time distribution is found that accurately reflects the amount of time required to serve a customer.
1. Open your data file in Excel.
2. Copy the column of data to be used in Stat::Fit. (Highlight the column by clicking in the alphabetic header. This will highlight the column. Press Ctrl+C to copy the data).
3. Open Stat::Fit from ProcessModel’s Simulation menu.
4. Click in the open space directly across from the number 1 as shown below.

Once pasted, the data is displayed in the input table.

5. Click the Auto::Fit button ![]()
6. In the Auto::Fit dialog, select unbounded, lower bound, or assigned lower bound as shown below and click OK.

(Users with greater statistical background may enjoy experimenting with the power of Stat::Fit here.)
Stat::Fit then calculates the best distribution choices and displays them along with their rank (the higher the rank, the better the fit).

7. Click on the distribution you wish to use in the dialog displayed above. This will generate the Comparison graph.

The Comparison graph allows you to compare your actual data against the selected distribution. The bars represent your data, while the line represents the distribution that will fit that data.

Other comparative graphs are accessible through the Results option of the Fit menu.
8. With the best distribution selected, click the Export button
.

With the dialog set as shown above, click OK to export the distribution to the clipboard. (You may exit Stat::Fit at your option now.)
9. Now return to ProcessModel using the ALT-Tab task switch or select ProcessModel from the taskbar and paste the distribution in the desired field or Action logic using the CTRL-V shortcut.
The following example shows how a restaurant could use ProcessModel to model its seating operation. The number of customers is a quantity of discrete entities. Therefore, the Stat::Fit component of ProcessModel would take data about the number of customers who enter in each group, create a discrete distribution to represent that data, and place the distribution in the Quantity field for Arrivals in the ProcessModel for the restaurant.
1. Follow the instruction for fitting continuous distributions, step 1 through 4.

2. Click the Auto::Fit button
.
3. In the Auto::Fit dialog , select discrete distributions as shown below and click OK.

Stat::Fit then calculates the best distribution choices and displays them along with their rank (the higher the rank, the better the fit)

4. Click on the name of the distribution that best fits the data.

5. With the best distribution found, follow the instructions for exporting data to ProcessModel found in fitting continuous data.
Following is a list of distributions and their general uses in ProcessModel. These distributions can be determined by using Stat::Fit and then used within different areas of ProcessModel. For a complete list of usable distributions and their descriptions, please refer to the Appendix of the Stat::Fit user’s guide found at: C:\Program Files\ProcessModel\x.x\StatFit\SF Manual V2.pdf.
| Distributions | Usage |
|---|---|
| Beta | The Beta distribution is a continuous distribution that has both upper and lower finite bounds. Because many real situations can be bounded in this way, the Beta distribution can be used empirically to estimate the actual distribution before much data is available. Even when data is available, the Beta distribution should fit most data in a reasonable fashion, although it may not be the best fit. |
| Binomial | The Binomial distribution is a discrete distribution bounded by [0,n]. Typically, it is used where a single trial is repeated over and over, such as the tossing of a coin. The parameter, p, is the probability of the event, either heads or tails, either occurring or not occurring. Each single trial is assumed to be independent of all others. The Binomial distribution can be used to represent the sampling of defective parts in a stable process, and other event sampling tests where the probability of the event is known to be constant or nearly so. |
| Exponential | The Exponential distribution is continuous and is frequently used to represent the time between random occurrences, such as the time between arrivals at a specific location in a queuing model or the time between failures in reliability models. It has also been used to represent the services times of a specific operation. |
| Erlang | The Erlang distribution is a continuous distribution bounded on the lower side. The Erlang distribution has been used extensively in reliability and in queuing theory. |
| Gamma | The Gamma distribution is a continuous distribution bounded at the lower side. The Gamma distribution has been used to represent lifetimes, lead times, personal income data, and service times. |
| Geometric | The Geometric distribution has been used for inventory demand, marketing survey returns, etc. |
| Inverse Gaussian | The Inverse Gaussian distribution is a continuous distribution with a bound on the lower side. This distribution can be used to represent reliability and lifetimes, and repair time. |
| Lognormal | The Lognormal distribution is a continuous distribution bounded on the lower side. This distribution can be used to model the duration of sickness absence, physicians' consultant time, lifetime distributions in reliability, distribution of income, employee retention, and many applications modeling weight, height, etc. |
| Normal | Normal distribution is frequently used to represent symmetrical data, but suffers from being unbounded in both directions. If the data is known to have a lower bound, it may be better represented by suitable parametrization of the Lognormal, Weibull, or Gamma distributions. See distributions for a description of the input parameters. |
| Poisson | The Poisson distribution is a discrete distribution bounded at 0 on the low side and unbounded on the high side. The Poisson distribution finds frequent use because it represents the infrequent occurrence of events whose rate is constant. This includes many types of events in time or space such as arrivals of telephone calls, defects in semiconductors manufacturing and defects in all aspects of quality control. |
| Pearson5 | The Pearson 5 distribution is a continuous distribution with a bound on the lower side. The Pearson 5 distribution is useful for modeling time delays where some minimum delay value is almost assured and the maximum time is unbounded and variably long, such as time to complete a difficult task, time to respond to an emergency, time to repair a tool, etc. |
| Pearson6 | The Pearson 6 distribution is a continuous distribution bounded on the low side. |
| Triangular | The Triangular distribution is a continuous distribution bounded on both sides.The Triangular distribution is often used when no or little data is available; it is a good starting point for approximating data, but it is rarely an accurate representation of a data set. (see Law & Kelton1). See distributions for a description of the input parameters. |
| Uniform | The Uniform distribution is a continuous distribution bounded on both sides. Its density does not depend on the value of x. The Uniform distribution is used to represent a random variable with constant likelihood of being in any small interval between min and max. See distributions for a description of the input parameters. |
| User-Defined | The User-Defined distribution is a discrete distribution defined by a probability of obtaining each value. See distributions for a description of the input parameters. |
| Weibull | The Weibull distribution is a continuous distribution bounded on the lower side. In particular, the Weibull distribution is used to represent wear out lifetimes in reliability, health related issues, and duration of industrial stoppages. |
Attributes are values or placeholders associated with individual entities that may, for example, indicate the entity’s size or condition. Attributes are placeholders for either values (real or integer) or descriptors (single-word descriptions). An attribute’s value can only be assigned, incremented, decremented and examined by the entity to which the attribute belongs. For example, while ActivityA processes an entity, the attribute called a_Color could be tested for only that particular entity in the activity’s Action Logic. Entities have the following pre-defined attributes:
• Name - The name of the entity. DO NOT use an assignment statement to assign this attribute, e.g., Name = BadCall will not work. Use the NewName statement or the available fields in the routing properties dialog. • Cost - The current accumulated cost for an entity. To learn more about costs, see ProcessModel and Activity-based Costing. • VATime - Cumulative value-added time (in minutes). • ID - Unique identifying number assigned to each entity (created entities have the same ID as the entity that created them so they can be reunited later if desired). • CycleStart - Time (in minutes) entity entered system. • BVATime - Time (in minutes) added to BVA change. • GraphicID - Unique identifying number assigned to each entity graphic • ProcessStartTime - Process start time (in minutes). • CreatedQty - Number of entities created. • LastResTime - Time spent by the last resource on the entity (in minutes). • ReBatchQty - Previous batch quantity. • LoadStatus - Displays the load status of an entity when using an attach route. A value of 1 means all the entities needing to be attached are now attached, a 0 means that the entity is still waiting for the entities to attach or no attach is being used. LoadStatus will only store a value of either 0 or 1. • RoutingBlock_<ChartNumber> - Entity Attribute for each subchart.
Pre-defined attributes are manipulated automatically by the system, so they should only be manually manipulated with careful forethought.
User-defined attributes are defined by the user in the Attributes & Variables dialog accessed from the Insert menu. User-defined attributes may be given an initial value using action statements defined for the entity arrival.

Shown here after a new descriptive attribute was created using the New button.
New This button creates a new attribute.
Delete This button deletes the selected attribute. (Note that the pre-defined attributes may not be deleted.)
Name The name of the attribute. Letters, numbers, and the underscore “ _ ” character are allowed in the name. The name must be one continuous word (i.e. a_Priority_Level).
Type The type of attribute. This can be set to Integer, Real, or Descriptive.
• Integer Any whole number (no digits to the right of the decimal).
• Real Any number including those with digits to the right of the decimal. Use Real when a high level of accuracy and detail is needed.
• Descriptive Defined with a list of adjectives or descriptors that may be assigned to the attribute.
Paste Rule How the Attribute will be added when pasted into a model.
• Duplicate If the Attribute does not exist in the target model, then it will be added to the Attribute dialog. If the Attribute does exist in the target model then that Attribute will not be added to the Attribute dialog.
• Clone If the Attribute does not exist in the target model, then it will be added to the Attribute dialog. If the Attribute does exist in the target model then it will be added with post-fix (a_color will become a_color1). In addition, all instances of the a_color in the logic to be pasted will become a_color1.
Descriptor list The list of adjectives or descriptors that may be assigned to the descriptive attribute. Only available for attributes whose Type is Descriptive.
1. Select Attributes & Variables from the Simulation menu.
2. Press the New button.
3. Enter the name of the attribute.
4. Select the type: Real, Integer, or Descriptive. If you select Descriptive, you must enter the list of descriptors in the edit box provided. (Each descriptor should be entered on a separate line.)
[menu_anchor name="Chapter-3-12-4"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Like attributes, variables are placeholders for either values (real or integer) or descriptors (single-word descriptions). They may be used to describe or track activities and states in the system such as the number of entities that have completed a particular activity. Variables are global in nature and can be set, incremented, decremented, and examined in the Action tab of the properties dialog (most elements have an action tab). Variables are of two types: pre-defined and user-defined. Pre-defined variables that are set up automatically include the following:
• Qty_Processed_<entity name> Number of entities processed for an entity type. For example, Qty_Processed_EntA is the number of EntA processed.
• Avg_VA_Time_<entity name> Average value-added time (time units) for an entity type. For example, Avg_VA_Time_Orders is the number of time units the entity type Orders has spent in value-added activity.
• Avg_Cycle_Time_<entity name> Average cycle time (time units) for an entity type. For example, Avg_Cycle_Time_AssemblyA is the average number of time units that the entity type AssemblyA spent in the model.
• Avg_Cost_<entity name> Average cost for an entity type. For example, Avg_Cost_Call is the average cost for the entity type Call in the model. Average cost applies only to completed entities.
Variables may also be displayed during the simulation on the scoreboard or in a user defined position.

You can create user-defined variables in the Attributes & Variables dialog accessed from the Insert menu. You can also give the variable an initial value.

Shown here after a new Integer variable was created using the New button.
New This button creates a new variable.
Delete This button deletes the selected variable. (Note that the pre-defined variables may not be accessed from the Attributes & Variables dialog.)
Name The name of the variable. Letters, numbers, and the underscore “ _ ” character are allowed in the name. The name must be one continuous word (i.e. v_Inventory_Level).
Type The type of variable. This can be set to Integer, Real, or Descriptive.
• Integer Any whole number (no digits to the right of the decimal).
• Real Any number including those with digits to the right of the decimal.
• Descriptive Defined with a string of adjectives or descriptors that may be assigned to the variable.
Initial Value The value assigned to the variable at the beginning of the simulation. If you do not enter a value or descriptor, ProcessModel will use zero (0) or the first descriptor in the list as the initial value for the variable.
Stats Changes the type of statistics that are collected.
• None No statistics will be collected
• Basic Collects basic statistics such as total changes, average minutes per change, current value and average value. Observation based.
• Basic Time Same information as Basic, but the information is Time-weighted.
• Detailed Allows all of the same information as the Basic option plus standard deviation information.
• Detailed Time Same information as Detailed, but the information is Time weighted.
• Observation-based Variable information is calculated based on a simple average.
• Time-weighted Variable information is calculated based the average of the products of the variable multiplied by the length of time it remained at that value.
Paste Rule How the Global Variable will be added when pasted into a model.
• Duplicate If the Global Variable does not exist in the target model, then it will be added to the Global Variable dialog. If the Global Variable does exist in the target model then that Global Variable will not be added.
• Clone If the Global Variable does not exist in the target model, then it will be added to the Global Variable dialog. If the Global does exist in the target model then it will be added with post-fix (v_Reject_Count will become v_Reject_Count1). In addition, all instances of the v_Reject_Count in the logic, to be pasted, will become v_Reject_Count1.
Scoreboard The variable will be displayed on the simulation scoreboard when this object is checked.
Descriptor list The list of adjectives or descriptors that may be assigned to the descriptive variable. Only available for variables whose Type is Descriptive.
1. Select Attributes & Variables from the Insert menu.
2. Click on the Global Variables tab.
3. Click on the New button.
4. Enter the name of the variable.
5. Select the type: Real, Integer, or Descriptive. If you select Descriptive, you must enter the list of descriptors in the box provided with a separate descriptor entered on each line.
6. Enter an initial value.
1. Select Attributes & Variables from the Insert menu.
2. Click on the Global Variables tab.
3. Select the Scoreboard check box.
1. Select the Label palette from the Gallery.

2. Select a Label graphic and place it on the layout to the left of where you want the variable to be displayed.
3. In the label dialog box select the variable name to be displayed on-screen.

Scenarios are experiments that are run with a model in which the value of one or more parameters varies for each run. Scenarios allow you to run and compare multiple test cases for a model all automatically. You create scenarios by defining scenario parameters to be used in your model, referencing them in your model, and then defining specific scenarios in which values are assigned to those parameters.
[menu_anchor name="Chapter-3-13-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Scenario parameters are placeholders like variables, only they are used to represent a value that changes from scenario to scenario. For example, if you want to run three model scenarios experimenting with different activity times, you would enter a scenario parameter as the activity time, and then define three different scenarios with three different times in the Scenarios tab of the Scenarios & Parameters dialog.

New This button creates a new parameter that may then be edited.
Delete This button deletes the selected parameter.
Name The name of the parameter to be used in the model in place of actual values.
Default Value The value of the parameter when the Save & Simulate Chart menu item is selected rather than Run Scenarios.
Move Up Moves the selected parameter up in the list.
Move Down Moves the selected parameter down in the list.
1. From the Simulation menu select Define Scenarios.
2. Click on the Scenario Parameters tab in the dialog (as shown on the previous page).
3. Click on the New button.
4. Enter the name of the parameter.
5. Enter a default initial value. This could be a specific number (e.g. number of resources) or a distribution function.
[menu_anchor name="Chapter-3-13-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The Scenarios tab of the Scenarios & Parameters dialog allows you to define scenarios or experiments with different values for each of your selected parameters. It also allows you to disable specific scenarios to control which scenarios are run.

New This button creates a new scenario.
Delete This button deletes the selected scenario.
Parameters This box lists the parameters and their defined start-up values.
Name The name of the scenario to be used in reporting statistics.
Value The value represents the scenario parameter for the selected scenario.
Disabled Disables the selected scenario, so that it will not be run during the simulation.
Set to Default Resets the value of the selected parameter to its default value.
1. From the Simulation menu select Define Scenarios.
2. Click on the Scenarios tab in the dialog (as shown in the previous graphic).
3. Click on the New button.
4. Enter the name of the scenario.
5. Select parameter from the Parameters list box and enter a value in the Value field below.
6. Repeat step 5 for each parameter you wish to change for the selected scenario.
7. Repeat steps 3-6 to create additional scenarios.
[menu_anchor name="Chapter-3-13-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]To make use of the scenario parameters you have defined for your scenarios, you must enter the name of the parameter in place of the value it will represent in the model. For example, you may want to enter a different processing time for a particular activity each time you run the simulation. So you would enter the name of the parameter in the Time field on the General properties tab of that activity, as shown below.

1. Define the necessary Scenario Parameters (see distributions) in the Scenarios & Parameters dialog.
2. Define the desired Scenarios (see Scenarios -- Define Experiments) in the Scenarios & Parameters dialog.
3. Enter the name of each parameter in the appropriate field or action logic in the model. (See the above example.)
4. From the Simulation menu, select Run Scenarios to run the simulation using the scenarios.
[menu_anchor name="Chapter-3-14"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]To simplify the process of entering Variables, Attributes, Resources and Scenerio Parameters into fields, pick lists can be accessed by using a right-mouse-click inside any field requiring entry of this type. This selection of data by pick lists removes the opportunity for error due to typing mistakes or failure to include underscores, etc.
1. Right-mouse-click inside any field where an Attribute, Variable or Scenario parameter could be used.

2. Select the Keywords menu item.

3. Select the desired attribute, variable, resource or scenario parameter from the selection list. You can filter the list of items displayed by clicking the drop down list and selecting the item type to display.
[menu_anchor name="Chapter-3-15"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Links are connections used to join your model to charts or other files like word processing documents or spreadsheets. When you right-click on a linked object and select the file, ProcessModel opens the link and accesses the file referenced. As seen here with Computer, linked objects appear with a shadow. Links are useful for attaching information without adding an object that will show up on the output report.

General

Object Type Allows you change the object from Link to another object type.
Setup the link information by right clicking on the object itself and selecting Format Links.

In today’s busy world it is becoming more important to leverage our work to create gains by automating the mundane, passing legacy information to others and quickly providing access to recent innovations. Model Objects make this goal a reality. Model Objects are self-contained plug-in sections of models that are intended to be re-used. A model object contains all of the activities, logic, attributes, variables, etc. necessary to run properly when plugged into a model. Model objects allow teams, departments or companies to develop a library of quick-to-use model sections. These model section may for example contain the proven best practice order handling logic, the approved graphics for company models or difficult logic.
Model objects may be intended to be pasted one time into a model, such as the digital clock shown below. ProcessModel does not have a build-in capability to handle large digital numbers or day of week functions, but simple action logic was combined with WMF graphics to provide every user the capability to add this functionality in a few seconds.

Other model objects are intended to be used many times in the same model. An example might be a bus stop object. In this model object, when a bus stops, people intended for that stop must depart, then a calculation must be done to see if there is enough room on the bus for all the people waiting, and if not, then only a limited number of people are allowed to enter the bus. The bus must then move on and the remaining people wait for the next bus. Even though the logic for the bus stop is above the level of all but the best modelers, once created and tested, anyone could create a bus model with 3 or 103 stops in a matter of minutes using this kind of a model object.
Some of the most difficult problems that you will encounter in simulation modeling can be solved in minutes with the new model objects for arrivals and routing. model objects provide advanced capability for resources, priorities, graphics, batching, on screen clocks and more. Do you want to learn how to do advanced modeling? Take apart the model objects and see how they were developed. You can learn how to approach the problem and uncover some great gems in the process.
If you don’t find what you are looking for in the model objects library, contact us and we may be willing to develop your model object free of charge.
[menu_anchor name="Chapter-4-2"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Applying model objects is really very simple. Using the Model Objects menu, the user selects a model object and inserts it into a target model. Model objects can be accessed by selecting the Model Objects/Select menu item.

Model Objects The model object dialog allows selection by industry or category. When the By Industry option is selected, the model objects, for industry chosen at install, will be displayed. If the Other category was selected, all the model objects for all industries will be displayed. The industry can be changed by selecting the Tools/ Preferences menu item.
When the By Category option is selected, all objects from all industries are arranged in areas such as: arrivals; batching; conveyors; cost; flow control; etc.
Preview Selecting a name from the tree diagram, on the left of the dialog, will show a picture of the main elements of the model object in the Preview pane.
Description The designated purpose of the model.
Video Link A link to an online video describing the usage of the model.
Insert Places the selected model object at the point of the cursor. When no graphics are previously on the screen the Insert button is grayed out. If a Model object is to be the first element on the model, make certain to place text or some other graphical element on the layout before attempting to insert a model object.
Open Opens the model object in a self-contained format. Any suggested entries can be tested or modified. The model object can be run so that you can see how it behaves with the changes to suggested entries. Deeper explanations are given for attributes, variable and scenario parameters used in the model.
[menu_anchor name="Chapter-4-3"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Model objects are designed so the model will run as an independent model. Often this means that additional model items will be needed to allow the model to run. Added text entries are also provided to explain the model object and how to integrate it within your model. When a model object is inserted only the critical parts are copied into a target model. The following explanations are given to explain what is being shown on the layout in addition to the model object.
All model objects are visually developed with the same general format. Some model objects contain added elements to help in explaining model operation. A typical model object will have the following elements:
Items shaded or outlined in light gray are not part of the model object, but only included so the model object can be simulated.

Title The title will start with the category and then describe the basic function of the model object.
Why would I use this model object? Will provide one or more reasons why a user may want to consider the model object.
How to use this model object Provides step by step instructions for manually inserting the model object, integrating with a model and adjusting the needed parameters.
How to build this model object Provides additional information about the construction of the model object so that alternate methods might be considered.
Level of difficulty Provides a relative scale of how difficult this model objects will be for the user to integrate into a base model. Simple, would imply that no action logic changes would be necessary. Moderate, would suggest that some action logic would need to be modified. Difficult, may involve extensive changes to action logic or changes to multiple areas. Some model objects provide both difficulty of “use” and “difficulty of modification.”
Notes Describe the use of Attributes, Variable and Scenario parameters along with the information about how to make detailed changes to the model object.
Linked File (small yellow graphic emphasized by the red box in the picture below) A text files used to load information about the model object into the model object database. This is how the ProcessModel knows how to put the category, industry, description into the Model object database.
[menu_anchor name="Chapter-4-4"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]You can design your own model objects and attach them to the model object library. This will allow for proprietary model objects specific to your company that can be shared by your entire organization. The knowledge gained by one individual can be multiplied by creating model objects for others needing similar capabilities.
[menu_anchor name="Chapter-4-4-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]1. Copy the Activities, Routings and Resources needed to replicate the desired behavior.
2. Paste the copied elements into a new model.

3. Add ProcessModel elements needed so this new model will operate independently.

4. Using the text tool, document the purpose and how to use this MO. Make notes that will help the user understand the MO operation.

5. Change the color of all non-essential model elements light gray.

For changing the color of text, routings and activities see Chapter 2, Section , Formatting Lines.
6. Change the name of the layer on which the model resides to Model and add a new layer titled Notes. To make these changes, right mouse-click on the layer tab in the lower left corner of the layout and open the layer manager.

Use the layer manager to rename current layers and add new layers.

7. Move all non-essential elements to the Notes layer. Only model elements that will be copied from the model object will remain on the Model layer. To move items on the ProcessModel layout to another layer, select the elements desired (shift-click to select multiple items) then right-mouse-click on one of the layer tabs and select Move to Layer. Select the Notes layer and press OK.
8. Create data file to supply information to the model object data base. This is a text file (can be created using Notepad) with a predefined format. The format follows:
@#Indus#@Manufacturing, Service, Healthcare, Logistics, Other,#@
@#Categ#@Arrivals, Batching, Conveyors, Costing, Flow Control, Inspection, Miscellaneous, Priorities, Routings, Setup, Shifts, Time, Utilization, Visual Indicators,#@
@#Keyw#@,#@
@#Desc#@#@
@#video#@https://vimeo.com/channels/processmodel#@
Save this text file with the same name as your model, except with an extension of “.txt”. A typical text file might look like the one shown below:
@#Indus#@Manufacturing, Military, Service, Other,#@
@#Categ#@Routings,#@
@#Keyw#@routing, percentage,#@
@#Desc#@If you have a need to route ENTITIES by percentage that changes based on the ENTITY name.#@
@#video#@https://vimeo.com/channels/processmodel#@
In the Industry section, type the industry for which this MO applies. Enter one or more industries separated by commas and the last entry ending with a comma. In the example above, this model will show up in 3 industries and in the other category.
In the Category section, type the category for which this Mo applies. This section will generally have one category, but may have more.
In the Keywords section, type all the keywords that might be used to find a model object separated by commas.
In the Description section, type the sentence or paragraph that defines the purpose of this model object.
In the Video section, enter the full URL describing the path to an online video.
Notice the general pattern. “@#” starts a section followed by a name of the section (Indus, Categ, Keyw, Desc, video). The name of the section is followed by “#@”, the information of the section and then another “#@”
9. Create a picture of the model object Layout. This file will be used to generate the preview for the model object. Save the .JPG with the same name as the model but in the JPG format. A picture size of 600 X 450 is recommended for a preview picture.
10. Link the .TXT file from step 8 and the .JPG from step 9 to the model. In the Notes tab of the model add a shape from the palette (it won’t make any difference if it is an entity, activity or resource and the name is not important). Change the Object Type to “Link”.

Link the two files by right-mouse-clicking on the link object and selecting Link Document.


Link one file and then the other.
11. Change the Paste Rule for variables, attributes and scenario parameters to allow them to integrate properly. Each of the three elements above need to know how to behave if there is already an element with the same name in the target model.

Set the Paste Rule to Duplicate if this element name can be used in many places. For example: the name a_Dir1 might be used every time action logic is used to determine which routing to take. The same attribute would be reused at every decision and thus could be used many times without creating a new attribute.
Set the Past Rule to Clone if the name being pasted must be unique for the logic being pasted. For example: the counter v_Count1 might be used to tell the logic how many times an entity had been through a particular set of logic. This means when a model object containing v_Count1 is copied into a model which already has the same variable name, the arriving variable needs to be renamed and all of the logic in the arriving model object needs to be rewritten using the new variable name.
12. Click on the Model Tab to make the Model layer active.
13. Save the model in the ProcessModel Model Objects directory.
[menu_anchor name="Chapter-4-5"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]You can request that ProcessModel check the website to see if model objects have been added or if existing model objects have been modified. This keeps you up-to-date with the latest approved content and new capabilities. To check to see if there are new model objects available, select Model Objects/Check for Updates. Model objects added by the user will not be modified or deleted. If a ProcessModel model object has been modified by you and would like to have the changes appear in the model object directory, save the Model Object as a new name, save the linked files (.txt and .jpg) with the same name as the model and relink them to the notes page.
[menu_anchor name="Chapter-5"] [separator style_type="shadow" top_margin="0" bottom_margin="40" sep_color="" icon="" width="" class="" id=""]Accessed from the Simulation menu, the Options dialog contains the settings and information you will use to run your model. Be sure to review these settings before running the simulation of the model. Once you are familiar with these options and have set them according to your objectives, you can run the simulation.
[menu_anchor name="Chapter-5-1-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
Run length The length of time for running the simulation. You may use any constant or expression to indicate the length of time the simulation will run.
Warmup length The length of time to run the simulation before collecting statistics. Many systems require a time to warm up before they are running at a steady state, and if you collected statistics during this warm-up period, your results would likely be skewed. This option allows you to define that time to allow your model to warm up before you begin collecting statistics. Again, any constant or expression may be used in this field.
Replications The number of replications to run for increasing the statistical significance of output results. If your model has any random behavior defined using one or more probability distributions, the simulation results will also be random. Running multiple replications allows you to use a meaningful sample size when interpreting the results since each replication uses a different seed to generate random numbers.
Report time units Allows you to select the default time units to use when you run the model.
Show Animation If checked, the process will be animated during the simulation. Disabling the animation enables the simulation to run faster and consumes less memory.
Show Scoreboard Check to display basic performance measures (entities processed, value-added time, etc.) during the simulation.
Scoreboard Time units Allows you to select the time unit displayed in the scoreboard at the time of simulation.
Disable subprocesses Causes the simulation to be run the main model only (no submodels are executed). Individual submodels can be disabled in the Activity dialog.
[menu_anchor name="Chapter-5-1-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
External Files This option allows you to include shift files for activities and resources.
Create shift file Allows you to create a shift file for the model.
Interrupt activity to go off shift or on break When you check this option, ProcessModel will interrupt an activity or resource (whether or not it is currently busy) to cause it to go off shift or on break. Use this only for activities or resources you can interrupt.
[menu_anchor name="Chapter-5-1-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The Graphics tab allows you to use a custom graphics library in the model and is provided primarily for compatibility with earlier versions of ProcessModel. If you have models built in version 2.1 or earlier and you don’t want to add any custom entity icons to the models, uncheck the “Use custom graphics library for simulation” box. This will conserve the disk space required to generate a custom graphics library.


Show standard deviation When you check this option, ProcessModel will show standard deviation in the cycle time calculation of the Output Summary.
Number of cycle time Allows you to choose the size of the cycle in which the standard deviation is sampled. Larger samples use more processing memory.
Statistics Allows you to choose if resource stats will be shown by unit or in a summary of all units.
[menu_anchor name="Chapter-5-2"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]From the Simulation menu, select Simulate Chart (or Run Scenarios) to run a ProcessModel flowchart. When you run the simulation, the Simulation Window appears and ProcessModel compiles the model into simulation code for execution. Your model then starts running according to the options you have selected.
[menu_anchor name="Chapter-5-2-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]In addition to your flowchart, a scoreboard appears on the Simulation Window to illustrate performance measures if the scoreboard option is selected in the Options dialog.

Entity1, Entity2,... Entities for which statistics are gathered are displayed across the top of the scoreboard.
Qty Processed The number of entities of this particular type that have been processed, meaning those that have exited the system.
Avg. Cycle Time (time unit) The average time the entity type spent in the system. Expressed in terms of the time unit selected in the Simulation/Options dialog.
Avg. VA Time (time unit) The average value added time—time the entity type spent in activity time. Expressed in terms of the time unit selected in the Simulation/ Options dialog.
Cost per Unit The average cost of the entity type.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Since entity names can be changed during a simulation, statistics are collected based on the name assigned to the entity when it exits the system.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Variables may also be shown on the Scoreboard (see variables).
Once a simulation begins, a new menu bar appears at the top of the screen with selections for controlling the animation and for interacting with the simulation. As shown below, these menu items appear above the animation speed control bar and simulation clock.
The Simulation Window has a menu of its own, with selections for controlling many simulation parameters such as the run speed. You can also control the animation through panning, zooming and pausing.

The screen above shows the speed control bar, along with the clock selection button for controlling the format of the clock readout. In addition, each resource has a status light which changes throughout the simulation to reflect the current operational state of each resource (a maximum of 12 status lights will be shown for multi-unit resources).
The Run-Time Simulation menu has two options: End Simulation and Pause/Resume Simulation. Each of these functions is defined below.

End Simulation Choose this option to end the simulation. You will then be prompted to collect statistics or return to the model editor without collecting statistics. If running multiple scenarios, End Simulation will terminate all scenarios.
Pause/Resume Simulation Choose Pause Simulation to pause the simulation for an indefinite amount of time. With the simulation paused, you may begin a trace, zoom in or out on the animation, set up the next pause, examine different activities in the model, or interact with the model in a number of other ways. Choose Resume Simulation when the simulation is paused to continue running the simulation.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You may temporarily halt the simulation by pressing the ALT key. Pressing any key will resume the simulation.
The run-time Options menu has several selections that allow you to interact with the simulation while the model is running. These options are described in the following pages.

Animation Off/On Turns the animation on or off. Off greatly speeds up the simulation. Animation speed may also be set with the ANIMATE (ANIMATE 0-100) statement.
Zoom Zooms in or out on the animation.
Views Allows you to select a view defined while building the model.
Trace Options Lists events as they happen during a simulation. These option allow for several viewing options including sending the output to a file.
Debug Brings up the Debugger Options Dialog box for debugging the model.
User Pause Allows the user to enter a simulation clock time for the simulation to pause.
The Debugger is a convenient and efficient way to test or follow the processing of any logic defined in your model. The debugger is used to step through logic one statement at a time and examine variables and attributes while a model is running.
Before discussing the details of the Debug option, it is important to understand the following terms:
Statement A statement causes ProcessModel to take some action or perform some operation. This includes statements such as GET, JOIN, etc.
Thread A thread is a specific execution of any logic. A thread is initiated whenever a logic needs to be executed. This can be an entity running through an activity action logic, arrival logic or routing logic. Note that the same logic may be running in several threads at the same time. For example, three entities of the same type being processed simultaneously at the same multi-capacity activity would constitute three threads.
A thread or logic execution can be suspended by any statement, causing simulation time to pass (e.g. GET Res1, TIME(5 min), etc.). After such a statement completes its task, the thread is resumed. During the time a thread is suspended, other threads may be initiated, suspended, resumed, or completed. This is called thread switching.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Even though there can be several threads execution, e.g. the same logic at the same current time in the simulation, the simulation processor can only process them one at a time. So there is really only one current thread while all other threads are suspended (either scheduled for some future simulation time, or waiting to be executed after the current thread at the same simulation instant).
There can also be many threads (any number of threads corresponding to each of the time elapsing statements within the logic) which have completed their waiting time, but wait their turn to continue execution. These threads are on hold because the simulation engine is busy with another thread scheduled for the same simulation time instant. There is only one thread executed at any real time instant by the simulation engine.
The debugger window will display a unique identification number for the current, active thread. This thread ID number will help you differentiate between different instances of the same logic block while you are debugging your models.
The Debugger Options dialog box allows the user to specify when to display the Debugger dialog box during the simulation run.

Disable debugger disables the debugger completely. By default, the debugger is enabled. Running the model with the debugger disabled increases the run speed. When running multiple replications or scenarios, or when the animation is disabled, the debugger will automatically be disabled.
DEBUG statement Displays the Debugger dialog box every time a DEBUG statement is encountered in an enabled process while running the simulation.
Global Change Displays the Debugger dialog box every time a global change occurs to a specified variable or attribute. The Debugger dialog box shows the original and new value of the element. Only one global name can be specified in this box.
User Condition Displays the Debugger dialog box when a defined user condition written as a Boolean expression becomes true, for example, when Var1=5. Only one expression can be specified in this box, although several conditions can be tested by using the OR operator.
Check Condition Allows the user to define how often to check the user condition. The options include:
• Before each statement The condition, such as v_Var1=1, will be checked before each statement is executed. This option is the most precise way to tell exactly when the user condition becomes true, but slows down the simulation the most.
• At each thread switch The condition, such as v_Var3>17, will be checked only if a statement from a different thread follows the current statement being executed.
• At each thread initiation The condition, such as a_Att1=5, will be checked only if the next statement to be executed is the first statement in a thread (the first statement in a thread is also the first statement of a logic).
Debug button Pressing the Debug button displays the Debugger dialog box before the next statement executes.
OK Closes the Debugger Options dialog box and continues to run the simulation model.
The Debugger can be used in two modes: Basic and Advanced. The Basic Debugger appears initially with the option of using the Advanced Debugger. The Basic Debugger dialog box is shown below:

Error Display Box Displays the error message or reason why the Debugger dialog box is displayed, such as the User-Condition becoming true.
Logic Display Box Displays the statements of the current logic being executed.
Information Box Displays either the context of the logic or local information as mentioned below.
Context Displays the module, operation, and line number (in which the debugger stopped) in the Information box.
Local Information Displays local variables and entity attributes with non-zero values in the Information box.
End Simulation Choose this option to terminate the simulation. This will prompt you about collecting statistics.
Run Continues to run the simulation, but still checks the debugger options selected in the Debugger Options dialog box.
Next Statement Jumps to the next statement in the current thread. If the last statement executed suspends the thread (e.g. the entity is waiting to capture a resource), another thread meeting the debugger conditions may be displayed as the next statement.
Next Thread Brings up the Debugger at the next initiated or resumed thread.
Into Subroutine Steps to the first statement in the next subroutine executed by this thread. Again, if the last statement executed suspends the thread, another thread meeting debugger conditions may be displayed first. If no subroutine is found in the current thread, a message is displayed in the Error Display box.
Options Brings up the Debugger Options dialog box. You may also bring up this dialog box from the Simulation menu.
Advanced Changes the Debugger to Advanced mode, providing additional options.
A trace is a list of events occurring over the course of a simulation. For example, a trace statement might state "EntA arrives at Activity1". A trace listing also displays assignments, such as variable and array element assignments. A trace listing of a simulation run may be viewed in several ways through the trace options provided.
Trace Mode
A trace listing is generated in one of two modes, Step or Continuous.
Off Select this option to discontinue a current trace.
Step Select this option to step through the trace listing one event at a time. Each time you click the left mouse button, the trace will advance one event. Clicking and holding the right mouse button while in this mode generates a continuous trace.
Continuous Select this option to write the trace continuously to the output device selected from the Trace Output submenu. This is useful when you do not know exactly where to begin or end the trace. Clicking and holding the right mouse button stops the trace until you release the button.
Trace Output
A trace may be sent to one or more output devices by checking each desired output. For example, you may select 'To Window' and 'To File' to see a listing on your screen and also save the information in a text file.
To Window Select this option to view the trace in an on-screen trace window. You may size the trace window to your liking to see more or less of the trace listing.
To File Select this option to send the trace listing to a text file. Trace statements are automatically written to a <model name>.TRC file.
In addition to the debug and trace options, animation options allow you to control the animation screen.
Animation Off Choose this option to temporarily suspend the animation. To resume the animation, select this option again. (The selection automatically changes to ‘Animation On’.) Note that running with animation off greatly increases the run speed, especially for models with a large amount of graphic detail. To increase the run speed to an even faster rate, check the Disable Animation in the Simulation Options before running the model (see Simulation Options).
Zoom Select this option to Zoom in or out on the animation. When this option is selected you may choose a preset zoom level, enter your own zoom level, or choose Zoom To Fit Layout to fit the entire animation on one screen. The Zoom function zooms to the center of the screen. If the zoom factor causes the model layout to appear outside the layout window, the zoom function will automatically pan to show at least part of the layout.
Zoom submenu:

Views The views option allows you to view individual portions of a hierarchical model. Pressing the CTR key with the number 1 shows the upper level of the model, while pressing the CTR key with the number 2 shows the first sub model, etc.
User Pause Choose this option to enter a time for the simulation to pause. The proper format for specifying a user pause is hh:mm.xx where hh represents hours, mm represents minutes, and xx represents hundredths of a minute.
Information Menu
The Information menu contains selections for obtaining system information during the run. The four selections on this menu are included for technical purposes.
Windows Menu
The Window menu allows you to rearrange windows and icons and select the active window. These options are standard to all Windows applications.
[menu_anchor name="Chapter-5-2-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]In addition to the animation options discussed in the previous section, you may pan the animation screen in any direction, control the speed of the simulation, and change the format of the simulation clock display. These and other procedures are discussed in this section.
1. Press and hold the left mouse button anywhere on the animation screen. This point then becomes the “anchor point” by which the entire animation is moved.
2. Drag and release the mouse where you desire the anchor point to be located. The following diagram illustrates this procedure.

Control the simulation speed
• Move the animation speed control bar to the left to decrease the simulation speed or to the right to increase the simulation speed.

1. Click on the simulation clock button.
2. Select a format for the clock display.

There are two types of output reports. One is an output summary which gives basic management overview information. The other provides detailed output in the form of tables, graphs, charts, and other overview decision-making information. After you run the simulation, both types of output reports are available from the View menu.

The management Output Summary provides information regarding total process cost, burdened cost per entity, resource costs, manufacture or service time, the amount of process time that provides value to the customer and custom statistics of your choice. This summary information is provided in tabular form with the ability to pull information from many model experiments to compare results.

1. When the simulation is complete (or you have ended it manually), choose No when you see the following dialog.

If you end the simulation from the Simulation menu while the simulation is still running, ProcessModel will prompt you for verification before displaying the above dialog.
2. You will now be in the model build area. From the view menu select Output Summary. The following dialog box will appear.

3. Touch on the names in the tree diagram on the left to display summary information on a single run, multiple scenarios or multiple replications.
4. To see the total cost for running the process for the week, click on the tree diagram entry Total Cost . Total Cost represents the sum of all the costs to run the process plus the addition of all unused resource costs. For information on setting up costing information see costing.

5. To see the average cost of each entity type, click on Entity Cost . Entity Cost provides you with a realistic picture of the cost to produce one entity.

Unused resource costs are applied to each entity type so you get a realistic picture of all costs involved in producing an entity. (Unlike the Summary Report shown in this section, unused resource cost is not accounted for in the Output Detail Report).
The cost of unused resources is automatically allocated across entities according to the number of each type of entity that exits the simulation.
To obtain cost breakdowns for the resources in the process, click on Resource Cost. Resource Cost provides a breakdown of the cost of the resource for time utilized and for the time that the resource was utilized. This table helps you to quantify the resource waste in your process.

6. To obtain of the amount of cycle time of each entity type, click on Value Added Time . Value Added Time is broken into Value Added, Book Value Added, Non Value Added, and Cycle Time. These breakdowns allow you to determine what part of your process provides the values and what part does not. To set an activity to or see the definition of Non-Value-Added or Book-Value-Added see information under VA Time.

7. To obtain custom statistics for any global variable, click on Variable Statistics . Standard deviation information is obtained by selecting detailed statistics from the Variable dialog. For information on setting up variables see Chapter 3, Section 3.12.4, Variables.
Any column may be sorted by pressing the column heading.
8. The Hot Spot Evaluator is an output report that identifies what area of your model you need to focus on to see the greatest improvements. All NVA (non value-added) item opportunities are listed from the greatest to the least opportunity. Below the NVA items are the VA (Value adding) item opportunities listed from the greatest to the least. With the Hot Spot evaluator you can see opportunities faster.

After running multiple replications (a sample from a different time of the same model) or multiple scenarios (an experiment with different input parameters), the Summary Output report will allow the selection of statistics from each category as shown below.

Clicking on the tree diagram will show or hide information based on your level of selection. When selecting a scenario containing replications, you will see average values of all replications for that scenario. When selecting a replication, you will see only data for that replication. For information on setting up multiple replications, see Chapter 5, Section 5.1.1, Run Tab.
[menu_anchor name="Chapter-6-3"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The Output Detail report provides information that is vital to the modeler to assure complete understanding of the operation of the system under study. This detail information allows an in depth view of every activity, storage and resource along with access to custom graphs of user defined data. The tree diagram below shows the type of data that can be extracted from the Output Detail reports and graphs

1. When the simulation is complete (or you have ended it manually) choose yes when you see the following dialog.

If you end the simulation from the Simulation menu while the simulation is still running, ProcessModel will prompt you for verification before displaying the above dialog.
1. Click the View menu.
2. Select Output Detail.
[menu_anchor name="Chapter-6-3-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]ProcessModel simplifies the process of generating and analyzing the output data as well as increases performance on the generation and analysis side. Data is gathered from all scenarios and replications in a structured format, ready for easy analysis in the Output Module.

The Output Module makes certain assumptions to ease your way into charting from the View menu.
[menu_anchor name="Chapter-6-3-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The File menu allows you to open one or more output databases for review, analysis, and comparison.

You can also export time series data and save reports you generate to a text file. And of course, you can print graphs and reports from the output databases you have opened. Below is a description of each of the menu options under the File menu. Some menu items have a corresponding button on the button bar, and when you move the mouse over the button, a message appears at the bottom of the window indicating what the button does if pressed.
Open Opens a single output database (*.RDB) file.
Open Multiple Open several .RDB files for viewing and comparison (covered in detail in“Multiple Output Files”).
Save As Saves a copy of the report you created to a text or Excel file.
Open Manage Chart Views Allows the setup of multiple presentations (views) of the output information called by separate names.
Save Active Chart View Preserves the currently open reports and graphs so they will open automatically with new data in subsequent runs.
Save Active Chart ViewAs Preserves the currently open reports and graphs under an new name.
Print Preview Shows what the current graph or report will look like when printed.
Print Prints the current graph or report to your printer.
Print Setup Displays the standard Windows printer setup dialog.
Open Multiple Displays the currently open output database files and allows you to add or remove output databases from the list. These open database files are used in creating graphs and reports in the Output Module.
This is useful for viewing output data for more than one simulation run or from other models for side-by-side comparison. For example, you may have a model which represents the current system of a manufacturing plant. A different model may represent the desired future system for the same manufacturing plant. Opening multiple output files allows you to compare differences in utilization percentages, etc.

Add Displays the file open dialog allowing you to open another output database file.
Remove Removes the highlighted output database file from the results files list.
Remove All Allows you to remove all the output database files from the files list.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Note that more than one report or graph may be opened simultaneously. Each report and graph is contained in its own sizable window which allows you to create several reports and graphs for comparison.
When you select Save Active Chart View, a reports and graphs file is created: <file_name>.RDW where file_name is the file name of the current open output module file. For a detailed explanation of these and other files.If multiple output module files are opened when you use this option, the files needed to generate the reports and graphs that you want to keep will be recorded in a single .RDW file. When opening multiple output module files, only the first file opened will have its associated .RDW file opened, so the first output module file opened determines what reports and graphs to automatically generate.
[menu_anchor name="Chapter-6-3-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The View menu allows you to select the way in which output data is displayed.

Below is a description of each of the menu options under the View menu.
General Stats Creates a general summary report. If there is only one scenario and one replication, the report will be generated automatically, otherwise an options dialog appears to allow you to select the replications to be displayed in the report. (See General Statistics Report)
Selected Stats The Selected Stats report allows you to create a replication report with only the specific statistics and elements you want in the report. The Selected Stats report is only available if there are multiple replications. (See Selected Statistics Report.)
State or Utilization Summary In ProcessModel an averaged state summary is produced for multiple replications in which a number of state or utilization graphs is available. (See Utilization Charts & Graphs.)
Time Series The time series option allows you to create plots or histograms from information taken during the simulation. The plot shows the value of the statistic over time. The histogram shows the percentage of time that the statistic’s value was within certain ranges. (See Time Series Plots & Histograms.)
[menu_anchor name="Chapter-6-3-4"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
Customize Current Window Allows you to alter the type of data displayed in the output report as well as the font used.Displays the options dialog specific to the current report or graph.
Preferences This option allows you to select the decimal precision of the output report. In addition you can select to open the default view have the system prompt you for the view to open.
You must have an output report displayed before this option will become available. You can change the text font at any time. However, to change the statitics shown, you must have run your simulation using multiple replications (See Set up Multiple Replications).


From the View menu you can generate general summary reports, selected statistics reports, state and utilization summaries, and time series plots and histograms.
Note that more than one report or graph may be opened simultaneously. Each report and graph is contained in its own sizable window which allows you to create several reports and graphs for comparison.
[menu_anchor name="Chapter-6-3-6"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The Output Module provides information on activities, resources, arrivals, entities, variables, etc. While some of the statistics reported for these model elements are easily understood, others deserve further explanation. (For a look at all of these statistics, see Sample Reports)
The Output Module organizes information for activities, input queues, and output queues. Input and output queues are given the same activity name as their associated activity with the addition of inQ or outQ at the end of the name. (Storage objects are listed under Activities in the output report.)
Scheduled Hours The total number of hours the activity was scheduled to be available, as the result of any shift file it uses.
Capacity The capacity defined in the properties dialog.
Total Entries The total number of entities that entered the activity, not including entities arriving to be attached. Entities arriving that have been previously grouped or have entities attached to them to form a single entity only count as one entry.
Average <time> Per Entry The average time that each entry spent at the activity. Note that this time may include partial times from the beginning and end of the actual run time.
Average Contents The average number of entities in an activity.
Maximum Contents The maximum number of entities which occupied the activity over the course of the simulation.
Current Contents The number of entities remaining at the activity when the simulation ended.
% Util The percentage of capacity occupied, on average, during the simulation.
(Cumulative Occupancy Time x 100) / (Capacity x Scheduled Time)
For activities, queues, and storages having a capacity greater than one, the following statistics are meaningful.
Scheduled Hours The total number of hours the activity was scheduled to be available.
% Empty The percentage of time the activity had no entities.
% Partially Occupied The percentage of time the activity had entities but was not filled to capacity (100% of time - %Full - %Empty).
% Full The percentage of time the activity was filled to capacity with entities.
Scheduled Hours The total number of hours the activity was scheduled to be available.
% Operation The percentage of time the activity was actually processing an entity.
% Idle The percentage of time that no entities were at the activity, but the activity was not down.
% Waiting The percentage of time the activity was waiting for a resource or another entity in order to begin processing or move to the next activity. Any delays in processing routing Action logic are counted as waiting time.
% Blocked The percentage of time entities spent waiting for a freed destination.
Units The number of units defined in the resource’s properties dialog.
Scheduled Hours The total number of hours the resource was scheduled to be available, as determined by the assigned shift file.
Number of Times Used The total number of times the resource has been acquired to transport or process an entity.
Average <time> Per Usage The average time the resource is used by an entity.
% Util The percentage of time the resource spent moving or processing an entity.
(Total Time In Usage x 100) / Total Scheduled Time
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Resources are reported both by unit and collectively. The collective unit (aggregate) report for a resource totals the first three fields and averages the last two fields discussed above.
Scheduled Hours The total number of hours the resource was scheduled to be available.
% In Use The percentage of time the resource was being used by entities.
% Idle The percentage of time the resource was available but not in use.
% Down The percentage of time the resource was unavailable due to shifts or options selected in the Availability tab for the resource.
Qty Processed The total number of entities processed through the model. (Same as listed in the scoreboard during the simulation.)
Average Cycle Time The average time each entity spent in the model. (Same as listed in the scoreboard during the simulation.)
Average VA Time The average time each entity spent being processed in activities or moved from one activity or storage to the next. (Same as listed in the scoreboard during the simulation.)
Average Cost The average cost assigned to each entity throughout the model. (Same as listed in the scoreboard during the simulation.) This costing accounts only for direct cost applied to the entities because of time and cost calculations. Unused resource time is not applied to this cost calculation. The Average cost of entities would be the lowest possible cost that the entity could be produced for if the resources were utilized 100% of the time. The cost in the Summary Report accounts for all unused resource time and spreads it across existing entities. See “See Output Summary results of a ProcessModel simulation” in Chapter 6.2.
Total Changes The total number of times that the value of the given variable changed during the simulation.
Average <time> Per Change The average time that a given variable remained at any one value.
Minimum Value The lowest value of the variable during the simulation.
Maximum Value The highest value of the variable during the simulation.
Current Value The final value of the variable when the simulation ended.
Average Value The average value of the variable during the simulation. This value is time weighted.
[menu_anchor name="Chapter-6-3-7"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]General Stats Creates a general summary report. If there is only one scenario and one replication, the report will be generated automatically. Otherwise, you must select the type of report you want from the dialog below.

Scenario Each scenario is listed by name. Select one scenario or <All>. If you select <All>, a report will be created for each scenario in separate windows.
Replication Select an individual replication (listed numerically), <Averaged>, or <All>. Specifying <All> creates a composite report.
Period If you use the report function in your model, this field allows you to select any of the reports you created. See “REPORT” in Chapter 3.11.2.
Options Clicking this button displays the General Report Options dialog where you can select which detailed statistics are shown in your report and change the font used.

[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You can also access the General Report Options from the Options...Customize Current Window menu in the main Output Module window or by pressing the options button on the button bar when the current window is a general report. You must have run multiple replications before the Show options will become available.

Selected Stats The Selected Stats report allows you to create a replication report with only the specific statistics and elements you want in the report. The Selected Stats report is only available if there are multiple replications.
Note that more than one report or graph may be opened simultaneously. Each report and graph is contained in its own sizable window which allows you to create several reports and graphs for comparison.
When you choose Selected Stats from the menu or click the corresponding button, the following dialog is displayed.

Report Type - Replication The only report type available in ProcessModel, this report creates statistics that are averaged over all replications.
Category Choose from a list of sections or tables of the general report, e.g., Single Capacity Activities, Resources, Variables, etc.
Available Statistics & Elements Select the statistics you want then select the element for which you want those statistics calculated. Click the right arrow button to add a cross-product of the selections to the Selected Statistics list. The choices listed depend on the category selected.
Remove All When you click this button, all Selected Statistics will be removed from the list box.
Options Clicking this button in the Selected Stats dialog displays the Selected Report Options dialog where you can select which statistics are shown and change the font used in your report.

[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Selected Stats Report Notes:
1. You can also access the Selected Report Options from the Options...Customize Current Window menu in the main Output Module window or by pressing the corresponding button on the toolbar when the selected report window is a Selected Report.
2. Sample size should be at least thirty for the confidence intervals to be statistically significant.
1. With your mouse, select the statistics you want from the Available Statistics list. To select multiple statistics, use the Ctrl or Shift key in conjunction with the mouse or click and drag the mouse across the statistics you want.
2. With your mouse, select the elements for which you want the statistics you have just selected. To select multiple elements, use the Ctrl or Shift key in conjunction with the mouse or click and drag the mouse across the elements you want.
3. Click the right arrow button to add the cross-product of your selections to the Selected Statistics list.
1. With your mouse, select the statistics in the Selected Statistics list that you want to remove. To select multiple statistics, use the Ctrl or Shift key in conjunction with the mouse or simply click and drag the mouse across the statistics you want to remove.
2. Click the left arrow button to remove your selections from the list.
[menu_anchor name="Chapter-6-3-9"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The following printout is taken from a General Stats report generated by the Output Module. It is shown here as an example of what you can expect from the Output Module’s powerful statistical reporting capabilities.


The following printouts are taken from a Selected Stats report generated by the Output Module. It is shown here as an example of what you can expect from the Output Module’s powerful statistical reporting capabilities.
Example

As you can see in the above example, you can obtain specific or selected statistics from a report of this type.
[menu_anchor name="Chapter-6-3-10"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
From the View menu you can generate state or utilization summary graphs and pie charts.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You may open more than one report or graph simultaneously. Each report and graph is contained in its own sizable window which allows you to create several reports and graphs for comparison.
State or Utilization Summary When you select State or Utilization Summary, you will be able to select the type of graph you wish to create in the following dialog.
The Output Module allows you to create different types of state and utilization graphs to illustrate the percentage of time that activities and resources were in a particular state: operation, waiting, blocked, down, etc.

Graph Type With your mouse, select the type of graph you want from the list.
Options Clicking this button brings up the Graph Options dialog where you can modify and edit graph elements.

[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You can also access Graph Options from the Options...Customize Current Window menu in the main Output Module window or by pressing the options button on the button bar when a state or utilization graph is the current window.
Activity Utilization Graph
Activity Utilization graphs show the percentage of time that each activity in the system was utilized. ProcessModel allows you to see this information for all of the activities in the system at once.
The Output Module organizes information for activities and storages by logical locations. These are defined as the activity or storage name itself and a location for the input queue and output queue of the activity.
This activity state graph displays all multi-capacity activities in the model.

Activity State Graphs
Single and Multiple Capacity Activity State graphs show the percentage of time that each activity in the system was in a particular state, e.g. idle, in operation, waiting for arrivals, or blocked. ProcessModel allows you to see this information for all of the activities in the system at once.

For further enhancement of a particular activity, simply click the mouse on any one of the bar graphs to create a pie chart for that activity as shown below.

Resource Utilization Graph
Resource Utilization graphs show the percentage of time that each resource in the system was utilized. A resource is utilized when it is transporting or processing an entity. ProcessModel allows you to see this information for all of the resources in the system at once.
Resource State Graph
Similar to activity state graphs are resource state graphs which show the relative amount of time each resource spent in a particular state. The graph below shows the state of the resource Trunc_Line. From this graph we see immediately that Trunc_Line is 23% utilized.

Once again, a pie chart for any resource is just a mouse click away! Click on the bar of the resource and the Output Module displays a pie chart.
[menu_anchor name="Chapter-6-3-13"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The time series option allows you to create plots or histograms from user-defined variables. The plot shows the value of the variable over time. The histogram shows the percentage of time that the variable’s value was within certain ranges. This option is available only when replications are not used during simulation.
When you select one of the Time Series menu item choices from the View menu or press the corresponding button in the toolbar, the following dialog appears. Time Series information is available only when one replication has been made.

1. Select a scenario for your graph. (If no scenarios have been run, you will see only Normal Run in this selection box.)
2. Select one or more values from the simulation. To select multiple values, use the Ctrl or Shift keys in conjunction with the mouse or click and drag the mouse across the values you want.
3. Press the right arrow button to add the selection(s) to the list of Selected Values.
4. Repeat steps 1 through 3 to add more values to be graphed.
1. Highlight the selected value(s) you wish to remove.
2. Press the left arrow button to remove the selected value(s).
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Use the Remove All button to remove all selected values from the list.
Options Press this button in the Choose Statistics for Plot dialog (shown on the previous page) to display the following dialog.

The Graph Options dialog shown above allows you to customize some of the features of the plot or histogram.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You can also access this option dialog from the Options...Customize Current Window menu in the main Output Program window or by pressing the options button on the button bar when a time series graph is the current window.
Labels Selecting one of the labels allows you to customize certain attributes for that label such as font, color, and the text associated with the label. Not all attributes apply to all labels. This allows you to customize the look of your graph.
Axis Attributes When one of these is selected (X-Axis or Y-Axis), the other options in the box apply to that axis.
• Grid Lines Show grid lines for this axis.
• Exact Values Show the values of the data points for this axis.
• Sig Digits Number of significant digits to show on this axis.
• Time Scale If this axis pertains to time, show it using these units.
• Range Zoom range for this axis of the graph. Changing this affects the scrolling range for each click on the scroll bar for this axis.
Plot (or Histogram) Options When this button is pressed, one of the following dialogs is displayed depending on the Graph Type you selected.

Name Use this list box to select which value’s options you will modify. If you select All, the options for all the values will be changed simultaneously.
Alias The text entered here will appear on the graph instead of the actual value’s name. This option is useful in improving the appearance of your graph.
Color Change the plotting color for the value selected. (Not available if All is selected in the Name box.)
Style Check the box next to the style of graph or chart you want.
Plot Type Select the plot type you want to use. Some types may not be available for certain types of data. The types are as follows:
• Normal Plots the value for every change over time.
• Periodic Average Plots the average value by period over time (e.g., the average contents of an activity by hours).
Period Enter the period over which the periodic plots will be averaged or summed.
Name Use this list box to select which value’s options you will modify. If you select All, the options for all the values will be changed simultaneously.
Alias The text entered here will appear on the graph instead of the value’s actual name. This option is useful for improving the appearance of your graph.
Style Check the box next to the style of graph or chart you want.
Range The range for your histogram. If the data range is larger than indicated here, end bars will be added to make the graph correctly show the real range.
Bar Width The width of the histogram bar cells.
Bars Shows the number of bars that will be used in the histogram based on the range and bar width.
[menu_anchor name="Chapter-6-3-14"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The following histogram for the variable On_Hold shows the percentage of the simulation time that the variable’s value fell within one of five ranges.

As you can see, a little over 60% of the time the value of the variable was between 0 and 2. About 23% of the time the value of the variable was between 2 and 4, etc. Rather than looking at a simple average for the entire simulation, this histogram provides an excellent view of the variable’s behavior in the model.
The following Time Series plot for the variable Hold_Time shows the value history of the variable over the 40 hours simulated.

Rather that looking at a simple average for the entire simulation, this plot provides an excellent view of what is happening to the value of the variable over time in the model.
Variable data from a Time Series Plot or Histogram may be exported for use in other programs. Exported data has two parameters, the value of the variable and the simulation time at which that variable changed.

The primary reason for using ProcessModel is to make better decisions that will result in achieving the goals of the company, organization, or group. The reports and graphs created using the Output Module can provide you with the information you need to make these decisions.
You will be able to identify problems and opportunities that may not have been readily apparent at the outset. The data may also confirm and validate what your common sense already told you. You can find potential processing bottlenecks, under-utilized resources, or unused capacity.
You can analyze the throughput of your system, evaluate inventory level effects on system performance, or you can completely change the process and see the cost and time savings. You could determine whether improved throughput justifies the costs of adding a new activity or resource to the system.
[menu_anchor name="Chapter-6-4-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Substantial decisions are often implemented because of the model created. It is crucial that the model be properly Validated and Verified. The amount of time spent in this area is dependent on the system and the goal of the model.
Lets start by dispelling the myth that you can create a perfect model that will represent your system in complete accuracy. A computerized model will never be totally accurate. "All models are wrong. Some are useful 1 " supports the concept that building a process model is a series of trade-offs. The degree of how “useful” a model must be balanced with the fact that greater accuracy increases cost and time to create the model. The following diagram illustrate the cost /accuracy relationship in building the model.

Validation is usually defined to mean “substantiation that a computerized model within its domain of applicability possesses a satisfactory range of accuracy consistent with the intended application of the model. [popover title="Information" title_bg_color="" content="Schlesinger, et,al 1979. Terminology for Model Credibility, Simulation, 32, 3, pp. 103-104" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover]”
Verification is often defined as “ensuring that the computer program of the computerized model and its implementation are correct. [popover title="Information" title_bg_color="" content="ibid" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover]”
Animation: Watch the animation for operational correctness as the model moves through time. For example, the timing build up of customer queues may be observed and compared to the actual system.
Event Validity: The “events” of occurrences of the simulation model are compared to those of the real system to determine if they are similar. An example of events would be the number of entries into an activity or total exits from the system.
Extreme Condition Tests: The model should work of any level (or even unlikely) of extreme conditions. For example, if raw material run out then total output should reflect the stock out condition.
Face Validity: Ask knowledgeable people in the real system to review the portion of the model that they are familiar with. Are the general relationships correct? Are the queue build-ups occurring to the level and timing of the real system?
Fixed Values: Replace distributions and variable inputs with constants, then determine if the model results correlate with easily calculated values.
Historical Data Validation: Compare the simulation output with know historical data. Does the model output compare with real data. Use Stat::Fit to view the cycle time, total completions, or custom metric data from the model and again for the real system.
Operational Graphs: Plot key information to Time Series Plots. Do the plots accurately reflect the time dependent fluctuations of the real system.
Traces: Use Display, and Debug statements to follow individual entities through the model. Verify the that the flow is the same in the model as the real system. The previous tests are a summary from an article written by Sargent. [popover title="Information" title_bg_color="" content="Robert G. Sargent, “Validation and Verification of Simulation Models,” Proceedings of the 1999 winter Simulation Conference, pp. 41-42." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover]
Model Review: Use a structured walk through procedure with another individual to force a methodical look at usage of the modeling objects. Has each feature been used in an allowable way. Are the metrics collected in the model appropriately.
Laws of Conservation: Check the quantities at stages of the model to determine if entities are prematurely exiting, or if batching or creating are producing unintended results.
Simple Test Cases: Complex logic of the model should be tested independently to assure proper function. Creation of a small test case will help to eliminate errors caused by the confusion created of a large model.
Input Data Checking: Have input data been interpreted correctly? Have distributions been properly fit?
In addition to built-in metrics, custom metrics can be defined for any specific area you desire to track. For example completions per hour, dollar production per day, defects per million, etc. can tracked and reported. See section 10.9.1 through 10.9.5 for examples of how to integrate custom metrics.
You need to determine if you are studying the transient periods of the model or the long-term steady-state. The transient period is when there is no consistency in the statistical variation of the performance variable of the system. Some systems will always be in a state of transition and that may be what you want to study. Other systems run at a [popover title="Steady-state" title_bg_color="" content="The point at which the output of the model exhibits statistical regularity—the distribution of the output is the same from one time period to the next." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]steady-state[/popover], and don’t experience transitional periods from day to day.
When we model steady-state system we have to load the simulation with entities so that it will approximate the steady-state. We call this starting period a Warm-up time. You will need to determine the time length of the warm-up time and toss out that data. Fortunately ProcessModel has an easy way to cut off the data that you don’t need and report only the good data.
Determining the length of the warm-up period is determined by what you are interested in studying and accomplished largely by inspection. For example if you are studying work-in-process you could plot the WIP to a variable and view the graph to determine the approximate time the system transitioned to steady-state.

In the above example the warm-up period would be set to 8 hours. Data collected prior to 8 hours will be discarded.
1. From the Simulation menu, select Options.
2. Enter the length of the warm-up period in the Warmup Length field.

Simulation modeling is a sampling technique. What this means is, when you run a simulation for a week, you are taking a sample reading of what a weeks result could look like. Another week may be very similar or very different. The point is, that you don’t know if your single sample will be fairly accurate or an outlier in a wildly varying system. Simulation can help you to determine how much variance can be expected and what the range of numbers can be expected for the output you choose to sample.
The sampling method requires a recognition that the answers you derive from a simulation will likely have a range rather than a point estimate. If you were speaking of production rates per hour, you may provide an answer like “Ninety-five percent of the time we will be able to produce between 50 to 62 items per hour.”
In order to obtain these samples from your model you will need to run multiple replications. Multiple replications allows your model to run repeatedly with different starting values for the random numbers which will provide variation in the output reports. Multiple replication reports will help you to determine the expected range for the performance variable being studied.
There is seldom agreement by different authors on how many replications to run because that number is dependent on many variables (type of system being modeled, statistical variation of the system, accuracy needed, etc.). A good rule of thumb is to use a minimum of 30 replications. As the need for accuracy increases you can statistically determine the number of replications needed for your specific circumstances by using SimRunner (see “Analyze Model”).
1. From the Simulation menu, select Options.
2. Enter the number of replications for your model.
[menu_anchor name="Chapter-6-4-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Making decisions with the output reports provided by ProcessModel is quick and simple. Two reports are almost always used while others are used in varying degrees. First, the Total Cost in the Output Summary report is valuable in identifying dollar improvements for system changes. Second, Cycle Time report from the Output Summary identifies the improvement in total time in the system. Other specific metrics can be created to track items important to your company. Those reports will often be reported as variable statistics and can also be found in the Variable Statistics report of the Output Summary. These reports are your measurements and all other reports will help you to uncover how to affect the measurements. These other reports will be found primarily in the Output Detail reports. The following is a list of how these reports may be used to make decisions to affect the measurements.
By focusing effort on the system delays you can quickly narrow the scope of the process improvement efforts, saving time and money. Sort the all of the activities, storage and queues by Average Minutes Per Entry. Use a Pareto analysis to show the high impact areas for change.
1. Run the model to completion.
2. View the output report.
3. Make certain the General Output report is selected. Save the output to an Excel format by selecting File then Save As . Choose Save As Type to be MS Excel file and press the Save button.

4. Open Excel and locate the file that was just saved.
5. The tabs at the bottom of the Excel file represent the sections of the output report.

6. Once exported, you can use any of Excel’s tools to do a variety of reports to further analyse your simulation data using charts, graphs, etc.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You could do such things as combine the times for the activities with it’s corresponding input or output queue to perform a bottleneck analysis. This analysis makes it possible easily see where delays are occurring in the system and what activities should be ignored.
Examine the Resource State graphs for areas of resource over and under utilization. Opportunities for cross training and resource elimination can quickly be identified. Use this graph for quick generalizations and to identify if bottlenecks are occurring because resources are over utilized. Be careful that resources state generalizations don’t cover the possibility that resources may be over utilized part of the time and under utilized at other times.
Highly utilized resources may prove to be one of the major causes of high cycle times. A general rule for resources is that a utilization higher than 70 percent is not sustainable for long periods of time. This general rule is dependent on the type of work, stress level and length and duration of work spikes. Often times, the utilization will need to be lower. Watching the measurements while adjusting the number of resources and work schedules creates view of the business that has likely never been available.
Time Series Plots allow a graph to be created that shows the timing of the changes of an important measurement. The time relationship of the changes in a measurement makes it possible to determine when, for example, the cycle time increases during the day and if a proposed change will effect it.
Histograms allow you to see the frequency of changes to the measurements.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Any measurement that can be reported to a variable can be plotted.
Many other reports are available in ProcessModel. In each case you will find that these reports help to determine how to affect the measurements.
[menu_anchor name="Chapter-7"] [separator style_type="shadow" top_margin="0" bottom_margin="40" sep_color="" icon="" width="" class="" id=""]Hierarchical modeling is a modeling approach in which one activity in a model represents entire process. These processes are defined themselves as models in separate chart files which are linked to the activities representing them. A model that is linked to an activity in another model is referred to as a submodel. Submodels themselves may have activities representing other submodels in a hierarchical fashion (see figure below).

When a simulation is run on the general model, linked submodels are also simulated as part of the entire model. Optionally you can disable any or all of the submodels and use the generalized time defined for the activity representing the submodel. Submodels can also be run independently to facilitate the building and verifying of submodels.
[menu_anchor name="Chapter-7-2"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Any number of hierarchical levels can be defined and any model can have any number of submodels, although the same model may only be referenced once in a model hierarchy. Hierarchical modeling provides the following benefits over single level modeling:
• Simplifies the steps to visualize large processes.
• Provides a structured way to organize a model.
• Permits reuse of common submodels.
• Enables people to work on portions of the same model without interfering with each other.
[menu_anchor name="Chapter-7-3"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Defining hierarchical models in ProcessModel is easy. It is a simple four step process. These steps are listed below and explained in detail throughout this section.
1. Create the main model chart.
2. Create a submodel chart.
3. Reference the submodel chart from the main model.
4. Name all input and output connections of the representative activity in the main model with the same names as the corresponding connections in the submodel.
With the activity connections in the main model mapped by name to connections in the submodel, entities arriving or routing to the activity in the main model will actually enter the activity in the submodel that has an input connection with the same name as the arrival or routing connection in the main model. The entity remains in the submodel until it encounters a routing having the same name as an output routing from the representative activity in the main model (see diagram on the following page). Entities can also be allowed to exit the system from within a submodel or go to lower submodels. Where appropriate, the same name can be assigned to multiple connections in a chart.
[menu_anchor name="Chapter-7-3-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]By definition the main model is the model one level higher than the submodel in the hierarchy. If you have more than two levels, a submodel to an upper level may also be a main model to a lower level in the hierarchy. The only thing that distinguishes a main model from any other model is that at least one activity has been selected to represent a submodel, with the submodel’s chart file referenced in the Submodel tab of the properties dialog.
Usually a main model defines a process in general terms, the representative activities having a generalized time specified. The representative activity is only executed when you opt to disable submodels in the Simulation/Options dialog. When the model is simulated with the submodels, the representative activity is ignored and the detail of the submodel is executed.
[menu_anchor name="Chapter-7-3-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]To create a subchart, simply begin a new flowchart in ProcessModel and place the activities, connections, and any other objects, defining the submodel on the layout.
Then enter the necessary data in the properties dialog for each object and save the file. You can graphically link each sub chart to the main chart so that a right-mouse click will move you from one level to the next.
1. Open the SubModel tab for the process that will be represented by a subprocess.
2. From the Submodel tab, select the Browse button to link to an existing submodel or type in a new name to create a submodel.
3. Select the Activate button to move to the submodel.

4. If you are linking to an existing submodel, you will now see that model. If you are creating a new submodel, you will now see a blank layout. Build the subprocess on this layout.
5. Name the connecting routes. For more information on naming connecting routes see “Connection Naming” in Chapter 7.3.3.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Submodels may be created independently and linked at a later time by linking to an Existing File, however it is helpful to create the overall structure of the model at the beginning of the modeling project.
6. Saving and exiting from the subprocess will return you to the main process.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Always travel down to a submodel buy using the activate button and close submodels when moving to a higher level model. The opening and closing of the models forces the update of Attributes and Variables in each model (i.e. the variables and attributes will be copied in both directions so that all action logic can be executed).
You can create a submodel with its own entities and arrivals if you want to test it independently. Arrivals get automatically replaced with inputs coming from the main model when linked into another model, unless no routings or arrivals in the main model map to the arrival in the submodel.

Remember that the routing of entities coming into the submodel from the main model is controlled by the routing or arrival defined in the main model. Likewise, the routing of entities coming from the submodel into the main model is controlled by the routing defined in the submodel.
When naming attributes and variables to be used in a model that will use hierarchical models, you should give each attribute and variable throughout the model a unique name to avoid confusion and unexpected results. Keep in mind that all variables are global. If you define the same attribute or variable in a submodel that was defined in the main model, there will be only one attribute or variable, and it may be used throughout the entire model.
So if you are creating complex models using hierarchical modeling, you may want to establish some internal naming conventions, especially where teams are involved in the modeling project.
[menu_anchor name="Chapter-7-3-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Once you establish representative activities and reference them to the subchart, you need to name the connections into and out of the representative activity in the main model that will route to or from activities in the submodel. Then you need to assign matching names to the corresponding connections in the submodel.
The Name tab on the properties dialog for arrival and routing connections allows you to give the connection a name.

Connection name: The name of the connection. Connections that route entities to the submodel or back to the main model may have the same name, but there can only be one connection to which the entities are routed as shown in the illustration below.

When using a submodel, remember that the connection from which the entity is routed is executed. The connection to which the entity is routed is ignored during simulation. In other words, in the above example, the A connections will use properties dialog information from the main model and the B connections will use the properties dialog information from the submodel.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] When using more than one submodel, connection names must be unique between submodels or an error will occur when the model is simulated. Keep your names simple to avoid missspelling names (yes that was on purpose) between levels.
ProcessModel has many unique capabilities not found in other simplistic modeling tools. ProcessModel allows complete control over the entry and exit points of a submodel. This means that a submodel can be very robust, having its own arrivals in addition to the entries that it receives from the upper level. It also means that exits from a submodel are not required to go to the same place in the upper level model.
[menu_anchor name="Chapter-7-4-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]It is often desirable to separate entities in a submodel and then because of that separation send them to different places in the main model or ultimately to another submodel.

In the example above, entities that leave the submodel from the activity Sub Process 5, will enter into Process3 at the main level. If Process3 had a submodel attached then the entity would arrive directly to that submodel.
[menu_anchor name="Chapter-7-4-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]If a model has activities in sequence that have submodels, then the name of the output route of the first submodel becomes the name of the input of the second submodel, etc.

If a model is more than two levels and the first activity of each level has a submodel, then a modification needs to be made to the third level of the model so that the routing names will work. At the third level and beyond an activity needs to be inserted so that unique routing names may be used. This inserted activity will not effect the performance or output of the model if the time is set to zero and the statistics are unchecked (turned off). A simple small graphic may be exchanged for the “inserted activity” to take up space and not confuse the audience. The following example shows a three level model with an inserted activity to allow the first activity to have its own submodel.

ProcessModel allows you to export model data to Excel. This will allow you to create spreadsheets representing your model data. Once in the Excel format, data can be changed and imported back into ProcessModel. This allows, for example, all route times to be changed from one spreadsheet table in a matter of seconds. Using the formatting, formula and VBA capabilities of Excel, custom forms can be created, to serve as a custom entry area. ProcessModel will import the value found in the respective spreadsheet cells. The general data structure of the information exported cannot be changed. For example, entities or activities (new Excel rows) can’t be added but the values of any of the fields can be viewed or changed. When exporting action logic, a maximum of 4000 characters will be exported, including spaces and carriage returns. Export files will be packaged with the other model files so that modifications to the Excel file will be passed on to the recipient of the package. See “Using Model objects” in Chapter 4.2.
Another use of exporting information to Excel is for validation of the model data. Having all of the information in one spot is valuable for checking your work and helpful during project reviews.
From the Export Model Data dialog, you may export all data or export only specific items.

When you export model data, ProcessModel creates a separate table or spreadsheet for each object type. For example, data created for activities will appear on a separate sheet with individual rows for each activity type. Below is an example export showing the Activity tab.

[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If you previously exported the model data, and changed the data to anything other than a value, those cells will not be overwritten during export.
1. Select Export Data from the Tools menu.
2. Select the items to export
3. Click OK.
If you have Excel on your computer, it will automatically start with the model data showing.
[menu_anchor name="Chapter-8-2"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]After you export the data from your model, ProcessModel allows you to modify the data and import it back into the model. You can simplify massive data changes to large file by first exporting the data, making the changes in Excel and importing the file into ProcessModel.
With the exception of Scheduled Arrivals, the import data option allows you to edit existing data only from Excel and will not recognize new entries (i.e. new entities, new activities, new resources, etc.). Only the data associated with an item may be edited. For example, you can change the number of resources, but you may not change the name of the resource. As noted above, you may add new Scheduled arrivals as long as the format of the new row in Excel matches an already existing row. In order to add new arrivals, you must have added at least one scheduled arrival from ProcessModel prior to exporting which will add the Schedule Arrival worksheet tab in Excel.

1. Select Import Data from the Tools menu.
2. Select the items to import.
3. Click OK.
Once you have established the link to the import file you can use the Import and simulate button from the standard (top) toolbar.
[menu_anchor name="Chapter-8-2-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]After creating an Export of the model file, the Excel file can be modified and imported with the new information. The Excel file could be linked to a “live” database and updated in real time. All the user would do to run the updated file is to press the Import and Run button located on the toolbar.

1. Set up the Excel file by exporting the model data. See “Exporting Model Data” in Chapter 8.1.
2. Modify the data as needed. Any referencing of data to other Excel worksheets, VBA or outside sources is allowed. Only the value of the reference will be imported.
3. Press the Import and Run button.
[menu_anchor name="Chapter-8-3"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]At times you may want to prevent people from changing your model or even from looking at the logic you used to create the model. Model protection provides the ability to lock the model and hide all of the dialogs except the scenarios. Proprietary logic is hidden from view. Of course, you maintain the ability to modify the model by providing a password that unlocks the model.
1. Select Protect Document from the Tools menu.
2. Enter a password in the Protect Document dialog. Verify the password in the next field. Remember this password.
3. Click OK.

Once you have set the password, new shapes can’t be added, the model can’t be changed and the data in the Properties dialogs can’t be seen. Your model is protected.
1. Select Unprotect Document from the Tools menu.
2. Enter the correct password.
3. Click OK.
The access to all aspects of the model is restored.
[menu_anchor name="Chapter-8-4"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]By creating a web page of your model, other people can view the model without having the software installed on their computers. You can add links to your model for such things as word processing documents, spread sheet, submodels, etc., which will be displayed when those links are clicked when viewing the web page. Though the web page is a static representation of the model and no simulation is available, it can still a valuable training or educational option which makes your model available for others to learn from.
[menu_anchor name="Chapter-8-4-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]To save your model as a web page, click the Save As Web Page . . . option from the File menu.

On the next screen, navigate to the folder location where you want to save the web page, and check all the check boxes at the bottom of the page.

After clicking the OK button you will be able to view the web page immediately, or return to your model.

The html page will be saved with the name Diagram1.htm based on the default name in the ProcessModel title bar. The picture of your model is saved as a .gif file by the same name. The .htm file contains the html code to display the picture of your model in a web browser.
[menu_anchor name="Chapter-8-4-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]To create links in your web pages, you must create the link in the model before creating the web page by right clicking on a shape and selecting Format Links . . .

Click the Add Files... button and browse for the file you would like to link

Once the link is established in the model, the shape will have a shadowed background.

You can then create the web page. When you click the linked shape in the web page, the associated document will be displayed as a web page in your browser.
[menu_anchor name="Chapter-9"] [separator style_type="shadow" top_margin="0" bottom_margin="40" sep_color="" icon="" width="" class="" id=""]SimRunner is a decision support tool used to help optimize simulated processes. SimRunner takes your existing ProcessModel models, evaluates them for you, then performs tests to find better ways to achieve the results you desire.
Typically, most people use [popover title="Simulation" title_bg_color="" content="Simulation is the act of creating a model to represent an actual location (e.g., plant floor, bank lobby, or emergency room) or abstract, logical process." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]simulation[/popover] tools to predict and improve system performance or to establish the relationships between various system elements. By modeling the actual facility or process, you can conduct what-if analyses to determine the best way to improve system performance—this is [popover title="Optimization" title_bg_color="" content="Testing various what-if scenarios to determine the best way to conduct operations." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]optimization[/popover]. Although SimRunner cannot guarantee it will identify the optimal solution for all processes every time, it will find better solutions than you would likely get on your own.
With each optimization [popover title="Project" title_bg_color="" content="When you conduct an analysis in SimRunner, you create a project containing the model and the results from any tests you run." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]project[/popover], SimRunner runs sophisticated optimization algorithms on your model to help you optimize multiple factors simultaneously. Each project requires a validated model, a standard by which to measure system performance (an [popover title="Objective Function" title_bg_color="" content="An expression used to quantitatively evaluate a simulation model’s performance. By measuring various performance characteristics and weighting them, an objective function is a single measure of how well a system performs. SimRunner allows you to include many different performance characteristics in one objective function. For example, if you want an objective function to include a measure of total entities processed and resource utilization you could measure how well a certain simulation scenario ran by measuring Z , where: Z = (Total Processed) + (Resource Utilization)" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]objective function[/popover]), and a group of factors that SimRunner may change to improve system performance.
[menu_anchor name="Chapter-9-1-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Simulation allows you to find solutions to complex problems without incurring the tremendous costs associated with a trial and error approach. Optimization helps ensure that the solutions you implement are at or near their optimal values.
Unlike manual simulation experimentation which answers only specific what-if questions, SimRunner automatically seeks a course of action that will help optimize your entire system’s performance—essentially answering how to meet your objectives.
To help you present your findings, SimRunner allows you to output various types of reports:
• Data reports (for spreadsheets)
• Analysis reports (for text and word processing reports)
• Graphical reports (for charts and graphs)
You can print each of these reports or export them to other applications through common clipboard functions.
[menu_anchor name="Chapter-9-2"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Once you complete and validate your simulation model, you are ready to begin an optimization project. If you are not working with a valid model, you don’t need to perform an optimization until the output from the simulation is valid.
It is important to properly identify the simulation type—terminating or non-terminating. What does it mean to refer to a simulation as terminating or non-terminating? A terminating system stops when some key event occurs like the end of the day. When you come back the next day, you start fresh again. A non-terminating system is not necessarily a system that never stops production, rather it is a system that resumes from the point it left off. For both terminating and non-terminating simulations, you need to determine the appropriate run length and number of replications. For non-terminating simulations it is also necessary to determine the warm-up period.
Not every simulation model is built with the express purpose of optimizing some particular element. Many simulation models are built to demonstrate the relationships that exist between various elements of your system. If optimization is appropriate, define the objective function—the output statistics used to measure the performance of proposed solutions.
Simulation has always been trial and error when it comes to optimization. We have some sort of optimization method that we apply to the model and we examine the model’s output statistics to see if we achieved the desired outcome. This is not a bad approach if you have one decision variable you are trying to optimize—but what if you are trying to optimize multiple decision variables at once? Interaction becomes very complex and requires more advanced optimization methods like SimRunner.
When you build your model, you must define a scenario parameter for any variable you want to optimize. This provides SimRunner with a series of values it can change as it seeks to optimize your model. In SimRunner, these values are called factors. For information on how to add and modify Scenario Parameters see Chapter 3, Section 3.13.1, Scenario Parameters.
Part of the simulation process is to evaluate the relationships that exist between model elements, or factors. Often, you will take the time to adjust some part of your model to find that the adjustment has no impact on system performance. Factor screening is the process of identifying which model elements (factors) do not affect the output of your model, and narrowing your search to include only those factors that affect the model’s output. Be discriminant in your selections.
While some models contain relatively few factors that you can quickly optimize, others contain many. In a previous inventory reduction project, a high-end computer took approximately 24 hours to compute what it estimated to be the optimal value for the model. Although it took a long time to produce this result, the net savings were tremendous.
While there is no promise that SimRunner will identify the optimal solution to your process, it is possible. SimRunner will, however, find better solutions than you would likely get with your own trial and error experimentation. The surest way to know the optimal solution to any model is to run an infinite number of replications of all possible inputs. Since this is not an option, take into consideration the number of experiments you are able to perform and act accordingly.
[menu_anchor name="Chapter-9-2-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]SimRunner uses both genetic and evolution strategies algorithms with its primary algorithm being evolution strategies. The specific design of these algorithms for SimRunner is based on the work of Dr. Royce Bowden and other experts. Evolutionary algorithms have been extensively evaluated by academics and have proved reliable in optimizing simulated systems.
An evolutionary algorithm is a numerical optimization technique based on simulated evolution. Solutions generated from the evolutionary algorithm must adapt to their environment in order to survive. Since each potential solution returns a specific result, you must establish an objective function to measure the performance of each solution. If the returned value falls within the acceptable range defined by the objective function, SimRunner will continue to examine the value as it searches for the optimal solution.
To help you better understand how SimRunner’s optimization process works, consider the following analogy. If you and a group of explorers found yourselves on the slopes of a mountain, in the dark, with nothing but radios and altimeters, how would you find the summit?

The first step would be to establish the current altitude of everyone in your group by recording each person’s altimeter reading.

Next, you would direct your group members to wander out in any direction for various distances, then stop and review their new altimeter readings. At the second reading, you find that some of your group has moved higher and some have moved lower.

By comparing the results of each altimeter reading, you can determine the general direction in which to proceed. Since you want to climb to the summit, you proceed in the general direction that had the highest reading (in this case, 2). Again, after everyone moves various distances, you stop to take another altimeter reading.

By taking the average of the group’s new altimeter readings, you can see that the overall reading increased. This confirms that you are moving in the right direction. Just to be sure, you repeat the process and take another reading.

As you will notice from the example, your group is beginning to converge upon a single point. The more you repeat the data collection process, the closer the group will get to one another, and the more certain you will be that you are at or near the summit. Just to be on the safe side, however, you even send a few members of your group out to remote parts of the terrain to be sure that there is nothing higher than the point you already identified.

Once your average altimeter reading is equal to the best in your group, you have converged upon the summit and can be confident that you have achieved your goal.

Conceptually, this is how SimRunner works—only the terminology is different. Instead of altimeters, explorers, and tests, you will use objective functions, input factors, and replications. Each time the explorers move, SimRunner calls this a generation. The concepts are the same.
In spite of what some may think, you don’t want an algorithm that will do an exhaustive search. In a previous inventory reduction project, modelers estimated the number of possible solutions to be around 9.38 x 10 37 —it was a big project. To perform an exhaustive search for the optimum value would take a lifetime. More than likely, you will never get the answer.
What you want is an algorithm that can efficiently explore the response surface (the output from the model) and focus on those areas returning good answers—without evaluating everything.
[menu_anchor name="Chapter-9-2-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The following is an overview of the process you will use to perform an optimization of your system.
The most important preparation you can make for an optimization project is a validated model. It is not enough to simply create a model—it will profit you nothing if the model does not reflect the real operation. Once you validate the model, you are ready to begin.
With your model prepared for evaluation, create a new SimRunner project and identify the response statistic you wish to target. Using these response statistics, define an objective function by which to gauge system performance. SimRunner will use this objective function to measure system improvement. Next, select the input factors you will allow SimRunner to use as it determines how best to achieve system improvement. When you optimize the model, SimRunner tests each input factor to seek the combination of factors that will result in the greatest improvement of model performance.
Once you select the input factors and define the objective function, you can use SimRunner to automatically conduct a series of experiments on your model. SimRunner runs your model for you and tests a variety of possible combinations of values. After it completes the tests, SimRunner lists the test results in order of the most to the least successful combination of factor values.
The fourth step is to consider and evaluate SimRunner’s suggestions. This is crucial because SimRunner will often identify several candidate solutions to your problem and you may, for reasons not addressed in the model, prefer one solution over another. You may also wish to make additional model runs (replications) and look at confidence intervals to further evaluate SimRunner’s list of possible solutions.
Once you identify the solution that best fits your needs, implement the solution.
[menu_anchor name="Chapter-9-2-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]If you follow the general procedure stated previously, your chances of success are very good. Typically, projects fail because the:
• Model is not valid
• Analysis considers insignificant factors
• Analysis ignores significant factors
• Objective Function is inappropriately formulated
• Test results are not scrutinized
[menu_anchor name="Chapter-9-2-4"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]If you would like more information on optimization, see the following references:
Bowden, R. O. and J. D. Hall. 1998. Simulation Optimization Research and Development. Proceedings of the 1998 Winter Simulation Conference 1693-1698.
Hall, J. D. and R. O. Bowden. 1997. Simulation Optimization by Direct Search: A Comparative Study. Sixth International Industrial Engineering Research Conference 298-303.
Hall, J. D.; R. O. Bowden; and J. M. Usher. 1996. Using Evolution Strategies and Simulation to Optimize a Pull Production System. Journal of Materials Processing Technology 61:47-52.
Goldberg, D. 1989. Genetic Algorithms in Search, Optimization, and Machine Learning. Addison Wesley, Massachusetts.
Schwefel, H. P. 1981. Numerical Optimization of Computer Models. Chichester: John Wiley and Son.
[menu_anchor name="Chapter-9-3"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The SimRunner interface provides you with easy access to every step necessary to create an optimization project. The project building process is divided into three phases, each containing a series of steps necessary to complete the phase. As you move from phase to phase (displayed at the top of the dialog), a list of steps for the phase appears in the left pane.

The first thing you must do to create an optimization project is to start a ProcessModel simulation of your model. You don’t need to complete it. The simulation just needs to be started in order to load the data required by SimRunner. After ending the simulation and returning to the modeling window, click the Tools menu and select SimRunner.

The model data will be loaded automatically.
[menu_anchor name="Chapter-9-3-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The objective of your project is the final outcome you want to achieve. SimRunner measures your progress toward this goal using an objective function. An objective function is composed of response statistics, a min/max or target range, and a specific weight you wish to apply to each response statistic.

The response category is the type of statistic you wish to use to evaluate your model. Response categories include model elements such as locations, entities, resources, and variables.

By clicking on one of the Response Categories, you will see a list of Response Statistics. Simply put, response statistics are those values you wish to improve. Once you define your targeted improvements, you are ready to define how you want them to perform—the objective for the response statistic.

The objective for the response statistic refers to the way in which you want to effect change for that item. If you are trying to increase the overall output of a system, you would maximize the response statistic. Likewise, you could minimize the statistic or target a specific range within which you want the result. Finally, enter the reward or weight for each response statistic—larger numbers signify greater rewards in situations that require more than one objective.

Max Check this option if you want to maximize the final value of this statistic.
Min Check this option if you want to minimize the final value of this statistic.
Maximized objective functions return positive values. Minimized objective functions return negative values.
Target Range Check this option to enter a specific target range within which you want the final result.
Statistic’s weight Weights serve as a means of load balancing for statistics that might bias the objective function. Since most simulation models produce a variety of large and small values, it is often necessary to weight these values to ensure that the objective function does not unintentionally favor any particular statistic. For example, suppose that a run of your model returns a throughput of .72 and an average WIP of 4.56. If you maximize throughput and minimize WIP by applying the same weight to both ( W 1 = W 2 ), you will bias the objective function in favor of WIP:
Maximize[(W 1 )*(Throughput)] = .72
Minimize[(W 2 )*(WIP)] = 4.56

In this case, since you want to ensure that both statistics carry equal weight in the objective function, you will apply a weight of 6.33 ( W 1 =6.33) to throughput and 1.0 ( W 2 =1.0) to WIP to make them of equal weight in the objective function.
Maximize[(W 1 )*(Throughput)] = 4.56
Minimize[(W 2 )*(WIP)] = 4.56

In situations where it is necessary to favor one statistic over another, balancing the statistics first will make it easier to control the amount of bias you apply. For example, if you apply a weight of 12.67 ( W 1 =12.67) to throughput and 1.0 ( W 2 =1.0) to WIP, the objective function will consider throughput to be twice as important as WIP (adapted from Harrell, Ghosh, and Bowden 2000).
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Typically, you will need to experiment with your model to identify the weight ratio necessary to balance statistics.
After you define the objective for the response statistic, you may click the Add button to include the statistic as part of the objective function. SimRunner combines the statistics into a linear combination and displays the updated objective function for the project.

The objective function is an expression used to quantitatively evaluate a simulation model’s performance. By measuring various performance characteristics and taking into consideration how you weigh them, SimRunner can measure how well your system operates. However, SimRunner knows only what you tell it via the objective function. For instance, if your objective function measures only one variable, Total_Throughput, SimRunner will attempt to optimize that variable. If you do not include an objective function term to tell it that you also want to minimize the total number of operators used, SimRunner will assume that you don't care how many operators you use. Since the objective function can include multiple terms, be sure to include all of the response statistics about which you are concerned.
SimRunner’s capacity to include many different response statistics in an objective function gives it tremendous capability. For example, the objective function below signifies that you wish to maximize the total ovens and cooktops processed while minimizing the total resource cost. The numeric [popover title="Weighting" title_bg_color="" content="This value signifies the importance of maximizing or minimizing the variable. For example, while it may be important to maximize the production level, it may be more important to maintain current personnel levels." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]weighting[/popover] factors indicate that maximizing Total Ovens Processed is the most important, followed by maximizing Total Cooktops Processed, then minimizing Total Resource Cost.
Z =Max:10 * (Total Ovens Processed) + Max:5 * (Total Cooktops Processed) + Min:2 * (Total Resource Cost)
Perhaps the best way to define your objective function is in terms of cost or profit. When possible, this allows you to use a simple, single response statistic like maximize profit without concern over assigning meaningful weights to multiple response statistics.
The following example shows how to achieve a throughput target level. Suppose you want to target a production rate of 300 to 325 units per day. In the target range fields, assign a range of 300 to 325 and enter a weight of 1.
[menu_anchor name="Chapter-9-3-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]In every system, there are controllable and uncontrollable factors that determine the outcome of the process. Controllable factors include staffing, equipment, schedules, and facilities. Uncontrollable factors refer to such things as arrival rates.
Often, relationships exist between various controllable factors. How do you identify these relationships and use them to seek the best value for your objective function?— SimRunner. SimRunner allows you to target controllable model factors and determine which combination of values for those factors will elicit the behavior you desire.
With each test it performs, SimRunner examines the results to see if the results will produce the effect you require from the objective function. For information about how SimRunner performs these tests and evaluates data, see “Concepts and Theories” in Chapter 9.2.1.

All Scenario Parameters defined in your model are displayed in SimRunner as [popover title="Macros" title_bg_color="" content="A scenario parameter is a placeholder for an often-used expression used in an expression or logic field. You can create a scenario parameter once, then substitute the scenario parameter’s name anywhere in the model to use its value (as often as necessary)." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]Macros[/popover]. In this manual macros will consistently be referred to as Scenario Parameters. SimRunner will use these Scenario Parameters to improve the value of your objective function. Typically, these are the controllable factors of your model.

Scenario Parameter properties describe the basic attributes of each Scenario Parameter used in your project.

Data Type: the [popover title="Data Type" title_bg_color="" content="The numeric type (integer or real) of the input factor you will use. Typically, you will use integers to represent resources (e.g., people) and real numbers to represent time values or percentages (e.g., machine processing times or product mix)." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]data type[/popover] refers to the numeric type of the data (integer or real) SimRunner will use. Typically, you will use integers to represent the number of resources (e.g., people) and real numbers to represent time values or percentages (e.g., machine processing times or product mix).
Default Value: Refers to SimRunner’s initial setting for the Scenario Parameter—the value SimRunner will use to analyze the model before conducting the optimization.
Lower and Upper Bound: The limits (constraints) within which this value must fall during subsequent tests.
Scenario Parameters Selected as Input Factors: Displays a list of all Scenario Parameters you selected for use as input factors. Typically, you will want to use as few inputs as possible—only those you anticipate will affect the value of the objective function.

Before you can use a model element as an input factor, you must define a Scenario Parameter for that element. Scenario Parameters allow SimRunner to control the value of the factor and feed it back into the model.
If you want to use a variable from your model as an input factor, you must define a corresponding Scenario Parameter and set the variable equal to the Scenario Parameter at some point in your model. To do this, you can:
• Enter the name of the Scenario Parameter in the variable’s “initial value” field.
• Set the variable equal to the Scenario Parameter in the model’s processing logic.
In order to use a resource or activity capacity as an input factor, you will need to define a Scenario Parameter that represents the capacity or number of resources and place this Scenario Parameter in the appropriate field for the resource or activity. For instance, if you have a resource named Operator_1, you can create a Scenario Parameter named Number_Of_Operators to represent the “number of units” for the operator. When you run SimRunner, the Scenario Parameter Number_Of_Operators will appear on the list of input factors. Testing this factor will change the number of units of Operator_1 in the model.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] SimRunner will not recognize any Scenario Parameter containing non-numeric characters (e.g., “N”, “)”, or “e+”) as a valid input from the scenario parameters "text" field.
Since Scenario Parameters must be completely numeric in the "text" field for SimRunner’s use, Scenario Parameters that represent distributions will not appear in the list of available input factors. A Scenario Parameter can be used to represent a distribution parameter. For example, suppose you have a normal distribution, N(10,2), with an average of 10 and a standard deviation of 2. You can create a Scenario Parameter, Dist_1_Average, with a value of 10 and use this Scenario Parameter as the text value of the distribution: N(Dist_1_Average, 2). This will allow you to manipulate the distribution from SimRunner.
[menu_anchor name="Chapter-9-4"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The first step in conducting any analysis of your simulation model’s output is to make sure that your model produces output with the degree of accuracy you desire. If all of the aspects of your model are deterministic (with no random variance in any part of the model), you will get a precise output statistic with one replication. In most models, however, random variance is present in several places. The result of using random inputs in the model is that the output is also random. Because of this, you should think of a simulation experiment as a sampling technique. Since you don’t know the exact, true value or population statistic, the best you can do is collect a sample large enough to make a good estimate—you must run multiple replications. ref: [popover title="Analyze Model" title_bg_color="" content="Analyze model runs tests to help you identify the initial bias (warm-up period) for non-terminating simulations and appropriate number of replications." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]Analyze Model[/popover].
In general, with each additional replication you run, you generate a more accurate estimate of the population statistic your are trying to measure in the objective function. For example, suppose you wish to maximize the utilization of a given resource by changing several factors in the model. For each experiment, you may need to run ten replications to get an accurate estimate of the utilization for a specific combination of settings. If your estimate isn’t accurate enough, you will not be able to tell if improvements to a system are the result of changes or simply an effect of random variance. SimRunner helps you select the appropriate number of replications for both terminating and non-terminating systems.
For non-terminating systems, SimRunner’s Objective Function Time Series graph shows the value of the objective function as it changed during the simulation based on several replications. At the very beginning of a simulation run, the simulation model is “empty.” There are no entities in the system and often all the statistics are set to zero. This is an artificial condition and, for non-terminating simulations, does not reflect reality. When you run a non-terminating simulation, you must run it long enough for the operation to stabilize—to reach steady state. The [popover title="Warm-up Time" title_bg_color="" content="The amount of time the model must run for the objective function to reach a steady state in the context of non-terminating simulations." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]warm-up time[/popover] is how long it takes the simulation to reach steady state. The end of the warm-up time is the point at which you want to begin sampling statistical data—data representative of how the system normally operates.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] When you define a warm-up period, the model runs for a specific period of time at the beginning of each replication before results are recorded.
How do you know how long the warm-up period should be? SimRunner uses an approach based on Welch’s graphical method. SimRunner displays a time series graph of the objective function’s current value and moving average based on several replications of the simulation. As the objective function begins to stabilize, the moving average graph will appear to "flatten out" around a specific value or range. This behavior signals the end of the warm-up period.
It is quite possible that you may be unable to determine the warm-up period from just one look at the graph. If you are unable to make this determination, run the model again with a longer [popover title="Run Length" title_bg_color="" content="The time length for which SimRunner will run your model for each experiment." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]run length[/popover].

In the case of a non-terminating system, the warm-up period is the amount of time the model must run for the objective function to exhibit statistical regularity—to reach a steady-state. This occurs when the distribution of the objective function values is the same from one time period to the next. SimRunner helps you identify the length of the warm-up period.

Simulation Run Length: The total duration of the simulation. If you run a non-terminating simulation, the run length should be sufficient to allow the model to warm up and reach steady state. Start with a large initial value for the run length.
Output Recording Time Interval (period): SimRunner records output statistics during regular intervals of time. This sampling technique provides you with an observation of the output statistic for each time interval. The [popover title="Output Recording Time Interval" title_bg_color="" content="The length of the individual time periods for which SimRunner computes statistics, as used within the Analyze Model step." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]output recording time interval[/popover] refers to the length of each time interval. The recording time interval should be large enough to ensure that simulated events occur, and that the model produces an output value for each response statistic listed as part of the objective function. For example, given a job arrives to a queue every 30 minutes, you do not want to select a recording time interval of less than 30 minutes if the average time jobs wait in the queue is part of the objective function. Be sure to set the recording time interval to observe at least one observation during each interval.
Number of Test Replications: The number of replications needed to conduct the analysis. The number of test replications should be five or more depending on how long you have to wait for results.
Percent Error in Objective Function Estimate: Given that you can only estimate the true value of the objective function, you have to decide how accurate your estimate needs to be. Entering a 10 indicates that you wish to estimate the required number of replications needed to obtain an estimate of the average value of the objective function to within 10% of its true value.
Confidence Level: The [popover title="Confidence Level" title_bg_color="" content="Used for approximating the required number of replications and for computing confidence intervals. In the case of confidence intervals, it specifies the proportion of Convergence Percentage confidence intervals that contain the true mean." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]confidence level[/popover] (90%, 95%, or 99%) used to approximate the number of replications needed to estimate the value of the objective function to within the stated "percent error" of its true value. The higher the [popover title="Confidence Level" title_bg_color="" content="Used for approximating the required number of replications and for computing confidence intervals. In the case of confidence intervals, it specifies the proportion of Convergence Percentage confidence intervals that contain the true mean." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]confidence level[/popover], the larger the number of replications needed will be.


Run: Begin analyzing the model.
Final Report: Produces an analysis report which describes the results of each experiment.
Analysis Status: Displays the completion status of the analysis.
Warm-up: Detection for steady-state estimates.
Moving Average Window: Allows you to adjust the number of periods used to compute the moving average plot. The plot is automatically redrawn.
![]()
Estimate required number of replications
![]()
Warm-up Periods: Enter the number of time periods you wish to use as the warm-up period when estimating the required number of replications. Periods refer to the frequency with which you recorded data from the model. For example, if your output recording time interval is four hours, you may find that five periods will suffice (20 hours).
No. of Replications: This field is automatically updated as the warm-up periods field is defined.
[menu_anchor name="Chapter-9-5"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Often, the reason for building a simulation model of a system is to answer questions such as: “What are the optimal settings for to minimize (or maximize) ?” You can think of the simulation model as a black box that imitates the actual system. When you present inputs to the black box, the box produces outputs that estimate how the actual system will respond. In the question above, the first blank represents the input(s) to the simulation model that you control. (These inputs are often called decision variables or factors.) The second blank represents the performance measure(s) of interest, computed from the output response of the simulation model when you set the factors to specific values (see example below).
In the question, “What is the optimal number of material handling devices needed to minimize the time that workstations wait for material?”, the input factor is the number of material handling devices and the performance measure is the time that workstations wait (computed from the output response of the simulation model). The goal is to locate the optimal value for each factor that minimizes or maximizes the performance measure of interest.
The following diagram shows the relationship between an optimization algorithm and a simulation model (adapted from Harrell, Ghosh, and Bowden 2000).

If you were to evaluate all combinations of the different values for the input factors (X 1 , X 2 , X 3, …) and plot the output response generated by the simulation model, you would create what is called a response surface of the output for that model. Think of the response surface as a mountainous region with many peaks and valleys. In the case of a maximization problem, you wish to climb to the highest peak. In the case of a minimization problem, you wish to descend to the lowest valley.
[menu_anchor name="Chapter-9-5-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]To optimize functions or the output from simulation models, you must apply some kind of method to evaluate different combinations of input factors until you arrive at what you consider the optimal solution. If you take several different input/output combinations (i.e., function evaluations), you should be able to establish which variables cause improvement in the output response and try a few more function evaluations. By ascending the “peak” (in the case of a maximizing problem), you will work your way to the top.
Once you climb to a peak (i.e., reach a local optimum), how do you determine whether your local optimum is the global optimum—the very best? How do you know that there is no better combination of inputs? The surest way would be to try every possible combination of input factors. This is not feasible for most problems. What you can do, however, is try to find and compare several local optimums. This will greatly increase your chance of finding the best, or global, solution.
In many situations, it is impossible to formulate a single equation that precisely describes a system’s behavior. For this reason, techniques such as simulation are used to model and study these systems. Although simulation itself does not optimize, it acts as a function to tell you (based on your model of the system) what results you will achieve from a given set of input factors. SimRunner conducts a variety of tests to seek ideal operation levels for your model.
When setting up your optimization, you can do several things to greatly improve SimRunner's performance:
Don't include input factors that have relatively little impact on model results. Although SimRunner can handle multiple factors, each factor you add increases the amount of time necessary to optimize the model. So, the fewer the number of factors, the faster you will get results.
It takes a lot longer to find an answer between 1 and 1000 than between 1 and 10. The tighter the bounds you specify for your input factors, the faster you will get results.
Since SimRunner uses the objective function to evaluate a solution’s performance, it is absolutely necessary that you include the right output responses in the objective function. This allows SimRunner to test several combinations of factors to see which arrangement will improve the desired aspect of the system’s performance. Remember also that your answers are only as precise as the system's randomness allows. If your model gives results that are accurate only to ± 5, SimRunner’s solutions will be equally accurate ( ± 5).
[menu_anchor name="Chapter-9-5-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]SimRunner intelligently and reliably seeks the optimal solution to your problem based on the feedback from your simulation model by applying some of the most advanced search techniques available today. The SimRunner optimization method is based upon Evolutionary Algorithms (Goldberg 1989, Fogel 1992, and Schwefel 1981).
Evolutionary Algorithms are a class of direct search techniques based on concepts from the theory of evolution. The algorithms mimic the underlying evolutionary process in that entities adapt to their environment in order to survive. Evolutionary Algorithms manipulate a population of solutions to a problem in such a way that poor solutions fade away and good solutions continually evolve in their search for the optimum. Search techniques based on this concept have proven to be very robust and have solved a wide variety of difficult problems. They are extremely useful because they provide you with not only a single, optimized solution, but with many good alternatives.


Optimization Profile: SimRunner provides three optimization profiles: Aggressive, Moderate, and Cautious. The [popover title="Optimization Profile" title_bg_color="" content="The optimization profile controls the size of the population of solutions SimRunner uses to seek the optimum. Aggressive is the smallest population, Moderate is a larger population size, and Cautious is the largest population." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]optimization profile[/popover] is a reflection of the number of possible solutions SimRunner will examine. For example, the cautious profile tells SimRunner to consider the highest number of possible solutions—to cautiously and more thoroughly conduct its search for the optimum. As you move from aggressive to cautious, you will most often get better results because SimRunner examines more results—but not always. Depending on the difficulty of the problem you are trying to solve, you may get solutions that are equally good. If you are pressed for time or use relatively few input factors, a more aggressive approach—the aggressive profile—may be appropriate.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] The optimization profile affects the number of solutions SimRunner will evaluate before it converges. An aggressive profile generally converges quickly, but will have a lower probability of finding the optimum.
Convergence Percentage: With every experiment, SimRunner tracks the objective function’s value for each solution. By recording the best and the average results produced, SimRunner is able to monitor the progress of the algorithm. Once the best and the average are at or near the same value, the results converge and the optimization stops. The [popover title="Convergence Percentage" title_bg_color="" content="As SimRunner moves through the optimization process, it computes statistical data for the solutions it evaluates. From each generation, SimRunner records the best solution and the average of all solutions. When the population best and average are within the specified convergence percentage, SimRunner halts the optimization and the optimization is said to have converged." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]convergence percentage[/popover] controls how close the best and the average must be to each other before the optimization stops. A high percentage value will stop the search early, while a very small percentage value will run the optimization until the points converge.
• Options: The following options are available if selected on the Advanced Options menu. Select Options \ Advanced to enable Max and Min [popover title="Generation" title_bg_color="" content="A complete cycle of evaluating a population of parent solutions and selecting the best parents to produce a population of offspring solutions for the next generation." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]generation[/popover] selection.
• Max No. of Generations: The most iterations SimRunner will use to conduct the analysis. This impacts the maximum time allocated to the optimization search. Very high values allow SimRunner to run until it satisfies the [popover title="Convergence Percentage" title_bg_color="" content="As SimRunner moves through the optimization process, it computes statistical data for the solutions it evaluates. From each generation, SimRunner records the best solution and the average of all solutions. When the population best and average are within the specified convergence percentage, SimRunner halts the optimization and the optimization is said to have converged." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]convergence percentage[/popover].
• Min No. of Generations: The fewest iterations SimRunner will use to conduct the analysis—this impacts the maximum time allocated to the optimization search. Typically, you will set the minimum number of generations to 1; however, if you specify a very large value, you can force SimRunner to continue to seek the optimal solution even after it satisfies the [popover title="Convergence Percentage" title_bg_color="" content="As SimRunner moves through the optimization process, it computes statistical data for the solutions it evaluates. From each generation, SimRunner records the best solution and the average of all solutions. When the population best and average are within the specified convergence percentage, SimRunner halts the optimization and the optimization is said to have converged." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]convergence percentage[/popover].

Disable Animation: Uncheck to activate the animation during run time. If you enable the animation, it will take longer to conduct the analysis but will not affect the model’s results.
Number ofReplications per Experiment: The number of times the model will run in order to conduct the experiment—to estimate the value of the objective function for a solution. (Typically, you will never conduct an optimization with only one replication.)
Warm-up Time: The amount of time the model must run before it reaches steady-state.
Run Time: The total run length of the model.
Confidence Level: If you specify more than one replication, SimRunner will compute and display a confidence interval based on the mean value of the objective function and its sample variance. The [popover title="Confidence Level" title_bg_color="" content="Used for approximating the required number of replications and for computing confidence intervals. In the case of confidence intervals, it specifies the proportion of Convergence Percentage confidence intervals that contain the true mean." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]confidence level[/popover] allows you to specify a 90%, 95%, or 99% confidence interval. Although you cannot determine the true mean value of the objective function for a given experiment (you can only estimate it), the confidence interval provides a range that hopefully includes the true mean. The higher the value you select for the [popover title="Confidence Level" title_bg_color="" content="Used for approximating the required number of replications and for computing confidence intervals. In the case of confidence intervals, it specifies the proportion of Convergence Percentageconfidence intervals that contain the true mean." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]confidence level[/popover], the more confident you can be that the interval contains the true mean. However, note that a 99% confidence interval is generally wider that a 90% confidence interval given a fixed number of replications.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Typically you want SimRunner to run the algorithm until it fully converges. Do this by specifying a very low value for [popover title="Convergence Percentage" title_bg_color="" content="As SimRunner moves through the optimization process, it computes statistical data for the solutions it evaluates. From each generation, SimRunner records the best solution and the average of all solutions. When the population best and average are within the specified convergence percentage, SimRunner halts the optimization and the optimization is said to have converged." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]convergence percentage[/popover], such as 0.01, and, if running in advance mode, a very high value for maximum number of generations, such as 99999, and a value of 1 for minimum number of generations.

Run: Begin optimizing the model.
Stop: Halt the optimization.
Performance Plot: Plots the best objective function value found throughout the optimization process.
Final Report: The final report contains several of the best solutions found. SimRunner sorts these solutions to allow you to evaluate them further before you make your final decision. These results can be saved to a file using the Export Optimization Data option found in the File menu.

Phase 1 and Phase 2: SimRunner sometimes uses a genetic algorithm before using the evolution strategies algorithm based on the characteristics of the problem being solved. Phase 1 displays the convergence status of the genetic algorithm. Phase 2 displays the convergence status of the evolution strategies algorithm.
Generation: The current generation. Each generation represents a collection of experiments performed on the model.
Experiment: The current simulation experiment.

Independent variable 1 & 2: Select the [popover title="Input Factors" title_bg_color="" content="Those factors for which SimRunner will seek optimal values. When you define input factors, you must provide the lower and upper bounds. An example of an input factor is the number of operations used." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]input factors[/popover] you wish to use to produce a partial response surface of the model’s output.
Update Chart: Updates the chart to reflect the data you selected.
Edit Chart: Accesses the controls you will need to change the appearance of the Surface Response Plot.


New: Starts a new project.
Open Model: Opens an existing simulation model.
Open Project: Opens an existing optimization project.
Save: Saves the current optimization project to its original path and filename.
Save As: Allows you to save the project under a different name or in a different location.
Export Optimization Data: Exports the data found in the optimization grid to a comma-delimited file of your choice.
Recently Opened Files: Displays a list of all recently opened files.
Exit: Quits SimRunner.
[menu_anchor name="Chapter-9-6-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
Clear Optimization Data: Clears Optimization Data from the data grid.
Clear Analysis Data: Clears Analysis Data from the data grid.
Advanced: Provides an option to control Minimum and Maximum Generations. This effects the Setup Project | Set Options screen, providing additional optimization control to the user.
[menu_anchor name="Chapter-9-6-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]
Help Topics: Provides access to the help system.
About SimRunner: Shows the version of SimRunner being used.
[menu_anchor name="Chapter-9-7"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]In this chapter, you will create a new project from a validated model that contains Scenario Parameters and examine how the model might perform more optimally.
[menu_anchor name="Chapter-9-7-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]1. From ProcessModel, load your model and begin a simulation (you can end the simulation as soon as it starts).
2. Start SimRunner by clicking the Tools menu and selecting SimRunner.
1. Select the response category and statistic for each item you wish to monitor.

2. Click Add (the down arrow button). The statistic will appear in the selected response statistics window. You can remove portions of the function by selecting the up arrow button.

3. Enter the objective for the response statistic (Max, Min, Target range) and the weight to apply to the statistic. Select the Update button to apply the changes to the objective function.
4. Repeat this process to add any other response statistics. If you wish to remove a statistic, select the statistic to remove, then click the up arrow button. Once you have selected all the statistics you will use, click Next.
1. Select a Scenario Parameter you will use in the project from the Scenario Parameters list. Scenario.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] What are termed Scenario Parameters in ProcessModel are termed Macros in SimRunner.
2. Click the down arrow button to add the Scenario Parameter to the input factors list.

3. Select the numeric type, then enter the default value, the [popover title="Lower Bound" title_bg_color="" content="The lowest numeric value of the input factor. The minimum value an input factor may have for optimization experimentation purposes." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]lower bound[/popover], and the [popover title="Upper Bound" title_bg_color="" content="The highest numeric value of the input factor. In other words, no more than this." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]upper bound[/popover]. Select Update to reflect the changes in the Scenario Parameter selected.
4. Repeat this process to add any other response statistics. If you need to change the properties for a Scenario Parameter that has already been added, select the Scenario Parameter to change, make the Scenario Parameter property change (Integer, Real, value and bounds), then click Update . If you wish to remove a statistic, select the statistic to remove, then click the up arrow button. Once you have selected all the statistics you want use, click Next.
1. Select the optimization profile and enter the [popover title="Convergence Percentage" title_bg_color="" content="As SimRunner moves through the optimization process, it computes statistical data for the solutions it evaluates. From each generation, SimRunner records the best solution and the average of all solutions. When the population best and average are within the specified convergence percentage, SimRunner halts the optimization and the optimization is said to have converged." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]convergence percentage[/popover] you wish to use.

2. Select the [popover title="Confidence Level" title_bg_color="" content="Used for approximating the required number of replications and for computing confidence intervals. In the case of confidence intervals, it specifies the proportion of Convergence Percentage confidence intervals that contain the true mean." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]confidence level[/popover].
3. Enable or disable the animation as necessary and specify the number of replications per experiment you wish to run.
4. Enter the warm-up time and run time for the model.
5. Click Next or Seek Optimum to continue.
1. Click Run to start the optimization.

2. A plot of the optimization will be displayed automatically. But it can also be opened manually anytime following the optimization by clicking the Performance Plot button.

3. View the optimization data.

4. Click the Final Report button to display a written summary of the optimization.

1. Enter the independent variables (Scenario Parameter input factors) you wish to use in the response plot and click Update chart.

2. If you wish to modify the appearance of the graph, click Edit Chart. The following dialog will appear.

1. Enter the simulation run length and the output recording time interval (period).

2. Enter the number of test replications
3. Enter the percent of error in the objective function estimate and select a [popover title="Confidence Level" title_bg_color="" content="Used for approximating the required number of replications and for computing confidence intervals. In the case of confidence intervals, it specifies the proportion of Convergence Percentage confidence intervals that contain the true mean." content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]confidence level[/popover].
4. Click Next to continue.
1. Click Run to begin the analysis.

2. If you wish to adjust the number of periods used to compute the moving average (for steady state estimates), adjust the value for the Moving Average Window . The moving average plot will update to match the current settings.
![]()
3. Enter the warm-up time. SimRunner will suggest the number of replications you should run for the optimization project.
![]()
4. Click the Final Report button to view the analysis report.

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).
[menu_anchor name="Chapter-10-1-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]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.
[menu_anchor name="Chapter-10-1-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]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.
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 PreInvoiced. 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.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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.
The activity time or some other activity action occurring only a percentage of the time.
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.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about the Discrete distribution, see Distributions in Chapter-3.12.1.
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.
[menu_anchor name="Chapter-10-1-5"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]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.
[menu_anchor name="Chapter-10-1-5"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]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 disas sembly 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).
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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.
[menu_anchor name="Chapter-10-1-7"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]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.
[menu_anchor name="Chapter-10-1-8"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Collect two or more entities into a batch or group after an activity in order to move them on to the next activity as a batch. Useful for accumulating a batch of a specified quantity or recreating a batch that had been previously batched.
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.
[menu_anchor name="Chapter-10-1-9"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Collect two or more entities into a batch or group after an activity or queue in order to move them on to the next activity as a batch. Useful for holding entities for daily processing.
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.
[menu_anchor name="Chapter-10-1-10"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]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.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To see how the Parts are grouped before the Paint activity, see Grouping or Batching Before an Activity.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] All batches or groups are unbatched when the batched entity exits the model in order to complete statistics collection on each entity.
Collect two or more entities in the input queue of an activity in order to process them together as a batch. Useful for batching a specified quantity or for rebatching a batch of items that had been previously unbatched. To unbatch entities after the operation, see Ungrouping or Unbatching After an Activity.
1. Specify an input queue capacity for the activity that is at least as great as the largest batch size. (Activity input queues are automatically set to 999 as the default capacity.)
2. In the Batching tab, select Batch for Before Activity.
3. Specify the quantity to be batched.
Example: Parts are collected in groups of ten and painted in an automatic painting process. The Parts enter the Paint activity input queue individually, they are grouped in sets of 10, painted, and routed to the Dry activity as a group.

TO DO: Select the Paint activity’s Batching tab. Choose Batch for Before Activity and set the quantity to be batched at 10.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To see how the Parts are ungrouped after the Dry activity, see Ungrouping or Unbatching After an Activity.
Create a batch that is the same size as a previous batch without specifying a quantity. This allows the batch size to be set in one place and all subsequent batches to be set automatically. To unbatch entities after the operation, see Ungrouping or Unbatching After an Activity.
1. Specify an input queue capacity for the activity that is at least as great as the largest batch size. (Activity input queues are automatically set to 999 as the default capacity.)
2. In the Batching tab, select Rebatch for Before Activity
Example: A batch of 48 PC boards must be unpacked (unbatched) at the Receiving activity, individually inspected at the Inspection activity, and then moved individually (on a conveyor) to be rebatched at the Packaging activity.

TO DO: Select Rebatch for Before Activity in the Batching tab of the Packaging activity. Then enter a number greater than or equal to 48 in the Input Queue Cap. field in the General tab.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] The Rebatch option may also be used to create a batch for arrivals defined with a quantity greater than one. See Batching.
For entities routed to an activity as a batch, it may be desirable to unbatch the entities prior to the activity (in the input queue) for processing each entity individually.
1. Select Unbatch in the Before Activity section of the Batching tab for the activity.
Example: The sales department accumulates a stack of 20 purchase orders, Orders , which move together as a batch to accounting for billing. At the Billing activity, an invoice is created for each purchase order and sent on individually to a data entry activity.

TO DO: Select the Billing activity and select the Batching tab. Now choose Unbatch for Before Activity as shown above.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If you want to accumulate the same entities back into a batch after the activity, select Rebatch for After Activity and make sure an output queue capacity is defined to meet or exceed the quantity that will be rebatched.
A batched entity enters an activity input queue where each entity in the batch is processed individually. The entities may be rebatched optionally in the output queue.
1. Route the previously batched entity to the activity. Make sure the activity has an input queue capacity greater than zero (the default is 999).
2. In the activity’s properties dialog under the batching tab, select Unbatch for Before Activity. (Optionally select Rebatch for After Activity if you wish to have the entities regrouped in the same quantity as they came in.)
Example: A batch of 48 PC boards must be unpacked (unbatched) and individually inspected at the Inspection activity and then batched together again before they are moved to the Packaging activity. (It is assumed that the PC Boards have been previously batched.)

TO DO: Select Unbatch for Before Activity and Rebatch for After Activity in Batching tab of the Inspection activity. Enter 48 (or a higher number) in the Output Queue Cap. field in the General tab.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If individual entity statistics are unimportant, it is easiest to leave the batch intact at each activity (or let a single entity represent the batch) and specify an activity time equal to the time needed to process the entire batch at the activity. See GroupQty( ) to change the time based on quantity in the batch.
Normally, if all activities may be performed during the same shift or block of time (e.g. an 8 to 5 shift), it is unnecessary to simulate the activities by shift. In such cases you simply run the simulation for a time equal to the sum of all the time periods. For example, to model a full week of a process that is performed from 9 a.m. to 5 p.m., Monday through Friday, simply run the simulation for 40 hours.
In situations where one or more activities are performed during different shifts or time periods, it may be useful to reflect this difference in a schedule during the simulation. In such instances you must decide whether it makes sense to model full days or consolidate only those portions of each day when work is being done.
1. Define a default schedule for all activities that occur during "normal" hours as follows:
1. In the Simulation -> Options dialog (Files tab), select Default Activity Shift File and click Create Shift... 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.
2. Define a schedule for each activity that has a working period that is different than the normal working period. This is done as follows:
1. Select Create Shift... in the Activity dialog under the Schedule tab. This opens the Shift Editor.
2. Using the Shift Editor, specify a shift to be used for this activity.
3. Enter the name of this shift file in the Shift File field of the Activity dialog.
Example: Orders arriving between 8 a.m. and 5 p.m. are placed in an in-basket. Processing of orders, however, is done at 11 a.m. and 4 p.m.

TO DO: Create a shift file for 8:00 a.m. to 5:00 p.m. and enter it as the default activity shift file in the Options dialog (the in-basket will use this shift). Create another shift file 11:00 a.m. to 11:30 p.m. and 4:00 p.m. to 4:30 p.m. and enter it as the shift file for the Process Order activity.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] For creating, editing, and assigning shift files, see Shift Definition. Also see Shifts & Breaks for Resources.
Only allow one part at a time to enter a section of the process.
1. Create a global variable.
2. Increment the variable when a part enters the capacity limited section of the process.
3. Decrement the variable when a part leaves the capacity limited section of the process.
4. Use a Wait Until statement to limit the number of parts that enter the capacity limited section of the process.
Example: To avoid clogging a production system, one part at a time is allowed to enter a section of the process that has recursive loops.

TO DO: Create a global variable named Counter (this can be any name). Increment the counter when the entity enters the section of the process you want to limit. Decrement the counter when the entity leaves the section of the process you want to limit. Use a Wait Until statement to hold entities until the proper condition exists.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about the Wait Until statement, see WAIT UNTIL.
In situations where an activity is scheduled to go off shift or on break, it is sometimes desirable to interrupt the current activity rather than wait until it is finished.
1. Define and assign a shift file as described in Chapter 10, Section 10.1.15, Scheduling Activities.
2. Check the interrupt box in the schedule dialog.
Example: An invoicing activity is actually performed by people who go to lunch at noon even though no resources are assigned to the activity; the resources are assumed since the activity time is the focus of the model. When the assumed people go to lunch and on break, the activity is shut down even if it’s in the middle of processing an invoice.

TO DO: Assign the shift file to the activity. Check Interrupt current activity... as shown above.
[menu_anchor name="Chapter-10-2"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Attaching one or more entities to a base entity.
1. Use a percentage or conditional routing to the assembly activity for the base entity.
2. Use the Attach routing for each entity to be attached to the base entity.
Example: In the final assembly step of a bicycle assembly line, two pedals and the seat are assembled to each bicycle. Assembly time is four minutes.

TO DO: Create the activity and storages and make the connections as shown above. In the Attach routing for the pedals, enter a quantity of 2 in the properties dialog as shown. Enter 4 in the Time field of the Final Assembly activity.
[menu_anchor name="Chapter-10-2-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]One or more new entities are created or split off from another entity at an activity. (The values of any user-defined attributes are the same as those of the entity that triggered their creation.)
1. Define a routing from the activity where the creation occurs (this is the routing to be used for all entities created by the activity).
2. Select the connection and choose Create from the Type list in the properties dialog.
3. Enter the name of the newly created entity in the Created entity name field.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] When you add an additional text label to an entity, place the label on the center of the entity. Otherwise, the entity will appear larger during simulation.
4. In the Entities to be created field, enter the quantity of entities the activity will create for each entity coming into the activity.
5. Define another routing from the activity to route the original incoming entity. (If no other routing is defined, the original entity will exit the model.)
Example: See the example on Chapter 10, Section 10.2.5, Reuniting Entities.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about creating entities, see Create.
Creation of a new entity occurs only under certain conditions. You can control whether or not an entity is created or the quantity of created entities to suit changing conditions.
1. In the create route, replace the quantity created with an attribute, variable, expression or distribution.
Example: A company receives telephone calls, 25 percent of which turn into orders and 75 percent which do not. In either case, calls must be logged and terminated.

TO DO: Place a a discrete distribution in the quantity field of the Create routing. See Discrete Distribution.
[menu_anchor name="Chapter-10-2-4"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]A single entity is split or divided up into two or more entities.
1. From the activity where the entity is divided, connect one or more Create routings, each specifying the quantity of entities to create for that particular new entity.
2. Don’t create any other output routing connections for the original entity to take. This causes the original entity to exit the system.
Example: A company receives telephone orders from which an invoice and a shipping request are generated. The invoice and shipping request continue on through the model, but the call is ended at the Take Order activity.

TO DO: Create entity graphics for both of the new entities. Change both routings from the Take Order activity to Create routings with the Created entity name: entered as shown above.
[menu_anchor name="Chapter-10-2-5"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Reunite or join one or more entities to the entity from which they were previously created or detached.
1. Create one or more entities at one or more activities using the Create routing.
2. Reattach the created entities to the creating entity by using an Attach routing and selecting the Attach to: entity that created it in the properties dialog of the connection.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If you desire, you may detach and reattach any reattached entity created originally by a Create routing.
Example: A loan application filled out by the customer is reviewed and a credit report is made. The application is then joined up with the Customer at the interview activity.

TO DO: Create the activities and routings as shown above, changing the connection types as indicated. Enter the entity name for the Create routing as indicated and select Attach to: entity that created it in the Attach routing.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] It is a good idea to set the input queue of the Interview activity high enough to handle entities that must wait to be matched with their credit application. This will prevent gridlock.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Alternatively, you could have the originating entity pick up the created entity using the Pickup routing. See Picking Up Entities for more information.
The entity requesting the pickup is attached to the requested entity.
1. Create a routing for the entity that will trigger the pickup to occur.
2. Create a pickup routing attached to the activity where the entity is to be picked up. Optionally you may designate Pickup: created entity in the properties dialog.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If desirable, picked up entities can later be detached and again reattached.
Example: A clinic processes samples provided by patients and provides results to the patient. Each patient provides a sample (Create a Sample). The patient proceeds to the waiting room to await results. The sample is processed and when ready is the triggering device to signal the patient to move forward and pick the sample up.

TO DO: Create the activities and routings as shown above, changing the connection types as indicated. Enter the entity name for the Created entity to sample and select Pickup: created entity in the Pickup routing.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Also see Pickup for additional information about the Pickup routing.
Separating entities that were previously attached or picked up. If the entity never had another entity attached or never picked up another entity, then use the create routing to generate the new entity (see Dividing Entities).
1. Connect the separating activity or storage to another activity or storage using the Detach routing.
2. Optionally enter a condition for detaching the entities in the properties dialog of the Detach routing. (Used when more than one entity has been attached and a specific entity needs to be detached.)
3. Route the main entity (the one from which an entity is to be detached) using any routing other than a Detach routing, i.e., use a 100% routing.
Example: An Invoice has been created by an Order and later attached to the Order for processing. Now the Invoice must be separated from the Order for filing. (Invoices are filed by number and Orders by date.

TO DO: Connect the Separate activity to the filing activities with connection types as shown. Since it may be possible that other entities are attached to the Order, enter the condition as shown above.
[menu_anchor name="Chapter-10-2-8"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]An activity that examines the name or some other attribute of an entity to determine how to route the entity for further processing. For example, you want to separate all entities by size (small, medium, and large) into separate storage bins.
1. Define an attribute to be used for sorting purposes.
2. Set the attribute to the desired value in any action logic prior to the sorting activity.
3. At the activity where the sorting takes place create Conditional route connections to each activity or storage where the sorted items go.
4. In the condition field of the routing properties dialog, enter the conditional expression for taking that path (e.g. Type = small). (Be sure that all possibilities are covered or an error occurs.)
Example: The Work_File has been assigned a Size attribute earlier in the model. Now we want to sort the work files into three different working folders (storages) to be processed later by different activities in the model.

TO DO: Connect the sorting activity to the storages with Conditional routings as shown. In the Condition field of each routing (as shown) enter Size = descriptor, where descriptor is either small, medium, or large, assigned previously to the descriptive attribute Size.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Conditional Branching.
Changing the name of an entity at an arrival, activity, or move time (routing). The name is important because statistics are reported by entity name when entities exit the system.
1. Route the entity whose name will change using a Percentage, Conditional, or Renege routing.
2. In the properties dialog of the routing, enter the new name in the New name field.
Example: Callers on hold at the order desk will hang up if they have to wait too long. Some may wait as many as 8 minutes, other as few as 2 minutes, but most will wait around 3½ minutes. We want to rename the calls that hang up (renege) so that we can keep separate statistics on those calls.

TO DO: Create the renege routing and enter the triangular distribution, T(2,3.5,8), and the new name (LostCall) in the appropriate field as shown above.
1. Select the Action tab in the properties dialog of the activity or routing.
2. Enter the following logic: NewName(new_entity_name) where new_entity_name is the name you want to change it to. Note that the new name must be a name that has already been defined for an entity on the layout. This will change the entity’s name and graphic.
Example: Depending on an attribute named Color , a Part is renamed. If the Color is red, the Part is renamed Reject . If the Color is blue, the Part is renamed GearA . And if the Color is green, the Part is renamed GearB to indicate a quality difference and therefore a different use in the plant.

Action Logic:
IF Color = red THEN NewName(Reject) IF Color = blue THEN NewName(GearA) IF Color = green THEN NewName(GearB)
TO DO: In the routing’s Action logic, enter the IF...THEN statements shown above to change the entity’s name according to the value of the Color attribute. Place entities on the layout named Reject, GearA and GearB.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about the NewName function, see NEWNAME.
An entity attribute is assigned a different value or descriptor based on a random percentage. This applies to both predefined attributes such as Cost and user-defined attributes that are defined in the Attributes & Variables dialog under the Insert menu.
1. Define the entity attribute.
2. Assign a value or descriptor to the attribute in Action logic using the userdefined distribution function. For example: Color = D2(30, red, 70, blue)
Example: Eighty percent of the time an insurance claim form is for personal injury and 20% of the time for property damage.

TO DO: Define the descriptive attribute called Type in the Attributes & Variables dialog under the Insert menu with per and prop as descriptors. Enter the Action logic as shown above in the arrival’s Action logic tab.
[menu_anchor name="Chapter-10-2-11"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]A customer waiting for service decides to leave rather than continue waiting.
1. Route the customer to the desired activity.
2. Make sure this activity has sufficient Input queue capacity to hold waiting customers.
3. Create a Renege routing from that activity to another storage or activity, or leave it unconnected so the customer will leave the system entirely.
4. Set the Renege after time for the amount of time the customer will wait before leaving. (This is usually a distribution to indicate variability of a customer’s patience.)
Example: Callers on hold at the order desk will hang up if they have to wait too long. Some may wait as many as 8 minutes, other as few as 2 minutes, but most will wait around 3½ minutes. We want to rename the calls that hang up (renege) in order to keep separate statistics on those calls.

TO DO: Create the renege routing and enter the triangular distribution, T(2, 3.5, 8), and the new name in the appropriate fields as shown above.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about the Renege routing, see Renege.
An arrival that supplies entities to the attached activity whenever that activity has the capacity to take more entities (any input queue capacity is ignored).
1. Create the entity and the activity at which it will arrive.
2. Create an arrival connection to the new activity from the entity.
3. On the arrival connection’s properties sheet, select Continuous from the Type pull-down box.
Example: The beginning of an assembly line has a constant supply of Part_A . Whenever the first assembly station ( Assembly_1 ) has a need for Part_A , it’s there.

TO DO: In the arrival connection’s properties sheet, select Continuous from the Type pull-down box. (This is the default connection type.)
[menu_anchor name="Chapter-10-3-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Arrivals in which one or more entities arrive at fixed time intervals.
1. Create the entity and the activity at which it will arrive.
2. Create an arrival connection to the new activity from the entity.
3. On the arrival connection’s properties sheet, select Periodic from the Type pull-down box.
4. Enter the time interval and select the time unit.
5. Enter the quantity of entities to arrive at each interval.
Example: A tour group convenes in the lobby of a museum every hour to start a tour. The size of the tour group is 25.

TO DO: Place the entity and activity in the model. Connect the entity and activity and select Periodic from the Type pull-down box. Enter the 60 min in the Repeat every field and 25 in the Quantity per arrival field.
[menu_anchor name="Chapter-10-3-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]An average number of entities arrive randomly throughout a specified period. Useful in modeling situations where no specific pattern seems to exist.
1. Connect the entity to the storage or activity.
2. Select the connection and choose Periodic from the Type pull-down box.
3. Enter a distribution to create randomness in the Repeat every field. (The exponential distribution is recommended, e.g., E(10) would yield a random time period with an average of ten minutes.)
4. Enter the number of entities to arrive during the period. (This is usually left at the default of 1 .)
Example: A car wash gets an average of ten customers per hour arriving at random intervals. (This can be reduced to one customer about every six minutes.)

TO DO: Connect the Customer entity to the Line storage (where customers wait in line) and select Periodic from the Type pull-down box. Enter a distribution of E(6) to create an arrival about every six minutes.
[menu_anchor name="Chapter-10-3-4"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Arrivals occurring at specifically scheduled times such as office appointment schedules.
1. On the arrival connection’s properties sheet, select Scheduled from the Type pull-down box.
2. Click on the Define Schedule... button.
3. Use the Scheduled Arrivals dialog to define the appointment schedule (see example below).
Example: A dentist wants to model his office procedures including the appointment schedule to decrease patient waiting time. The appointment schedule is modeled using a Scheduled arrival with one patient arriving every half hour except during the noon hour.

TO DO: Create the Scheduled arrival connection. Click the Define Schedule button and create a schedule. Click the New button for each scheduled arrival. (Any changes to the edit fields are updated when you press the New button.)
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You can define action logic for each scheduled arrival entry. This is done in the lower half of the Scheduled Arrivals dialog. This is mainly useful to assign specific attribute values such as patient type.
Arrivals occurring at specifically scheduled times with provision for variable early and late adjustment.
1. Define a scheduled arrival in the same manner as shown in Appointment Scheduling, except that the starting time should be adjusted down by the time the number of minutes any appointed might arrive early (the offset).
2. Define the first activity for the purpose of delaying the arrival for the distribution that defines the early or late function of the arrival.
3. On the route out of the first activity (the activity that sets the early or late delay) set the CycleStart attribute to the clock.
Example: A dentist wants to model his office procedures including the appointment schedule to decrease customer waiting time. Customers are told to arrive 5 minutes early, but experience has shown that they will arrive according to a distribution added to the scheduled time minus an offset.

If a customer had an appointment for 9:00 AM then the scheduled arrival would be set to 8:55. The first activity, “Early/Late Adjustment,” has a distribution in the time field that represents the percentage of people that arrive before the five minute period is expired. The attribute CycleStart is set to the current time so effect in the model is that the person walked in the door after the Early/Late Adjustment.
TO DO: Create the Scheduled arrival connection. Click the Define Schedule button and create a schedule by entering times that are less than the real appointment by a predetermined offset. Create an activity that has the sole purpose of delaying the arrival by a early/late distribution. Enter this distribution in the time field. In the route leaving the delay activity, set the CycleStart attribute to the CLOCK() function.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] You can define action logic for each scheduled arrival entry. This is done in the lower half of the Scheduled Arrivals dialog. This is mainly useful to assign specific attribute values such as patient type.
Arrivals in which two or more entities arrive together (i.e. the arrival quantity is greater than one) and are then batched together.
1. Create a Periodic or Scheduled arrival with a temporary entity for the arrival. Set the quantity per arrival to one.
2. In the action logic of the arrival, set an attribute equal to a distribution of the quantity to be batched.
3. From the first activity define a Create route with the newly created attribute in the quantity field.
4. In the second activity set the Batch Quantity to the same newly created attribute.
Example: A theme park groups or batches its customers in the Lobby for tours and other activities. Every hour the park begins a new tour and groups the customers that have arrived up to that time. (No more than about 75 show up at one time for a tour.

TO DO: Create an arrival to a storage. In the action logic of the storage set a attribute to the distribution that represents the quantity desired. Make a Create route from the storage with the attribute used for the quantity. In the Batching Area activity set the batch size to the same attribute. Set the input queue to at least 75.
[menu_anchor name="Chapter-10-3-7"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]A production schedule in which a sequence of different items are repeatedly produced.
1. Create an arrival from each entity type to the starting activity. Make sure you create the arrivals in the order they occur.
2. On the arrival connections’ properties sheet, select Periodic from the Type pull-down box.
3. Enter the quantity for each entity arrival (the quantity to be produced).
4. Each Repeat every field should have the same time in order to maintain a consistent arrival sequence for each of the entity types being processed.
5. In the First time fields, enter the amount of time each arrival will be delayed from the simulation start time.
Example: An assembly line is scheduled to produce three treadmill models but can only produce one specific model at a time. The production manager wants the assembly line to repeatedly produce 20 of Model_A, 17 of Model_B, and 28 of Model_C, in that order. The theoretical or minimum time to produce a treadmill is every 10 minutes.

TO DO: Define the Periodic arrivals as shown above. In the arrivals’ properties dialog, enter the following information:

[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To stop the time spent waiting to begin processing from being added to the entity cycle time statistics, enter CycleStart = Clock() in the Action logic of the first activity.
A job shop produces a sequence of jobs with varying quantities for a specific time period, e.g., a day or week.
1. Create an arrival to a common starting activity, such as Start Job, that is connected from any entity.
2. Select Scheduled as the arrival Type and then click on the Define Schedule button to define the sequence of the jobs.
3. Create each job with an appropriate start time to cause them to be arranged in the right sequence. Don’t worry about the actual start time since this is determined by equipment availability.
4. In each arrival’s Action logic window (in the schedule dialog), name the entity appropriately using the NewName statement (see example below).
Example: A job shop can produce four different kinds of brackets. It receives an order for 100 PartA brackets, 175 PartB brackets, 430 PartC brackets, and 280 PartD brackets. The shop will produce the brackets in that order.

TO DO: Define the arrivals for each job as shown in the dialog above. In each arrival’s Action logic window, enter NewName(n) where n is the name of the entity (PartA, PartB, PartC, PartD).
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Rather than using a generic named entity and renaming the entity in the Action Logic of each entry in the Scheduled Arrivals dialog, you could create each entity graphically and connect them to the same activity or storage using a Scheduled arrival connection for each entity type. Alternatively, you can use a Periodic arrival and
specify zero (0) in the Repeat every field. Also note that if you don’t want the time spent waiting to start processing to be reflected in the entity cycle time statistics, enter CycleStart = Clock() in the Action logic of the first activity.
Ordering more stock once an inventory reaches a certain level. Useful in maintaining certain levels of stock for production processes.
1. Create an Ordered arrival connection to the activity where incoming stock arrives.
2. Connect the storage or activity where inventory levels are to be monitored to the Ordered arrival connection.
3. Enter the Reorder level quantity and the Order quantity. (Quantities apply to the entity at the storage or activity.)
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: An assembly line pulls Part_A from the Storage Bin. When the Storage Bin’s quantity drops to 30, an order is put in for 100 more of Part_A. Incoming parts are then inspected and put into inventory.

TO DO: Set Part_A's arrival routing type to Ordered. Connect the Storage Bin to the Ordered arrival. Enter 30 and 100 in the Reorder level and Order quantity fields as shown above. Set the input queue of Assembly to Zero and the processing time to 10 minutes. For another example, see Stock Replenishment.
[menu_anchor name="Chapter-10-3-10"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The arrival rate of customers fluctuates according to a daily pattern. Useful for modeling customer traffic with busy and slow periods.
1. Create an arrival connection from the customer entity to an activity or storage.
2. From the arrival’s properties sheet, select Daily Pattern as the arrival Type.
3. Click on the Define Pattern... button and create the pattern with the Daily Pattern dialog (see example below).
Example: Customers enter a retail store at a rate that varies throughout the day with high and low traffic periods. The first two hours the store is open, an average of 30 customers come into the store. At lunch time, an average of 85 customers come in. Then it slows down through the afternoon until about six o’clock.

TO DO: Create the above pattern for one day and then use the Copy day and Paste buttons to copy the pattern to other days. Or each day could vary as necessary. It is recommended that 5 to 10 replications be made of the simulated day.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] If you want resources and activities to be available for only the period of time when arrivals are occurring, you should define a shift schedule corresponding to the period of the arrival pattern. To learn more, see Schedules—Shifts & Breaks.
Triggers are stand-alone sections of a model that do such things as monitor other locations in your model, change global variable values, reset counters, etc. They are typically a single entity entering a single activity, running independently of all other sections of the model. An example trigger is one used to monitor the day of the week.
1. Create a Periodic arrival which repeats every 24 hours and has a quantity of 1.
2. Create a global variable to be controlled in the trigger, and it’s value to be checked elsewhere in the model.
3. Add action logic to the activity as shown below.
Example: An entity arrives every day which increments a counter representing the day of the week. An If . . . Then statement ensures the variable value is always between 1 and 7.

TO DO: Use the v_DayOfWeek global variable in other locations in the model in If . . . Then statements to cause certain actions to occur based on which day of the week it is.
[menu_anchor name="Chapter-10-4"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Routing entities from one activity to one of several subsequent activities based on percentages, e.g. 40% go to one activity and 60% go to another.
1. Create connections from the activity (or storage) to all the possible destinations.
2. In the properties dialog for each connection, select Percentage as the routing type and enter the percentage for that route.
Example: A bank expects 10% of its lobby customers to seek out a loan officer, 75% to require a teller, and 15% to open a new account or need some other customer service.

TO DO: Connect the Lobby activity with Percentage routings as indicated above.
[popover title="" title_bg_color="" content="Caution" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] All percentages must add up to exactly 100%. If only two percentage routings are used, ProcessModel automatically adjusts one when you change the other in order to make the percentages balance to 100%. If there are more than two percentage routings, you must make them add up to 100% manually.
Routing entities based on a condition such as the value of a variable or attribute. If a routing decision is based on a condition of the entity such as customer type, use an attribute. If it is based on a condition external to the entity such as the total number of entities processed, or the time of day, use a variable.
1. Create an attribute or variable to which the possible conditions may be assigned.
2. Create the desired routings and for each select Conditional in the Type field.
3. Enter the condition in the Condition field of the properties dialog for each routing connection.
Example: Paid invoices are routed to filing. Invoices that are current are routed to the receivables desk, and those that are 30 days past due are routed to the collections desk.

TO DO: Create an attribute called a_Status which may be assigned three descriptors ( Paid , Current , and Past_Due ). Connect the activities, select Conditional type and enter the condition on the General tab of the properties sheet as shown above.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] The order you draw conditional routes is significant. For example, if the condition on the route drawn first is always true (Condition field is left blank), the other routes will never be tested because a true condition was found on the first route.
Routing entities to an alternate storage or activity when the primary routing’s selected destination has insufficient capacity.
1. Create the primary routing(s) from the activity or storage to the desired destination(s).
2. Create an Alternate routing, connecting it from the primary routing to the alternate destination. (Multiple Attach, Pickup, or Ordered routings should be connected directly from the activity and used with the Else routing.)
Example: Normally a car coming into the shop (at the Front Desk activity) for service is routed to the Service Bay, but when three cars are waiting for service at the Service Bay, incoming cars car may be routed to the Brakes bay for service.

TO DO: Create the activities, assigning a capacity of three to the Service Bay input queue. Connect the Front Desk to the Service Bay with a 100% routing, then connect the Alternate routing from the Percent routing to the Brakes activity.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about the Alternate routing, see Alternate.
Entities are routed to the next activity only when the next activity is ready for it. Useful for simple just-in-time or pull systems.
1. Create the downstream activity with an Input queue of zero (0).
2. If you want the upstream activities to continue processing even though downstream capacity may be unavailable, create Output queues with sufficient size to continue processing without actually routing the entities downstream.
Example: A doctor’s office has three exam rooms and a waiting room. A check-in activity receives incoming patients and routes them to the waiting room storage. As soon as a patient leaves an exam room, another patient may be routed into that exam room.

TO DO: Create the activities, storage, and connections as shown above. In the properties dialog of the Exam activity, set the Capacity to 3 (representing three exam rooms) and the Input Queue Size to 0 (thus pulling from the Waiting storage when a patient leaves the activity).
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Take a look at Produce on Demand (Make to Stock) for an example of using the Order Signal (e.g., kanban) to accomplish nearly the same thing in a different way.
An entity is routed to an activity to pick up another entity which is waiting in the input queue of the same activity. The other entity is then attached to the entity doing the pick-up. The activity Action logic and activity time is then processed.
1. Route the entity doing the pick-up with a Pickup routing.
2. Route the entity to be picked up to the same activity as the Pickup routing. (Use any routing except Attach or another Pickup routing.)
Example: A fast food restaurant models its customers coming in and placing an order. The order is processed, and the customer picks up the order.

TO DO: Create the Customer entity and the activities and routings as shown above. Set the Pickup route to pickup entity that it created . This assures that the Customer picks up his or her own order once it is prepared.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about the Pickup routing, see Pickup.
A resource (employee, machine, etc.) is used at an activity to perform the activity.
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.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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.

TO DO: Create the resource and connect it to the activity as shown above.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about resources, see Resources and Resource Assignments.
Routing an entity with the use of a resource (employee, machine, etc.).
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.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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.

TO DO: Connect the nurse (once created as above) to the appropriate routing.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about resources, see Resources and Resource Assignments.
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.
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.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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.

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.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about resources, see Resources and Resource Assignments.
Using more than one resource (employee, machine, etc.) to perform an activity.
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.

TO DO: Connect both resources to the activity.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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:
[menu_anchor name="Chapter-10-5-5"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]TIME(3.5 min) FREE Doctor TIME(5 min) // Nurse used for 5 additional minutes FREE Nurse
Designating a resource to use as an alternate if the primary resource assigned to the activity or move is unavailable.
1. Connect the primary resource to the activity or routing.
2. Connect the alternate resource to the primary resource connection.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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.

TO DO: Connect the Service Rep (the alternate resource) to the assignment connection between the Loan Officer and the Application activity as shown above.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more, see Resources and Resource Assignments.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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.
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.
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.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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.

TO DO: In the Action logic of the Answer Phone activity, enter: IF OwnedResource() = Clerk THEN TIME(7 min) ELSE TIME(5 min)
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about the OwnedResource() function, see OwnedResource(n).
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.
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.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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.

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.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about resources, see Resources and Resource Assignments.
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.
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.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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.

TO DO: Make the connections and check the Respond immediately box as shown above.
[menu_anchor name="Chapter-10-5-9"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]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.)
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.
2. Make sure that the resource follows a daily or weekly schedule. If it does not, consider using the alternative technique shown below.
Example: You are simulating a process that continues around the clock, seven days a week. Every Sunday morning from midnight to 2:00 a.m., a technician takes the computer down to execute a complete backup.

TO DO: Create and assign the above shift to the resource. It is then available for all hours during the week except the two backup hours.
This technique allows you to use the Availability tab to model random equipment failure using a distribution in the time between interruptions and the interruption time fields.
1. Select the resource for which you want to define a maintenance schedule.
2. In the properties dialog, click on the Availability tab.
3. Select the Time option button and enter the appropriate Time between interruptions and the Interruption time fields.
Example: A copy machine is taken out of usage every 55 hours for a 2 hour maintenance appointment.

TO DO: In the copier’s resource connection, edit the properties Availability tab as shown above.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Whenever possible, use the shift schedule for scheduled interruptions.
A resource, such as a machine, fails during the simulation.
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.

TO DO: Enter the distributions as shown above in the appropriate fields.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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.
Employees, for one reason or another, are not always available. An employee may miss a day, half day, or an hour of work.
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 acheive units of days instead of hours.

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.
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.

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.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] For more information on creating, editing, and assigning shift files, see Defining & Editing Shift & Break Blocks.
Modeling consumable resources such as money, energy, water, etc. Useful for modeling the consumption and replenishment of a resource.
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.

TO DO: Create a variable called v_Water. Enter the Action logic as shown above for the appropriate activity.
[menu_anchor name="Chapter-10-5-14"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Sharing resources between two or more activities. Useful when a resource may be used at more than one activity.
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.

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.
[menu_anchor name="Chapter-10-5-15"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]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.
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.

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.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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.
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.
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.

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.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] 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.
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.
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.

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.
[menu_anchor name="Chapter-10-6-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Having an initial quantity or inventory of entities at a storage area or queue when the simulation begins.
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.

TO DO: Create the Periodic arrival connection and enter the Quantity per arrival. Enter zero (0) in the Repeat every and First time fields.
[menu_anchor name="Chapter-10-6-4"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]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.
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.

TO DO: Enter the action logic as shown in the above illustration.
[menu_anchor name="Chapter-10-6-5"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]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.
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.

TO DO: Select the storage and on the General tab of the properties sheet, select LIFO from the Queuing order list box.
[menu_anchor name="Chapter-10-6-6"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]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.
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.

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.
[popover title="" title_bg_color="" content="See Also" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] To learn more about Resource Priorities, see Chapter 3, Section 3.7, Resource Assignments.
Making a decision based on a particular condition. Useful when an activity time, action logic, or routing decision is based on the value of an attribute or variable.
To decide on a particular activity time based on the value of an attribute or variable, see Attribute-Dependent Activities.
To decide on a particular action logic based on the value of an attribute or variable, see Recurring Activities.
To decide on which routing to take based on the value of an attribute or variable, see Conditional Branching.
[menu_anchor name="Chapter-10-7-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Making a decision based on probability or percentage basis. Useful when an activity time, action logic, or routing decision is based on a random percentage.
To decide on a particular activity time based on probabilities, see Percentage-Dependent Activities.
To decide on a particular action logic based on probabilities, see Suggested Technique for Activity Actions.
To decide on which routing to take based on probabilities, see Percentage-Based Branching.
[menu_anchor name="Chapter-10-8"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]ProcessModel’s primary costing approach is Activity-based costing (ABC), a method of tracking operating costs directly associated with processing entities. Operating costs are generally categorized as one of two types: variable and fixed. Variable costs are directly proportional to the number and type of entities processed, e.g. the number of customers serviced or the number of products manufactured. Fixed or overhead costs remain constant from period to period, regardless of the amount and type of entities processed, e.g., rent, utilities, salaries, etc. The total operating cost for a period is the sum of all variable and fixed costs for that period.
The two most commonly used methods of tracking operating costs today are traditional (volume-based) and ABC. Both methods treat variable costs in the same way; each entity processed increases variable costs by the unit cost associated with that entity.
Traditional costing and ABC treat fixed costs differently. Traditional costing allocates fixed costs to each entity according to some basis such as the direct labor costs associated with a particular entity. For example, two entity types, A and B, are processed through a system with a fixed cost of $10,000 per week. If entity A consumes 60% of the direct labor costs and entity B consumes 40%, then $6,000 in overhead would be allocated or charged to entity A and $4,000 to entity B.
With ABC we track the activities and resources used by the entities. Continuing with our example, we know that entity A accounts for 30% and entity B for 70% of the fixed costs when we consider the activities and resources used by the entities. So we are more accurate to say that the overhead cost for entity A is $3,000 and $7,000 for entity B.
The key to ABC is identifying and quantifying cost drivers such as the cost of using a resource to perform a particular activity. ProcessModel can track time-based and eventbased cost drivers, including labor costs, resource usage, activity costs, storage costs and material costs. Additional costs may be assigned in any Action logic. This gives you the capability to track any operating costs by entity type.
To evaluate the potential of a system, costs can be entered as a negative (i.e. Worker - $25/hr.), while revenue sources can be entered as a positive (i.e. completed Part $5). The output summary will provide the equivalent of a net revenue for the duration of the run.
If overhead costs are desirable to include, a resource should be defined with a per hour cost of the overhead. This resource should not be attached to any entity. At the end of the simulation the cost of “overhead” will be spread out over the length of the simulation. The decision to make the overhead number positive or negative should be determined by your other cost numbers. If other costs were negative then the overhead will also be negative.
[menu_anchor name="Chapter-10-8-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Tracking the cost of using resources (people, machines, etc.) in the model. (The resource usage cost is added to the cost attribute for the entity that uses it.)
1. Select the resource and click the Cost tab on the properties dialog.
2. Enter the cost per hour of usage.
3. Enter the cost per use.
Example: A plumber charges $75 for a house call and then charges an additional $50 per hour for the time spent providing service.

TO DO: Select the resource and click on the Cost tab of the properties dialog. Enter the hourly cost and the cost per use.
[menu_anchor name="Chapter-10-8-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Tracking the cost of an activity.
1. Select the activity and click the Cost tab on the properties dialog.
2. Enter the activity cost when done with the entity.
3. Enter the hourly cost of the activity in process.
Example: The application review activity is modeled without the use of a defined resource, however the review is actually performed by a loan officer whose wages and benefits equal $23.45 per hour. In addition, the bank’s additional overhead cost has been estimated to average $8.00 for every application reviewed.

TO DO: Select the activity and click on the Cost tab of the properties dialog. Enter the hourly cost and the cost per entity processed as shown above.
[menu_anchor name="Chapter-10-8-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Tracking the cost applied to the time an entity spends in the model waiting to be processed at an activity or to be moved to the next activity. If waiting time for a given entity has the same cost rate, simply assign the cost per hour in the properties dialog of the entity. However, if waiting time costs are different at different stages in the process, or if they are to be tracked at only certain stages, then the following methods may be used.
The waiting time is always calculated using the Clock() statement and an attribute to track that time. The pre-defined Cost attribute is then incremented by a factor of the waiting time. The method for tracking that waiting time varies depending on the situations presented here. To learn more about the Clock() statement, see Clock( ).

Action Logic:
V_day = 1 While 1 Do {
Time(1 hr) Inc V_hour If V_hour = 24 Then {
V_hour = 0 Inc V_day
} If V_day = 8 Then {
V_day = 1
}
}
1. Create an attribute to track the waiting time called a_Start_Wait (or some other appropriate name).
2. In the Action logic of the storage, assign the value of the Clock() to the a_Start_Time attribute: a_ Start_Wait = Clock().
3. In the Action logic of the routing that routes the entity from the storage, increment the Cost attribute using the INC statement. For example, to add $5.00 per hour of waiting time (dividing the minutes provided by the Clock function by 60 to get the hours), enter the following:
INC Cost, (Clock() - a_Start_Wait) / 60 * 5.00

TO DO: Enter the Action logic for the objects as shown in the above illustration.
1. Create an attribute to track the waiting time called a_Start_Wait (or some other appropriate name).
2. As the last line in the Action logic of the routing connection to the activity with the input queue you are tracking, assign the value of the Clock() to the a_Start_Wait attribute: a_ Start_Wait = Clock().
3. In the Action logic of the destination activity or storage, increment the Cost attribute using the INC statement. For example, to add $5.00 per hour of waiting time (dividing the minutes provided by the Clock function by 60 to get the hours), enter the following:
INC Cost, (Clock() - a_Start_Wait) / 60 * 5.00
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] This time includes the time required to capture resources that have been connected to the activity, since they are captured before the Action logic of the activity is executed. To avoid this, delete the connections and use the GET or JOINTLYGET statement to capture the resources for the activity after the a_Start_Wait attribute has been set and the cost incremented as described above.
Example:

TO DO: Enter the Action logic for the objects as shown in the above illustration.
1. Create an attribute to track the waiting time called a_Start_Wait (or some other appropriate name).
2. As the last line in the Action logic of the activity with the output queue you are tracking, assign the value of the Clock() to the a_Start_Wait attribute: a_ Start_Wait = Clock()
3. As the first line in the Action logic of the routing connection, increment the Cost attribute using the INC statement. For example, to add $5.00 per hour of waiting time (dividing the minutes provided by the Clock function by 60 to get the hours), enter the following:
INC Cost, (Clock() - a_Start_Wait) / 60 * 5.00
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] This waiting time will include the time required to capture resources connected to the routing, since they are captured before the Action logic of the routing is executed. To avoid including this waiting time, delete the connections and use the GET or JOINTLYGET statement to capture the resources for the routing move after the a_Start_Wait attribute has been set and the cost incremented as described above. In addition, any time defined in the General tab of the activity’s properties dialog, will be executed after the last line of Action logic. To avoid counting this time, enter a 0 for the time in the general tab and define the activity time using the TIME statement in the action logic before the a_Start_Wait clock assignment.
Example:

TO DO: Enter the Action logic for the objects as shown in the above illustration.
1. Create an attribute to track the waiting time called a_Start_Wait (or some other appropriate name).
2. Instead of using resource connections, use the GET or JOINTLYGET statements to capture the resource.
3. On the line preceding the GET or JOINTLYGET statement, enter the following logic: a_ Start_Wait = Clock()
4. On the line following the GET or JOINTLYGET statement, increment the Cost attribute using the INC statement. For example to apply $5.00 per hour of waiting for the resource (dividing the minutes provided by the Clock function by 60 to get the hours), enter the following: INC Cost, (Clock() - a_Start_Wait) / 60 * 5.00
Example:

TO DO: Enter the Action logic for the objects as shown in the above illustration.
[menu_anchor name="Chapter-10-8-4"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Tracking additional costs based on special circumstances.
1. Create a variable or attribute to track the special circumstance from which additional costs will be calculated.
2. Assign a value to the attribute or variable where appropriate.
3. Use the value of the variable or attribute to increment the Cost attribute of the entity to which the additional cost applies, or increment the variable if you are tracking a cost not associated specifically with an entity.
Example: The car wash washes cars, pickups, and large trucks. The model however uses only one entity: the Customer. An attribute called a_Size has been defined with the descriptors: car, pickup, and truck. Each size costs the car wash a different amount of money to wash.

TO DO: Create and assign the attribute Size. In the Wash activity, enter the Action logic shown above.
[menu_anchor name="Chapter-10-9"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Common model statistics are gathered by ProcessModel automatically and reported after the model is simulated (see Chapter 6, Analyzing Output Data). This section covers techniques involved in gathering additional statistics of particular interest through the use of variables and attributes. To learn more about variables and attributes, see Attributes and Variables.
[menu_anchor name="Chapter-10-9-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Counting the total number of entities meeting a special condition.
1. Determine the condition or attribute to be counted.
2. Create a variable of type Integer to use to keep a tally.
3. In the appropriate Action logic, increment or decrement the variable to reflect the condition being counted.
Example: A restaurant has a buffet. The management wants to know how many men, women, and children go through the buffet. An attribute called a_Gender has been defined and assigned one of three descriptors (man, woman, kid) in the arrival Action logic of the Customer entity according to a discrete distribution. Three variables have been defined to count the number for each gender: Children, Men, and Women.
![]()
TO DO: Create the variables and attribute as described above. Enter the Action logic as shown in the above illustration in the properties dialog for the Buffet activity.
To examine the results, look for variable statistics in the General Statistics Report (see General Statistics Report) where you will find the average value of each variable. The total count is reported as the current value of each variable.
[menu_anchor name="Chapter-10-9-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Tracking the time-weighted average number of entities occupying a stage in the process that consists of more than a single activity.
1. Define a variable of type Integer to track the contents.
2. Increment the variable in Action logic when entering the particular processing stage.
3. Decrement the variable in Action logic after leaving the processing stage.
Example: Once a customer leaves a car at the repair shop, it is serviced, cleaned, and readied for the customer to pickup. We want to know the average number of cars between the start of the Service and the end of the Cleaning activities.
![]()
TO DO: Define the variable Serv_Clean_Content as type Integer . Enter the Action logic as depicted in the illustration above.
To examine the results, look for variable statistics in the General Statistics Report (see General Statistics Report) where you will find the average value of the variable. The average value is the average contents of the processing stage being tracked. The change in the contents over time can be viewed by selecting Time Series from the View menu in the Output Module . See Time Series Plots & Histograms.
[menu_anchor name="Chapter-10-9-3"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Tracking the length of time spent in a particular stage of a process.
1. Define an attribute of type Real called a_ Start_Time (or some other appropriate name) to record when each entity starts a process stage.
2. Define a variable of type Real to store the accumulated time called v_ Accum_Time (or some other appropriate name).
3. Define a variable of type Integer to count the number of entities passing through the stage called v_ Entity_Count (or some other appropriate name).
4. Define a variable of type Real to which the average time may be assigned called v_ Avg_Time (or some other appropriate name).
5. When entering the processing stage, enter the following Action logic: a_Start_Time = Clock()
6. When leaving the processing stage, enter the following Action logic: INC v_Accum_Time, Clock() - a_Start_Time INC v_Entity_Count v_Avg_Time = v_Accum_Time / v_Entity_Count
Example: Once a customer leaves a car at the repair shop, it is serviced, cleaned, and readied for customer pickup. We want to know the average time spent from the time it is sent to service to the time it is returned from cleaning.
![]()
TO DO: Create the attribute and variables. Enter the Action logic as shown in the above illustration.
The ending or current value of the Avg_Time variable is reported under variable statistics in the General Statistics Report (see General Statistics Report). You may also want to examine the Time Series graphs on the Avg_Time variable to see how the average time varied during the duration of the simulation run.
[menu_anchor name="Chapter-10-9-4"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Counting the number of times that an activity or other time consuming events fell within a particular range.
1. Create two variables and an attribute (all of type Real) used in tracking the statistic.
2. In the appropriate Action logic, increment or decrement the variable accordingly.
Example: A call service center with 50 operators wants to measure its level of service by tracking the number of calls that are answered within 30 seconds compared with the number of calls that are not. Calls are answered by an automated system and put on hold until they can be answered by an operator. A variable is created to track each number: v_ Above and v_ Below . An attribute called a_ Start_Time is used to track the waiting time.
![]()
TO DO: Create the variables v_ Above and v_ Below and the attribute a_ Start_Time . Enter the Action logic in the storage and activity as shown above. Enter an Input Queue Size of 0 (zero) and a capacity of 50 for the activity. Enter a Move time of 0 (zero) for the routing connection between the storage and activity.
[menu_anchor name="Chapter-10-9-5"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Tracking the number of times a particular resource is used for a particular activity or set of activities.
1. Create a variable used to track the statistic.
2. In the appropriate Action logic, test for the resource being used.
3. Based on the outcome of the test, increment the tracking variable accordingly.
Example: A team leader takes support calls when no other technicians are available. We want to know how many calls the team leader is taking. A variable called Lead_Calls is defined to track the number of calls the team leader takes.
![]()
TO DO: Define the variable Lead_Calls . In the resource connection for the Lead, select the Use as alternate option. Enter the Action logic as shown in the above illustration in the Answer activity.
[menu_anchor name="Chapter-10-9-6"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Create an on-screen clock that will display the time of day and day of week.
1. Create a variable for the hour of the day (v_Hour) and for the day of the week (v_Day).
2. Place both newly created variables in screen (See Display a variable in a user defined position)
3. Place an entity with a single arrival (periodic with an arrival frequency of zero).
4. Have the entity arrive at a location with the following action logic.
Example: For presentation purposes, a display of a 24-hour clock and day of week is critical to help team leaders see the timing of certain events.

Action Logic:
v_Day = 1 While 1 = 1 Do {
Time(1 Hr) Inc v_Hour If v_Hour = 24 Then {
v_Hour = 0 Inc v_Day If v_Day = 8 Then {
v_Day = 1
}
}
}
TO DO: Define the variables V_Hour and V_Day. Create a new entity arriving at a new activity. Set the arrival type to periodic and the arrival frequency to zero. In the action logic at the activity place the action logic provided above.
[menu_anchor name="Chapter-10-9-7"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Show dynamic variables while the simulation runs.
1. Create a variable used to track the statistic.
2. From the Variable dialog, select the Scoreboard check box.
Example: A new statistic is created to show the number completions per day. The output graphs will adequately display the statistics but the dynamic view of the statistic on the screen will aid in developing understanding.

TO DO: Define a variable to collect the desired statistic and place a check in the check box labeled Scoreboard. Place the desired logic in the action tab to manipulate the variable and collect the statistic needed. Run the model and the view the variable on the scoreboard.
[menu_anchor name="Chapter-10-10"] [separator style_type="single|dashed" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]The animation can be manipulated from within the model in two ways: an entity graphic may be changed part-way through the model, and routing lines may be hidden from the view.
[menu_anchor name="Chapter-10-10-1"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]There are two methods of changing the entity graphic during the simulation. Both methods are described below with separate suggested techniques.
1. Change the graphic without effecting output statistics (visual change only).
2. Change the graphic and collect statistics under the new name (visual and statistics).
1. Create each entity graphic that may be needed by placing a separate graphic on the layout with a unique name. Label the first entity placed on the screen #21, the second #22, etc. The count starts with 21 because ProcessModel has 20 built-in graphics. You can label the entities by using the text tool to place text label next to the entity.
2. In the Action logic where the graphic is to be changed, use the NewGraphic( ) statement to assign it the graphic defined in step 1. Use the NewGraphic statement combined with the appropriate graphic number to change the graphic as desired.
Example: A manufacturing line assembles cement trucks. One of the key metrics is total cycle time. However, it is important to the client to see the build-up of the assembly. Different graphics are developed for stages of the assembly process. The change in graphic is shown writing action logic for each graphic change. If 5 entity graphics had been developed and placed in order of creation, then the first entity (for example the frame) would become graphic #21 and the second entity (frame plus the drive train) would become graphic #22. The entity graphic could be changed from the first graphic to the second by placing the following statement in the Action Logic of the activity where the change will take place.

TO DO: Create the entities that may be used (different stages of the assembly buildup) and use the NewGraphic( ) statement to change the graphic in the Action logic as shown above.
1. Create each entity graphic that may be needed by placing a separate graphic on the layout with a unique name.
2. Select the name of the new graphic from the New Nam e drop down in the routing dialog.
Example: Calls arrive into a call center based a predefined pattern. Calls are classified into three categories (Simple, medium and difficult) by percentage routings. It is desirable to track each of the categories separately.

TO DO: Place the entities to be used in the model on the layout. Go to the routing where the graphic will be changed and select the name of the graphic from the New Name drop down.
[menu_anchor name="Chapter-10-10-2"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Making the connection invisible entities so that appear to move without a path connecting the origin and destination of the entity.
Suggested Technique
1. Right-click on the line.
2. Select Format... from the pop-up menu.
3. Change the Color of the line and the arrowheads to the same color as the background.
Example:

Creating a background for the model. Useful in illustrating your model.
1. From the Insert menu select Picture.
2. Locate and select a file form the Insert Graphic dialog. Only use WMF or EMF files for background graphics.
3. Move and size the shape as needed.
[popover title="" title_bg_color="" content="Important Information To Be Aware Of" content_bg_color="" bordercolor="" textcolor="" trigger="hover" placement="top" class="" id=""]
[/popover] Creating a layer for the background graphic is advisable so that model graphics can edited without interference from the background graphic. The layer to the right will be on top during the simulation.

To add, rename or change the order of layers, right-mouse click on existing layer in the lower left corner of the screen.

During presentations it is often desirable to change the speed of animation to skip over periods of time that are uneventful and to slow the simulation to enhance understanding or make specific points.
1. Create an IF-Then statement that checks for time range and then either speeds up or slows down the animation.
Example: At the start of the model run turn the animation off until the simulation reaches 168 hours. At the simulation clock time of 168 hours the simulation speed will be set to 30

TO DO: At the first activity, use an If-Then-Else statement to check the simulation clock. If the time is less than 168 hours, use the Animate statement to set the animation speed to 0 (turns the animation off). Otherwise set the animation speed to 30 (30% of full speed).
[menu_anchor name="Chapter-10-10-5"] [separator style_type="double|dotted" top_margin="0" bottom_margin="40" sep_color="" icon="" width="70%" class="" id=""]Import graphics to be used as entities to enhance the dynamic representation of your model. The files that work best for entities are WMF and EMF. Other file types will work but with some limitations. JPG and GIF file types will animate properly but the static representation of the entity will often be shifted or discolored. BMP files should not be used.
Many free WMF files are available on the internet. Most graphics used in websites are either JPG or GIF which means that you can pull graphics from your company website and use them as animated graphics.
1. Import graphics directly into the palette by right-mouse clicking inside the palette and selecting Add Files.
2. Select the files to import. Multiple files can be selected at the same time by holding down the Ctrl key during selection.
3. Press the Add button to add files to the palette.
4. To make a graphic on the palette an entity, double-click on the graphic. The Shape Properties dialog will appear. Enter a name for the graphic, followed by the word Entity enclosed in parenthesis as shown above.

When shapes with this designation are placed on the layout the entity dialog will appear. To create a Storage or Resource, place those words in parentheses after the name of the shape.