ProModel User Guide

718
ProModel 2011 User Guide

Transcript of ProModel User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 1/715

ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 2/715

Disclaimer 

The information in this guide isprovided by ProModelCorporation to document ProModel. The contents of this manual are

subject to change without noticeand does notrepresenta commitment on the part of ProModelCorporation. The software

described in this guide isapplied under a license agreement and may be copied only under the termsof the license agree-

ment. No part of this guide maybe reproduced, transmitted, or distributed by any means, electronic or mechanical, for pur-

poses other than the owner’s personaluse without express written permission from ProModel Corporation.

Copyright Information

© 6/2/2011 ProModelCorporation

 All rights reserved

Printed in the United Statesof America

ProModeland SimRunner are registered trademarks of ProModel Corporation.

Text indicator graphics Copyright New Vision Technologies Inc.

Microsoft isa registered trademark and Windows, Excel, and ActiveX are trademarks of Microsoft Corporation.

Stat::Fit isa trademark of Geer Mountain Corporation.

IBM isa registered trademark of InternationalBusiness MachinesCorporation.

Netware and Novell are a registered trademarks of Novell, Inc.

 AutoCAD is a registered trademar k of Autodesk, Inc.

6/2/2011

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 3/715

Table of Contents

Table of Contents i

Introduction 1 About the User Guide 1Symbols and Notation 3

Keyboard 3Text 3Logic 3

Product Support 3Modeling Services 4Reporting Suggestions 5

Welcome to ProModel 6

Using ProModel 6Building Models 7Running Models 11Creating Run-Time Models 12Trace Window 12Location Information Windows 13Viewing Output 14

Installation and Registration 18General Setup Information 18

Har dware Requirements 18Installation Types 18Standard Installation Procedure 19

Network Installation Procedures 24Network Client Installation Procedure 24Network License Server Setup 29

Custom Installation Procedures 30Licensing ProModel 32

Licensing for a Network Installation 36Transferring/Terminating Your Software Key 36Checking for Pr oModel Updates 36Software License Key FAQ 37

Planning the Model 38Stepsfor Doing Simulation 38

Introduction 38GeneralProcedure 38Step1: Planning the Study 39Step 2: Defining the System 44Step 3: Building the Model 49Step 4: Conducting Experiments 51Step 5: Analyzing the Output 59Step 6: Repor ting the Results 59Pitfalls in Simulation 60

©ProModelCorporation

i

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 4/715

Summary 60Building a Model 60

Modeling Scenario 61Phased Modeling Approach 62Phase 1: Basic Model Elements 62Phase 2: Adding Resources & Variability 68Phase 3: Additional Operations 72

Running a Model 75Simulation Options 75

 Animation Screen 76Options Menu 77Information Menu 78

Viewing Model Statistics & Reports 79

Modeling Environment 81Menu Bar 81File Menu 82

File Management 82Model Merging 85View/Print Model Text 87ModelPackaging/Data Protection 93

Edit Menu 95Editing Tables 96Editing Process Records 97Editing Notes Windows 98Editing Logic Windows 99Editing Background Graphics 100Editing & Moving Graphics 102

View Menu 105Switches 105

Toolbars 106Settings 106Views 107Zoom Feature 110Layout Settings 111Edit Tables 116Commands 117

Window Menu 118Help Menu 118Toolbars 119Right-Click Menu 122

Building the Model: General Elements 124

Build Menu 124Locations 125

Location Downtimes 141Rules Dialog Box 149

Entities 152EntitiesEditor 153Defining Entities 154

ii ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 5/715

Entity Graphic Dimensions 155Defining Multiple Entity Graphics 156Preemptive Entities 157

Path Networks 158Path Networks Editor 159

 A TypicalPath Network 162Path Segment Edit Table 162

 Automatic Time and Distance Calculation 164Interfaces Edit Table 165Mapping Edit Table 165Nodes Edit Table 170Pre-translation check for Path Networks and Automatic Mapping 170

Resources 171Typical Use of Resources 171Resources Editor 172Static Resources 176

Dynamic Resources 177Multiple Resource Graphics 178Multi-Unit Resources vs. Multiple Single-Unit Resources 179Resource Downtimes 179Resource Priorities and Preemption 182Resource Shift Downtime Priorities 183Resource Shift Carryover  183Resource Preemption Matrix 183Resource Specifications Dialog Box 185Resource Search Routines 187Node Logic Editor 189Node LogicExample 190Resource Points 191

Processing 193Using the Processing Editor 194Defining EntityProcessing 195Processing Editor  196Process Edit Table 197Using the “ALL” Entity Type 200Routing Edit Table 202Processing Tools 208

 Arr ivals 210 Arrivals Editor 211 Arr ivals Edit Table 212Defining Arrivals 213Independent Arrivals 214

 Arrival Logic 216Shifts & Br eaks 217Calendar Editor 218

 Adding and Editing Time Off, Work and Break Time 222Shift Assignments 224Preemptions to Off-Shift or Break Logic 231Shift Downtime Principles 232

GeneralInformation 236

©ProModelCorporation

iii

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 6/715

General Information Dialog Box 237Cost 241

Cost Dialog Box 242Building a Model with Costing 245Preemption/Downtime 245Join/Load 246Combine/Group 246Special Cost Handling 246Costing Output Statistics 247Enable or Disable Costing 248

Tanks 248The Tank Submodel 248Basic Concepts 250Tank Logic Builder 252

Pre-defined Tank Subroutines 254Tank_Fill 254

Tank_Empty 255Tank_Transfer 256Tank_TransferUpTo 258Tank _TransferDownTo 259Tank_SetLevel 260Tank_Inc 260Tank_Dec 261Tank_ RiseTrigger 262Tank_FallTrigger 263Tank_Cap 263Tank _FreeCap 264Tank_ DoOperation 264Tank_GoDown 265

Tank_ GoDownSched 266Tank_DoPrep 267Tank_SetState 268Tank_SelectOutput 268Tank_SelectInput 270Tank_UpdateStats 271Tank_ Rate 272Pre-defined Data Elements 273Defining Tank Control Subroutines 275Examples of Tank Control Logic 275

Background Graphics 284Background Graphics Editor Modes 285Background Gr aphics Editor 287

Building the Model: Advanced Elements 294 Attributes 294

 Attribute Types 295Memor y Allocation for Attributes 296

 Attributes vs. Local Variables 296Cloning Attributes 296

 Attribute Edit Table 297

iv ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 7/715

Example of Attributes in Logic 298 Attributes and the JOIN or LOAD PERM Statement 299 Attributes and the GROUP/UNGROUP Statements 300 Attributes and the LOAD/UNLOAD Statements 301 Attributes and the COMBINE Statement 302

Variables 304Variable Edit Table 304Variable Layout 306Editing a Variable’s Icon 307Local Variables 308

 Arrays 310Example Arrays 311

 Arrays Edit Table 312Initializing Arrays 313Import Data into Arrays 314Export Arrays to Spreadsheets 318

Using Arrays 319Noteson Arrays 319Macros 319

Macro Editor 320Scenario Parameters 322Scenario Parameter Example 324Resource Grouping 325

Subr outines 326Subroutine Editor 327Subroutine Format 328Subroutine Example 329Subroutines Edit Table 330Subroutine Parameters 330

Subroutine Logic 331Interactive Subr outines 332External Subroutines 333Subroutines vs. Macros 333

 Arrival Cycles 333 Arrival Cycles Edit Table 334 Arrival Cycles Example 335Cumulative Cycle Tables 337

 Arrival Cycles by Quantity 338Table Functions 340

Table Functions Editor 341Table Function Edit Table 343

User Defined Distributions 344

User Distribution Edit Table 345Discrete Distributions 346Continuous Distributions 348

External Files 349External Files Editor 350File Types 351

Streams 355Streams Edit Table 356

©ProModelCorporation

v

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 8/715

Using Random Number Streams 357Stream Example 358

Material Handling Systems 359Crane Systems 359Conveyors 370

 Automated Guided Vehicle Systems 374Manual Material Handling Systems 375Industrial Vehicles 375

 Automated Storage/Retr ievalSystems 376Modeling Tips 377

Using Entity Attributes 377Customizing Graphics 379Batching & Unbatching Entities 380Modeling Priorities 384Displaying StatisticsOn Screen 385Creating Pull Systems 386

Making Assemblies 387Building the Logic 389

Logic Builder  389Using the Logic Builder  390

Operation Logic 397Preemption Pr ocess Logic 399

Possible Effects of Delayed Preemption 400Functions for Defining Logic in a Preemption Process 400Preemption Process Example 401

Routing Move Logic 401Move-Related Statements 403Related Logic Statements 403Statement Processing 404

Shift & Break Logic 404Functions and Statements 405

Using Auxiliar y Tools 406ToolsMenu 406Expression Search 407

Expression Search Sub-Menu Choices 407Find Expression 408Replace Expression 409Important Notes Regarding Expression Searches 410Local Find and Replace 411

Graphic Editor  411Overview 412

File Menu 413Edit Menu 415Graphics Menu 416Options Menu 422Window Menu 425Library Edit Buttons 425Manipulating Graphics 426

vi ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 9/715

Create New Graphics and Libraries 426Naming a Graphic 427Graphic Tools Button Bar 427Editing a Library Graphic 437

Options 439Directories 440

 AutoSaving Files 441Customize 441Power Tools 443

ProClare 444Shift Library 445ProActiveX 445

Running the Model 449Simulation Menu 449Simulation Options 450

GeneralOptions & Settings 450

Output Reporting Options 454Output viewer(s) to launch 456Running a Specific Replication 456Customized Reporting 456

Scenarios 457Running the Simulation 458Run-Time Menus & Controls 459

Run-Time File Menu 460Run-Time Simulation Menu 461Run-Time Options Menu 461Debug Option 462Trace Options 467

 Animation Options 469

Run-Time Information Menu 470Location Status Legend 470Dynamic Plots 471BasicOperation 471

 Advanced Operation 475Run-Time Window Menu 476Run-Time Interact Menu 476Run-Time Help Menu 476Run-Time Controls 477Run-Time Right-Click Menu 479

SimRunner  479SimRunner Benefits 480Starting a New Project 480Stage one: Pre-Analysis 481Stage two: Simulation Optimization 481

Reports and Graphs 482Output Viewer  482Six Sigma Analysis with Minitab 483

Simulation Properties - Selecting an Output Viewer 484

©ProModelCorporation

vii

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 10/715

 Accessing Minitab 484Six Sigma Configuration Dialog 485

 Add Analysis Dialog 487Viewing Results in Minitab 487Viewing Data in Minitab 488

Language Elements and Expressions 490Language Elements 490Names 490Keywords 490Numbers 491Character Strings 493Operators 493

Mathematical Operators 494Relational Operators 494Comparison Oper ators 494Operator Precedence 494

Expressions 495Numeric Expressions 495Boolean Expressions 496Time Expressions 497String Expressions 498Operator Precedence 499

Routing Rules 501 Alternate 502Backup 503Continue 504Dependent 506Empty 507

First Available 508Join 509Load 510Longest Unoccupied 511Most Available 512Probability 513Random 514Send 515Turn 516UntilFull 517User Condition 518

Logic Elements 519

Functions 519System Functions 519General Functions 519

Statements 520General Action and Control Statements 520Resource- and Entity-Related Operation Statements 520Statement Blocks 520

Distribution Functions 521

viii ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 11/715

General Components 521Priorities 522

Statements and Functions 523

 Accum 524 Activate 525 Animate 526 ArrayDims() 527 ArrayDimSize() 528 Assignment Statement 529Begin 530Break 531BreakBlk 532CalDay() 533CalDOM() 534CalHour() 535CalMin() 536

CalMonth() 537CalYear() 538Cap() 539Char() 540Clock() 541Close 542Combine 543Comments 544Contents() 545Create 546Debug 547Dec 548Display 549

Do...Until 550Do...While 551Down 552DownQty() 553DTDelay() 554DTLeft() 555DynPlot() 556End 557Ent() 558Entity() 559Entries() 560Exp() 561ForLocation() 562Format() 563ForResource() 564Free 565Fr eeCap() 566FreeUnits() 567Get 568GetCost() 570

©ProModelCorporation

ix

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 12/715

GetReplicationNum() 571GetResRate() 572Goto 573Graphic 574Group 575GroupQty() 577If...Then...Else 578Inc 579IncEntCost 580IncLocCost 581IncResCost 582Int 583Join 584Jointly Get 585Last() 586Ln() 587

Load 588Loc() 590LocState() 591Location() 592Log 593Map Arr 594Match 595Move 596Move For 598Move On 599Move With 600Next() 601ObjectID() 602

Order 603OwnedResource() 604Pause 605Per centOp() 606PercentUtil() 607Preemptor() 608Priority 609Prompt 610Rand() 612Read 613Real 614Real() 615Rename 616

Report 617Res() 618Reset 619Reset Stats 620Resource() 621ResourceUnit() 622ResQty() 623Return 624

x ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 13/715

Round() 625Route 626Send 627SetRate 628Skip 629Sound 630Split As 631Sqrt() 633Stop 634ThreadNum() 635TimeLeft() 636TimesUsed() 637Trace 638Trunc() 639Ungroup 640Units() 641

Unload 642Use 644Variable() 646View 647Wait 648Wait Until 649War mup 650While...Do 651Write 652WriteLine 653Xsub() 654Xwrite 656

Appendix 657

Expression and Statement Groups 657Fields Evaluated Only at Translation 660Fields Evaluated During Simulation 661

Pr ogram Defaults 663Default Values 664

 ActiveX Objects 666Suggested readings 666

Glossary 667

Bibliography 672

Index 673

©ProModelCorporation

xi

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 14/715

Introduction

Thischapter will introduce you to the user guide and provide information regarding assumptions this guide makes. Youmay also find information on support and consulting services in this chapter.

About the User Guide

The ProModelUser Guide isdesigned as a reference to guide you through the process of building, running, and viewing

the results of simulation models. The guide contains detailed information on the use of features and capabilities found

within ProModeland servesas a compliment to the product training.

Chapter 1Getting Started

Welcomesyou to ProModeland provides information on getting started with the model building process.

Chapter 2Installation and Registration

Provides step-by-step instructions on how to installProModel.

Chapter 3Planning the Model

Introduces you to the theory behind simulation modeling and gives an overview of model building procedure. This chapter 

outlines six stepsto help you plan and create a successful, valid model. It then provides an example scenario, which

designs a model from start to finish.

Chapter 4Modeling Environment

Familiarizes your with the ProModelmodeling environment. You will learn how to use manyof the menus and windows

found in ProModel.

Chapter 5Building the Model: general elements

Brings you face to face with basicmodeling components. Discussion revolves around the nuances of creating and working

with locations, entities, path networks, resources, processing records, arrivals, shifts, costs, background graphics, and

more.

Chapter 6Building the Model: advanced elements

 Advanced elements ensure that the models you create reflect the exact behavior of your system. Contributing elements

include attributes, variables, arrays, spreadsheets, macros, scenario parameters, subroutines, arrivalcycles, table func-

tions, user-defined distributions, external files, and streams.

©ProModelCorporation

Introduction 1

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 15/715

2 ProModel 2011 User Guide

Chapter 7Building the Logic

 Applying intelligence and decision-making capabilitiesto your models makes them true to life. The logicbuilder helps you

create and implement logic for operations, routings, shifts, breaks, and more.

Chapter 8Using Auxiliary Tools

 Auxiliary tools allow you to work with many aspectsof your model. You may create and modify graphics, search for 

expressions, or examine which statistical distributions best suit your modeling needs.

Chapter 9Running the Model

Running the model isthe most exciting part of the modeling process. Thischapter discusses the various conditions under 

whichyou mayrun a modeland how to ensure that the modelcontainsno logicalerrors.

Chapter 10Reports and Graphs

With the simulation complete, you are readyto examine the results from the model. Options available include reports,

graphs, spreadsheets, and customized output templates.

Chapter 11Language Elements and Expressions

Describes the basics of the language used to define model objects and logic, as well as expressions and the role theyplay

in creating models. Discussion focuses on names, reserved words, numbers, strings, operators, and basicsyntactical

structure, as well as operator precedence and numeric, Boolean, time, and string expressions.

Chapter 12Routing Rules

Provides syntax and examples for the rules you will use to route between locations in the model.

Chapter 13Logic Elements

Introduces the different typesof functionsand statementsavailable to use in building logic for your model and identifies

where you mayusethem.

Chapter 14

Statements and Functions

Provides syntax and examplesfor the statementsand functionsyou will use to apply intelligence and decision-making

capabilitiesto your model.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 16/715

 Appendix

Presents a categorized list of all expressions, statements, and functionswith a table identifying which fields evaluate at

translation and which evaluate continuously.

Glossary

Contains definitionsand descriptions for manyof the termsand concepts common to simulation and modeling.

Bibliography

Referenced materials and suggested readings.

Symbols and Notation

To better help you navigate this text, please review the following symbols and conventions.

Keyboard

The namesof keys are displayed in capital letters. For example, ESC refersto the Escape key and CTRL refers to the

Controlkey.

Keys are frequently specified in combinations or in a sequence of keystrokes. For example, CTRL + L means to hold down

the CTRL key whilepressing L. When keycommands are set off bycommas(e.g., ALT + N, R), pressand releaseeach of 

these keys(or key combinations) in the order listed. The term “arrow keys” referscollectivelyto theñ,ò,ï, andðcur-

sor keys.

Text

Specific text you are asked to type is shown in boldtype. For example, if you are directedto type cd pmod, you would type

the lowercase letters“ cd” followed by a space and the letters“pmod.”

Place holders for thingssuch as file names and directories are shown in italics. For example, if you are directed to type file-

name.mod , enter the name of the fileyou wishto use (e.g., model_1.mod).

Logic

 AllProModel reserved keywords are in uppercase.

Syntax example:

IF Start_Time = 10 THEN INC Var1

Product Support

Technical support isavailable to all licensed ProModelusers with current maintenance and support agreements. Supportrepresentatives are glad to answer specific questions you may have and offer direction in solving specific modeling chal-

lenges you encounter.

©ProModelCorporation

Introduction 3

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 17/715

4 ProModel 2011 User Guide

Technical support 

Technical support isavailable via: telephone, fax, ftp, and email. When you contact technical support, please be prepared

to provide your user profile and a description of any problemsyou experience.

User Profile

Your name and company.

The license # or serial# found on your securitykey or ProModelCD.

Hardware make and configuration.

Network information (if applicable).

Version number of Windowsand ProModel.

Problem Description

Brief description of the problem you are experiencing.

What you were doing when theproblem occurred.

The exact wording of anymessagesthat appeared on your screen.

Telephone (888) PROMODEL

Speak to a technical support engineer and resolve the problem over the phone. Our support linesare open Monday

through Friday from6:00 AM to 6:00 PM MST. The technical support number is (888) 776-6633.

Fax (801) 226-6046 

Send a fax of the listing created when you select Print Text from the File menu along with your user profileand a descrip-

tion of the problem you encountered.

FTP 

For file transfers to and from ProModel Corporation via file transfer protocol, contact technical support

Email [email protected]

When you contact technical support via email, send your user profile including a description of the problem you encoun-

tered.

Modeling Services

If you find yourself in need of extra help or specificexpertise to complete your simulation project, let us help you. ProModel

Corporation Modeling Services will meet all of your needs with fast, accurate results at competitive rates.

Whether simple or complex, partialor complete, ProModelCorporation Modeling Servicescan create any model you

require. With our vast experience in producing simulation modelsfor manydiverse applications, we are in a unique posi-

tion to evaluate your system and isolate specificimprovements. We work closely with you during the development proc-

ess to ensure that the modelwe create is completeand precise.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 18/715

With each simulation ProModelCorporation provides a complete, comprehensive analysis of your system. We document

conclusions and results derived from the project and present you with statistics suitable for company presentations and

briefings. You may even present a limited version of the model which allows repeated executionsand minor revision

capabilities.

For more information on modeling services, please contact:

Phone (801) 223-4600Fax (801) 226-6046

Reporting Suggestions

It isour goalto make ProModelthe ultimate manufacturing simulation tool. To do this, we rely on your input. Please feel

free to submitcomments and ideas on how we mayimprove the ProModelsoftware and documentation.

Send us your comments

ProModel Product Team

ProModel Corporation556 E. Technology Ave

Orem, UT 84097

Phone (801) 223-4600

Fax (801) 226-6046

[email protected]

©ProModelCorporation

Introduction 5

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 19/715

Welcome to ProModel

ProModelis a powerful, Windows-based simulation toolfor simulating and analyzing production systems of all typesandsizes. ProModelprovides the perfect combination of ease-of-use and complete flexibility and power for modeling nearly

any situation, and itsrealistic animation capabilities makes simulation come to life.

ProModelprovidesengineers and managers the opportunity to test new ideasfor system design or improvement before

committing the time and resources necessary to build or alter the actualsystem. ProModel focuses on issues such as

resource utilization, production capacity, productivity, and inventory levels. By modeling the important elements of a pro-

duction system such as resource utilization, system capacity, and production schedules, you can experiment with different

operating strategies and designs to achieve the best results.

 As a discrete event simulator, ProModel is intended primarily for modeling discrete part manufacturing systems, although

process industries can be modeled by converting bulk material into discrete units such as gallons or barrels. In addition,

ProModelis designed to model systems where system eventsoccur mainly at definite pointsin time. Time resolution iscon-

trollable and ranges from .01 hoursto .00001 seconds.

Typicalapplications for using ProModel include:

l Assembly lines

l Job Shops

l Transfer lines

l JIT and KANBAN systems

l Flexible Manufacturing systems

l Supply chain logistics

Use of ProModelrequires only a brief orientation and virtuallyno programming skills. With ProModel's convenient mod-

eling constructs and graphical user interface, model building isquick and easy. All you do isdefine how your particular sys-

tem operates, mostly through part flow and operation logic. Automaticerror and consistency checking help ensure that

each model iscomplete prior to simulation. During simulation, an animated representation of the system appears on the

screen. After the simulation, performance measures such as resource utilization, productivityand inventory levelsare tab-

ulated and may be graphed for evaluation

Using ProModel

ProModelviews a production system as an arrangement of processing locations, such as machinesor work stations,

through which parts( or entities) are processed according to some processing logic. A system may also include paths,

such as aisle-ways for movement, as well as supporting resources, such as operators and material handling equipment

used in the processing and movement of parts.

The example below depicts a typical manufacturing workcellwith six processing locations( Receiving, NC_301L, NC_ 

302L, Degrease, Inspect, Rework), two entity types( Pallets and Blanks), two operators, and one transporting device

(forklift). Modelssuch as this are developed rapidly and easily using ProModel's graphical user interface and point-and-

click approach to modeling.

©ProModelCorporation

Welcome to ProModel 6

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 20/715

7 ProModel 2011 User Guide

Building Models

Modelsare created by completing the necessary modules selected from the Build menu shown below. Each module con-

sists of various edit tables and dialog boxes used to supply model information. A layout window also appears with graph-

ical tools for placing locations, path networksand other modeling elements.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 21/715

Modules may be completed in anyorder and with any amount of switching back and forth between modules. However,

with certain exceptions, it isr ecommended that modules be completed in the general order in which theyappear in the

menu. For example, it isusuallybest to identify and place locationsin a model, and define the entities to be processed at

those locations, before actually defining processing logic. This isgenerally accepted since processing logic describesthe

flow of entities from location to location and the operations performed on, for, or in behalf of entities at each location.

Edit Tables

Edit tables, such as the Locations edit table, are used extensively throughout ProModelfor defining model elements. Edit

tables provide direct accessto model data without wading though several levelsof dialog boxes. Each table consists of rec-ords, which consist of fields describing some aspect of the element. Manyof these fields have heading buttons you can

click (or select and press F2) to open a dialog boxfor further definition of the particular element.

©ProModelCorporation

Welcome to ProModel 8

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 22/715

9 ProModel 2011 User Guide

Dialog Boxes

Dialog boxes are used throughout ProModelfor selecting options. The Decision Rules dialog boxshown below contains

additional information regarding a location.

Logic Builder 

The Logic Builder in ProModelprovidesa quickand powerful way to create and insert valid statements and expressions

in logic windowsor fields. It takes you through the process of creating statementsor expressions, as well as providing

point-and-click accessto every element defined in your model. The Logic Builder handles the syntax for every statement

and function, allowing you to define logic by simply filling in the blanks.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 23/715

To accessthe Logic Builder, click the right mouse button in anyedit boxwhich acceptsan expression or anywhere inside

an open logic window. You may also click the Build button on the logic window's toolbar.

Model Merging and Submodels

 Another extremely useful feature in ProModel is the ability to merge two or more models into one larger model. This sup-

portsthe concept of modular model building, where modelsare created and tested in modules, and then joined together 

to produce a finalmodel.

The use of sub-models further allows you to build common model elements such as work cells and place them repeatedly

in a model. The elements of each sub-model (i.e., locations, entities, resources, etc.) may all be given a common prefix or 

suffix to differentiate them from the same elements of another sub-model.

©ProModelCorporation

Welco me t o Pro Mo del 10

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 24/715

11 ProModel 2011 User Guide

For more information on merging models, see Model Merging on page 85.

On-Line Help

Regardlessof where you are in the model building process, the on-line help system isavailable to provide context specific

definitions and instructions. The help system can even run in the background, allowing instant accessto help whenever 

you need it.

Like allWindows applications, you can locatethe help you need quicklyusing the standard help tools.

Running Models

Completed modelsare run using the Simulation menu. Model data isautomatically checked for consistency and com-

pleteness before each simulation begins.

 As shown in the dialog below, ProModel allows you to specify a run length, warm- up period, number of replications, and

other special options before running a simulation. In addition, you may run the modelswith or without animation. For 

more information on running models, see Running theModelon page 449.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 25/715

Creating Run-Time Models

One of the mostpowerfulfeatures inProModelisthe ability to create models that maybe run byothers who do notown

the full software. PROMODEL allowsyou to installthe software on anymachine to run a model. However, without the

security key, the user haslimited ability to build or make changes to a model.

You may wish to develop run-time modelsto allow the user to perform "what-if" analyses with the models. PROMODEL

encourages you to develop demonstration models, and allows you to distribute them freely. These modelscan be run by

installing ProModelfrom the CD-Rom onto a computer without a security key.

Trace Window

Several tools are available to help you verifyand validate your models. During model execution you may trace the activity

of the simulation eventsto see exactly what is happening in the model. The examplebelow shows a brief portion of a trace

window.

©ProModelCorporation

Welco me t o Pro Mo del 12

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 26/715

13 ProModel 2011 User Guide

Location Information Windows

In addition to trace files, you maytrack the activity at any location through a Location Information window. Thisfeature

gives up-to-the-minute information about a selected location, such as current contents, total entries, and operational

state (i.e., idle, blocked, or in operation).

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 27/715

Viewing Output

The output generator gathers statistics on each location, entity, resource, path network, and variable in the system. You

may, however, turn off reporting capability for any element you do not wish to include. The default level of statistics isat the

summarylevel (i.e., average values, % values, and finalvalues), although detailed history plotscan be gathered on suchthingsas utilization, queue fluctuations, and variable values. For more information about viewing the results of a sim-

ulation, see Reportsand Graphs on page 482.

Simulation results maybe presented in either tabular or graphicformat, including histograms, pie charts, plots and bar 

graphs. Multiple output results can even be compared on the same chart.

The example below showsa portion of a tabular report for a model.

Graphical Analysis

In addition to the general report shown above, almost all report elements of a model may be displayed graphically. Below

isan example of a Single Capacity Locations States Chart.

©ProModelCorporation

Welco me t o Pro Mo del 14

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 28/715

15 ProModel 2011 User Guide

Utilization Graphs

Quickly generate utilization graphs of various typessuch as the State Chart shown below.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 29/715

Timeplots

In addition to Category and State Charts, Timeplot Charts, which show location contents as well as variable and log values

as theychange over time, can be created.

©ProModelCorporation

Welco me t o Pro Mo del 16

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 30/715

17 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 31/715

Installation and Registration

General Setup InformationThis section describes how to installand register ProModel.

Hardware Requirements

Minimum

Intel Pentium 4 - 3.0 GHz/AMD Sempron 2.3 GHzor better 

1GBRAM

2 GBFree DiskSpace

64 MB RAM/Shared RAM Video Card

SVGA Monitor 

CD ROMMouse

Windows XP, Vista

Recommended 

Intel Core i7/AMD Phenom II or better 

8GBRAM

10 GBFree DiskSpace

512 MB Video Card or SharedRAM

DVI\HDMI Monitor 

DVD ROM

Internet access

Windows 7 (64 bit)

Installation Types

Standard 

Requires a Serial Number/License Keyor a Hardware Key.

Network 

Requires a License Server .

Technical Support

If you encounter problems during installation, please call the Technical Support Team at (888) PRO-

MODEL between 6:00 AM and 6:00 PM MST, Monday through Friday. We will be glad to help you get up and

running.

©ProModelCorporation

Installation and Registration 18

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 32/715

19 ProModel 2011 User Guide

Standard Installation Procedure

1. Start Windows.2. Insert the CD-ROM or download the setup file from the Solutions Cafe. Run the installation by selecting Install

from the CD splash screen or double-clicking on the ProModelProfessional Setup.exe file.

Please note

If th e Setup Program did not open automatically, select Run... from the Windows Start menu. Type x:\- 

install.exe (where x is the CD-ROM drive letter) and press ENTER. The CD splash screen will appear. Then

select Install.

3. If anyprerequisite componentsare neededthe installation will install these for you. Theremay be a need to

restart the machine. The installation will pickup where it left off every time.

4. The ProModelSetup will begin when you open the Welcome dialog box. Click Next to proceed with the instal-

lation.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 33/715

5. Review the License Agreement. If you wish to accept the agreement and continue with the installation, select the

button to accept the agreement, and then click Next.

©ProModelCorporation

Installation and Registration 20

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 34/715

21 ProModel 2011 User Guide

6. On the nextdialog box,select Standard option and click Next. (The network option will be coveredin thenext

section. See Network Installation Procedures on page 24 for detailsabout the Network installation.)

7. On the nextdialog box,select the Serial Number option if you are using a Serial Number to license ProModel.

Enter your Serial Number in the text field. Select the Hardware Keyoption if you are using a Hardware Key.

Enter the number printed on your Hardware Keyin the text field. ClickNext.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 35/715

8. From thedialog box that appears, choosethe setup type that best suitsyour needs. The Typical option includes

most of the application options that a typical user will need. The Custom option will route you to a dialog box

where you can optionally select featuresthat are not required bythe application to run. These options can be

modified later from the Add/Remove Programs and Features optionsinside the Control Panel. See Custom

Installation Procedures on page 30for more information about the Custom setup option. ClickNext.

©ProModelCorporation

Installation and Registration 22

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 36/715

23 ProModel 2011 User Guide

9. The Setup program isnow ready to installProModel on your computer. If you wish to make changesto the

options you have previouslyselected, click the Back button to return to anypoint in the installation process. Other-

wise, click Install to allow the Setup program to install ProModel.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 37/715

10. Select Finish. When the installation iscomplete, run ProModelfrom the WindowsStart menu. Upon running Pro-

Model for the first time, you will be prompted to license ProModel. For instructions on licensing ProModel, see

Licensing ProModelon page 32.

Network Installation Procedures

Overview

In a multi-user environment, license tracking with multiple keysis difficult. To combat this, ProModelCorporation offers a

network version of ProModelthat allows a single machine to controllicense usage (via a network connection) for several

users. To use this method of license tracking, you must install a network version of ProModel. The network version of Pro-

Model includesa hardware security key and the license manager software you will use to controllicense usage at your 

site.

When you install and run the network version of ProModel, the workstation searches your network for a license key

server, rather than checking its own USB port for a securitykey. Once it locates the license key server, the workstation

asksthe license manager software (running on the key server) if a license isavailable. If a license isavailable, the license

manager software will assign a license to the workstation. When you exit ProModel, the license you used becomesavail-

able to another user.

The license server consists of the securitykey that plugs into the license server’s USB port, and the license manager soft-

ware. When installed, the license server responds to ProModellicense requests and allows workstations to run either a full

version (if sufficient licenses are available) or a limited run-time version. The securityserver can run on WindowsXP, Vista

or 7 and WindowsServer 2008 and listensfor incoming license requests over anyof the following network protocols: IPX,

TCP/IP, and NetBEUI. If the security server is not functioning, ProModelwillstart as a limited run-time version.

Check the support web page for periodic updatesto the installation information, software configuration, and the license

server software for ProModel.

Network Client Installation Procedure

1. Start Windows.

2. Insert theCD-ROM or downloadthe setupfile from the Solutions Cafe. Run the installation byselecting the CD

splash screen or double-clicking on the ProModelProfessional Setup.exe file.

Please note

If the Setup Program did not open automatically, select Run... from the Windows Start menu. Type

 x:\install.exe (where x is the CD-ROM drive letter) and press ENTER. The CD Splash screen will 

appear. Then select Install.

©ProModelCorporation

Installation and Registration 24

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 38/715

25 ProModel 2011 User Guide

3. If anyPrerequisite Components are needed the Installation will install these for you. To install components, click

Next. There maybe a need to restartthe machine.The Installation willpickup where itleft off everytime a

reboot needs to occur.

4. Click Next to proceed with the installation.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 39/715

5. Review the License Agreement. If you wish to accept the agreement and continue with the installation, select the

option, "I accept the termsin the license agreement" and click Next.

©ProModelCorporation

Installation and Registration 26

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 40/715

27 ProModel 2011 User Guide

6. From theInstallation Type dialog box, select the Network License option. ClickNext.

7. Enter the Hardware Key Number associated with your Network License. ClickNext.

8. From the dialog box that appears, enter the IP addressof the license server in the text field only if your license

server is on a different subnet.

9. From thedialog box that appears, choosethe setuptype that best suitsyour needs. The Typical option includes

most of the application options that a typical user willneed. The Custom option will route you to a dialog where

you can optionallyselect featuresthat are not required by the application to run. These options can be modified

later from the Add/Remove Programs and Features optionsinside the Control Panel. ClickNext.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 41/715

10. The Setup programis now ready to install ProModelon your computer. If you wishto make changesto the

optionsyou have previouslyselected, click the Back button to return to anypoint in the installation you wish. Other-

wise, click Install to allow the Setup program to install ProModel.

©ProModelCorporation

Installation and Registration 28

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 42/715

29 ProModel 2011 User Guide

11. Select Finish. When you have completed the installation, you can run ProModelfrom the WindowsStart menu.

Upon running ProModelit will check your network for an available network license.

Network License Server Setup

Included on the CD-ROM isthe HASP Driver and HASP License Manager Setup. Once these are installed, insert the Net-

workUSB Key in an open USBPort on theLicense Server.

Installthe driver from the CD_ROM (CDDrive:\License Server Setup\HASP Driver\HASPUserSetup.exe)

Installthe License Manager from the CD-ROM (CDDrive:\License Server Setup\HASP License Manager\Imsetup.exe)

Setup License Server Manually 

 After successfully running the setup for the license server, if you chose to manuallyinstall the device driver for the security

key and launch the license manager software, follow the stepsbelow.

1. Install the Device Driver:

2. Open a DOS box and run HINSTALL -i from the directory to which you installed the license server.

3. After you receive a confirmation that the driver installed successfully, reboot the workstation

4. Start the License Manager Software:

From the directory to which you installed the license server, run NHSRVW32.EXE. A window will appear and show the

network protocols to which the license manager will listen for license requests.

Please note

You need to install the device driver only once. However, you must launch the license manager program

each time you reboot th e key server. To automatically start the license manager each time you reboot th e

system, create and place an icon for NHSRVW32.EXE in the workstation’s startup folder.

Find a License Key Server on a Routed Network 

In order for a workstation to run the network version of ProModelproperly, the workstation must check out a license from

a license server. To make a license request, theworkstation sendsa broadcast message outon the networkand awaits a

response from the license server. If the license server and the workstation running ProModelare on the same sub netof 

a routed network(or on the same network of a non-routed network), thelicense server receivesthe request and

responds. Due to thenature of routed networks,if thelicense server andworkstation running ProModelare noton the

same sub net of a routed network, the key server will not receive the license request broadcast.

To resolve this problem, the workstation must send a license request directlyto the computer on the network set up as

the license server. To identify which computer on the network isthe license server, you must create and store a text file

called NETHASP.INI in the directory to which you installed ProModel on the workstation or file server.

For TCPIP-based networksthe NETHASP.INI file must contain the following lines

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 43/715

[NH_COMMON]

NH_TCPIP=Enabled;

[NH_TCPIP]

NH_TCPIP_METHOD=TCP

NH_SERVER_ADDR=<Enter the license server’s IP addresshere>

Please note

If you followed step 8 in the network installation instructions for ProModel , the NETHASP.INI file is gen- 

erated automatically.

Custom Installation Procedures

Selecting the Custom option inside the Setup Type dialog allows you to make decisions to install or not install certain fea-

turesof the application.

1. Select the Custom option and then Next to continue.

2. Select the featuresyou would like to include or exclude from the installation by selecting the arrows next to the

desired feature. Select all desired options, then click Next to continue.

©ProModelCorporation

Installation and Registration 30

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 44/715

31 ProModel 2011 User Guide

3. The Setup program isnow ready to installProModel on your computer. If you wish to make changesto the

options you have previously selected, click the Back button to return to anypoint in the installation. Otherwise,

click Install to allow the Setup program to install ProModel.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 45/715

4. Select Finish. When you have completed the installation, you can run ProModelfrom the Windows Start menu.

Upon running ProModel for the first time, you will be prompted to license ProModel. For more information on

licensing ProModel, see Licensing ProModelon page 32 If you are using a Hardware Key, please enter it into an

open USB Port on your computer. If you are using a network license, ProModelwillfind the key automatically if 

the License Server isrunning.

Licensing ProModel

Your ProModel product must be licensed. If you do not license ProModel, you will only have accessto a limited, evaluation

version of ProModel. This version will not allow expansive model building.

The registration process for ProModeldepends on the type of installation you chose.

When you run ProModelfor the first time after installing it, you will be prompted to register ProModel. The following screen

willappear.

Please note

If you have a h ardware key, insert it into one o f your computer’s USB drives after installing ProModel but 

before running it fo r the first time. With the h ardware key attached, ProModel will launch and b e fully func-

tional without being prompted for a key. If you have purchased ProModel, choose the License option to

obtain a full license key online.

©ProModelCorporation

Installation and Registration 32

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 46/715

33 ProModel 2011 User Guide

When licensing ProModel, you will be prompted to enter your serial number (included on your CD, provided when you

downloaded ProModel, or obtained by contacting the ProModelCorporation licensing representative for your organ-

ization) after clicking on the “Get a License Keyonline” option found on the screen below.

When you click the link, you will be taken to a website where you enter your serial number, if you have one. Enter your 

serial number, or callProModel support to get one. ClickNext to continue.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 47/715

 After you have entered a serial number, you will be asked to fillin your registration information. Complete the registration

information. ClickNext.

©ProModelCorporation

Installation and Registration 34

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 48/715

35 ProModel 2011 User Guide

This information will be reviewed before you are sent a license key. It is important that it is accurate

and complete.

You will be given a grace period to allow you to start using ProModelimmediately.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 49/715

 After your information has been reviewed, you willbe emailed a license key code, which can be entered in the dialog box

shown above. ClickF inish to complete the licensing of ProModel.

Licensing for a Network Installation

If you purchased a network version of ProModel, you will have received a hardware key with your ProModelsoftware. To

register your network version of ProModel, ensure the license server is running and the USB key isattached to it.

Transferring/Terminating Your Software Key

 As you useProModel it may become necessary to transfer your software key from one PC to another. Please contact Pro-

Model Corporation technical support if you would like to move or terminate your software key.

Checking for ProModel Updates

The Check for ProModel Update feature checks the ProModel Web server for an update to ProModel,

downloads any available update, and then installs the update. In order to have access to updates, you

will need a ProModel Solutions Cafe username and password, and a current Maintenance and Support

agreement. If you have questions regarding your M&S agreement, or username and password, please

contact ProModel Technical Support at [email protected].

There are two ways to obtain ProModelUpdates:

Quickly check to see if an update exists by selecting "Check for ProModelUpdate" from the Help menu in the ProModel

application.

©ProModelCorporation

Installation and Registration 36

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 50/715

37 ProModel 2011 User Guide

Go to the ProModelCorporation solutions cafe on the ProModel Website (www.promodel.com). You can obtain updates

for any of your ProModel products for which you have a current support agreement.

It isr ecommended that you check regularly for updates to ProModel.

Software License Key FAQ

I need t o move my software license key to another computer, can I do this?

Yes. Please contact ProModelCorporation technical support if you would like to move or terminate your software key.

I want to upgrade my computer’s operating system, or make a major change to my computer’s con-

figuration, should I be concerned?

The software license key issensitive to changes to your computer’sconfiguration. Thisis to prevent the key’s unauthor-

ized duplication to multiple computers. If you plan on making major changes to your computer’s configuration, please con-

tact ProModelCorporation technical support for options to preserve your license key.

My software license key no longer appears to be functioning. What should I do?

Your software license key may have been disturbed by changes to your computer’s configuration.

Reboot your computer in an attempt to reset the configuration to a point that is recognizable by the

license key. If the problem persists, please contact ProModel Corporation support at sup-

[email protected] or call 1-888-PROMODEL.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 51/715

Planning the Model

Steps for Doing SimulationIntroduction

Doing simulation requires more than just knowing how to use a simulation product. A simulation studyis, by its very nature,

a project. Like anyproject, there are tasks to be completed and resourcesrequired to completethem. To be successful, a

simulation project should be planned with an understanding of the requirements of each of the tasksinvolved. Manyfail-

ures result from hastilyjumping into a simulation without first taking time to consider the stepsinvolved and developing a

plan for proceeding.

Simulation modeling requires good analytical, statistical, communication, organizational, and engineering skills. The mod-

eler must understand the system being investigated and be able to sort through complex cause-and-effect relationships

that determine system performance. At least a basicfoundation in statistics isneeded to properlydesign experiments and

correctlyanalyze and interpret input and output data. Ongoing communication with owners, stakeholders, and customers

during a simulation study isalso vitalto ensure that a purposefulmodel isbuilt and that everyone understands the objec-

tives, assumptions, and results of the study.

General Procedure

 A decision to do a simulation usually results from a perception that simulation can help resolve one or more issues asso-

ciated with the design of a new system or the modification of an existing system. Before launching into a simulation project,

oneor more individualsshould have been assigned to the study who have at least a basic knowledge of the system to be

studied and the issues of concern. Enough background information should have been obtained about the nature of the

problem to determine whether simulation isa suitable solution. If the simulation isbeing conducted by individuals inside the

company, there may alreadybe a basicknowledge of the operation. For outsiders or those unfamiliar with the operation,

a brief description of the system and explanation of key issues should be provided. For an existing system, a facility walk-through isan excellent way of getting familiar with the operation.

Once a suitable application or project hasbeen identified as a candidate for simulation, decisions must be made about how

to conduct the study.There are no strict rules on how to perform a simulation study,however, thefollowing steps are gen-

erallyrecommended as a guideline (Shannon, 1975; Gordon, 1978; Law, 1991):

Plan the study

Define the system

Build the model

Run experiments

 Analyze the output

Report results

Each stepneed not be completed in its entirety before moving on to the next step. The procedure for doing a simulation is

an iterative one in which activities are refined and sometimes redefined with each iteration. Describing this iterative proc-

ess, Pritsker and Pegden (1979) observe the following.

©ProModelCorporation

Planning the Model 38

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 52/715

39 ProModel 2011 User Guide

The iterative nature of this process isshown next:

Procedure for Conducting a Simulation Study 

While the requirements for each step vary from simulation to simulation, the basicprocedure isessentiallythe same. The

primary value of adopting this systematicprocedure, or one like it, isto ensure that the project isconducted in an organ-

ized, timely fashion with minimalwaste of time and resources and maximum effectiveness in achieving the objectives.

Step 1: Planning the Study

Manysimulation projects are doomed to failure from the outset due to poor planning. Undefined objectives, unrealistic

expectations and a general lackof understanding of requirements frequently result in frustration and disappointment. If a

simulation project isto be successful, a plan must be developed which isrealistic, clearly communicated and closely fol-

lowed. Planning a simulation studyinvolvesthe following sub tasks:

Defining Objectives

Identifying Constraints

Preparing a Simulation Specification

Developing a Budget and ScheduleEach of these tasksis discussed in the following.

Defining Objectives

With a basicunderstanding of the system operation and an awareness of the issues of concern or interest, one or more

objectives can be defined for the study. Simulation should only be used if an objective can be clearly stated and it is

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 53/715

determined that simulation isthe most suitable toolfor achieving the objective. Defining an objective doesnot necessarily

mean that there needsto be a problem to solve. A perfectlyvalid objectivemay be to see ifthere are, in fact, anyunfore-

seen problems. Common types of objectives for a simulation study include the following:

l Performance Analysis How well doesthe system perform under a given set of circumstances in all measures

of significance (utilization, throughput, waiting times, etc.)?

l Capacity Analysis What isthe maximum processing or production capacity of the system?

l Capability Analysis Is the system capable of meeting specificperformance requirements (throughput, waiting

times, etc.), and, if not, what changes (added resources or improved methods) are recommended for making it

capable?

l Comparison Study How well doesone system configuration or design variation perform compared to

another?

l Sensitivity Analysis Which decision variables are the most influential on one or more performance measures,

and how influential are they?

l Optimization Study What combination of feasible values for a given set of decision variables best achieves

desired performance objectives?l Decision/Response Analysis What are the relationships between the values of one or more decision var-

iables and the system response to those changes?

l Constraint Analysis Where are the constraints or bottlenecksin the system and what are workable solutions

for either reducing or eliminating those constraints?

l Communication Effectiveness What variables and graphicrepresentations can be used to most effectively

depict the dynamicbehavior or operation of the system?

Defining the objective should take into account what the ultimate intended use of the model will be. Some modelsare built

as“throw-away” models to be used only once andthen discarded.Other models are built to be used on an ongoing basis

for continued “what-if” analyses. Some models need onlyprovide a quantitative answer. Othersrequire realistic animation

to convince a skeptical customer. Some modelsare intended for use by only the analyst. Other models are intended for 

use by managers with little simulation background and must be easy to use. Some modelsare used to make decisions of 

minor consequence. Other models are relied upon to make major financial decisions.

Realizing the objectives of a simulation, you should consider both the purpose as well as the intended use of the model.

The following questions should be asked when defining the objectives of the study:

Whyis the simulation being performed?

Who will be using themodel?

To whom will the results of the simulation be presented?

What information isexpected from the model?

Is this a “throw-away” model?How important isthe decision being made?

Identifying Constraints

Equallyas important as defining objectives isidentifying the constraintsunder which the study must be conducted. It does

little good for simulation to solve a problem if the time to do the simulation extends beyond the deadline for applying the

©ProModelCorporation

Planning the Model 40

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 54/715

41 ProModel 2011 User Guide

solution, or if the cost to find the solution exceedsthe benefit derived. Objectives need to be tempered by the constraints

under which the project must be performed such as the budget, deadlines, resource availability, etc. It isnot uncommon

to begin a simulation project with aspirations of developing an impressivelydetailed model or of creating a stunningly real-

istic animation only to scramble at the last minute, throwing together a crude model that barely meets the deadline.

Constraints should not always be viewed as an impediment. If no deadlinesor other constraints are established, there isa danger of getting too involved and detailed in the simulation study and run the risk of “paralysisfrom analysis.” The

scope of anyproject hasa tendency to shrink or expand to fillthe time allotted.

In identifying constraints, anything that could have a limiting effect on achieving the desired objectives should be con-

sidered. Specific questionsto askwhen identifying constraintsfor a simulation study should include the following:

What isthe budget for doing the study?

What isthe deadline for making the decision?

What are theskillsof those doing thestudy?

How accessible isthe input data?

What computer(s) will be used for the study?

Preparing a Simulation Specification

With clearly defined objectives and constraints, the simulation requirementscan be specified. Defining a specification for 

the simulation isessential to projecting the time and cost needed to complete the study. It also guidesthe studyand helps

set expectations by clarifying to others exactlywhat the simulation will include or exclude. A specification is especially

important if the simulation isbeing performed by an outside consultant so that you will know exactly what you are getting

for your money. Aspects of the simulation project to be contained in the specification should include the following:

Scope

Level of detail

Degree of accuracy

Type of experimentation

Form of results

Each of these specification criteria will be discussed in the following pages.

l Scope The scoperefersto the breadth of themodelor how muchof thesystemthe modelwill encompass.

Determining the scope of the model should be based on how much bearing or impact a particular activity has on

achieving the objectives of the simulation. A common tendency isto model the entire system, even when the

problem area and all relevant variables are actually isolated within a smaller subsystem. If, for example, the

objective isto find the number of operators required to meet a required production level for a machining cell, it isprobably not necessary to model what happens to partsafter leaving the cell.

The following figure illustrateshow the scope of the model should be confined to only those activities

whose interactions have a direct bearing on the problem being studied. Upstream and downstream

activities that do not impact the performance measure of interest should be omitted from the model. In

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 55/715

the following figure, since the output rate from activity A ispredictable, it can be modeled as simply an

arrival rate to activity B. Since activity E never constrains output from activity D, it can also be ignored.

l Level of Detail The level of detail defines thedepth or resolution of themodel. At oneextreme, an entire factory

can be modeled as a single “blackbox” operation with a random activity time. At the other extreme, every detailed

motion of a machine could be modeled with a one-to-one correspondence depicting the entire machine oper-

ation.

Unlike the model scope which affects only the size of the model, the level of detail affects model com-

plexity as well as model size. Determining the appropriate level of detailis an important decision. Too

much detailmakesit difficult and time consuming to develop a valid model. Too little detail may make the

model too unrealisticby excluding critical variables. The following figure illustrateshow the time to

develop a model isaffected by the level of detail. It also highlightsthe importance of including only

enough detail to meet the objectives of the study.

The level of detail is determined largelyby the degreeof precision required in the output. If only a rough

estimate isbeing sought, it may be sufficient to model each activity by its time, rather than specificdetails

making up the activity. If, on the other hand, details such as downtimesor move times have an

©ProModelCorporation

Planning the Model 42

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 56/715

43 ProModel 2011 User Guide

appreciable effect on the outcome of the model, theyshould be included.

l Degree of Accuracy The degreeof accuracy pertains to the correctnessof thedata being used. For some

modelsor activities, the information need not be as accurate or exact as it doesfor others. The required degree

of accuracy isdetermined by the objectives of the study. If the decision isimportant or a comparison isclose,greater accuracymay be required. Accuracysometimeshas to be sacrificed if reliable information issimply

unavailable such as when modeling a completely new system.

The required degree of accuracy can have a significant impacton thetime andeffort required to gather 

data. It often has little impact, however, on the modelbuilding time sincea modelcan be builtwith esti-

mated values that can later be replaced with more accurate values. Output precision isoften governed

bythe degreeof accuracy of themodel.

l Type of Experimentation The number and nature of the alternative solutions to be evaluated should be

planned from the outset in order to ensure that adequate time isallotted. Thisdecision isoften influenced by the

deadline constraintsof the study. Where alternatives with only slight differences are to be evaluated, a base

model can be developed requiring only minor modifications to model each alternative. If alternative con-

figurations are significantly different, it mayr equire nearly as much effort modeling each configuration as it does

developing the initialmodel.

For studies in which improvements to an existing system are being considered, it isoften helpful and

effectiveto modelthe current system aswellas the proposed system.The basicpremise is that you are

not readyto make improvements to a system until you understand how the current system operates.

Information on the current system iseasier to obtain than information on areasof change. Once a

model of the current system isbuilt, it isoften easier to visualize what changes need to be made for the

modified system. Both systems mayeven be modeled together in the same simulation and made to run

side byside. During the finalpresentation of the results, being ableto show both “asis” and “to be” ver-

sions of the system effectivelydemonstrates the impact changes can have on system performance.

l Form of ResultsThe form in which the resultsare to be presented can significantly affect the time and effort

involved in the simulation study. If detailed animation or an extensive report isexpected, the project can easily

stretch on for several weeks after the experimental phase has been completed. Manytimes the only result

required isa simple verification of whether a system iscapable of meeting a production requirement. In such

cases, a simple answer willsuffice.

Developing a Budget and Schedule

With objectives and constraintsclearlydefined and a specification prepared identifying the work to be performed, a

budget and schedule should be developed projecting the expected cost and time for completing the simulation project.

Obviously, the time to perform a simulation project will vary depending on the size and difficulty of the project. If data isnot

readilyavailable, it may be necessary to add several additional weeks to the project. A small project can take two to four 

weeks while large projects can take two to four months. A simulation schedule should be based on realistic projectionsof 

the time requirements keeping in mind the following:

l Defining the systemto be modeled can take up to 50% of the projecttime.

l Model building usuallytakesthe least amount of time (10 to 20%).

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 57/715

l Once a base model isbuilt, it can take several weeks to conduct all of the desired experiments, especially if alter-

native designs are being compared.

While it may have initially been determined that simulation isa suitable tool for achieving the objective, the decision to use

simulation may need to be reconsidered in light of projected cost and time estimates. Simulation maybe a good solution tothe problem at hand, but if the time or the cost of doing the project outweighs the anticipated benefits, either an alternative

solution mayneedto be explored or theobjectivesmay need to be modified to cut down on thelevelof effort required.

Step 2: Defining the System

With clearly defined objectives and a well organized plan for the study, the system that will be simulated can begin to be

defined in detail. This can be viewed as the development of a conceptual model on which the simulation model will be

based. The process of gathering and validating system information can be overwhelming when faced with the stacksof 

uncorrelated data to sort through. Data isseldom available in a form that definesexactly how the system works. Many

data gathering efforts end up with lots of data but very little useful information.

Data gathering should never be performed without a purpose. Rather than being haphazard, data gathering should be

goaloriented with a focus on information that will achieve the objectives of the study. There are several guidelines to keep

in mind when gathering data.

l Identify cause-and-effect relationships It isimportant to correctlyidentify the causes or conditions under 

which activities are performed. In gathering downtime data, for example, it ishelpful to distinguish between down-

times due to equipment failure or personal emergencies and planned downtimes for break. Once the causes

have been established and analyzed, activitiescan be properly categorized.

l Look for key impact factors Discrimination should be used when gathering data to avoid wasting time exam-

ining factors that have little or no impact on system performance. If, for example, an operator isdedicated to a par-

ticular task and, therefore, isnever a cause of delays in service, there isno need to include the operator in the

model. Likewise, extremely rare downtimes, negligible move times and other insignificant or irrelevant activities

that have no appreciable effect on routine system performance may be safely ignored.l Distinguish between time and condition d ependent activities Time-dependent activities are those that

take a predictable amount of time to complete, such as customer service. Condition-dependent activities can only

be completed when certain defined conditions within the system are satisfied. Because condition-dependent

activities are uncontrollable, theyare unpredictable. An example of a condition-dependent activity might be the

approval of a loan application contingent upon a favorable credit check.

Many activitiesare partiallytime-dependent and partiallycondition-dependent. When gathering data on these

activities, it isimportant to distinguish between the time actuallyrequired to perform the activity and the time spent

waiting for resources to become available or other conditionsto be met before the activity can be performed. If,

for example, historical data isused to determine repair times, the time spent doing the actualrepair work should

be used without including the time spent waiting for a repair person to become available.

l Focus on essence rather than substance A system definition for modeling purposes should capture the key

cause-and-effect relationships and ignore incidental details. Using this“ black box” approach to system definition,we are not concerned aboutthe nature of the activitybeing performed,but only theimpact that theactivity has on

the use of resources and the delayof entityflow. For example, the actualoperation performed on a machine is

not important,but only how longthe operation takes andwhat resources,if any, are tied up during the operation.

©ProModelCorporation

Planning the Model 44

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 58/715

45 ProModel 2011 User Guide

It isimportant for the modeler to be constantlythinking abstractly about the system operation in order to avoid

getting too caught up in the incidental details.

l Separate input variables from response variables Inputvariables in a modeldefine how thesystem works

(e.g., activity times, routing sequences, etc.). Response variables describe how the system respondsto a given

set of input variables (e.g., work-in-process, idle times, resource utilization, etc.). Input variables should be the

focusof data gathering since theyare used to define the model. Response variables, on the other hand, are the

output of a simulation. Consequently, response variables should only be gathered later to help validate the

modelonce itis builtand run.

These guidelines should help ensure that the system isthought of in the proper light for simulation purposes.

To help organize the process of gathering data for defining the system, the following steps are recommended:

l Determine data requirements.

l Use appropriate data sources.

l

Make assumptions where necessary.l Convert data into a useful form.

l Document and approve the data.

Each of these stepsis explained on the following pages.

Determining Data Requirements

The first step in gathering system data isto determine what data isrequired for building the model. Thisshould be dic-

tated primarily by the scope and level of detailrequired to achieve the model objectives as described earlier. It isbest to go

from general to specificin gathering system data. The initial focus should be on defining the overall process flow to pro-

vide a skeletalframeworkfor attaching more detailed information. Detailed information can then be added graduallyas it

becomesavailable (e.g., resource requirements, processing times, etc.). Starting with the overall process flow not only

provides an orderly approach to data gathering, but also enables the model building process to get started which reduces

the amount of time to buildand debugthe modellater. Often, missing data becomesmore apparent asthe modelis being

built.

In defining thebasic flow of entities through thesystem, a flow diagram can be usefulas a wayof documenting and vis-

ualizing the physical flow of entities from location to location. Once a flow diagram ismade, a structured walk-through can

be conducted with those familiar with the operation to ensure that the flow is correct andthat nothing hasbeen over-

looked.The next step might be to define thedetailof how entitiesmove between locationsand what resources are used

for performing operations at each location. At this point it isappropriate to identify location capacities, move times, proc-

essing times, etc.

To direct data gathering efforts and ensure that meetings with others, on whom you depend for model information, are

productive, it may be useful to prepare a specificlist of questions that identify the data needed. A list of pertinent questionsto be answered might include the following:

1. What typesof entitiesare processed in the system and what attributes, ifany,distinguishthe wayin which enti-

tiesof the same type are processed or routed?

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 59/715

2. What are the route locationsin the system (include all places where processing or queuing occurs, or where rout-

ing decisions are made) and what are their capacities (i.e., how manyentities can each location accommodate or 

hold at onetime)?

3. Besides route locations, what typesof resources (personnel, vehicles, equipment) are used in the system and

how manyunits are there of each type (resources used interchangeablymay be considered the same type)?

4. What is therouting sequence for each entitytype in the system?

5. What activity, if any, takes place for each entity at each route location (define in termsof time required, resources

used, number of entitiesinvolved and any other decision logic that takesplace)?

6. Where, when and in what quantities do entities enter the system (define the schedule, interarrival time, cyclic

arrivalpattern, or condition which initiates each arrival)?

7. In what order do multiple entitiesdepart fromeachlocation (Firstin, Firstout; Last in, First out)?

8. In situations where an output entitycould be routedto oneof severalalternativelocations, how isthe routing deci-

sion made (e.g., most available capacity, first available location, probabilisticselection)?

9. How do entitiesmovefrom one location to the next(define intermsof time and resourcesrequired)?

10. What triggersthe movement of entities from one location to another (i.e., available capacity at the next location, a

request from the downstream location, an external condition)?

11. How do resourcesmovefrom location to location to perform tasks(define either in termsof speedand distance,

or time)?

12. What do resourcesdo when they finish performing a taskand there are no other tasks waiting (e.g., stayput,

move somewhere else)?

13. In situations where multiple entities could be waiting for the same location or resource when it becomesavailable,

what method isused for making an entity selection (e.g., longest waiting entity, closest entity, highest priority,

preemption)?

14. What isthe schedule of availability for resources and locations( define in termsof shift and breakschedules)?

15. What planned interruptions do resources and locationshave (scheduled maintenance, setup, changeover)?16. What random failures do resources and locations experience (define in termsof distributions describing time to

failure and time to repair)?

17. Depending on the purpose of the simulation and levelof detail needed, some of thesequestionsmaynot be appli-

cable. For very detailed modelsadditional questionsmay need to be asked. Answers to these questionsshould

provide nearly all of the information necessary to build a model.

Using Appropriate Data Sources

Having a specificset of questions for defining the system, we are now readyto search for the answers. Information sel-

dom comes from a single source. It isusuallythe result of reviewing reports, conducting personal interviews, personal

observation and making lots of assumptions. “It has been my experience,” notes Carson (1986), “that for large-scale real

systems, there isseldom anyone individualwho understands how the system worksin sufficient detailto build an accuratesimulation model. The modeler must be willing to be a bit of a detective to ferret out the necessary knowledge.” Good

sources of system data includes the following:

l Time Studies

l Predetermined Time Standards

©ProModelCorporation

Planning the Model 46

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 60/715

47 ProModel 2011 User Guide

l Flow Charts

l Facility Layouts

l Market Forecasts

l Maintenance Reports

l On-line tracking systems

l Equipment Manufacturers

l Managers

l Engineers

l Facility Walk-throughs

l Comparisons with Similar Operations

In deciding whether to use a particular source of data, it isimportant to consider the relevancy, reliability and accessibility

of the source. If the information that a particular source can provide isirrelevant for the model being defined, then that

source shouldnot be consulted. What good is a maintenance report if it has already been decided that downtimesare notgoing to be included in the model? Reliability of the source will determine the validity of the model. A managers per-

ception, for example, may not be as reliable as actualproduction logs. Finally, if the source isdifficult to access, such as a

visit to a similar facility in a remote site, it may have to be omitted.

Making Assumptions

Not long after data gathering hasstarted, you may realize certain information isunavailable or perhaps unreliable. Com-

plete, accurate, and up-to-date data for all the information needed isr arely obtainable, especially when modeling a new

system about which very little isknown. For system elements about which little isknown, assumptionsmust be made.

There is nothing wrong with assumptionsas long astheycan be agreed upon,and itis recognized that they are only 

assumptions. Any design effort must utilize assumptions where complete or accurate information is lacking.

Manyassumptions are only temporary until correct information can be obtained or it isdetermined that more accurateinformation isnecessary. Often, sensitivity analysis, in whicha range of valuesis testedfor potentialimpact, can give an

indication of justhow accurate thedata really needsto be. A decision can then be made to firm up theassumptionsor to

leave them alone. If, for example, the degree of variation in a particular activity time has little or no impact on system per-

formance, then a constant activity time may be used. Otherwise, it maybe important to define the exact distribution for the

activity time.

 Another approach in dealing with assumptions is to run three different scenarios showing a “best-case” using the most

optimisticvalue, a “worst-case” using the most pessimistic value, and a “most-likely-case” using a best-estimate value.

This will help determine the amount of risk you want to take in assuming a particular value.

Converting Data to a Useful Form

Data isseldom in a form readyfor use in a simulation model. Usually, some analysisand conversion needs to be per-formedfor data to be useful asan input parameter to thesimulation.Random phenomena must be fitted to some stand-

ard, theoretical distribution such as a normal or exponential distribution (Law and Kelton, 1991), or be input as a

frequency distribution. Activities may need to be grouped together to simplify the description of the system operation.

Distribution Fitting To define a distribution using a theoretical distribution requires that the data, if available, be fit to an

appropriate distribution that best describesthe variable. ProModel includes the Stat::Fit distribution fitting package which

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 61/715

assists in fitting sample data to a suitable theoretical distribution. An alternative to using a standard theoretical distribution

is to summarize the data inthe formof a frequency distribution that can be used directly in the model. A frequency dis-

tribution issometimes referred to as an empirical or user-defined distribution.

Whether fitting data to a theoretical distribution, or using an empirical distribution, it isoften usefulto organize the data into

a frequency distribution table. Defining a frequency distribution isdone by grouping the data into intervals and stating thefrequency of occurrence for each particular interval. To illustrate how this isdone, the following frequency table tabulates

the number and frequency of observations for a particular activity requiring a certain range of time to perform.

Frequency Distributions of Delivery Times

DeliveryTime (days) Number of Observations Percentage Cumulative Percentage

0 - 1 25 16.5 16.5

1 - 2 33 21.7 38.2

2 - 3 30 19.7 57.9

3 - 4 22 14.5 72.4

4 - 5 14 9.2 81.6

5 - 6 10 6.6 88.2

6 - 7 7 4.6 92.8

7 - 8 5 3.3 96.1

8-9 4 2.6 98.7

9 - 10 2 1.3 100.0

Total Number of Observations = 152

While there are rules that have been proposed for determining the interval or cellsize, the best approach isto make surethat enough cells are defined to show a gradual transition in values, yet not so manycellsthat groupings become

obscured.

Note in the last column of the frequency table that the percentage for each interval may be expressed optionallyas a cumu-

lative percentage. Thishelps verifythat all 100%of the possibilities are included.

When gathering samples from a static population, one can apply descriptive statistics and draw reasonable inferences

about the population. When gathering data from a dynamic and possibly time varying system, however, one must be sen-

sitive to trends, patterns, and cycles that mayoccur with time. The samples drawn maynot actuallybe homogenous sam-

plesand, therefore, unsuitable for applying simple descriptive techniques.

Activity Grouping Another consideration in converting data to a usefulform isthe way in which activities are grouped for modeling purposes. Often it ishelpful to group activities together so long as important detailis not sacrificed. Thismakes

modelseasier to define and more manageable to analyze. In grouping multiple activities into a single activity time for sim-

plification, consideration needs to be given as to whether activities are performed in parallel or in series. If activities are

done in parallel or with anyoverlap, the time during which overlapping occurs should not be additive.

©ProModelCorporation

Planning the Model 48

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 62/715

49 ProModel 2011 User Guide

Serial activities are always additive. For example, if a series of activities isperformed on an entity at a location, rather than

specifying the time for each activity, it maybe possible to sum activity times and enter a single time or time distribution.

Documenting and Approving the Data

When itis felt that all relevantinformation hasbeengatheredand organized into a usable form, itis advisable to doc-ument the information in the form of data tables, relationaldiagrams and assumption lists. Sources of data should also be

noted. This document should then be reviewed byothers who are ina position to evaluate the validityof thedata and

approve the assumptionsmade. Thisdocument will be helpfullater if you need to make modificationsto the model or look

at why the actualsystem endsup working differently than what was modeled.

In addition to including those factors to be used in the model, the data document should also include those factors delib-

eratelyexcluded from the model because theyare deemed to be either insignificant or irrelevant. If, for example, break

times are not identified in the system description, a statement of explanation should be made explaining why. Stating why

certain factors are being excluded from the system description will help resolve later concerns that may question why the

factors were omitted.

Validating system data can be a time-consuming and difficult task, especially when manyassumptions are made. In prac-

tice, data validation endsup being more of a consensus or agreement that isobtained confirming that the information is

good enough for the purposes of the model. While this approved data document provides the basisfor building the

model, it often changes as model building and experimentation get under way.

Step 3: Building the Model

Once sufficient information hasbeen compiled to define the basicsystem operation, the model building activity can begin.

While starting to build a model too early can be a wasted exercise, waiting untilall of the information iscompletely gath-

ered and validated may unnecessarily postpone the building of the model. Getting the model started before the data is

completelygathered mayeven help identify missing information needed to proceed.

The goalof model building isto provide a valid representation of the defined system operation. Additionally, the model

must be able to provide any other statistical or graphical representation needed to satisfy the objectives of the study. Amodel isneither true nor false, but rather usefulor not useful. Once validated, a model isuseful when it provides the

needed information to meet the objectives of the simulation.

Progressive Refinement 

One nicefeature of simulation is that models do not have to includeallof the finaldetail before theywill run. This allowsa

progressiverefinementstrategyto be used in which detail is added to the modelin stages rather than all at once. Not only

do modelsget built and running quicker this way, but it also makes modelseasier to debug. In the initial stagesof a model,

for example, attractive graphics are not very useful and, since theyare likelyto be changed anyway, should not be added

untillater when preparing for the final model presentation.

The complexity of model building should never be underestimated and it isalways better to begin simple and add com-

plexity rather than create an entire complex modelat once. It isalso easier to add detail to a modelthan it is to remove itfrom a model. Building a model in stagesenables bugs to be more readilyidentified and corrected. Emphasizing the

importance of applying progressive refinement to model building, Law and Kelton (1991) have advised:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 63/715

 Although there are few firm rules on how one should go about the modeling process, one point on which most authors

agree isthat it is always a good ideato start with a simple modelwhich can later be made moresophisticatedif necessary.

 A model should contain only enough detail to capture the essence of the system for the purposes for which the model is

intended: it isnot necessary to have a one-to-one correspondence between elements of the model and elements of the

system. A model with excessive detailmay be too expensive to program and to execute.

Incremental Expansion

In addition to adding complexity to a model in stages, modelsthat have a broad scope are sometimes easier to build in

phases where additionalsectionsare added incrementallyto the model. Thismethod of "eating the elephant one bite at a

time" allows a portion of the modelto be built, tested anddebugged beforeadding new sectionsand makesa largetask

more manageable.

For unusuallylarge models, it may be usefulto identify definable boundaries within a model to permit model 

 partit ioning . Model partitioning isthe process of subdividing a model into two or more modules that represent physically

separate sections within the system. The purpose of model partitioning isto allow model sections to be built and

debugged, possibly even by separate individuals, independently of each other. Once sections are finished, theycan be

merged together to create the overall model. This“divide-and-conquer” method of model building can greatlyr educe the

time and difficulty in building and debugging large models.

Model Verification

Oncea modelis defined using a selected software tool, the modelmust generally be debuggedto ensure that itworkscor-

rectly. The process of demonstrating that a model works as intended isreferred to in simulation literature as model ver- 

ification. It is much easier to debug a modelbuilt in stagesand with minimal detail than to debuga large and complex

model. Eliminating bugsin a program model can take a considerable amount of time, especially if a general purpose pro-

gramming language (e.g., C++) in which frequent coding errors occur isused. Most simulation languagesprovide a trace

capability in the form of audit trails, screen messages, graphicanimation, or a combination of all three. A trace enables the

user to look inside of the simulation to see if the simulation isperforming the way it should. Good simulation products pro-

vide interactive debugging capabilitywhich further facilitatesthe debugging process. A thorough “walk-through” of the

model input isalways advisable.

Model Validation

During the process of model building, the modeler must be constantly concerned with how closely the model reflects the

system definition. The process of determining the degree to which the model correspondsto the real system, or at least

accurately represents the model specification document, isr eferred to as model validation. Proving absolute validity isa

non attainable goal. As Neelamkavil(1987) explains, “True validation isa philosophical impossibility and all we can do is

either invalidate or failto invalidate.” For this reason, what we actuallyseekto establish isa high degree of face validity .

Face validity means that, from all outward indications, the model appears to be an accurate representation of the system.

From this standpoint, validating a model isthe process of substantiating that the model, within its domain of applicability, is

sufficiently accurate for the intended application (Schlesinger, 1979).

There isno simple test to establish the validity of a model. Validation isan inductive process through which the modeler draws conclusions about the accuracyof the model based on the evidence available. Gathering evidence to determine

model validity islargely accomplished by examining the model structure (i.e., the algorithms and relationships) to see how

closely it correspondsto the actual system definition. For modelshaving complex controllogic, graphicanimation can be

used effectivelyas a validation tool. Finally, the output results should be analyzed to see if the results appear reasonable. If 

©ProModelCorporation

Planning the Model 50

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 64/715

51 ProModel 2011 User Guide

circumstances permit, the model may even be compared to that actual system to see how theycorrespond. If these pro-

ceduresare performed without encountering a discrepancybetween the real system and the model, the model issaid to

have face validity.

Step 4: Conducting Experiments

The fourth step in a simulation study isto conduct simulation experiments with the model. Simulation isbasically an appli-

cation of the scientific method. In simulation, one begins with a theory of why certain design rules or management strate-

gies are better than others. Based on these theories the designer develops a hypothesiswhich he tests through

simulation. Based on the results of the simulation the designer draws conclusionsabout the validity of his hypothesis. In a

simulation experiment there are input variables defining the model which are independent and maybe manipulated or 

varied. The effects of this manipulation on other dependent or response variables are measured and correlated.

In some simulation experiments we are interested in the steady-state behavior of the model. Steady-state behavior 

doesnot mean that the simulation produces a steady outcome, but rather the distribution or statistical variation in out-

come doesnot change over time. For example, a distribution warehouse may ship between 200 and 220 partsper hour 

under normal operating conditions. For many simulationswe mayonly be interested in a particular time period, such as a

specificday of the week. For these studies, the simulation maynever reach a steadystate.

 As with any experiment involving a system with random characteristics, the results of the simulation willalso be random in

nature. The results of a single simulation run represent only one of several possible outcomes. Thisrequires that multiple

replications be run to testthe reproducibilityof the results. Otherwise, a decision mightbe made based on a fluke out-

come, or at least an outcome not representative of what would normally be expected. Since simulation utilizes a pseudo-

random number generator for generating random numbers, running the simulation multiple times simplyr eproduces the

same sample. In order to get an independent sample, the starting seed value for each random stream must be different

for each replication, ensuring that the random numbers generated from replication to replication are independent.

Depending on thedegree of precision required in the output, it maybe desirable to determine a confidence interval for 

the output. A confidence intervalis a range within whichwe can have a certain levelof confidence that the true mean falls.

For a given confidence level or probability, say .90 or 90%, a confidence interval for the average utilization of a resource

might be determined to be between 75.5 and80.8%. We would then be ableto say that there is a .90 probabilitythat the

true mean utilization of the modeled resource (not of the actualresource) lies between 75.5 and 80.8%.

Fortunately, ProModelprovides convenient facilitiesfor conducting experiments, running multiple replications and auto-

matically calculating confidence intervals. The modeler must stilldecide, however, what typesof experimentation are

appropriate. When conducting simulation experiments, the following questions should be asked:

l Am I interested in the steadystate behavior of the system or a specificperiod of operation?

l How can I eliminate start-up bias or getting the right initial condition for the model?

l What isthe best method for obtaining sample observationsthat may be used to estimate the true expected

behavior of the model?

l What isan appropriate run length for the simulation?

l How manyreplicationsshould be made?

l How manydifferent random streamsshould be used?

l How should initial seed values be controlled from replication to replication?

l Answers to these questions will be determined largely by the following three factors:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 65/715

l The nature of the simulation (terminating or nonterminating).

l The objective of the simulation (capacityanalysis, alternative comparisons, etc.).

l The precision required (rough estimate versus confidence interval estimates).

Terminating Versus

Non-terminating Simulations

 As part of setting up the simulation experiment, one must decide what type of simulation to run. Simulations are usually dis-

tinguished as being one of two types: terminating or non-terminating . The difference between the two hasto do with

whether we are interested in the behavior of the system over a particular period of time or in the steady-state behavior of 

the system. It hasnothing to do, necessarily, with whether the system itself terminates or is ongoing. The decision to per-

form a terminating or non-terminating simulation has lessto do with the nature of the system than it doeswith the behavior 

of interest.

 A terminating simulation is one in which the simulation starts at a defined state or time and ends when it reaches some

other defined state or time. An initialstate might be the number of parts in the system at the beginning of a workday. A ter-minating state or event might be when a particular number of jobs have been completed. Consider, for example, an aero-

space manufacturer that receives an order to manufacture 200 airplanes of a particular model. The company might be

interested in knowing how long it will take to produce the aircraft along with existing workloads. The simulation run starts

with the system emptyand isterminated when the200th plane is completed since that covers the period of interest. A

point in time whichwould bring a terminating simulation to an end might be the closing of shopat theend of a business day,

or the completion of a weeklyor monthly production period. It may be known, for example, that a production schedule for a

particular item changes weekly. At the end of each 40 hour cycle, the system is“emptied” and a new production cycle

begins. In this situation, a terminating simulation would be run in which the simulation run length would be 40 hours.

Terminating simulationsare not intended to measure the steady-state behavior of a system. In a terminating simulation,

average measures are of little meaning. Since a terminating simulation always contains transient periodsthat are part of 

the analysis, utilization figures have the most meaning if reported for successive time intervalsduring the simulation.

 A non-terminating or steady-state simulation is one in which the steady-state behavior of the system is being analyzed. A

non-terminating simulation does not mean that the simulation never ends, nor does it mean that the system being sim-

ulated has no eventual termination. It only means that the simulation could theoretically go on indefinitely with no statistical

change in behavior. For non-terminating simulations, the modeler must determine a suitable length of time to run the

model. An example of a non-terminating simulation isa model of a manufacturing operation in which oil filters are

produced on a continualbasis at the same pace. The operation runs two shifts with an hour break during each shift in

which everything momentarilystops. Break and third shift times are excluded from the model since work always continues

exactly asit left off beforethe break or end of shift. The length of the simulation isdetermined byhow longit takesto geta

representative steady-state reading of the model behavior.

Running Terminating Simulations

Experimentsinvolving terminating simulationsare usually conducted by making several simulation runs, or replications, of 

the period of interest using a different random seed for each run. Thisprocedure enables statisticallyindependent and

unbiased observationsto be made on the system response over the period simulated. Statistics are often gathered on per-

formance measures for successive intervals of time during the period.

©ProModelCorporation

Planning the Model 52

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 66/715

53 ProModel 2011 User Guide

For terminating simulations, we are usuallyinterested in finalproduction countsand changing patterns of behavior over 

time rather than the overall average behavior. It would be absurd, for example, to conclude that because two technicians

are busyonly an average of 40% during the day that only one technician is needed. This average measure revealsnoth-

ing about the utilization of the techniciansduring peakperiods of the day. A more detailed report of waiting times during

the entire work day mayr eveal that three techniciansare needed to handle peakperiods, whereas only one technician is

necessary during off-peakhours. In this regard, Hoover and Perry( 1990) note:

It isoften suggested in the simulation literature that an overall performance be accumulated over the course of each rep-

lication of the simulation, ignoring the behavior of the systemsat intermediate pointsin the simulation. We believe this is

too simple an approach to collecting statistics when simulating a terminating system. It reminds us of the statistician who

had his head inthe refrigerator andfeet in the oven, commenting that on the average he wasquite comfortable.

For terminating simulations, the three important questionsto answer in running the experiment are:

1. What should be the initialstate of themodel?

2. What isthe terminating event or time?

3. How manyreplicationswillyou make?

Manysystemsoperate on a dailycycle, or, if a pattern occurs over a weeks time, the cycle isweekly. Some cycles may

vary monthly or even annually. Cycles need not be repeating to be considered a cycle. Airlines, for example, may be inter-

ested in the start-up period of production during the introduction of a new airport which is a one-time occurrence.

The number of replicationsshould be determined by the precision required for the output. If only a rough estimate of per-

formance isbeing sought, three to five replications are sufficient. For greater precision, more replications should be

made until a confidence interval with which you feelcomfortable isachieved.

Running Non-terminating Simulations

The issuesassociated with generating meaningful output statistics for terminating simulations are somewhat different

that those associated with generating statistics for non-terminating systems. In steady-state simulations, we must deal

with the following issues:

1. Determining the initial warm-up period.

2. Selecting among several alternative ways for obtaining sample observations.

3. Determining run length.

Determining the Warm-up Period In a steady-state simulation, we are interested in the steady-state behavior of the

model. Since a model starts out empty, it usuallytakes some time before it reaches steady-state. In a steady-state con-

dition, the response variables in the system (e.g., processing rates, utilization, etc.) exhibit statistical regularity (i.e., the dis-

tribution of these variables are approximatelythe same from one time period to the next). The following figure illustrates

the typical behavior of a response variable, Y, as the simulation progresses through N periods of a simulation.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 67/715

The time that it takes to reach steady-state isa function of the activity times and the amount of activity taking place. For 

some models, steady-state might be reached in a matter of a few hoursof simulation time. For other models it may take

several hundred hours to reach steady-state. In modeling steady-state behavior we have the problem of determining

when a model reachessteady-state. Thisstart-up period isusuallyr eferred to as the warm-up period . We wantto wait

until after the warm-up period before we start gathering anystatistics. Thisway we eliminate anybias due to observations

taken during the transient state of the model.

While several methodshave been presented for determining warm-up time (Law and Kelton, 1991), the easiest and most

straightforward approach, although not necessarily the most reliable, isto run a preliminary simulation of the system, pref-

erably with several (3 to 5) replications, and observe at what time the system reachesstatistical stability. The length of 

each replication should be relativelylong and allow even rarely occurring events, such as infrequent downtimes, to occur 

at least two or three times. To determine a satisfactory warm-up period using this method, one or more key response var-

iables should be monitored by period over time, like the average number of entities in a queue or the average utilization of 

a resource. Thisapproach assumes that the mean value of the monitored response variable isthe primary indicator of con-

vergence rather than the variance, which oftenappears to be thecase. If possible, it is preferable to reset the response

variable after each period rather than track the cumulative value of the variable, since cumulative plotstend to average out

instability in data. Once these variables begin to exhibit steady-state, we can add a 20%to 30%safety factor and be rea-

sonably safe in using that period as the warm-up period. Thisapproach issimple, conservative and usuallysatisfactory.Remember, the danger isin underestimating the warm-up period, not overestimating it. Relativelylittle time and expense

isneeded to run the warm-up period longer than actuallyrequired. The following figure illustratesthe average number of 

entities processed each hour for several replications. Since statistical stability isr eached at about 10 hours, 12 to 15 hours

isprobably a safe warm-up period to use for the simulation.

©ProModelCorporation

Planning the Model 54

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 68/715

55 ProModel 2011 User Guide

Obtaining Sample Observations In a terminating simulation, sample observations are made by simply running mul-

tiple replications. For steady-state simulations, we have several options for obtaining sample observations. Two widely

used approaches are running multiple replications and interval batching. The method supported in ProModelis running

multiple replications.

Running multiple replications for non-terminating simulationsis very similar to running terminating simulations. The only

difference isthat (1) the initial warm-up period must be determined, and (2) an appropriate run length must be deter-

mined. Once the replicationsare made, confidence intervals can be computed as described earlier in this chapter. One

advantage of running independent replicationsis that samples are independent. On the negative side, running through

the warm-up phase for each replication slightly extends the length of time to perform the replications. Furthermore, there

isa possibility that the length of the warm-up period isunderestimated, causing biased results.

Interval batching (also referred to as the batch means technique) is a method in which a single, long run is made with

statistics being reset at specified time intervals. This allows statistics to be gathered for each time interval with a mean cal-

culated for each interval batch. Since each interval iscorrelated to both the previous and the next intervals (called serial

correlation or autocorrelation), the batchesare not completely independent. The way to gain greater independence isto

use large batch sizes and to use the mean values for each batch. When using interval batching, confidence interval cal-

culationscan be performed.The number of batchintervals to createshould be at least 5 to 10 andpossibly more depend-

ing on the desired confidence interval.

Determining Run Length Determining run length for terminating simulationsis quite simple since there isa natural

event or time point that defines it for us. Determining the run length for a steady-state simulation ismore difficult since the

simulation can be run indefinitely. The benefit of this, however, isthat we can produce good representative samples.

Obviously, running extremelylong simulations isimpractical, so the issue isto determine an appropriate run length that

ensures a sufficiently representative sample of the steady-state response of the system istaken.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 69/715

The recommended length of the simulation run for a steady-state simulation isdependent upon (1) the interval between

the least frequently occurring event and (2) the type of sampling method (replication or interval batching) used. If running

independent replications, it isusually a good idea to run the simulation enough times to let every type of event (including

rare ones) happenat least a few timesif not severalhundred. Remember,the longer themodelisrun, the more confident

you can become that the results represent a steady-state behavior. If collecting batch mean observations, it isrec-

ommended that run timesbe aslarge aspossible to includeat least 1000 occurrencesof each type of event(Thesen and

Travis, 1992).

Comparing Alternative Systems

Simulations are often performed to compare two or more alternative designs. Thiscomparison may be based on one or 

more decision variables such as buffer capacity, work schedule, resource availability, etc. Comparing alternative designs

requires carefulanalysis to ensure that differences being observed are attributable to actual differences in performance

and not to statistical variation. Thisis where running multiple replicationsmay again be helpful. Suppose, for example, that

method A for deploying resources yields a throughput of 100 entities for a given time period while method B results in 110

entities for the same time period. Is it valid to conclude that method B isbetter than method A, or might additionalrep-

lications actually lead the opposite conclusion?

Evaluating alternative configurations or operating policies can sometimesbe performed by comparing the average result

of several replications. Where outcomesare close or where the decision requires greater precision, a method referred to

as hypothesis testing should be used. In hypothesistesting, first a hypothesisis formulated (e.g., that methodsA and B

both result inthe samethroughput) and then a testis made to see whether the resultsof thesimulation lead usto reject

the hypothesis.The outcome of the simulation runs maycause usto reject the hypothesis that methods A andB both

result in equal throughput capabilities and conclude that the throughput doesindeed depend on which method isused.

Sometimesthere may be insufficient evidence to reject the stated hypothesisand thus the analysisprovesto be incon-

clusive. This failure to obtain sufficient evidence to reject the hypothesismay be due to the fact that there reallyis no dif-

ference in performance, or it may be a result of the variance in the observed outcomes being too high given the number of 

replicationsto be conclusive. At this point, either additional( perhaps time consuming) replicationsmay be run or one of 

several variance reduction techniquesmight be employed (see Law and Kelton, 1991).

Factorial Design

In simulation experiments we are often interested in finding out how different input variable settings impact the response

of the system. Rather than run hundreds of experiments for every possible variable setting, experimental design tech-

niquescan be used as a “short-cut” to finding those input variables of greatest significance. Using experimental-design ter-

minology, input variables are referred to as factors, and the output measures arereferred to asresponses. Oncethe

response of interest hasbeen identified and the factors that are suspected of having an influence on this response

defined, we can use a factorial design methodwhich prescribes how many runs to make and what levelor value to be

used for each factor. As in all simulation experiments, it isstilldesirable to run multiple replications for each factor level and

use confidence intervals to assessthe statistical significance of the results.

One'snatural inclination when experimenting with multiple factors isto test the impact that each individual factor hason sys-

tem response. Thisis a simple and straightforward approach, but it gives the experimenter no knowledge of how factors

interact with each other. It should be obvious that experimenting with two or more factors together can affect system

response differently than experimenting with only one factor at a time and keeping all other factors the same.

One type of experimentthat looks at the combined effect of multiple factorson system response is referredto asa two-

level, full-factorial design. In this type of experiment, we simply define a high and low level setting for each factor and, since

©ProModelCorporation

Planning the Model 56

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 70/715

57 ProModel 2011 User Guide

it isa full-factorial experiment, we try every combination of factor settings. This means that if there are five factors and we

are testing two different levels for each factor, we would testeach of the 25 = 32 possible combinations of high and low fac-

tor levels. For factors that have no range of valuesfrom which a high andlow can be chosen,the high andlow levels are

arbitrarilyselected. For example, if one of the factors being investigated isan operating policy for doing work (e.g., first

come, first served; or last come, last served), we arbitrarilyselect one of the alternative policies as the high level setting

and a different one asthe low level setting.

For experimentsin which a large number of factors are being considered, a two-level full-factorial design would result in

an extremelylarge number of combinationsto test. In this type of situation, a fractional-factorial design isused to stra-

tegicallyselect a subset of combinations to test in order to “screen out” factors with little or no impact on system per-

formance. With the remaining reduced number of factors, more detailed experimentation such as a full-factorial

experiment can be conducted in a more manageable fashion.

 After fractional-factorial experiments and even two-level full-factorial experiments have been performed to identifythe

most significant factor level combinations, it is often desirable to conduct more detailed experiments, perhaps over the

entire range of values, for those factors that have been identified as being the most significant. Thisprovides more pre-

cise information for making decisions regarding the best factor values or variable settingsfor the system. For a more con-

cise explanation of the use of factorial design in simulation experimentation see Law and Kelton (1991).

Use of Random Streams

One of the most valuable characteristics of simulation isthe ability to reproduce and randomize replications of a particular 

model. Simulation allows probabilisticphenomena within a system to be controlled or randomized as desired for con-

ducting controlled experiments. Thiscontrol ismade available through the use of random streams. A stream is a sequence of independently cycling, unique random numbers uniformly distributed between 0 and 1 (see the

figure on next page). Random number streamsare used to generate additional random numbers from other probability

distributions( Normal, Beta, Gamma). After sequencing through all of the random numbers in the cycle, the cycle starts

over again with the same sequence. The length of the cycle before it repeats iscalled the cycle period and isusually

very long.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 71/715

 A random stream is generated using a random number gener ator or equation. The random number gener ator begins

with an initial seed value after which, each successive value uses the previous value as input to the generator. Each

stream used in a simulation has its own independent seed and tracksits own values for subsequent input to the generator.

Where the sequence begins in the cycle dependson the initial seed value used by the generator.

 Any time a particular number seeds a stream, the same sequence of valueswillbe repeated every time the same seed is

used to initialize the stream. This means that various elements within a model can be held constant with respect to their performance while other elements vary freely. Simply specify one random number stream for one set of activities and

another random number stream for all other activities.

Because the same seed produces the same sequence of values every time it isused, completelyindependent functions

within a model must have their own streamsfrom the start. For example, arrival distributions should generallyhave a ran-

domnumber stream used nowhere else in theentire model. Thatway, activitiesadded to a modelthat sample from a ran-

dom number stream will not inadvertently alter the arrival pattern because they do not affect the sample values generated

from the arrivaldistribution.

To show an example of how multiple streamscan be useful, consider two copy machines, Copy1 and Copy2, which go

down approximatelyevery 4 hoursfor servicing. To model this, the frequency or time between failures isdefined by a nor-

maldistribution with a mean value of 240 minutesand a standard deviation of 15 minutes, N(240,15).The time to repair is

10 minutes. If no stream isspecified in the normal distribution, the same stream will be used to generate sample values for 

both machines. So, if the nexttwo numbers inthe streamnumber are .21837 and .86469, Copy1 will get a samplevalue

from the normal distribution that isdifferent from Copy2. Therefore, the two machineswillgo down at different times.

Suppose, however, that the resource servicing the machines must service them both at the same time, so we would like to

have the machines go down at the same time. Using the samestream to determine both downtimeswill notbring them

down at the same time, because a different random number will be returned from the stream with eachcall to generate a

©ProModelCorporation

Planning the Model 58

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 72/715

59 ProModel 2011 User Guide

random normal variate. Using two different streams, each dedicated to a machine's downtime and each having the same

initial seed, will ensure that both machinesgo down at the same time everytime. The two streams have the same starting

seed value so theywill produce exactly the same sequence of random numbers.

Step 5: Analyzing the Output

Output analysisdealswith drawing inferences about the actualsystem based on the simulation output. When conducting

simulation experiments, extreme caution should be used when interpreting the simulation results. Since the results of a

simulation experiment are random (given the probabilisticnature of the inputs), an accurate measurement of the sta-

tistical significance of the output isnecessary.

People doing simulation in academia are often accused of working with contrived and often oversimplified assumptions,

yet are extremelycareful about ensuring the statistical significance of the model results. Simulation practitionersin indus-

try, on the other hand, are usuallycareful to obtain valid model data, only to ignore the statistical issues associated with

simulation output. Maintaining a proper balance between establishing model validation and establishing the statistical sig-

nificance of simulation output isan important part of achieving usefulresults.

The most valuable benefit from simulation isto gain insight, not necessarily to find absolute answers. With this in mind,one should be carefulabout getting too pedantic about the precision of simulation output. With more than 60 combined

years of experience in doing simulation modeling, Conway, Maxwell and Worona (1986) caution that attaching a sta-

tistical significance to simulation output can create a delusion that the output results are either more or lesssignificant

than theyreally are. They emphasize the practical, intuitive reading of simulation results. Their guideline is"If you can't

see itwith thenaked eye, forgetit."

The goalof conducting experiments isnot just to find out how well a particular system operates, but hopefullyto gain

enough insight to be able to improve the system. Unfortunately, simulation output rarely identifies causes of problems,

but onlyr eports the symptomatic behavior of problems. Bottleneckactivities, for example, are usuallyidentified by looking

for locationsor queues that are nearly always full which feed into one or more locations that are sometimes empty. Detect-

ing the source of the bottleneck issometimes a bit trickier than identifying the bottleneck itself. Bottlenecks may be

caused by excessive operation times, prolonged delays due to the unavailability of resources, or an inordinate amount of 

downtime. The ability to draw correct inferences from the results isessential to making system improvements.

Step 6: Reporting the Results

The last step in the simulation procedure isto make recommendations for improvement in the actual system based on the

results of the simulated model. These recommendations should be supported and clearly presented so that an informed

decision can be made. Documentation of the data used, the model(s) developed and the experiments performed should

all be included as part of a finalsimulation report.

 A simulation has failed if it produces evidence to support a particular change which is not implemented; especiallyif it is

economically justified. The process of selling simulation results is largely a process of establishing the credibilityof the

model. It is notenough for the modelto be valid, theclient or management mustalso be convinced of itsvalidityif it is to

be used asan aid indecision making.Finally,the resultsmust be presented intermsthat are easy to understand and eval-uate. Reducing the results to economicfactors always produces a compelling case for making changes to a system.

In presenting resultsit is important to be sensitive to theway in whichrecommendations are made. It helpsto find out

whether recommendations are being sought or whether a simple summaryof the results iswanted. It isgenerallywise to

present alternative solutions and their implications for system performance without suggesting one alternative over 

another, particularlywhen personnel changes or cuts are involved. In fact, where there may be careers on the line, it is

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 73/715

best to caution the decision maker that your simulation studylooks only at the logistical aspects of the system and that it

does not take into account the potential reactions or potential difficulties employees may have in accepting a particular solu-

tion.

 Animation and output charts have become an extremely useful aid in communicating the results of a simulation study. This

usuallyrequires that some touch-up work be done to create the right effect in visualizing the model being simulated. In pre-paring the results, it isoften necessary to add a few touch-upsto the model (like a full dress-rehearsal) so the presentation

effectivelyand convincingly presents the results of the simulation study.

 After the presentation is finished and there is no further analysis to be conducted (the final presentation always seems to

elicit further suggestions for trying this or that with the model), the model recommendations, if approved, are readyto be

implemented. If the simulation hasbeen adequately documented, it should provide a good functionalspecification for the

implementation team.

Pitfalls in Simulation

If the stepsthat have been outlined are followed, the chances of performing a successful simulation project are very good.

Typicalreasonswhy simulation projects failinclude the following:

l Failure to state clear objectives at the outset.

l Failure to involve individuals affected by outcome.

l Overrunning budget and time constraints.

l Failure to document andget a consensus on input data.

l Including more detailthan isneeded.

l Including variables that have little or no impact on system behavior.

l Failure to verify and validate the model.

l Basing decisions on a single run observation.

l Basing decisions on average statistics when the output isactually cyclical.l Being too technical and detailed in presenting the results to management.

Summary

 A simulation project has distinct phases that must be understood and followed in order to be successful. Simulation

requires carefulplanning with realistic goalsand expectations. Steps to performing a simulation studyinclude planning the

study, defining the system, building the model, conducting experiments, analyzing the output, and presenting the results.

Systematicallyfollowing these steps will help avoid the pitfalls that frequently occur when conducting a simulation study.

Building a Model

ProModelgives you the flexibility to create a model in several ways—the easiest isto use the graphical point-and-click

approach. To build a model, you should first define anylocations in the system. With locationsdefined, you are readyto

create entities (parts, customers, calls, etc.) and schedule their arrivals to the locations you created. Next, specify the proc-

ess logic for entities at each location (this will establish the entity flow throughout the model). Finally, define anyoptional

model elements such as attributes, variables, or arrays that you will use in processing entities.

©ProModelCorporation

Planning the Model 60

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 74/715

61 ProModel 2011 User Guide

Modeling Scenario

Before we actuallybegin building a model, let'slook at a fictitious scenario for our model building session.

Cogswell Cogs hasjustsecured a contract to produce a new cog for production of theX-95C Family Space Cruiser. The

current capacity of the Cogswell facility isnot adequate to handle any additionalwork load while continuing to fillexisting

orders. Therefore, Mr. Cogswell has ordered the I.E. department to simulatethe design of a new workcelldedicated to

the production of the new cog.

The process consists of loading a cast blankonto an NC millfor milling of the outside splines. Once the splines have been

cut, the cog must be degreased, inspected and loaded with an inner bearing. All operations, including inspection, are to

be performed bya single operator.

Model Elements

In building this model we must define all of thebasicmodeling elementsand a few of the optional elements.

Locations

We need some type of receiving location to hold incoming entities. We also need processing locationswhere entities have

value added to them. For the given production rate, Cogswell's engineershave determined that the workcellwillrequire

two NC_300 series numerically controlled mills, a degreasing machine, and an inspection/assembly station.

Entities (Parts)

The entity typesin this system include Pallets, each carrying six cast Blanks. Blanks become Cogsafter processing, and

Bearings are loaded at the Inspect station.If a Cog failsthe inspection itwill be called a Reject.

 Arrivals

Cogswell's engineershave determined that Pallets should arrive at the rate of 1 Pallet every 45 minutes.

Processing

The operation at each millrequires an operator to load the Blank, which takes a normally distributed amount of time with

a mean of 3 minutesand standard deviation of .2 minutes(i.e., N(3,.2)). After a blank hasbeenloaded, the machining

time isa constant 5.7 minutes.

Cogsare then removed from the milland placed in the degreasing machine. The degreasing machine hascapacity for 2

Cogs,and hasa cycletime of 5 minutes.

Once the Cogshave been degreased, theyare inspected for proper spline depth, and a bearing isinstalled in the center 

hole. This process requires the celloperator, and takes U(3.2,.3) minutesfor the inspection and U(1.5,.2) minutes for the

Bearing to be installed. If the Cog failsinspection, no Bearing isinstalled.

Resources

 A single operator, CellOp, performs all manual operations.

Path Networks

In order to make CellOpa mobile resource, we must define a path network. We'll call itCellNet.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 75/715

 Attributes

 An attribute is simply a “numeric tag” attached to either an entity (entity attribute) or a location (location attribute). Since

each Cog isinspected for proper spline depth, we attach an attribute called Test to each Cog, specifying the Pass/Fail

statusof theCog.

User Distributions

We will sample from a user defined distribution and set the Test attribute to either 1 (for pass) or 0 (for fail). Ninetysixper-

cent of the Cogspass inspection and have their Test attribute set to one. Four percent fail the inspection and have their 

Test attribute set to zero.

Phased Modeling Approach

Insteadof trying to build a modelall at once, you may want to implement a phased modeling approachwhere you build the

model in stages. This will help you understand the basicmodeling elements before moving on to more complex ones like

attributes and IF-THEN logic. The following elements are those components normally entered during each phase of the

model building process.

Phase 1: Basic Model Elements

In the first phase you input all of the basicmodel elements: GeneralInformation, Locations, Entities, Arrivals, and Proc-

essing. You also import a background graphicto help in placing the locationsin the layout window. Upon completion of this

phase you have a fullyworking model, readyto animate and collect output.

Phase 2: Adding Resources & Variability 

The second phase normally consists of expanding the model by adding resources and the corresponding path network

needed to move entities, using resources, from location to location.

Phase 3: Additional Operations

The finalphase usuallyconsists of adding additionalreality to the model—that is, adding those nuances that make the

model an accurate representation of a real system. These include:

l Adding Quantityand Time_in_system attributes.

l Changing operational times from simple time constants to distributions.

l Adding features that ensure accurate entity processing.

l Adding variablesfor on-screen display.

l Defining appropriate downtimes.

Phase 1: Basic Model Elements

The first step in building the model isto define the model's basicelements.

General Information

The GeneralInformation dialog box, accessed through the Build menu, allows you to name your model and specify default

information such as time and distance units. You also specify the name of the graphics library to use. By default it will be

PROMOD5.GLB.

©ProModelCorporation

Planning the Model 62

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 76/715

63 ProModel 2011 User Guide

Importing a Background Graphic 

Simple background graphics are imported easily through the Background GraphicsEditor. ProModelalso allows you to

import complex graphics files such as AutoCAD drawings to use as the background for your simulations. For more infor-

mation on how to importa backgroundgraphic, see GraphicEditor on page 411.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 77/715

Often, importing a background graphicmakesthe process of placing locations easier, or altogether eliminatesthe need to

create graphicicons for locations.

Defining Locations

Locationsare defined easily by selecting the desired icon and placing it in the layout window. Each time a location isplaced

in the layout window, a corresponding record isentered in the Location edit table. Thistable lists each location along with

location parameterssuch as the capacity, number of units, and downtime information. For more information on how to

define a location, see Locations on page 125.

©ProModelCorporation

Planning the Model 64

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 78/715

65 ProModel 2011 User Guide

Layout Window (maximized)

Location Edit Table

Defining Entities

Once all locationshave been defined, we define entities in a similar way by selecting an icon for each entity type. As we do

this, a record iscreated in the Entity edit table for each entity type. For more information on how to define entities, see Enti-

ties on page 152.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 79/715

In this model the Speed (fpm) column isirrelevant since all entities move according to the definition of the mobile resource

CellOp. Also, the Statscolumn showsthat we desire detailed statistics for allentity types. “Time series” statistics include

throughput history of the entity. “Basic” statisticsinclude only the total exits of each entity type from the system and the final

quantity of each entity type in the system.

Defining Arrivals

Ofthe four entity types, onlyone needsto be scheduled to arrive in the system.Every 45 minutesone Pallet arrives at the

Receiving location. The word “INFINITE” in the Occurrences column means that one pallet continuesto arrive every 30

minutes as long as the simulation runs. For more information on defining arrivals, see Arrivalson page 210.

Defining Process Logic 

The last stepin defining Phase 1 of our modelis to define the processing of entitiesat each location. ProModelsimplifies

thistask byallowing you to select an entity type andthen use themouse to click on thelocationsin theorder inwhich they

will process the entity. Each time you click on a location, a new processing record isadded to the Process edit table, defin-

ing the process for that entity type at that location. For more information on defining process logic, see Processing on page193, and see Operation Logic on page 397.

Once the basicentity flow hasbeen defined using the point and click method, operation statementsare added to the proc-

essing logic. The processing logic can be as simple as a constant operation time or as complex as a nested

IF...THEN...ELSE statement.

Process editing actually involves two edit tables that normally appear side by side. The Process edit table specifies what

happens to an entity when it arrives at a location,and the Routing edit table specifies where an entity is to be sentonce

processing iscomplete.

©ProModelCorporation

Planning the Model 66

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 80/715

67 ProModel 2011 User Guide

Process Edit Table

Routing Edit Table

Process and Routing Logic

The entire process androuting tables for thePhase 1 modelare shown next. The table readsas follows:

1. When an entity called Pallet arrives at location Receive there isno operation time or processing logic (it's just a

storage location). The resulting output issixentities called Blank that are routed to the FIRST available des-

tination of either NC_301L or NC_302L.

2. When Blanks arrive at NC_301L or NC_302L, the processing time is a normaldistribution with a mean of 3 and

a standarddeviation of .2 minutes. The name of the entityis now changedto Cog, andthe Cog is sent to the

Degrease location (FIRST is the default routing rule).

3. Two Cogsare accumulated at Degrease and processed for 5 minutes. When the degrease cycle iscomplete,

Cogsare routed to location Inspect.

4. The inspection time is a uniform distribution with a mean of 3.2 and a halfrange of .3 minutes. Ninety sixpercent

of the Cogspass inspection and exit the system, while four percent of the Cogsfail inspection and become

Rejects.

Process Table and Routing Table

Entity Location Operation (min) Blk Output Destination Rule Move Logic

Pallet Receive1

Blank NC_301L F IRST 6 MOVE F OR .5

Blank NC_302L FIRST MOVE F OR .5

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 81/715

Entity Location Operation (min) Blk Output Destination Rule Move Logic

Blank NC_301L WAIT N(3,.2) 1 Cog Degrease FIRST 1 MOVE FOR .5

Blank NC_302L WAIT N(3,.2) 1 Cog Degrease FIRST 1 MOVE FOR .5

Cog Degrease ACCUM 2

WAIT 51

Cog InspectFIRST 1 MOVEFOR .5

Cog InspectWAIT U(3.2,.3) 1

Cog EXIT 0.960 1

Reject EXIT 0.040

Phase 2: Adding Resources & Variability

In thisphase we wishto addthe operator, CellOp, to move entitiesfrom location to location,and to perform the loading,

unloading, and inspection operations. ProModelrequires that all dynamic resources travel on a path network. Therefore,

for Phase 2, we need to define resources and path networks.

Defining Path Networks

Path Networks consist of nodes and path segments which connect nodes to other nodes. Each location where a resource

maystop to pick up,drop off, or process entitiesmust interfacewith a path node.

We define path networksthrough the Path Network edit table similar to the previous edit tables. For each network we

specify the nodes and path segments connecting the nodes. Some of the heading buttons, such as Paths and Interfaces,bring up other edit tables such as the Path Segment Edit table shown below. For more information on defining path net-

works,see Path Networks on page 158.

Path Network Edit Table

©ProModelCorporation

Planning the Model 68

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 82/715

69 ProModel 2011 User Guide

Path Segment Edit Table

Defining Resources

Resourcesare defined in much the same wayas entities. When inthe Resource module we simply select an icon to rep-

resent the resource and then specify the characteristics of the resource in the Resource edit table. For more information

about defining resources, see Resources on page 171.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 83/715

The Resource edit table shown below contains fields for specifying the name and number of units of a resource. It also has

fields for specifying resource downtimes( DTs...), the level of statistics to collect (Stats...), which path network used for 

travel (Specs...), and any work and park search routines (Search...). Clicking the mouse on any of these buttons brings up

separate edit tables for specifying thisdata.

©ProModelCorporation

Planning the Model 70

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 84/715

71 ProModel 2011 User Guide

Process Editing 

Now that we have defined a resource, we must specifyhow and when that resourceis used in the processing logic.

In the Phase 1 model we used only constant processing times. Now, due to variability associated with the operator, we

must represent the loading and inspection times as distributions.

In the example below, CellOp loadsthe blankat millNC_302L and is then FREEd to performother operations. When the

Blank hasfinished processing, the entity ismoved with the CellOp to the degreasing machine.

Process Edit Table and corresponding operation logic

Routing Edit Table

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 85/715

Process and Routing Logic 

The complete process and routing logic isshown below, with CellOp used to perform the loading operationsat each mill

and inspect the Cogsat the Inspect location. CellOp isalso used to transport entities from location to location. All additions

or changesto thePhase 1 modelare shown inbold type.

Process Table and Rout ing Table

En tit y L ocat io n Op erat io n ( min ) Blk Ou tp ut Dest in at io n Ru le Mo ve L og ic

Pallet Receive1

Blank NC_301L FIRST 6 MOVE WITH CellOp

Blank NC_302L FIRST MOVEWITHCellOp

Blank NC_301L WAIT N(3,.2)

FREE CellOp

WAIT 5.7

1

Cog Degrease

FIRST 1 MOVE WITH CellOp

Blank NC_302L WAIT N(3,.2)

FREE CellOp

WAIT 5.7

1

Cog Degrease

FIRST 1MOVE WITH CellOp

THEN FREE

Cog Degrease ACCUM 2

WAIT 51

Cog InspectFIRST 1 MOVE WITH CellOp

Cog Inspect WAIT U( 3.2,.3)

FREE CellOp1

Cog EXIT 0.960 1

Reject EXIT 0.040

With the new processing now defined, we have specified all of the necessary modeling elements. We are now readyfor 

the model execution phase. Once again, we shall defer discussion of model execution until we have finished the final

phase of the model.

Phase 3: Additional Operations

In the finalphase of our modeling session we want to demonstrate an assembly operation by using the operator to install a

Bearing into the center hole of the Cog if (and only if) the Cog passes inspection.

Once we have defined the attribute and distribution table, we must return to the Locations, Entities and Arrivalsmodules to

define a new location called Bearing_Que, a new entity called Bearing, and an arrival schedule for the Bearings.

In addition, we also need to specify a usage based downtime for mills NC_301L and NC_302L from the Location module.

The finalstep in completing this phase of the model isto edit the processing logic to include the assembly. We will use the

built-in JOIN construct to accomplish the assembly.

©ProModelCorporation

Planning the Model 72

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 86/715

73 ProModel 2011 User Guide

Defining Attributes

The Attribute module allows you to enter the Attribute edit table to define an Entity Attribute called Test that holds integer 

values. We set this attribute to one if the Cog passes the inspection, or zero if it failsthe inspection. For more information

about defining attributes, see Attributeson page 294.

Defining a Distribution

In order to determine if an entitypasses or failsthe inspection, you sample from a user-defined distribution called Dist1(alternately, you could use the RAND() function). To define the distribution, simply click the mouse on the Table... button

and fillin the distribution parameters. In this case, 96%of the entities pass inspection and 4% fail.

New Location, Entity, and Arrival 

Before we can assemblethe Cog at the Inspect location we must firstdefine thenew entitytype called Bearing inthe Enti-

ties module. We must also define a new location, Bearing_Que, to hold the Bearings, and an arrival schedule for the Bear-

ings. To do this we simply open the appropriate module as in Phase 1 and supply the information. For simplicity we'll skip

the details and move on to downtime specification.

Defining Location Downtimes

In order to represent machine failure timesfor thetwo mills, NC_301L and NC_302L, we clickon the DT... button in theLocation edit table shown below. Thisbringsup another edit table for specifying a downtime based on machine usage.

For more information about defining location downtimes, see Location Downtimes on page 141.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 87/715

In the example above, we have defined failures to occur according to an exponential distribution with a mean of 30 min-

utes. When a machine fails, resource CellOp isrequired to service the machine.

Process and Routing Logic 

The processand routing table below showsallof the changesand additionsto thePhase 2 modelin bold text.

Process Table and Rout ing Table

En tit y L ocat io n Op erat io n ( min ) Blk Ou tp ut Dest in at io n Ru le Mo ve L og ic

Pallet Receive1

Blank NC_301L FIRST 6 MOVE WITH CellOp

Blank NC_302L FIRST MOVE WITH CellOp

Blank NC_301L WAIT N(3,.2)

FREE CellOp

WAIT 5.7

1

Cog Degrease

FIRST 1 MOVE WITH CellOp

Blank NC_302L WAIT N(3,.2)

FREE CellOp

WAIT 5.7

1

Cog Degrease

FIRST 1MOVE WITH CellOp

THEN FREE

Cog Degrease ACCUM 2

WAIT 51

Cog InspectFIRST 1

MOVE WITH CellOp

THEN FREE

©ProModelCorporation

Planning the Model 74

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 88/715

75 ProModel 2011 User Guide

En tit y L ocat io n Op erat io n ( min ) Blk Ou tp ut Dest in at io n Ru le Mo ve L og ic

Cog Inspect WAIT U(3.2,.3)

FREE CellOp

1Cog EXIT

FIRST 1

2 Reject EXIT FIRST 1

Bearing Bearing_Que 1 Bearing Inspect JOIN 1 MOVE FOR .05

This concludesthe finalphase of our model building session. We now turn our focus to running the model.

Running a Model

Running a model isa fun and easy process. Modelsare compiled automatically at runtime, keeping you apart from any

complex compilation process. If your modelcontains any errors, a detailed message explains the nature of the error and

pointsto the module and line number where the error occurred. In most casesyou are permitted to make changeson the

fly.

ProModelusesconcurrent animation, which means that the animation occurs while the simulation isrunning. Concurrent

animation hasmany advantages over post-simulation animation. By eliminating the two-step process of running the sim-

ulation and then animating it, you save valuable time. Concurrent animation immediately allows you to see if a model is

working properly.

Simulation Options

When you select Optionsfrom the Simulation menu, ProModeldisplays the Simulation Options dialog. Thisdialog con-

tains several optionsfor controlling the simulation, such as the run length, warm-up period, clock precision, and the name

of the output file. You can also set the number of replications and the level of detailto be collected for the statistics. For 

more information about Simulation options, see Simulation Options on page 450.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 89/715

The maximum run length depends on the clock precision and the time unit selected as shown in the following table.

CLOCK PRECISION

Time Unit .01 .001 .0001 .00001

Seconds (sec) 11,930 hrs 1,193 hrs 119 hrs 11 hrs

Minutes (min) 715,827 hrs 71,582 hrs 7,158 hrs 715 hrs

Hours (hr) 42,949,672 hr s 4, 2 94,967 h rs 429,496 hr s 42,949 hr s

Days (day) 1,030,792,128hrs 103,079,208 hrs 10,307,904 hrs 1,030,776 hrs

Animation Screen

The ProModelanimation screen has a menu of its own, with selections for controlling manysimulation parameters (such

as run speed). You can also controlthe animation through panning, zooming, and pausing.

©ProModelCorporation

Planning the Model 76

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 90/715

77 ProModel 2011 User Guide

The screen above shows the speed controlbar, along with the clock selection button for controlling the format of the clock

readout.

The File menu includes an option for viewing a text file of the modelas the modelis running. This isan excellentway of 

checking to make sure the modelisdoing what it is supposed to do.

Next we'lltake a lookat two of the other menu items:Optionsand Information.

Options Menu

The Options menu contains several options that allow you to track eventsin the system as theyoccur. The Debugger isa

convenient and efficient way to test or follow the processing of anylogic defined in your model. The debugger is used to

stepthrough logic one statement at a time and examine variablesand attributeswhile a modelis running. A Step Trace

allowsyou to step through the system events oneat a time by clicking on the left mousebutton.A ContinuousTrace

allows you to step through system eventscontinuouslywithout clicking the mouse.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 91/715

The following Trace window shows system eventsas theyoccur in the animation. The number in the left hand column rep-

resentsthe simulation time when the event occurred, while the text describes the event. Stepping through the eventsis an

excellent way to verifyand debug a model.

Other options include: Animation Off, which makes the simulation run considerably faster; Zoom, which allows you to

zoom in or out to anydegree on the animation; Views, which allows you to quicklyand easily accessspecificareas of the

modelLayoutwindow (see Layout Settingson page 111); andUser Pause, whichallowsyou to specifythe time of the next

simulation pause.

Information Menu

The Information menu containsselections for obtaining system information during the run. For up-to-the-minute location

information, such as current location contents and total number of entries, select Locations from the Information menu.

©ProModelCorporation

Planning the Model 78

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 92/715

79 ProModel 2011 User Guide

Viewing Model Statistics & Reports

The purpose of anysimulation model isto gain a deeper understanding of the system under study. ProModel's Output

Viewer helps you to see the interactions between various system elements through tabular and graphical representation

of system parameters such as resource utilization, throughput history, cycle time, and work-in-processlevels.

 After each simulation run, you are prompted to view the model output. You can select yes to view the results immediately,

or select no to continue with some other task. Selecting yes opens the Output Viewer and automatically loadsthe output

of the mostrecent modelrun.

The Output Viewer can be run directlyfrom within ProModel, or asan independent application separate from ProModel.

You can load a single results file or several results files from different modelsfor comparison of selected statistics.

Model output iswritten to several output files according to the type of data being collected. The main output file contains

information of a summarynature such as overall location utilization and number of entries at each location. Other files

keep track of information such as location contents over time and the duration of each entity at each location.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 93/715

In order to see thepower and flexibility of the ProModeloutputgenerator, see Reportsand Graphs on page 482 for a brief 

overview of the output generated by the Output Viewer. For a detailed information and examples, refer to Output Viewer's

help.

©ProModelCorporation

Planning the Model 80

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 94/715

Modeling Environment

The Modeling Environment iseverything contained within the ProModelwindow.When you open a modelor selectNew fromthe File menu, your screenappearswith a menu bar across the topof the

screen and a layout window. You will also be given accessto the ProModelShortcut Panel. For now, let'slookbriefly at the

Shortcut Panel and then the menus accessible from the menu bar.

From the ProModelshortcut panel seen above, you may quicklyaccess some of ProModel’scommonly used features:

l Open a model Opensan existing model.

l Install model package Loads an existing model package.

l Run demo model Allows you to run a demonstration model.

l SimRunner Launches SimRunner.

l Stat::Fit Launches Stat::Fit.

To simply begin working on a new model, closethe Shortcut Panel andselect New from the File menu.The Shortcut

Panelcan be openedagain from theView menu.

Menu Bar 

 Allof the tools necessary to build and run a model and view the corresponding output are accessed through the menu bar.

The menu bar is located just beneath the ProModel caption bar and contains the selections listed on the following page.

These selections accessother menus with selections related to the menu heading.

l File The File menu allows you to open new models, save current models,and merge two or more models into

one. It alsoallowsyou to view a textversion of the modeland print either themodeltext file or the graphic layout of 

the model. For moreinformation, see File Menu on page 82.l Edit The Edit menu contains selections for editing the contents of edit tables and logic windows. The selections

available from this menu will change according to the module from which the Edit menu isselected. They also

vary according to the currently selected window. For more information, see Edit Menu on page 95.

l View The View menu lets you controlProModel’s appearance. From this menu you can controllayout settings,

hide or view hidden paths, operate the zoom controls, and more. For moreinformation,see View Menu on page

105.

l Build The Build menu contains all of the modules for creating and editing a model. Thisincludesthe basicmod-

ulessuch as Locations, Entities, Arrivalsand Processing, andtheoptional modeling elements such as Variables,

 Attributes, Arrays, and Subroutines. For more information, see Build Menu on page 124.

l Simulation The Simulation menu controls the execution of a simulation and contains options for running a

model, and defining and running scenarios. For more information, see Running the Model on page 449.l Output The Output selection starts the Pr oModelOutput Viewer for viewing model output. It also allows you to

view the tracegenerated during run-time.For moreinformation,see Reportsand Graphs on page 482.

©ProModelCorporation

Modeling Environment 81

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 95/715

82 ProModel 2011 User Guide

l Tools The Tools menu containsvarious utilities including the Graphics Editor for creating and modifying graphic

icons and a search and replace feature for finding or replacing expressionsthroughout a model. For more infor-

mation, see Tools Menu on page 406.

l Window The Window menu allows you to arrange the windows( or iconized windows) that are currently dis-

played on the screen such that all windowsare visible at once. It also allowsyou to bring any individualwindow to

theforefront of the display. For more information,see Window Menu on page 118.

l Help The Help menu accesses the ProModel Online Help system. For more information, see Help Menu on

page 118.

File Menu

The File menu isthe first selection on the menu bar and consists of five major sections divided by horizontallines. The file

management section contains functionsr elated to model files such as saving and retrieving. The view/print section allows

the user to view a text listing of the current model and print that listing or model layout. The model packaging section

allows the user to create and installmodel packages consisting of models with associated files. Exit quits ProModel, and

the model history section lists the five most recently opened modelsfor quick retrieval. Choosing any model in the modelhistory will open and retrieve that model.

File Management

The File menu provides five functions related to model files such as saving and retrieving. Files in the ProModelformat

use the MOD extension. The following defines each of the selections available from the file management section shown

previously.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 96/715

New Closes any currently opened model so a new model can be built. This command isunnecessary if no other model is

open. If thecurrently opened modelhas changed, ProModelwill ask if you want to save the modelbefore closing it.

Open Opens a user-specified model and clears previous model data.

Merge Merges a selected ProModelmodel or submodel into the current model. The same submodel can be merged mul-

tiple times into the same model. See Merge Modelon page 85.

Save Savesan open modelunder thecurrent filename.If no file name hasbeengiven, the user is prompted for a file

name.

Save As Savesan open modelunder a new filename specified by the user. The old filename still exists.

Modelssaved in current versions of ProModelare not always compatible with previous versions of ProModel.

However, modelsmay be saved as previous versionsin order to allow those modelscreated in recent versions of Pro-

Modelto be shared with otherswho maybe running a previousversion of ProModel.

Modelscreated in version 8.5 or higher must be saved as:

l version 8.0 to run with versions 8.0, 8.0.1,or 8.1.

l version 7.0to run with version 7.0or 7.5.

l version 6.0to run with versions6.0 or 6.2.

Please note

There is also an Autosave feature that saves the model file every n minutes as specified in the .INI file.

This feature can be disabled. See the d iscussion later in t his section.

File Management Procedures

How to create a new model:

©ProModelCorporation

Modeling Environment 83

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 97/715

84 ProModel 2011 User Guide

1. Select New fromthe File menu.

2. Define model elements using their corresponding modules.

How to open an existing model:

1. Select Open from the File menu.

2. Enter the necessary information in the Load Model dialog box.

How to save a model:

1. Select Save from the Filemenu.If the modeldoesnot alreadyhave a name,the Save Asdialog boxwill appear.

How to save a model with a new name:

1. Select Save As fromthe File menu.

2. Enter thenew file name inthe Save Asdialog boxas shown in the following dialog box.

3. Select OK.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 98/715

Backup File

ProModelalso createsa backup fileevery time a modelissaved. The backup file is named thesame asthe modelfile, only

with a .BAK extension.

Model Merging

Model merging isa powerful feature that allows large or complex modelsto be built in smaller segments. A model segment

maybe assmallas a single workstation or as large asan entire department. After all segments are ready, theycan be

merged together to form a single model.

The Merge feature consists of two options: Merge Model and Merge Submodel.

Merge Model 

The Merge Model option allows two or more independent (complete or incomplete) modelsto be merged into a single

model. Duplicate elements found in the base model and the merging model are treated differently according to the ele-

ment type.

Entity and attribute names common to both modelsare considered common elements in the merged model. For example,

if both models contain the entitytype In-Box,the merged modelwill contain only the record from the basemodelin the Enti-

tiestable for In-Box.

Duplicate locations, resources or path networksmust first be renamed or deleted from the merging model. Otherwise, an

error message occurs and the merge will terminate.

If the two modelsuse different graphiclibraries, ProModelwillgive the user the choice to append the merging model's

graphiclibrary to the base model's graphiclibrary.

©ProModelCorporation

Modeling Environment 85

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 99/715

86 ProModel 2011 User Guide

 Allother duplicate model elements cause a prompt to appear with the choice to delete the duplicate element from the

merging model or cancel the merge process.

Merge Submodel 

The Merge Submodel option allows commonlyused submodels to be merged into an existing model in one or moreplaces. Submodelsare created just like anyother model and maybe complete or incomplete models.

When specifying a submodel,you are prompted for a “tag” to be attached to each elementof thesubmodelas either a

prefix or suffix. For example, you may be developing a model with four workstations. Instead of creating workstations

individually, you could create a submodel with only the common elements (e.g., in-box, out-box, telephone, variables,

arrays, etc.) and merge the submodel into the main model four times. In the resulting model, you would then fillin the

unique portionsof each workstation. Entity and attribute names will not be tagged.

In the following example, the tag “A_” isattached as a prefix to every element of the submodel. A location called Queue1

in the submodel becomesA_Queue1 in the main model and so on. Likewise, a variable called Rejects becomesA_ 

Rejects in the merged model.

Please note

Tags used as prefixes must b egin with a letter, A th rough Z , or an underscore. For example, the tag “3C_” 

is invalid and would produce an error message.

How to merge a modelor submodelinto an existing model:

1. Open the initial (base) model.

2. From the File menu select Merge.3. Select Model or Submodel from the submenu.

4. Specify the name of themodelto be merged in thefollowing dialog box.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 100/715

5. If you select Submodel,specifya prefix or suffixto be attached to each elementof thesubmodel.

6. Clickon the layout where you want the modelor submodel to appear. A bracket appears on thescreen, rep-

resenting the upper left corner of the merging model’s layout. Thisbracket moves as you move the mouse, allow-

ing you to correctly position thelayout to be merged.

7. Next, you willbe asked if you would like to append the graphic libraryfile from the modelor submodel to the cur-rent graphiclibrary file. Select yes or no depending on your preference.

8. When the modelis merged in, thegraphicalelementsremain selected so that you can position the merged model

exactly where you want it.

Please note

When merging models, if the zoom factors and grid scales are not the same, ProModel will adjust the sizes

of graphical elements in the merging model to the scale of the o riginal model.

View/Print Model Text

The modular nature of ProModelmakesit easy to focus on the individual elements of a model. However, it can still be use-ful to see an entire modelwith all of the modelelementsin view at onetime. ProModelprovidestwo ways to accomplish

this. The firstis through the View Text option and the second is through the Print Text and Print Layout Options.

The second major division of the File menu contains the following options.

©ProModelCorporation

Modeling Environment 87

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 101/715

88 ProModel 2011 User Guide

Each menu selection iscovered in detailin the following pages.

l View Text Displays thetext of the current modeldata in a window.

l Print Text Printsthe textof the current modelto either a file or the printer.

l Print Layout Printsthe modellayout to a printer.

l Printer Setup Opensa dialog box to allow printers to be selected and controlled.

View Text The View Text option displays the textof thecurrent modeldata ina window. This window maybe sized or shrunk to an

icon for later viewing.

How to view the text ofa model:

1. Select View Text from the File menu. The model'stext isdisplayed in a window as shown in thefollowing exam-

ple.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 102/715

Onlythe first 30 characters of names will appear in the names column.

Please note

You may leave the View Text window o pen for reference while editing the model. However, any updates will 

not appear until you close the window and select View Text again.

Print Text 

The Print andPrint Layout options allow you to print a modelto any printer configured for use with Windows. You mayalso

save a textcopy of thefile to disk.

How to save a textcopy of thecurrent model:

1. Select Print Text... fromthe File menu.

2. Select To Text File from the submenu.

3. Supplya name for the filein the Print to Text Filedialog box.The default file extension is TXT.

How to print the current text to a printer:

©ProModelCorporation

Modeling Environment 89

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 103/715

90 ProModel 2011 User Guide

1. Select Print Text... from the File menu.

2. Select To Printer from the submenu.

3. Select thedesired options fromthe Print dialog box and clickPRINT.

Please note

The entire layout may also be copied to the clipboard for editing and printing in another application.

Print Layout 

You mayprint the layout of any model including all locations, path networks, resources, variables and background graph-

ics to anyprinter configured for use with Windows. Regardlessof the size of the model layout, the layout will be pro-

portioned automatically to print on one standard size sheet of paper.

How to print a modellayout:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 104/715

1. Select Print Layout from the File menu.

2. Select the desired optionsfrom the Print dialog boxand clickPRINT.

3. Choose theelementsto be includedin thelayout.

©ProModelCorporation

Modeling Environment 91

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 105/715

92 ProModel 2011 User Guide

Printer Setup

ProModelallows you to print to anyprinter configured for use with Windows. At timesyou may need to switch from the

default printer to another printer or plotter. Thiscan be done easily through the Setup option on the print dialog box.

How to change the printer settings:

1. Select Printer Setup... from the File menu to accessthe Print Setup dialog box.

2. Select the desired options and click OK.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 106/715

Model Packaging/Data Protection

Model packaging and Data Protection are powerful toolsthat allow you to distribute copies of your model for others to

examine and review, yet maintain the integrityof the model. When you create a model package, ProModelbuilds an

archive of files necessary to run the model and allows you to distribute a copy of the model’s graphics library. When youapply Data Protection, you can prevent others from viewing or altering logic contained in your model.

Create Model Package Copies the current model and its associated files to a specificdirectory or diskas <model

name>.pkg.

Install Model Package Copies the files in a *.pkg file to the destination directory you wish to use.

Creating a Model PackageThe Create Model Package option allows you to copy the current model and its associated files to a specificdirectory as a

single file entitled <modelname>.PKG. Thisfile includesthe model file (*.MOD), the graphiclibrary (unless you check the

Exclude Graphic Library option), and anyexternal files you defined (e.g., read files, arrivals files, and shift files)—the

model package automatically includes bitmaps imported into the background graphics.

When you create a model package, two options are available:

©ProModelCorporation

Modeling Environment 93

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 107/715

94 ProModel 2011 User Guide

l Exclude Graphic Library Excludesthe graphics library file from the model package—if not required—and

createsa smaller package file.

l Protect Mod el Data Preventsthose who install the model package from viewing or editing the model data.

When you load a model package, ProModeldisables the View Text, Print Text, and Expression Search features,plus the Build menu and portionsof the run-time Optionsand Information menus.

Please note

You may NOT use dynamic plots with protected models.

How to create a modelpackage:

1. Select Create Model Package fromthe File menu.

2. Enter thename you wish to use for the modelpackage (bydefault, ProModeluses the name of the current

modelwith a *.pkg extension). You may also use the Browse... button to select the model name and directory.

3. Check the Exclude Graphics Library boxif you want to package the modelwithout the graphics library.

4. Check the Protect Mod el Data boxif you want to protect your modeldata and prevent other usersfrom chang-

ing or viewing the model data.

5. Click OK.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 108/715

Installing a Model Package

Install Model Package copies all files in a model package to a specified destination directory and gives you the option to

load the model.

How to install a model package:

1. Select Install Model Package... from the File Menu.

2. Select the model package (*.pkg) from the Install Model Package dialog.

3. In theDestination field, type thename of the directoryto which you want to copythe modelpackage.

4. Select OK. After you install the model package, a dialog will appear and allow you to load the model.

Edit MenuThe Editmenu is thesecond selection on the menu bar.It changesforms depending on which window is currently active

when choosing Edit.

l If the active window isan edit table such as the Locationsedit table, the Edit menu contains options for inserting,

deleting and moving records.

l If the active window isthe Processing edit table, the Edit menu contains two additionaloptions for copying and

pasting completed process and routing records.

l If the active window isa Notes window, the Edit menu contains selections for cutting, copying, and pasting text

within the current window or transferring it to another window.

l If theactive window is a logic window, such asthe onefor the operation column of the processing module, the

Edit menu contains an additionalselection, Compile, which checksthe syntaxof the logic in the logic window. This

option isadditionalto the cut and paste functionsnormally available in a notes window.

l Finally, if the active window iseither the Graphic or Background Editor, the Edit menu contains three sections.

The first section haschoices for cutting, copying, and pasting graphicobjects to and from ProModel's internal clip-

©ProModelCorporation

Modeling Environment 95

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 109/715

96 ProModel 2011 User Guide

board. The secondhas options to cut and paste items to and from the WindowsClipboard. The third has options

to import and export graphics from other applications.

Please note

The Edit menu is accessible only while working inside a module such as a p rocessing edit table or a

Notes edit window. If no module is currently open, the Edit selection is not available. Because multiple

edit tables and windows may appear on the screen at the same time, the Edit menu commands pertain

only to the currently active window. (T o activate a window, click anywhere inside it.)

Editing Tables

When creating or modifying records in an edit table such as a Locationsor Entities table, the Edit menu appears as fol-

lows.

The following table briefly lists the function of each selection of the Table Edit menu.

Delete Deletes a record from the table.

Insert Insertsa record in the table above the current record.

Append Appendsa record to theend of the table.

Move Marks a record for moving to a new position in the table. Only one record maybe marked at a time.

Move to Moves the previouslymarked record in the table above the current record.

How to delete a record f rom a table:

1. Select thedesired record byclicking inany field of the record.

2. Select Delete from theTable Edit menu.

How to insert a record in a table:

1. Position the cursor in the record below where you wish the new record to be inserted.

2. Select Insert from theTable Edit menu.

How to append a record to the end of a table:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 110/715

1. Position thecursor in anyrecord of the table.

2. Select Append from the Table Edit menu. A new record willappear below the last record of the table.

How to move a record to a new position in a table:

1. Select the record to be moved byplacing thecursor in anyfield of the desired record.

2. Select Move from the Table Edit menu.

3. Position thecursor in therecord that is below the final destination of the selected record and select Move to from

the Table Edit menu.

Editing Process Records

When editing the records in the Processing edit table, two additionaloptions for copying and pasting entire process and

routing records appear in the Edit menu.

The Processing Edit menu's first five selections are identical to the Table Edit menu. The two additionalmenu itemsare as

follows:

Copy Record Copies all fields of the current record for subsequent pasting.

Paste Record Placesa copyof themostrecently copied record above the current record.

Please note

Notes on editing process records:

1. A process record consists of all fields in the Process edit table, as well as all corresponding routing rec- 

ords defined in the Routing edit table for the given process.

2. From a Routing edit table, you may only use the Copy Record and Paste Record options to copy rout- 

ing information to another routing record.

3. These options cannot be used to copy processing or routing records from one model to another.

©ProModelCorporation

Modeling Environment 97

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 111/715

98 ProModel 2011 User Guide

How to copy information from another record:

1. Select theinformation to copyfrom field of thedesired record.

2. From the Edit menu, select Copy Record (or press CTRL + C) to copy the information.

3. In the field you want to place the information, select Paste Record from the Edit menu (or press CTRL + V).

Please note

 Alternately, you may copy information between records using the right -click menu.

Editing Notes Windows

You mayannotate individualrecordsof the locations, resources and entities tables through Noteswindows. When editing

the textof a noteswindow, the Editmenu changesto the following form.

How to annotate a record:

1. Click inside the record to be annotated.

2. Click on the Notes buttonat the right of the table.

The selections available from the Notes Edit menu are defined as follows.

Cut Removes the selected text and places it in the clipboard.

Copy Copies the current text and places it in the clipboard.

Paste Inserts the contents of the clipboard at the cursor.

Clear Deletesthe selected text without placing a copy in the clipboard.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 112/715

In addition to the options inthe edit menu, the noteswindow itself containsfour buttons. There are three editbuttons, Cut,

Copy,and Paste which workexactly the same asthe corresponding optionsin the Edit menu, and a Print button. The print

button printsthe textin the notes window. A statusbar appearing at the bottom of theNotesedit window showsthe cur-

rent line position of the cursor (e.g., Line: 2).

Editing Logic Windows Allmulti-line logicwindows, such as the operation logicwindow of the Process edit table, include the editing function but-

tonsshown in the following example. These buttonsinclude cut, copy, paste, undo, local find and replace, build, compile,

print, and help. Using the Cut, Copy, or Paste button worksexactly the same as using the corresponding option from the

Edit menu.

Build The Logic Builder, which may also be accessed by clicking the right mouse in the logic window button, isa tool that

allows you to build logic without typing a single keystroke. Primarilyfor building logic in the logic windows, it mayalso be

used for building expressions in expression fields.

CompileThe Compile menu item checks thelogicin the editwindow to see if it is complete andsyntactically correct. If an

error is found, an information boxwith details regarding the error(s) appears. For example, the following error is a result

of the incorrectlyspelled statement “Acum 2.”

©ProModelCorporation

Modeling Environment 99

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 113/715

100 ProModel 2011 User Guide

Print Printstext, suchas the operation logic for a single location, in a logic window and is helpful when you are trying to

debug a model and need to work with particularlycomplex logic at certain locations.

Help Provides context-sensitive help. ProModelwill provide help with select words or any word with the cursor next to it.

Please note

 A status bar is displayed at the bottom o f a Logic edit window, and shows the current line position of the

cursor (e.g., Line: 2).

Editing Background Graphics

When working with graphicobjects in the Background Graphicsmodule, the Edit menu appears as follows.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 114/715

Cut Removes the selected object(s) and makes a temporary copy that may be pasted back into the layout window.

Copy Makes a temporary copy of the selected object(s) for pasting later.

Paste Adds the most recently cut or copied object(s) to the layout window.

Please note

While in the Background Graphics module, CUT , COPY , and PASTE all use ProModel's internal clip-board. Any objects copied to this clipboard cannot be pasted into other Windows applications. To copy

objects to other applications, use COPY TO CLIPBOARD.

Delete Deletesthe selected objects from the layout window.

Select All Selects all of the objects in the layout window.

Copy to Clipboard Copies the entire contents of the workspace to the Windowsclipboard. Objects cannot be copied

individuallyto the clipboard. ProModelcopies the workspace as a bitmap or windowsmetafile for easy transfer to other 

graphics packagesthat use the Windows clipboard.

Paste WMF Pastesa Windowsmetafile (WMF) from the Windows clipboard into the Edit window. You must have pre-viouslycopied a Windowsmetafile to the Windows clipboard.

Paste BMP Pastesa bitmap file (BMP) from the Windowsclipboard into the Edit window. You must have previouslycop-

ied a bitmap to the Windows clipboard.

Import Graphic Imports a WMF, BMP, PCX or GIF file into the layout window.

©ProModelCorporation

Modeling Environment 101

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 115/715

102 ProModel 2011 User Guide

Export Graphic Exportsthe graphic in the layoutwindow to a WMF or BMP file.

How to edit background graphics:

1. Rightclick on thebackground graphic you wish to edit.2. Select Edit Background Graphic from the right-click menu.

3. Edit the graphic asdesired.

Editing & Moving Graphics

ProModelallows easy adjustment and fine tuning of the graphics in one window rather than opening individualmodules

to move each object. This makes it possible to move or rearrange a whole submodel or model after it has been merged.

To move anyor all graphicsin a model, ProModelmust be in common mode (allmodules must be closed, leaving only

the layout window open).

While in common mode, graphics that can be moved and arranged in the layout window include locations, path networks,static and dynamic resources, variables, and background graphics. Multiple graphics can be selected and moved simul-

taneously. When graphics are selected, the layout can be scrolled and the graphics will remain selected.

How to move graphics:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 116/715

1. Close all build modules leaving only the layout window open.

2. Left clickand drag the selectedgraphicto thedesired position.

3. To move multiple graphics, hold down the Shift key while left clicking the desired graphics to select them and then

drag them to the desired position. Using the shift key with a left click deselects a selected graphic.4. Fine tune theposition of theselectedgraphic(s) byusing the arrow keys on thekeyboard to move one pixelat a

time.

When a submodel or model ismerged into another model, all graphics associated with it are selected. This allows for 

immediate movement by left clicking on the graphics and dragging them to the desired position in the Layout window. You

may also scroll the layout first and then move the selected graphics.

Please note

Multiple graphics can also be selected by dragging a bounding box around the graphics. Holding the left 

mouse button down, drag the mouse from one corner of the graphics to the opposite corner. The bound- 

ing b ox must completely enclose the g raphics you wish to select.

Special Considerations for Moving Graphics

Locations When you click on a location with multiple graphics defined for it (i.e., counter, status light, label) in common

mode, it isselected as one graphic. Multiple units of a location can be moved individually. Adjusting the position of an individ-

ualgraphicin a multiple graphiclocation must be done in the locations module.

Routing Paths Routing paths defined in the Processing module cannot be selected for movement but will move when a

location to which they are connected ismoved. If a routing path hasmultiple segments, only the segment connected to the

location being moved getsreadjusted. However, when both locations on the routing path are moved simultaneously, the

whole routing path ismoved.

©ProModelCorporation

Modeling Environment 103

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 117/715

104 ProModel 2011 User Guide

In the examplesabove, themachine on theright is moved.The routing pathsremain connectedto each graphic while the

path segment connected to the moved graphicis adjusted accordingly.

Path Networks Path networksare not resized when moved. Anyresource pointsdefined for a dynamic resource are

moved when the path networkis moved. The resource pointsremain relative to the node for whichtheywere defined.

Resources When a dynamic resource is moved,the resource point associated with itmoves but not the entire path net-

work.

Sizing Graphicscannot be sized in common mode.

Snap-to-Grid Graphicswill notsnap to the grid incommon mode, but their position can be fine-tuned using the arrow

keyson the keyboard to move the selected graphic(s) one pixel at a time.

Labels To view the labelor edit a location, path network, resource, or variable graphic, right click on the item. If you dou-

ble left click on an item, ProModelopens the build module and highlightsthe record where you defined the element.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 118/715

View Menu

The View menu provides options for modifying the model editing environment. These optionsare defaults, used each time

the program isstarted and are not specificto anyparticular model. The View menu consists of three categories: Switches,

Settings, and Commands. Each of these categories isexplained in the following sections.

How to access theView menu:

1. Select View from the menu bar.

Switches

The following selections are available from the switchessection of the View menu. Switches are options you can check or uncheck to turn on or off.

©ProModelCorporation

Modeling Environment 105

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 119/715

106 ProModel 2011 User Guide

Snap to Grid Check this switch to cause anyobject subsequently drawn or placed on the layout to be positioned on the

nearest grid line. Snap to grid snaps the upper left corner of a graphic.

Show Grid Checkthis switch to show the grid in thelayout window.

Show Layout Co ordinates Displays cursor’s the coordinates in the upper-left-hand side of the layout window.

Show Hidden Networks Check this switch to show the invisible path networksduring editing. A path network can be

made to be invisible by selecting the “invisible” option for the particular network while in the Path Networkseditor.

Show Routing Paths Causesrouting pathsto be visible during run time aswellas edit time. If theoption isnot checked,

the routing paths are visible only while in the processing editor.

Toolbars

 Allows you to toggle the various ProModel toolbars on and off. See Toolbars on page 119 for more infomation on each

toolbar.

SettingsThe following table defines each of the selections available from the settingssection of the View menu. These selections

and their submenusare discussed in more detailon the following pages.

Views Allows you to define, then quickly and easily access specific areas of the model layout. Once the view is defined,

you can select it while editing or running the simulation.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 120/715

Zoom to Fit Layout Shrinks or enlargesthe layout to include the entire model.

Zoom Allows you to shrink or enlarge the layout by the percentage selected.

Views

The Views feature allows you to define, then quicklyand easily accessspecificareas of the model layout. Selecting a view

scrolls the layout window and adjusts the zoom so you see a specificregion of the layout regardless of the layout window’s

size. Once a view isdefined, you can select it while editing or running the simulation by selecting the view from the View

menu or byusing the keyboard shortcut.

Defining & Selecting Views

How to define a view:

1. At edit time,select the View menu.

2. Select the Views item.If no definedviewsexist, the Viewsdialog isdisplayed and not the submenu shown here. If 

the Views dialog appears, skip step 3.

3. Click Define from the extended menu and the Views dialog appears.

©ProModelCorporation

Modeling Environment 107

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 121/715

108 ProModel 2011 User Guide

With theViews dialog open, select thearea inthe layout window you want to define asa view using the scroll barsand

zoom feature inthe View menu. Or sizethe layout window to the desired view.

1. With the layoutwindow set, type a name for your view in the View Name field at the bottom of the Viewsdialog,and then click the Add button to define the view you have selected in the current layout window.

2. The name you have entered will appear in your listof views.

Please note

Views cannot be defined at run time.

How to select a view fromthe menu:

1. At edittime or run time,select the View menu.

2. Select the Views menu item to display the submenu list.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 122/715

3. Clickon the desired view fromthe submenu.

How to select a view with shortcut key CTRL + n:

1. Press CTRL + n to select the desired view where n isthe number (1-9) of itsposition inthe view list (e.g.,pressingCTRL + 1 wouldaccess SingleScreen Zoomfrom the view list above andCTRL + 3 would access theWaiting

Time Zoomview). Viewsbeyondnine willnot have a CTRL + n shortcut key.

Managing Your Views

When you click on Define from the Views menu, the Views dialog isdisplayed. It lists the defined views in the Views List and

provides buttonsfor adding views, removing views, and managing the list. The function of each button isdescribed next.Add Adds the view, which you have named in theView Name field, to the list of views.

Remove Deletes the currently highlighted view from the View List.

Move Up Moves the currently highlighted view up one position in the list creating a corresponding change to the menu

andCTRL+norder.

Move Down Moves the currently highlighted view down one position in the list creating a corresponding change to the

menu and CTRL+n order.

Rename Renamesthe currently selectedview to the name you have typedinto the View Name field.

Set View Setsthe highlighted name in the View listto theportion of themodel currently visiblein theLayout window.

View Name This is the field whereyoutype the name of the view you wish to add.

Show View Checking this boxwillcause your views to be displayed in the Layout window as you select them in the list.

Using Views at Run-time

When the simulation isr unning, you may choose the active view by picking its name from the Views menu or the Views

Panel.

The Views menu isaccessible during run-time from either the Menu Bar’s Option menu or the Right-Click menu.

©ProModelCorporation

Modeling Environment 109

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 123/715

110 ProModel 2011 User Guide

The Viewsmenu will displaya list of your definedviews. There is also an option to open theViews Panel.

The Views Panel isa dialog window with a list of your defined views.

The ViewsPanel may be moved or resized, and willremainon topof thesimulation window until the Panelisclosed.

Simply click on thename of a view in the Panelto switch to that view.

Referencing a View in Model Logic 

Once a view hasbeen defined, it maybe referenced in the modelusing the VIEW statement (e.g., VIEW“Service

Office”). Thisis usefulfor illustrating certain partsof the model at specifictimesduring run-time. For syntaxand examples,

see View on page 647.

Zoom Feature

The Zoom feature allows you to shrink or enlarge the layout by the percentage selected.

How to zoom in or outon thelayout:

1. Select Zoom from the View menu.

2. Choose anypreset zoom level, or the Custom Zoom option.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 124/715

Please note

The minimum and maximum zoom levels are calculated automatically depending on the total size of the lay- 

out at 100% zoom.

Layout Settings

The following selections are available from the Settings section of the View menu.

The Layout Settings submenu containsselections for changing the grid characteristics, color of the layout window back-

ground, and the routing arrow colors. These, as well as default setting changes, apply to any currently loaded model. To

change any of these items for the current model only, use the options provided in the GeneralInformation dialog. The rout-

ing path color can be changed for the current model only by selecting the Path Optionsbutton in the Processing module.

The following table defines each of the selections available from the Layout Settingssubmenu.

Grid Settings Provides options to controlthe amount of space between grid lines. It also provides the option to define the

grid units in termsof distance and time per grid unit.

Background Color Allows the user to change the background color in the layout window.

Routing Path Color Provides the option to change the routing color used in processing logic.

©ProModelCorporation

Modeling Environment 111

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 125/715

112 ProModel 2011 User Guide

Please note

Changes to these settings are saved as the default settings.

Grid Size

Byusing the grid dialog box,you may set the resolution of the grid linesto your preference.

Please note

You may save the grid settings for t he model by checking the Save as default g rid settings check box.

How to change the colorsand resolution of the grid lines:

1. Select Layout Settings from the View menu.

2. Select Grid Settings from the Layout Settings submenu.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 126/715

3. Select the Ones or Tens option button.

4. Select the desired color.

5. Use the scroll bar to adjust the resolution.

Please note

To change the color of the grid lines, select the Ones button and choose a color. To change the color of 

every tenth grid line, select the Tens button and choose a color.

Grid Scale

In addition to setting the resolution of the grid lines, you mayalso associate a time and distancevalue to each grid unit. This

isextremely usefulwhen you are creating conveyors, queues, or path networksto scale and you want the time or distance

between nodesto be based on the number of grid unitsbetween the nodes.

How to set thedefault time anddistance per grid unit:

1. Select Layout Settings from the View menu.

2. Select Grid Settings from the Layout Settings submenu.

3. Select the Scale button from the Grid Dialog.

4. Enter the desired time and distance per grid unit.

Please note

The “Recalculate path lengths when adjusted” option applies to p ath n etworks, conveyors, and queues.

For d etails regarding recalculation o f times and distances when editing path segments, see Path Networks

on page158 .

Bac kground Color 

The Background Color option allows the user to change the background color in the layout window.

©ProModelCorporation

Modeling Environment 113

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 127/715

114 ProModel 2011 User Guide

How to set the background color of the layout:

1. Select Layout Settings from the View menu.

2. Select Background Color from the Layout Settings submenu.

3. Select thedesired color.

4. Click OK.

Custom Colors

ProModelallows you to create up to 16 custom colors for use anywhere a color selection isavailable. Entity, location, and

resource icons, as well as background graphics, can use anycustom color defined in the colors menu.

When creating a custom color, the nearest solid color is shown next to the dithered color for reference.

How to create a custom color and add it to the color menu:

1. Select Layout Settings from the View menu.

2. Select Background Color... from the Layout Settings submenu.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 128/715

3. Move the cursor to the area on the multi-color chart closest to the custom color you desire and click the left mouse

button.

4. Adjust the color by moving the custom color adjustment slider up or down untilthe desired shade isobtained.

 Alternately, you can manuallyadjust any of the color definition fields(Hue, Sat, Lum, Red, Green, Blue).

5. Select Add to Custom Colors. The color now appearsin one of the 16 customcolor boxes.

Routing Path Color 

ProModelallows you to select which colors to use when showing selected, unselected and related routingsin the Proc-

essing module. Thishelps in visuallyidentifying the origin and destination of a process routing.

How to specify the routing colors:

1. Select Routing Path Color from the View menu.

2. Clickon the desired routing type, Unselected, Selected, or Related from themenu.

3. Select the desired color.

4. Click OK.

©ProModelCorporation

Modeling Environment 115

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 129/715

116 ProModel 2011 User Guide

Routing Path Types

Unselected Allrouting lines not for currently highlighted process record.

Selected Routing line for currently highlighted routing record.

Related Routing lines for highlighted process record, except highlighted routing record.

Edit Tables

Edit Table Fonts

Edit tables are used extensivelyin ProModelfor data entry. ProModelallows you to specify the font used in these tables.

How to change the edit table font:

1. Select Edit Tables from the View menu.

2. Select Font from the Edit Tables submenu.

3. Choose the desired font by scrolling through the Font selection list box.

4. Choose the FontStyle.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 130/715

5. Choose the Font Size.

6. Click OK.

Edit Table Color ProModelallows you to specify the table color used in edit tables.

How to change the edit table background color:

1. Select Edit Tables from the View menu.

2. Select Color from the Edit Tables submenu.

3. Choose thedesired color.

4. Click OK.

Please note

For info rmation o n creating custom colors, see Editing Background Graphicson page 100 .

Commands

The Commands section of the View menu contains various selections for controlling the modeling environment.

©ProModelCorporation

Modeling Environment 117

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 131/715

118 ProModel 2011 User Guide

Refresh Layout Clears and redrawsthe graphics in the layout window.Reset Window Positions Causes all edit tables to return to their originalpositions and sizes.

Window Menu

The Window menu allows you to rearrange windowsand iconsand select the active window. These functions are stand-

ard to allWindows‰ applications.

Tile Causes all open windowsto fit in the available screen space. Windowsthat may be hidden behind other windows

become visible.

Cascade Causes all open windowsto overlap such that the title bar of each window isvisible.

Arrange Icons Causes all icons representing iconized applicationsto be arranged neatly along the bottom of the

screen.

Please note

Below Arrange Icons is a list of the open windows. The window with the check next to it is the active win- 

dow.

How to reset the windows to their default positions:

l Choose Reset Window Positions from the View menu.

Help Menu

The ProModelHelp menu isa convenient, quickway to lookup information about a taskyou are performing,a feature you

would liketo know moreabout, or a command you want to use. ProModelHelp isavailable whenever you see a Help

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 132/715

command button, or Help as an item on a menu bar.

The selections from theHelp Menu are asfollows:

Index Bringsup the Main Help Index.

Context Opens the help system to the topic related to the currently active window.

ProModel Support on the Web When you select this option from the help menu, ProModel automaticallyconnects you

with the ProModelcustomer service page on the PROMODEL web site.

About ProModelDisplays a message containing information about the product.

Toolbars

The ProModeltoolbarsprovidesquickaccess to many of the options found in themenu bar.The toolbar spacemay contain up to nine toolbars,which can be be toggled on or offin the View menu. These toolbars

are described below.

File

New Closes any currently opened model so a new model can be built. This command isunnecessary if no other model is

open. If thecurrently opened modelhas changed, ProModelwill ask if you want to save the modelbefore closing it.

Open Opens a user-specified model and clears previous model data.

Save Savesan open modelunder the current filename.If no file name hasbeengiven, you willbe prompted for a file

name.

Create Package Bundles all files used for a model into one package. See Model Packaging/Data Protection on page 93for more information.

Install Package Copies all files in a model package to a specified destination directory and gives you the option to load the

model. See Model Packaging/Data Protection on page 93 for more information.

©ProModelCorporation

Modeling Environment 119

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 133/715

120 ProModel 2011 User Guide

Layout

Show Grid Check this switchto show thegrid in the layoutwindow.Show Hidden Networks Check this switch to show the invisible path networksduring editing. A path network can be

made to be invisible by selecting the “invisible” option for the particular network while in the Path Networkseditor.Show Routing Paths Causes routing pathsto be visible during run time aswellas edit time.If the option is not checked,

the routing paths are visible only while in the processing editor.

View

Views Allows you to define, then quickly and easily access specific areas of the model layout. Once the view is defined,

you can select it while editing or running the simulation. See Views on page 107 for more information.

Zoom to Fit Shrinks or enlargesthe layout to include the entire model.

Zoom Allows you to shrink or enlarge the layout by the percentage selected.

Build Basic

The options in this toolbar open the respective build modules. Mouse over a toolbar button to see its function and then

refer to Chapter 5 for information of that build module.

Build Advanced

The options in this toolbar open the respective build modules. Mouse over a toolbar button to see its function and then

refer to Chapter 6 for information of that build module.

Simulation

Simulation Options Opens the simulation optionsdialog. See Simulation Options on page 450 for more information.

Scenarios Opens the scenarios dialog. See Scenarios on page 457 for more information.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 134/715

Simulate Scenarios Begins the simulation without having to open the Scenario Manager. All scenarios defined and

checked to run in the Scenario Manager willbe simulated.

Play Playsthe simulation

Pause Pauses and unpauses the simulation when it isrunning.

Stop Ends the simulation and prompts you whether to collect and view statistics up to the point where the simulation was

stopped.

Animation On/Off Toggles the animation on and off 

View Statistics Opens Output Viewer or Minitab.

Simulation Information

Location Information Select this option and choose a location to view an information boxwith real time information

about the location. Information for all locations mayalso be displayed.

Variable Information Select this option to show the current state of all real and integer globalvariables.

Array Information Select this option to show the current value of all cells for arrays of up to three dimensions.

Define Dynamic Plots Allows you to define Dynamic Plots. See Dynamic Plots on page 471 for more information.

View Dynamic Plots Allows you to view previously defined Dynamic Plots. See Dynamic Plotson page 471 for more infor-

mation.

Debug

User Pause by Time Allows you to specify by clock time when the simulation should pause next.

User Pause by Date Allows you to specify by calander date when the simulation should pause next. This option is not

available when you are not running the simulation by calandar date.

Trace Step Select this option to step through thetrace listing one eventat a time.Each time you clickthe leftmouse but-

ton, the trace will advance one event. Clicking and holding the right mouse button while in this mode generatesa con-

tinuous trace.

Filtered Trace Opens theFiltered Trace dialog.See Trace Mode on page 467 for more information.

Debug Opens the Debug dialog. See Debug Option on page 462 for more information.

©ProModelCorporation

Modeling Environment 121

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 135/715

122 ProModel 2011 User Guide

Tools

Graphic Editor Opens the Graphic Editor. See Graphic Editor on page 411 for more information.

Simrunner Opens Simrunner.

Stat::Fit Opens Stat::Fit.

3D Animator Opens 3D Animator.

Model Collaborator OpensModel Collaborator.

Right-Click MenuTo simplifymanyof the steps required to performcommon modeling operations, ProModel includesa variety of right-click

menus. From these menus, you can accesscontext-sensitive options and settingsfor variables, locations, processing,

path networks, resources, and other components. The following menu appears when you right-click on the layout.

The right-clicklayout menu includes the following options:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 136/715

Edit Background Graphic Onlywhen you have a background graphicdefined, this option appears and lets you edit the

graphic.

Snap to Grid Selecting this option snaps all graphics to the grid.

Show Grid When you select this option, ProModeldisplaysthe background grid.

Show Layout Co ordinates Displays cursor’s the coordinates in the upper-left-hand side of the layout window.

Show Hidden Networks Displays all hidden networks.

Show Routing Paths Displays all routing paths used in the model.

Views From thisoption, you mayselect from the views defined in the model.

Zoom to Fit Layout This option resizes the modelto fit the entire image in the layoutwindow.

Zoom Allows you to select the zoom percentage.

Layout Settings From here, you mayselect and define the grid settings, background color, and routing color.

Refresh Layout Thisoption refreshesthe image to reflect recent changes.

Please note

For information about the right-click menus fo r model elements ( e.g., locations, variables, routings,

resources, path networks, queues, and conveyors), see Building the Model: Advanced Elements on page 294.

©ProModelCorporation

Modeling Environment 123

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 137/715

Building the Model: General Elements

Build MenuThe Build Menu isthe gatewayto all modeling elements used to define a model. Throughthis menu you specifythe loca-

tions, entity types, arrivalr ates, resources, path networks, downtimes, processing logic, variables, attributes, arrays, mac-

ros, and subroutines that provide the flexibility needed to model your system.

 Any element represented by a graphic in the layout window can be edited by holding the CTRL key while clicking on the

graphicr epresenting that element.

How to access the Build menu:

©ProModelCorporation

Building the Model: General Elements 124

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 138/715

125 ProModel 2011 User Guide

1. Select Build from the menu optionsbar.2. Each selection from the Build Menu iscovered in detailin the following sections of this chapter.

Locations

Locationsr epresent places in the system where entities are routed for processing, storage, or some other activity or deci-

sion making. Locations should be used to model elements such as delivery locations, warehouse locations, network

servers, and transaction processing centers.

Every location has a name and a name-index number. The name-index number isthe location’s numerical position in the

list of locations. Logic which refersto a location, such as routing logic, can use either the location's name, or the LOC()

function to refer to the location. The LOC() function allows a location whose indexnumber hasbeen stored in an attribute

or variable to be referenced. See Loc() on page 590.

Locationsare defined in the LocationsEditor, which isaccessed through the Build menu.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 139/715

How to create and edit locations

1. Select Locations fromthe Build menu. The LocationsEditor appears.

or...

1. Right click on the existing location and select Edit.

Locations Editor 

The LocationsEditor consists of three windows: the Location Graphicswindow in the lower left portion of the screen, the

Location edittable along thetop of thescreen, and the Layout window in thelower-right portion of the screen.These win-

dows can be moved and resized using the mouse.

The Location edit table contains information about every location in the model, including characteristics such as capacity

and number of units. The Location Graphicswindow isa toolbox used for creating, editing, and deleting locationsgraph-

ically. Locations are positioned in the Layout window.

Location Edit Table

 A location's characteristics can be modified with the Location edit table. The Location edit table containsfieldsfor dis-

playing the graphicicon, specifying the location name, and defining other characteristics of each location. Each of these

fields isexplained below. You can edit the desired field directlyin some cases, or by selecting a record and clicking the col-

umn heading button of the desired field.

©ProModelCorporation

Building the Model: General Elements 126

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 140/715

127 ProModel 2011 User Guide

Icon The graphicicon used to represent the location. Changing location graphics isdone using the tools in the Location

Graphicswindow. If multiple graphics have been used to define a location, the first graphicused isshown here. Clicking

on the Icon buttonbringsthe graphic for thecurrent location into view if it is notcurrently showing inthe layout window.

Name The name of each location.Namescan be up to 80 charactersin length andmustbegin with a letter (for more infor-

mation on naming items, see Nameson page 490). A location's name can be changedby editing this field. The Search

and Replace isautomatically called when the name ischanged.

Cap. The capacity of the location refersto the number of entities the location can hold or process at anyone time. A loca-

tion's maximum capacity is999999. Entering INF or INFINITE will set the capacity to the maximum allowable value. If this

field contains an expression, it will be evaluated at the start of the simulation before anyinitialization logic. Accordingly, a

location's capacity will not vary during the simulation run.

Please note

Individual un its of a multi-unit location may differ in capacity only if every unit's capacity is greater than

1. For example, in a location with t wo units, one may have a capacity of 5 and th e other a capacity of 10.

However, one unit may not have a capacity of one and the other a capacity of five.

Units The number of units of a location, up to 999. A multi-unit location works like several locations with common char-

acteristics.

DTs Clickon this heading button to define location downtimes, including anysetup times. (See Location Downtimes on

page 141.)

Stats Clickon this heading button to specify the level of statistical detailto be gathered for the location. (To view a loca-

tion's statistics after a simulation run, choose View statistics from the Output menu.) Three levelsof data collection are

available:

l None No statistics will be collected.

l Basic Only utilization and average time in location will be collected.

l Time Series Collectsbasic statistics and time series tracking the contents of the location over time.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 141/715

Rules This field defines (1) how a location selects the next incoming entity from several that are waiting to enter this loca-

tion, (2) how multiple entities at a location queue for output, and (3) which unit of a multi-unit location isselected by an

incoming entity. (See Rules Dialog Boxon page 149.) To edit anyof this information at a location, click on the heading but-

ton to open the Location Rules dialog box.

Notes Enter any optionalnotes about a location in this field or click on the heading button to open a larger Notes window.

Location Graphics Window 

The Location Graphicswindow provides a graphical means for creating locations and changing their icons.

Iconsadded to the layout will either represent a new location or be added to an existing location's icon depending on

whether theNew boxat the top leftof thewindow ischecked or unchecked.

New Mode

 Allows you to create a new location record each time you place any location graphic on the layout. The new location is

given a defaultname whichmay be changed if desired.New mode is selectedby checking theNew box[X] at thetop of the

Graphic Tools window.

Edit Button Displays the Library Graphic Dialog Boxused to change the color, dimensions, and orientation of the loca-

tion graphic.

Erase Butto n Erases the selected location graphicin the Layout window without deleting the corresponding record in the

Location edit table.

View Butt on Brings the selected location in the edit table into view on the Layout window.

How to define a new location graphically:

©ProModelCorporation

Building the Model: General Elements 128

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 142/715

129 ProModel 2011 User Guide

1. Check the New Boxin the Location Graphicswindow.2. Select a location symbolor icon from the Location Graphicswindow.3. Click on theLayout window where you want the location to appear.4. A new record is added automaticallyto the Location edittable. You maynow change the default name to the

desired location name.

How to define multiple locations, each having the same graphic:

1. Check the New boxinside the Location Graphic window.2. Select the desired graphic.3. Whileholding down the SHIFT key, click on the Layout window where each location should appear.

How to move a location graphic on the layout:

l Drag the graphic to the desired spot on the layout.

How to move all graphics defined for a single location:

l Drag inside thedashed box surrounding thegraphic(do not drag on an individual graphic inside the box).

How to move multiple graphics for two or more locations at o nce:

1. Click outside of any graphic and drag to create a rectangle encompassing all of the graphics to be moved.2. Drag the rectangle to thedesired position on the layout.

How to delete a location:

1. Select thelocation record to be deleted in theLocation edit table.

2. Select Delete from the Edit menu.

or...

3. Right-clickon the location graphicin the layout window.

4. Select Delete [location name] .

How to erase a location graphic:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 143/715

1. Select the location graphic to erase.2. Select the Erase button in the Location Graphicswindow or press the <Delete>key. The location graphicdis-

appears, but the location record still exists in the Location edit table.

or...

3. Right-clickon the location graphicin the layout window.

4. Select Delete Graphic. The location graphicdisappears, but the location record still exists in the Location edit

table.

How to bring a location graphic into view that is off the layout:

1. Highlightthe record of the desired location in the Location edit table.2. Select the View button in the Location Graphicswindow or clickon the icon heading button.

 Add Mode

 Allows you to add additional graphics to an existing location, such as a text label, an entity spot, or a status light. A location

with multiple graphics will be enclosed by a dashed box. Add mode isselected by unchecking the New box []at the top of 

the Graphic Tools window.

How to add an icon or symbol to an existing location:

1. Uncheck the New Boxin the Location Graphicswindow.2. Select a location symbolor icon from the Location Graphicswindow.3. Clickon the Layout window where you want the additionalicon to appear.4. The graphic or symbol isadded to thelocation.

Location Graphics

 A location may have any one or more of the following graphics selected from the Location Graphicswindow.

Counter  A counter repr esenting the current number of entitiesat a location. The options available with counters are

explained next.

Gauge A verticalor horizontalsliding bar showing the location's current contents during the simulation (shown as a per-

centage of the capacity). Thisgraph will be updated constantlyas a simulation runs. The optionsavailable with gauges are

explained below.

©ProModelCorporation

Building the Model: General Elements 130

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 144/715

131 ProModel 2011 User Guide

Tank A verticalor horizontalsliding bar showing the continuous flow of liquids and other substances into and out of tanks

or similar vessels. This continuous modeling capabilitycan be combined with discrete-event simulation to model the

exchange between continuous materialand discrete entities such as when a liquid isplaced in containers.

Conveyor/Queue A symbolrepresenting a conveyor or a queue. To create jointsin a conveyor or queue, click on the

conveyor or queue with the right mouse button. Drag the joints to achieve the desired shape. Right click on a joint todelete it. The options available with conveyors and queues are described next.

Label Any text used to describe a location. The label is initiallysynchronized with the name of the location and changes

whenever the location name ischanged. The name, size, and color of the text may be edited by double clicking on the

label or selecting it andclicking on the edit button (see Text Toolon page 428). Oncethe name on a label is edited, itwill

no longer be automatically changed when the location name ischanged.

Status Light A circle that changes color during the simulation to show the location’s status. For a single capacity loca-

tion, the statesdisplayed are idle/empty, in operation, blocked, down, waiting, and in setup. For multi-capacity locations,

the displayed statesare up (operational) and down (off-shift, on break, disabled).

Entity Spot An assignable spot on the layout where the entity or entities will appear while at the location. While an entityisat a location, the entity’salignment spot (defined in the Graphic editor) will appear exactly on top of the location's entity

spot, allowing the two graphics to align exactly as desired. A multi-capacity location will use as manyentity spotsas

defined (in the order defined) up to the capacity of the location. Entities in excessof entity spots will continue to pile up on

the last entity spot defined.

Region A boundaryused to represent a location's area. A region maybe placed in thelayout over an importedback-

ground such as an AutoCAD drawing to represent a machine or other location. Thistechnique allows elements in the

imported background to work as locations.

Library graphic Any of the graphics appearing in the library graphic menu. Use the scrollbar to view all available graph-

ics. Library graphics maybe created or modified through the Graphic Editor. The name for the graphic, the default name

of any location created with that graphic, can be saved in the GraphicEditor (see Naming a Graphicon page 427).

How to edit a graphic already on the layout:

1. Double clickon the graphic.

or...

1. Select thegraphic.2. Click on the Edit button inside the Location Graphicswindow.

or...

1. Right-clickon the graphic inthe layout.

2. Select Edit Graphic fromthe menu.

Please note

Location graphics notes:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 145/715

1. Location graphics are painted on the layout in the order of the location list and, for any given location

having multiple graphics, in the order that the g raphic was added to the layout.

2. A location may include any of the above graphics and symbols. However, a location can have no more

than one counter, one gauge, one tank, one queue, one status light, or one region.

3. Clicking on a layout graphic with no edit table on the screen d isplays the n ame of the element (location,

etc.) represented by th e graphic. With any edit table showing, hold down the CTRL key while clicking on

the graphic to display the location name.

Counter Dialog Box

To editthe appearance of a counter, double click on the counter on thelayout, select thecounter and clickon the Edit but-

ton, or right click on the counter and select edit. The counter dialog boxallows you to choose the appearance of a graphic

counter that isused to display the contents of a location. To change the digit color of the counter, click on the Digit Color but-

ton. To change thecounter'sbackground and border,click on the Framebutton.The digit's font size and style maybe

changed by clicking on the Font button.

Gauge/Tank Dialog Box

When you create a gauge or tank, ProModelwill prompt you to specifywhich type you wishto use before you paste itin the

layout. To edit a gauge or tank on the layout, double click on the gauge or tankto display the gauge/tank dialog box, select

the gauge/tank and click on the Edit button, or right click on the gauge or tank and select edit graphic. From the gauge/tank

dialog, you may change a gauge to a tankand define its appearance, orientation, and filldirection. You mayalso access

this dialog by selecting the gauge or tankand clicking on the Edit button.

©ProModelCorporation

Building the Model: General Elements 132

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 146/715

133 ProModel 2011 User Guide

Text Dialog Box

To edit the appearance of a location label, you maydouble-clickon the textonce it is on thelayout, select thetext andclick

on the Editbutton, or right clickon the textand select edit. The textis typed in an editwindow with severaledit features

available via buttonsabove the window. The font, color, alignment, rotation and frame maybe changed from this dialog

box. A sample of the currently chosen options isshown in the lower-left corner.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 147/715

Library Graphic Dialog Box

To change or edit a library graphicthat representsa location, you may double click on the library graphicon the layout,

select the graphicand click on the Edit button, or right click on the graphicand select edit.

Thisgives the option to change the icon, orientation, color, or graphic dimensions of the graphic. The default dimensions

for the graphic, which are created in the Graphic Editor, are displayed above the graphic. To change the dimensions of the

graphic, click on the Dimensions button. Thisgives you the ability to specify horizontalor vertical and feet or meters to

change the graphicdimensions.

Queue/Conveyor Dialog Box

To controlthe lookand operation of a conveyor or a queue,you may double clickon the conveyor/queue in theLayoutwin-

dow, select the graphicand click on the Edit button, or right click on the conveyor/queue and choose edit graphic. The

Queue/Conveyor dialog box appears. It also allows you to specify whether you wish to define the location as a conveyor or 

queue. Use the scrollbar to set the width of the queue or conveyor. Select the style by clicking on solid, roller (i.e., roller 

©ProModelCorporation

Building the Model: General Elements 134

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 148/715

135 ProModel 2011 User Guide

. If you want the queue to be visible during edit time and invisible during run time, click on the Invisible During Simulation

option. See the discussion on conveyors and queues later in this section for more information.

Queues

 A queue is a location that imitatesthe progressive movement and queuing of waiting lines. When an entity enters a

queue, ProModelexecutes anyoperation logic for theentityand then movesit to theend of the queue. To have proc-

essing logic execute after an entityarrivesat the endof a queue, use a MOVEstatementin theoperation logic.A move

statement causes the entityto move to the end of the queuewhere anyadditionaloperation logic definedwill be proc-

essed. Operation logic following a MOVE statement actuallygets processed after the elapsed time that the entity would

have reached the veryend of the queueif no other entitieswere ahead of it. Following a MOVEstatement, anyoperation

statement isvalid except for CREATE, SPLIT AS, UNGROUP, UNLOAD, or another MOVE statement.

If a MOVE statement is specified that includes a move time (e.g., MOVEfor 5.2 sec), the entityspeed andlengthof the

queue are ignored. If a move time isnot includedwith the MOVE statement, the move time isbased on the entityspeed

and length of the queue (if no queuelengthor entityspeed isdefined,the move time is zero).

Entitiesin a queue maynot be preempted byother entitiesand, once entitiesbegin movementin a queue,are notallowed to pass each other. After the specified move time, however, entities continue processing any additional operation

and output logic. A “No Queuing” rule specified for a queue location allows entities to depart in anyorder after completing

their move time.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 149/715

Queues are drawn fromthe beginning to the end of the center-line and are assigned a default length based on the graphic

scale. However, the default queue length may be overridden by entering a different length. When a queue ismodified

graphically, the length will automaticallybe recalculated based on the graphicscale unless you checked the “Recalculate

path lengths when adjusted” option. You can accessthisoption from the Tools menu under Options.

Conveyors A conveyor is a location that simulates the movement of entitieson either an accumulating or non-accumulating conveyor 

and appears with a conveyor graphic. Entities can only enter a conveyor at the beginning and leave at the end. For 

accumulating conveyors, if the lead entity isunable to exit the conveyor, trailing entities queue up behind it. For non-

accumulating conveyors, if the lead entity comes to a stop, the conveyor and all other entities stop. Entities on a conveyor 

may not be preempted by other entities.

The capacity assigned to a conveyor limits the number of entities that can accessa conveyor. However, the cumulative

total length or width of the entities on the conveyor cannot exceed the conveyor length. In fact, the utilization statistics for a

conveyor reflect the amount of space utilized on the conveyor throughout the simulation, not the number of entities occu-

pying the conveyor. Unlike other locations, an entity isnot routed to the conveyor until there isroom at the beginning for 

the entity to fit, even if the conveyor has capacity to hold it.

ProModelexecutesoperation logic for entities entering a conveyor as soon as theyenter unless the logic follows a MOVE

statement. If no MOVE statement isencountered, entities begin their move on the conveyor after processing anylogic. If a

MOVE statement isencountered, entity movement isinitiated. Anylogic defined after a MOVE statement isprocessed

when the entityreachesthe veryend of the conveyor.

Move time on a conveyor is based on the length and speed of the conveyor, aswellas the length or width of the entity. The

move time for an entity on a conveyor is calculated using the following formula:

Time = (Conveyor Length - EntityLength or Width)/Conveyor Speed

 And the percentage utilization is calculated using this formula:

Where:

tc = the time the entity spent on the conveyor whether moving or not

Cc = the conveyor capacity for that entity

T = the total simulation time

Please note

Unlike queues, MOVE statements for conveyors may not include a move time. Processing logic executed

at the end o f t he conveyor may contain any o peration statement except for CREATE, SPLIT AS,

©ProModelCorporation

Building the Model: General Elements 136

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 150/715

137 ProModel 2011 User Guide

COMBINE, and GROUP statements are not allowed at the end of non-accumulating conveyors.

Due to the space limitations of a conveyor, certain operation statementsat the beginning of a conveyor are invalid includ-

ing ACCUM, COMBINE, CREATE, GROUP, SPLIT AS, UNGROUP, and UNLOAD.

The default conveyor length isdetermined by the graphicscale, although this may be overridden by entering a different

length. When a conveyor ismodified graphically, the length will automatically be recalculated based on the graphicscale

unless you uncheck the “Recalculate path lengths when adjusted” option. You can accessthisoption from the Tools

menu under Options.

Conveyor Graphics Display

When you use conveyors and want the graphics to display properlyon the conveyor with no overlapping and little space

between entities, use the following:

Entity Orien-

tationon Conveyor 

Requirements

Width-wise 1. Entitywidth on conveyor should equal

horizontal dimension.

2. Entity length on conveyor should equal

verticaldimension.

Length-wise 1. Entitywidth on conveyor should equal

verticaldimension.

2. Entity length on conveyor should equal

horizontal dimension.

Conveyor Animation

The animation of entities traveling along conveyors isdisplayed according to the logical length or width of the entity, not

the scaled length or width of the entity graphic.

How to define a conveyor graphically:

1. Select the conveyor/queue symbolfrom the Location Graphicswindow.2. Click on theLayout window with the left mousebutton where the conveyor shouldstart.3. Add bendsto the conveyor bymoving the mouseand clicking the left mouse button.4. Move themouse in the desired direction and clickon the rightmouse button to endthe conveyor.

How to create bends in an existing conveyor:

1. Click on theconveyor with theright mouse button. From the menu that appears,select Add Joint. A small black

square appears on the conveyor.2. Using the leftmouse button,drag the square in the direction you desire to bend.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 151/715

Conveyor Options Dialog Box

The conveyor options dialog boxis used to define the specificationsfor a conveyor. To accessthe conveyor options dialog

box, you may double click on a conveyor, select the conveyor and click on the Edit button from the Location Graphicswin-

dow, or right-click on the conveyor and select edit. This opens the Conveyor/Queue dialog boxfrom which the Conveyor Optionsdialog box can be opened by clicking on the Conveyor Options button. The Conveyor Options dialog box presents

the following options:

 Accumulating Select or deselect this option depending on whether the conveyor is to be accumulating or non-accumu-

lating.

Entity Orientation Select Lengthwise or Width-wise depending on whether the entity istraveling on the conveyor in the

direction of the entity length or in the direction of the width.

Length The length of the conveyor expressed in either feet or metersdepending on the default specified in the General

Information dialog.

Speed The speed of the conveyor in feet or meters per minute. The distance units can be set in the GeneralInformationdialog box.

Capacities and Units

Capacities

 A location capacity isthe maximum number of entities it can hold at any one time. In general, multi-capacity locationsare

used to model locationssuch as queues, waiting areas, or any other type of location where multiple entities may be held or 

processed concurrently. Consider the following multi-capacity location:

©ProModelCorporation

Building the Model: General Elements 138

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 152/715

139 ProModel 2011 User Guide

Units

 A location unit isdefined as an independently operating station. When multiple, independently operating stationsall per-

form the same operation and are interchangeable, theyform a multi-unit location. Consider the following multi-unit loca-

tion:

Multi-Capacity, Multi-Unit, and Multiple Locations

Sometimes it can be unclear whether to use multi-capacity, multi-unit, or multiple locations when defining parallel work-stations. Suppose, for example, we have three parallel stations, each performing the same operation as shown below.

There are three possibilities for defining the machines: (1) as a multi-capacity location, (2) as a multi-unit location, or (3)

as multiple locations. The method you choose to define the locationsdependson your application.

For many situations modeling parallel stationsas a multi-capacity location works fine. By placing an additional graphicfor 

each station, both the logic and visual effects of having parallel stations can be achieved. However, you should use amulti-unit location instead of a multi-capacity location when any of the following situations exist:

l Individual units have independent downtimes.

l It isimportant to collect individualstatisticson each unit.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 153/715

l It isimportant, for visual effect, to see entities select individualunits by a routing rule other than First Available

(e.g., By Turn, Fewest Entries, Longest Empty, etc.).

l It isimportant, for visual effect, to have a status light assigned to each unit.

In some situations, it mayeven be desirable to model multi-unit locationsas totallyseparate locations. Multiple locations

should be used instead of multi-unit locationswhen:

l A path networkis definedbut eachlocation must interface with a different node on the network.

l Different units have different processing times.

l The input for each unit comes from different sources.

l The routing isdifferent for each unit.

Defining a Multi-Unit Location

To create a multi-unit location, enter a number greater than one as the number of units for a location. A corresponding

number of locationswillbe copied below the multi-unit location record in the Location edit table, each with a numericexten-sion designating the unit number of that location. Successive graphics, representing individualunits will be drawn to the

right of the original location, but may be moved normally.

The original location record becomesthe prototype for the unit records. Each unit will have the prototype's characteristics

unless the individualunit's characteristics are changed. In the table below, each unit of the location has a clock-based

downtime defined because the parent location, Loc2, was assigned a clock-based downtime. However, Loc2.1 hasan

additional entry-based downtime and Loc2.2 has an additional usage-based downtime. Any other characteristic, including

the icon,can be changedas ifthe unitwere an independent location.

If the number of units ischanged, the individualunit location records are automatically created or destroyed accordingly.

Individualunits of a multi-unit location can be selected to process an entity according to the Selecting Incoming Entities

option in the Rules dialog box. (See the discussion regarding the Rules dialog boxlater in this section.)

In the output report, scheduled hoursfor the parent location will be the sum of the scheduled hoursfor the individualunits.

Please note

Multi-Unit notes:

1. It is not possible to create a path network to interface with each unit of a multi-unit location. You must 

define the locations individually and use multiple locations as d iscussed above.

©ProModelCorporation

Building the Model: General Elements 140

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 154/715

141 ProModel 2011 User Guide

2. It is not possible to route an entity to a specific unit of a multi-unit location. For example, typing 

Loc2.3 in the destination field of the Routing edit table is not allowed.

Location Downtimes A downtime stops a location or resource from operating. A down resource or location no longer functions and is not avail-

able for use. Downtimes may represent scheduled interruptions such as shifts, breaks, or scheduled maintenance. Or,

they may represent unscheduled, random interruptions such as equipment failures. Downtimes mayalso be given

preemptive or non-preemptive priority and mayr equire one or more resources for repair times.

For single capacity locations, downtimes maybe based on clock time, usage time, number of entities processed,a change

in entity type, or called using the DOWN statement. Multi-capacity locationshave only clock and called downtimes. If a

downtime isoccurring at a location and anyother downtime starts (except a setup downtime), the two downtimes are

processed together, not sequentially (i.e., downtimes overlap).

How to specify a location downtime:

1. Select thedesired location in the edit table.2. Clickon the DTs... button. Thisbringsup the downtime selection menu shown here for single-capactiy locaitons.

(Multi-capacitylocations will onlyhave the Clock and Called options.)

3. Each selection opens an edit table for specifying the required elements of the downtime.

Please note

An alternative and more straightforward method for defining downtimes due to breaks or shifts is to use

the Shift Editor. The Shift Editor also has the advantage of allowing a downtime to be defined for an

entire group of locations.

Clock Downtime Editor Clockdowntimesare used to model downtimes that occur depending on the elapsed simulation time, such as when a

downtime occurs every few hours, no matter how manyentities a location has processed.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 155/715

The ClockDowntime Editor consists of the edit table shown below. To accessthe ClockDowntime Editor, select Clock

from the menu that appears after clicking the DT... heading button. Most expressions, including distributions, can be

included in the Frequency, First Time, and Priority fields. (See Appendix on page 657 to see if the specificstatement or 

function isvalid in a particular field.)

FrequencyT he time between successive downtime occurrences. Thisoption maybe an expression. Thisfield iseval-

uated as the simulation progresses, so the time between downtimescan vary.

First Time The time of the first downtime occurrence. If this field isleft blank, the first clock downtime will occur according to

the frequency field. This time is evaluated after any initialization logic.

Priority The priority (0-999) of the downtime occurrence. The default priority is99, the highest non-preemptive priority.

Scheduled... Select YES if the downtime is to be counted asa scheduled downtime.Select NO ifthe downtime is to be

counted as a non-scheduled downtime.

 Allscheduled downtimes willbe deducted from the total scheduled hours reported in the output statisticsand, therefore,

will not be considered in computing utilization, percent down, and so on.

Logic Enter any logic statements to be processed when the downtime occurs. When the logic has completed, the location

becomesavailable. In the most simple case, the logic issimply a WAIT statement with a time value or expression which rep-

resentsthe duration of the downtime. Clickon the heading button to open a larger edit window.

Disable Select YES to temporarilydisable the downtime without deleting it from the table.The example above shows a simple clock-based downtime where the location isdown for 10 minutes every 2 hours(120

min). Because this time should not be included in the total scheduled or available hours, YES isselected in the “Scheduled”

column.

Entry Downtime Editor 

Entry downtimes are used to model downtimes when a location needs to be serviced after processing a certain number of 

entities. For example, if a printer needsa new cartridge after printing 2000 shipping orders, an entity downtime should be

defined. The downtime occurs after the entity that triggered the downtime leaves the location.

The Entry Downtime Editor consists of the edit table shown below. To accessthe Entry Downtime editor, select Entry fromthe menu that appears after clicking the DT... heading button. Entry downtimes are only available for single capacity loca-

tions. The Downtime Editor contains fields for defining downtimes based on the number of entriesprocessed at a location.

Most functions, including distributions, can be included in the Frequencyand First Occurrence fields. (See Appendix on

page 657 to see if the specificstatement or function isvalid in a particular field.)

©ProModelCorporation

Building the Model: General Elements 142

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 156/715

143 ProModel 2011 User Guide

FrequencyThe number of entities to be processed between downtime occurrences. Thismay be a constant value or a

numericexpression and is evaluated as the simulation progresses.

FirstOccurrence The number of entitiesto be processed before the firstdowntime. This maybe a value or a numeric

expression. If left blank, the first downtime will be based on the frequency entered.

Logic Anylogic statementsto execute when the downtime occurs. Normally, this logic issimply a time expression rep-

resenting the length of the downtime. Clickon the heading buttonto open a larger editwindow.

Disable Select YES to temporarilydisable the downtime without deleting it from the table.In the example above, Robot1 will go down every 100 entries, with the first downtime occurring after only 50 entries.

When the downtime occurs, it will require a resource (M1) to service the machine for some amount of time between 3.8

and 4.2 minutes. If resource M1 isunavailable when requested, the robot will remain down untilM1 becomesavailable.

Please note

Entry-based downtimes do not accumulate. For example, if a do wntime cannot occur because the prior-

ities of the entities being processed are at least 2 levels higher than the priority of the do wntime, only the

first downtime resumes after processing the entities. All others are ignored.

Usage Downtime Editor 

Usage downtimes are used to model downtimes that occur after a location has been operating for a certain amount of 

time, such as if a machine failsdue to wear after so manyhours of operation. Usage downtimes are different from clock

downtimesbecause usage downtimes are based on location operation time, which doesnot include blocked time. Clock

downtimesare based on total elapsed simulation time (operation time, blocked time, idle time). Usage downtimes are

available only for single-capacity locations.The Usage Downtime Editor consists of the edit table shown below. It contains fields for defining location downtimes

based on the actual time in use. Most functions, including distributions can be included in the Frequency, First Time, and

Priority fields. (See Appendix on page 657 to see if a specificfunction isvalid in a particular field.)

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 157/715

FrequencyT he usage time between downtimes.

FirstTime The time in use before the firstdowntime occurrence. Leave blankif the firsttime is to be based upon the

frequency entered.

Priority The priority, between 0 and 999 of the downtime. The default priority is99, which isthe highest non-preemptivepriority. Generally, usage downtimes tend to be preemptive and should have priorityvaluesgreater than 100.

Logic Anylogic statements to be processed when the downtime occurs. Typically, this field contains a time expression rep-

resenting the length of the downtime. Click on theheading button to open a larger editwindow.

Disable Select YES to temporarilydisable the downtime without deleting it from the table.In this example, Robot2 will experience breakdownsaccording to a Gamma distribution with shape and scale parameters

1.7 and 2.3. Maintenance resource M1 will be used to service the robot. The repair time isnormallydistributed with a

mean of 2.4 minutesand a standard deviation of .3 minutes.

Please note

Usage-based d owntimes do not accumulate. For example, if a do wntime cannot occur because the prior-

ities of th e entities being processed are at least 2 levels higher than t he priority of th e downtime, only the

first downtime resumes after processing the entities. All others are ignored.

Setup Downtime Editor 

Setup downtimes should be used to model situations where a location can process different types of entities, but needs to

be setup to do so. Setupdowntimeswill not overlap but willpreemptother downtimesin a manner similar to that of an

entity. Setup downtimes are onlyavailable for single capacity locations.

Note that a setup downtime is assumedto occur onlywhen an entityarrivesat a location and is different from the previous

entity to arrive at the location. Consequently, the word ALL in the prior entity field means all except the same entity type.

The Setup Downtime Editor consists of the edit table shown below. It contains fields for defining location downtimes based

on the arrival of a new entitytype.

Entity The incoming entity for which the setup occurs. If the setup time for all entity typesis identical when shifting from the

same prior entity, the reserved word ALL may be entered.

Prior Entity The entity preceding the entity for which the setup occurs. If the setup isthe same regardless of the preceding

entity, you may enter the reserved word ALL.

©ProModelCorporation

Building the Model: General Elements 144

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 158/715

145 ProModel 2011 User Guide

Logic Enter anylogic statements to be processed when the downtime occurs. Clickon the heading button to open a

larger edit window.

Disable Select YES to temporarilydisable the downtime without deleting it from the table.This exampleshows that thetime to setup Robot3 depends on the arriving entityand the prior entity. If a GearB followsa

GearC, thesetup time for the machine will be based on a Lognormaldistribution with a mean of 4.5 minutesand a stand-ard deviation of .95 min. But ifa GearC followsa GearA, the setup time willbe based on a Lognormaldistribution with a

mean of 2.3min and a standard deviation of .2 min.

Called Downtime Editor 

Called downtimesare used in conjunction with the DOWN statement to make a location go down. When thename of the

called downtime isreferenced during simulation by the DOWN statement, the called downtime will execute its logic.

Name The name of thecalled downtime.Thisis thename that willbe referenced bythe DOWN statement.

Priority The priority (0-999) of the downtime occurrence. The default priorityis 99, the highest non-preemptive priority.

Scheduled...Select YES if the downtime is to be countedas a scheduled downtime.Select NO ifthe downtime isto be

counted as a non-scheduled downtime. Allscheduled downtimes will be deducted from the total scheduled hours reported in the output statisticsand, therefor e,

will not be considered in computing utilization, percent down, and so on.

Logic Enter any logic statements to be processed when the downtime occurs. When the logic hascompleted, the location

becomesavailable. In the most simple case, the logic issimply a WAIT statement with a time value or expression which

representsthe duration of the downtime. Click on the heading button to open a larger editwindow.For more information on the DOWN statement,see Down on page 552.

Location Priorities and Preemption

Priorities determine which entity or downtime uses a location when more than one entity or downtime iscontending for it.Priorities may be any value or expression between 0 and 999, with higher valueshaving higher priority. For simple prior-

itizing, you should use priorities from 0 to 99. Priorities greater than 99 are used for preempting (bumping or displacing)

entitiesor downtimes currently occupying a location.

Priorityvaluesare dividedinto ten levels (0 to 99,100 to 199, ..., 900 to 999), with valuesbeyond 99 used for preempting

entitiesor downtimes of a lower prioritylevel. Multiple preemptive levelsmake it possible to preempt entitiesor downtimes

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 159/715

that are themselves preemptive. Thismeans that an entity, EntA, with a priorityof 99 can be preempted by another entity,

EntB, with a higher priority levelof 199. In turn, another entity, EntC, with a priorityof 299 can preempt EntB at the same

location.

To preempt an entity currently using a location, a preempting entity or downtime must have a priority at least ONE level

higher than the entity currently at the location. To preempt a downtime in effect at a location, a preempting entity musthave a priorityat least TWO levelshigher than the current downtime. Since all overlapping location downtimes are proc-

essed concurrently (except setup downtimes), a downtime cannot, in effect, preempt another downtime.

 A preempted entity will resume processing where it left off unlessthe location was in the middle of a setup downtime. If the

entity initiated a setup downtime before being preempted, it will begin processing the setup logic from the beginning when

it resumes.

 Assigning priorities

 An entity or downtime accesses a location based on its priority. An entity is assigned a priority for accessing a location in the

Destination column of the Routing edit table. A downtime isassigned a priority in the appropriate Downtime edit table. The

first of thefollowing examplesshows a priorityof 100 assigned to EntA asit triesto claim Loc2. This priorityis high enough

to preempt any entityat thelocation having a priorityless than 100. It isnot high enough, however, to preemptany down-

timesat the location.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 USE Res1 FOR N(3,.1)

Routing Table

Output... Destination... Rule... Move Logic...

1 EntA Loc2, 100 First 1 MOVE FOR 1

This example shows a priorityof 200assigned to a usage-based downtime at Loc4. This prioritycan preempt any entityat

the location with a priority lessthan 200.

The following table shows the minimum priority level requirements for an incoming entity or an upcoming downtime to

preempt the current entity or downtime at the location.

©ProModelCorporation

Building the Model: General Elements 146

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 160/715

147 ProModel 2011 User Guide

Minimum Required Priority Levels for Preempting at a Location

To preempt the

Current Entity

To preempt the Cur-

rent downtime

Incoming

Entity

1 priority level

higher 2 priority levelshigher 

Upcoming

Downtime

1 priority level

higher Downtimes overlap

l The upper left quadrant shows that for an entity to gain accessto a location alreadyprocessing another entity,

the incoming entity must have a priority at least one level higher than the current entity's priority.

l The upper right quadrant shows that for an incoming entity to gain accessto a location where a downtime iscur-

rently in effect, the entity must have a priority at least two levelshigher than the downtime's priority.

l The lower left quadrant shows that a for a downtime to preempt an entity currently processing, the downtime

must have a priority one level higher than the currently processing entity.l The lower right quadrant shows that all location downtimes (except setup) are concurrent or overlapping. Setup

downtimes preempt as if theywere entities.

The following examplesdemonstrate the explanations above in greater detail.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 161/715

Example 1

The following example demonstrates what happens when Ent

1 with a priorityof 99 is preempted byEnt2 which has a priority

of 100or greater.

Example 4

Thisexample illustrateshow, regardless of the downtime p

ity values, downtimes will overlap. The exception issetup

downtimes, which preempt downtimes exactlylike entities(see Example 5).

Example 2 

Thisexample demonstrates what happens when a downtimehaving a priority of 99 ispreempted byan entity having a prior-

ity of 200 or greater.

Example 5 

Thisexample demonstrates what happenswhen a setupdowntime with a priorityof 99 ispreempted bya normaldow

time having a priorityof 100or greater.

Example 3

Thisexample demonstrates the behavior when an entity with

a priorityof 99 is preempted bya downtime with a priority

value of 100 or greater.

Example 6 

Thisexample demonstrates what happenswhen Ent 1 set

downtime with a priorityof 99 ispreempted byEnt 2 having

priorityof 100 or greater.

©ProModelCorporation

Building the Model: General Elements 148

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 162/715

149 ProModel 2011 User Guide

Special Notes Regarding Location Downtimes

1. When an entitypreempts another entity(Example 1), or when an entitypreempts a downtime (Example 2), or 

when a downtime preemptsan entity (Example 3), anyr esources owned by the preempted entity or downtime

will be freed temporarilyuntil the preempting entity or downtime finishes at the location. At that time, the originalentity or downtime will seek to claim the exact units of the resource or resources it owned before the preemption

occurred.2. Asshown in examples5 and 6, an entitythat requires a location setupwill be treated differently depending on the

preempting activity. If the preempting activity isanother entity, the current setup in process will have to start over 

from the beginning. However, if the preempting activity isa downtime, the remaining setup time will finish upon

completion of the preempting downtime.3. Locationswill notgo down if they are in a blocked state. A location is blocked ifit hasan entitythat cannot be

routed because of the unavailability of the next location. This may also include the time an entity waits to enter a

location based on a routing condition, such as LOAD.4. Locationswill notgo down if anyof theoccupying entitiesare waiting for a resource or are waiting at any down-

time inhibiting statement.

Downtime inhibiting statements

WAIT UNTIL, ACCUM, COMBINE, MATCH, GROUP, JOIN, LOAD

5. In cases where a downtime or other entityattempts to preempt an entity’suseof a location, a preemption proc-

ess may be defined to override the default way of handling the preemption. See Preemption Process Logic on

page 399.

Rules Dialog Box

The Rules dialog box, selected by clicking on the Rules button in the Locations edit table, isused to choose the rule for Pro-

Model to follow when making the following decisions:

l Selecting incoming entities

l Queuing for output

l Selecting a unit

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 163/715

Selecting Incoming Entities

When a location becomes available and there ismore than oneentity waiting to enter, a decision mustbe made regarding

which one to admit. The primary determining factor isthe priority of the input routing. The entity with the highest routing

priority will be admitted regardless of the incoming selection rule. However, if two or more entities have the same priority

for claiming the location, then the location selects an incoming entity based on the incoming selection rules listed below.

Oldest by Priority Selects the entity waiting the longest among those having the highest routing priority.

Random Selectsr andomly with equal probabilityamong allwaiting entities.

Least Available Capacity Selects the entity coming from the location having the least available capacity. Ties are

broken by the entity waiting the longest.

Last Selected Location Selects the entity coming from the location that was selected last. Tiesare broken by the entity

waiting the longest. If no entities are waiting at the last selected location, the Oldest by Priority rule takeseffect.

Highest Attribute ValueSelects the entity with the highest attribute value for a specified attribute. Ties are broken by the

entity that has been waiting the longest. Location attributes are also valid entries.

Lowest Attribute Value Selects the entity which has the lowest attribute value for a specified attribute. Tiesare broken

by the entity waiting the longest. Location attributes are also valid entries.

Queuing For Output 

When an entity finishes its operation at a location, other entities to finish ahead of it may not have departed. A decision

must be made to allow the entityto leave or to wait according to some queuing rule. If one of the following queuing rules is

not specified, “No Queuing” will be used.

©ProModelCorporation

Building the Model: General Elements 150

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 164/715

151 ProModel 2011 User Guide

No Queuing Entities that have completed their operationsat the current location are free to route to other locationsinde-

pendent of other entities that have finished their operations. If this option isselected it isnot displayed in the Rules Box.

First In, First Out (FIFO) The first entity completing operation must leave for its next location before the second entity

completing its operation can leave, and so on.

Last In, First Out (LIFO) Entities that have finished operationsqueue for output LIFO so the last one finished isthe first

to leave.By Type Entities that have finished operationsqueue for output FIFO by entity type so the routing for each entity type is

processed independently of routingsfor all other types.

Highest Attribute Value Entities that have completed operations queue for output according to the highest value of a

specified attribute.

Lowest Attribute Value Entities that have completed operationsqueue for output according to the lowest value of a

specified attribute.

Selecting a Unit If the location hasmultiple units, then incoming entities must select which available unit to use. One of the following rules

maybe selected. These decision rules apply to multi-unit locationsonly.

First Available Selectsthe first available unit.

By Turn Rotates the selection among the available units.

Most Available Capacity Selects the unit having the most available capacity. This rule has no effect with single capacity

units.

Fewest Entries Selects an available unit with the fewest entries.

RandomSelectsan available unit randomly.

Longest EmptySelects the unit that has been empty the longest.

When specifying the decision rules for selecting incoming entities at a location, it isimportant to remember that the routing

of an entity isalso dependent on the queuing for output decision rules at the previous location. The following example will

clarifythis principle.

Rules Dialog Box Example

Consider a location, Loc1, which has a “Last In, First Out (LIFO)” as the queuing for output rule. Suppose that two other 

locations, Loc2 and Loc3, have “No Queuing” for the output rule. The three locations, Loc1, Loc2, and Loc3 feed into

Loc4 which has an “Oldest by Priority” rule for selecting incoming entities.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 165/715

Two parts are queued for outputat Loc1. The part waiting the longest, EntA, at Loc1 hasbeen waiting 10 minutes. The

other part, EntB, which queued for output after EntA, has been waiting 5 minutes. At Loc2, the part queued for output,

EntC, has been waiting 7 minutes. At Loc3, the part queued for outputthat hasbeenwaiting thelongest, EntD, has waited

3 minutes.

The part to enter Loc4 firstis EntC at Loc2 whichwaited 7 minutes. Even though EntA has been waiting ten minutes, it

must wait until EntB hasbeenrouted, because EntB is ahead of it in the output queueaccording to theLIFO queuing rule.

Once Loc4 finishes processing EntC, EntB at Loc1 enters Loc4. EntB enters before EntA because entities must be outputbefore a destination selects incoming entities. Next, EntA at Loc1 enters Loc4 after which EntD at Loc3 enters Loc4.

Entities

 Anything that a model processesis called an “Entity.” Documents, people, or phone calls should be modeled as entities.

Entities maybe grouped, such as when several boxes are stacked on a pallet (through the GROUP statement); con-

solidated into a single entity, such as when two or more documents are joined together (through the JOIN statement); split

into two or more entities, such aswhen a box isopened and the contents removed (through the SPLIT ASstatement); or 

converted to one or more new entities (through the RENAME or CREATE statement or by defining multiple outputsin the

routing).

Each entitytype hasa name anda name index number. In logic andexpressions, an entitycan be referred to by name or 

by its name-index number using the ENT() function. The ENT() function allows a statement requiring an entity name to

use an expression that may change to reference different entity names as a simulation progresses. See Ent() on page

558 for more information.

Entities mayalso have user-assigned attributes to represent such thingsas dimensions, weights, pass/fail status, and

group identifiers.

©ProModelCorporation

Building the Model: General Elements 152

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 166/715

153 ProModel 2011 User Guide

How to access the entities editor:

l Select Entities from the Build menu.

or...

l Right click on the existing entity and select Edit.

Entities Editor 

Entity types are created and edited with the Entities Editor. The Entities Editor consists of (1) an edit table to define the

name and specificationsof each entity type in the system, and (2) the Entity Graphicswindow for selecting one or more

iconsto represent each entity. The fields of the edit table are explained below.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 167/715

Icon Thisis the graphicicon used to represent the entity during the animation. Entity graphics are defined or modified

using the Entity Graphicswindow. This icon can vary during the simulation. See Defining Multiple Entity Graphicson page

156.

Name The entityname. See Names on page 490for more information on naming.

Speed Thisentry isoptionaland applies to self-moving entities such as humans. It definesthe speed in feet or meters

(depending on the distance units chosen in the GeneralInformation Dialog box) per minute to be used for anyof the enti-

ty'smovement along a path network. When creating a new entity, a defaultvalue of 150fpm (or 50 mpmfor metric sys-tems) is automatically entered. This isr oughly the speed of a human walking.

Stats The level of statistical detailto collect for each entity type: None, Basic, or Time Series. Time seriesstatisticsmust be

selectedif you wish to view a time seriesplot in the output module.

Notes Any information you wish to enter about the entity, such as material, supplier name.

Defining Entities

Entitiesare typicallydefined graphically by clicking on a desired library graphicin the Entity Graphics window. Alternatively,

you maydefine entities by simply entering their names and characteristics in the Entity edit table. Entity graphics are

optional.

How to define entities graphically:

1. Select Entities from the Build menu.2. Check the New box in the Entity Graphicswindow.3. Select an icon for the entity. (Use the Graphic Editor to create new icons.)4. Edit the name and other defaultentriesfor the entityin theEntityedit table.

©ProModelCorporation

Building the Model: General Elements 154

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 168/715

155 ProModel 2011 User Guide

Entity Graphic Dimensions

 An entity has two sets of dimensions, a logical (length and width) dimension, and a graphical (horizontaland vertical)

dimension.An entity'slengthand width are used to determine the number of entitiesthat can fit on a conveyor, anddo not

affect the size of the graphic on thescreen during a simulation. They are changed in the fields labeled Length andWidth

in the Entity Graphicswindow. If multiple graphics are defined for an entity, each graphiccan have a different length andwidth. Which side a user chooses to callthe length or width isunimportant as long as the proper side isreferenced when

defining a conveyor. If no conveyors are defined in the model, no specifications of a length and width are necessary.

 An entity'shorizontal and verticaldimensions are used to determine the size of the graphic on the screen. These dimen-

sionscan be changedin two ways. The scroll bar to the rightof the graphic willscale thegraphic. In addition,the hor-

izontal and vertical dimensions can be changed by clicking on the Edit button, then clicking on the Dimensions... button

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 169/715

from the resulting dialog box. The default dimensions are determined when an icon iscreated to scale in the Graphic

Editor. If the size ischanged using the scroll bar, the change will be reflected in the dimensions listed. If you change either 

the horizontalor vertical dimension from the dialog box, the size of the icon will change accordingly.

Please note

Since t he h orizontal and vertical dimensions must remain proportional, only one of the dimensions needs

to be changed. The other dimension changes automatically to maintain proportionality.

Defining Multiple Entity Graphics

Entity typescan be assigned more than one graphicto represent the entity at various stagesof production or traveling in

different directions. An entity representing a loan application could be assigned three graphics: the first representing the

application before a credit check hasbeen received, the second representing the application after receiving the credit

check but before the loan isapproved, and the third representing the application after the loan isapproved. During the sim-ulation, the application’s statuscould be shown by adding additionalgraphicsto represent each state of the loan process

using the GRAPHIC statement (see Graphic on page 574 for information).

How to define multiple graphics for an entity type:

1. Uncheck the New box on the Entity Graphicswindow. Numbered graphiccellsappear in the Entity Graphicswin-

dow.

©ProModelCorporation

Building the Model: General Elements 156

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 170/715

157 ProModel 2011 User Guide

2. Click on thedesired cell.3. Select a librarygraphic fromthe graphics menu.4. Repeat steps two and three until all thedesired graphicshave been assigned to the entitytype.

The graphicthat representsan entity during a simulation will be the first in this seriesuntil an entity's graphicis changed

with the GRAPHIC statement

Preemptive Entities

Often during a simulation, it isdesirable to have an entity preempt an activity at a location or resource in order to gain

accessto that location or resource. These situations can be modeled using preemptive priorities. An entity with a highenough priority can take over a location processing an entity or a location that isdown. An entity with high enough priority

can alsotake over a resourcewhen itis being used byanother entityor when it is offshift. When an entitytakesover a

location that was down or in use by another entity, the entity haspreempted the downtime or the other entity.

In a multi-capacity location, the occupying entity will be preempted only if there isno more capacity at the location and the

occupying entity isundergoing an operation time. Further, the occupying entity cannot be one that has been split,

created, grouped, combined, ungrouped, or unloaded at the location.

 An entity must have a priority one levelhigher than an occupying entity to preempt the occupying entity. An entity must

have a prioritythat is two levels higher than a downtime to preemptthe downtime. If an entitydoesnot have a high

enough priority to preempt another entity or downtime at a location, it waits in line (oldest by priority) to accessthe loca-

tion (see Location Priorities and Preemption on page 145).

Note that the priority of an entity isnot defined for the entity itself. For claiming a location, it isdefined in the destination

field of the routing. For capturing a resource it is defined aspart of the GET, JOINTLY GET, or USEstatement. A priority

may, however, be assigned to an attribute of a referenced entity when it attempts to accessa resource or location.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 171/715

Example of Preemptive Entities

In this example entity (EntA) arrives at location Loc1. Immediately upon arrival it requests to use resource Res1 for a nor-

mallydistributed amount of time. The priorityfor obtaining the resource is99, which means that it isa non-preemptive

request. When Res1 becomesavailable, EntA will be first in line because it hasthe highest non-preemptive priority pos-sible. When processing iscomplete for this entity, it isrouted to Loc2 with priority 200. This means that it can preempt

another entity or a downtime that mayalreadybe in process at Loc2. (See Location Downtimes and see Resources on

page 171 for more detailson entity preemption.)

Process Table

Entity... Location... Operation (min)...

EntA Loc1 Use Res1,99 For N(3,.1)

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 EntA Loc2,200 First 1 MOVE FOR 2.5

Path Networks

When resources are modeled as dynamic resources which travel between locations, they follow path networks. Entities

moving by themselves between locationsmay also move on path networksif referenced in the move logic of the routing.

Otherwise, they follow the routing path. Multiple entities and resources may share a common path network. Movement

along a path network may be defined in termsof speed and distance, or simply by time. See discussion on AutomaticTime

and Distance Calculation, later in this section, for more information about movement according to speed and distance or 

bytime.

There are three typesof path networks: passing, non-passing, and crane. A passing network isused for open path move-

ment where entities and resources are free to overtake one another. Non-passing networksconsist of single-file tracksor 

guide pathssuch asthose used for AGVswhere vehicles are not ableto pass.Crane path networks are describedin more

detail inthe section see Crane Systemson page 359.

Passing and non-passing networksconsist of nodes, which are connected by path segments. Path segments are defined

by a beginning and an ending node and may be uni-directionalor bi-directional. Multiple path segments, which may be

straight or jointed, may be connected at path nodes. For all path networks, path nodes define the pointswhere the

resources using the network interface with processing locations.

Path Networks are defined in the Path NetworksEditor, which isaccessed from the Build menu.

©ProModelCorporation

Building the Model: General Elements 158

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 172/715

159 ProModel 2011 User Guide

How to create or edit a path network:

1. Select Path Networks from the Build menu.

or...

2. Rightclick on theexisting path networkand select Edit.

Path Networks Editor The Path NetworksEditor consists of an edit table with fields for defining basicinformation about each network, such as

the network name, the type of network (Non-Passing or Passing), and the basisfor movement along the network (Speed

and Distance or Time). Clicking on the appropriate heading button will bring up a table for defining nodes, path seg-

ments, and location node interfaces.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 173/715

The following explains each field of the Path Networksedit table.

Graphic For passing or non-passing path networks, this button displaysthe Path Color dialog, which allows you to define

the color of the path network. Clickon the heading button or double click in this field to bring up the graphicdialog. Both

dialogs allow you to specify whether or not the network will be visible at run time.

Name A name that identifies the path network. For more information about valid names, see Names on page 490.

Type Set thisfield to Non-Passing ifyou want entitiesand resourcesto queue behind oneanother on the path network.If a path isNon-Passing,entitiesmay notpass each other,even if an entityis traveling at a faster speed than the onein front

of it. Set thisfield to Passing if you want entitiesor resources to pass eachother on the path network.

 A "Crane" option is also available, which is described in more detail in the section see Crane Systems on page 359.

T/S Set to either Time or Speed and Distance as the basisfor measuring movement along the network. See the dis-

cussion on AutomaticTime and Distance Calculation later in this section for more information.

Paths The number of path segments in the network. Clicking on the heading button opens the Path Segment edit table

where the user maydefine the network'snode to node connections. The Path Segment edittable is covered in moredetail

later in thissection.

Interfaces The number of location-node interfaces in thepath network.If an entitywill be picked up or dropped off at a

particular location by a resource, that location must connect to a node through a location-node interface. Clicking on the

heading button opens the Interfaces edit table where the user maydefine nodes that connect to processing locations. The

Interfaces edit table iscovered in more detaillater in this section.

Mapping The number of entriesin the Mapping edit table. Clicking on the heading button opens the Mapping edit table

where the user may map destinations to particular branches of the network. (The Mapping edit table iscovered in more

detail later in thissection.)

Nodes The number of nodes defined in the Nodes edit table. Nodes are created automatically when graphicallydefining

path segments. Clickon thisheading button to open the Node edit table, which maybe used to define nodesmanuallyor 

set Node Limitson one or more nodes. Nodes may also be used to controla resource's behavior throughnode logic or 

search routinessuch aswork and park searches (see NodesEdit Table on page 170). The Nodesedit table iscoveredin

more detail later in thissection.

How to create a path network graphically:

©ProModelCorporation

Building the Model: General Elements 160

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 174/715

161 ProModel 2011 User Guide

1. Set the defaulttime anddistancevalues per grid unit from the Griddialog box.2. Choose Path Networks... from the Build menu.

3. Enter thename of the network inthe Path Networks edit table.

4. Select either Passing or Non-passing asthe networktype.5. Select either Speed and Distance or Time as the travel basis.

6. Click on the Paths... heading button to open the Path Segment edit table.

7. Layout the networkusing the mouse buttonsas described below.

How to create path segments:

1. Left click to create a node andbegin a path segment.2. Additionalleft clicksproduce path joints.3. A right clickendsthe segmentand createsa new node.

How to modify path segments:

To create a new path from an existing node

1. Left click on that node.

To delete a joint 

1. Right click on an existing joint.

To add a joint 

1. Right-clickanywhere on a path segment.

2. Select Add Node fromthe menu.3. Drag the joint to the desired position.

Please note

If you hold down the CTRL key and move the cursor over a path segment or joint, the Add/Delete joint 

cursor will appear. From here, left click to add o r delete a joint.

To highlight a path on the layout and in the Path Segment edit table

l Left click on that path.

How to create additional nodes o r move existing nodes:

1. Click on theNodesheading button in thePath Networks edittable.2. Click theleft mouse button to create a node both on the layoutand in the Nodesedit table.3. Drag an existing node tomove thatnode.

How to move a p ath network:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 175/715

1. Clickon the Paths heading button in the Path Networks edit table.2. Left clickon any path segment anddrag to thedesired position. The entire networkwill move.

A Typical Path Network

The following diagram shows a path network consisting of seven nodes (N1 to N7) connected by path segments. Path seg-

mentsmay be straightlines fromone node to another, asin thesegment from node N7 to node N6, or they can have any

number of joints,such as the segmentfrom node N2 to node N5.

Path Segment Edit Table

This table isused to define the Path Segments that make up a path network. When specifying travelaccording to time

between nodes, the heading “Distance” changes automaticallyto “Time.”

©ProModelCorporation

Building the Model: General Elements 162

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 176/715

163 ProModel 2011 User Guide

The following defines the fields of the Path Segment edit table.

From The beginning node of the path segment.

To The ending node of the path segment.

BI Set to Uni-directional or Bi-directional depending on whether trafficcan travel in only one or either direction.

Time If travel along the network is to be measured in time rather than in speedand distance, then enter thetime required

for a resource or entity to traverse the path segment. Thisvalue may be anynumericexpression except for resource anddowntime system functions. When travel along a path ismeasured in time, all resources and entities traveling along the

path take the same amount of time to travel it, regardless of their speed. This field'stitle changes to “Distance” if the T/S

field in the Path Networks edit table is set to Speed and Distance.

Distance If travel alongthe network is to be measured in terms of speedand distance, enter thelengthof the segment

which determines the travel time along the path in conjunction with the speed of the resource or entity.

The value entered maybe any numericexpression except for attributes, arrays, and system functions. Thisexpression is

evaluated onlywhen the simulation begins.

The distance maybe followed bya comma and a speed factor between .01and 99. This speedfactor maybe used to

model anycircumstance affecting the speed of items traveling the path. For example, a resource may normally travel at150 fpm, butmay slow down as it goesaround a corner to 80%of theoriginalspeed,120 fpm. This would be entered as

100, .8 for a path segment100 feet longwhich traversed the corner. This field's title changes to “Time” ifthe T/S field in

the Path Networks edit table is set to Time.

Please note

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 177/715

Path segment editing notes:

1. If no path segments have been defined fo r a network, resources and entities will move from node to

node in zero time. See Processing  for more information about the Routing Move dialog box.

2. To move nodes already defined on the layout, click on the Nodes button and move the desired nodes.

3. To insure that all nodes can be seen by the user, two nodes cannot be located at the same point.

Automatic Time and Distance Calculation

The distance between two successive nodes or the time required to traverse a segment between two successive nodes is

calculated according to the number of grid units between the nodes and the default time and distance values per grid unit.

ProModelautomaticallyenters this time or distance in the Time/Distance column of the Path Segments edit table.

 Although the calculated time or distance may be edited later, relying on the automatic time and distance calculation feature

allows path networksto be built to scale and saves time when defining path networksgraphically. The time or distance for a path isautomaticallyrecalculated whenever the path isedited (lengthened or shortened) unless you unchecked the

“Recalculate path lengths when adjusted” box under Options in the Tools menu.

How to set the default time and distance values per grid unit:

1. Select Layout Settings from the View menu.2. Select the Grid Settings button.3. Click on the Scale... button in the Grid dialog box.4. Enter the time and distance values as shown below.

Please note

To set these values as defaults, you must check the Save as Default Grid Settings option on the grid 

dialog box.

©ProModelCorporation

Building the Model: General Elements 164

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 178/715

165 ProModel 2011 User Guide

Interfaces Edit Table

If an entity will be picked up or droppedoff at a particular location by a resource, that location must connect to a node

through a location-node interface. The Interfaces edit table isused to define location-node interfaces. The graphicbelow

shows how to set node N1 to interface with location Loc1, node N3 to interface with Location Loc2, and so on,as in theexample at the beginning of this section.

The fields of the Interfaces edit table are described as follows.

Node The node name.

Location The name of any locationswhich interface with the node. Nodescan interface with several locations, but a loca-

tion mayinterface with only one node on thesame path network.

How to create location-node interfaces

1. Left click on thedesired node to begin rubber-banding a link or interface.2. Left click on the desired location to complete the interface.

Please note

 A node on a pat h network may not interface with a particu lar u nit of a multi-u nit locat ion (i.e., Loc1.2). A

node may interface only with the “parent” location (i.e., Loc1) of a multi-unit location.

Mapping Edit Table

If there are multiple pathsemanating from one node to another node,the default path selection will be based on the

shortest distance for speed & distance networks, and the least number of nodes for time based networks. These defaultscan be overridden by explicitlymapping some destination nodes to specificbranches that entities and resources will take

when traveling out of a “from” node.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 179/715

The fields of the Mapping edit table are described as follows.

From Entities and resources traveling out of this node will use this mapping record to decide which of the alternatebranches will be taken next.

To The “from” node and the “to” node together define the branch to be taken next. This might also be interpretedas the

node which entities and resources will go through, to reach one of the destination nodes.

Dest. Entities and resources whose ultimate destination isone of these nodeswill be forced to takethe branchthat directly

connects the “from” node to the “to” node.

Please note

When your simulation is compiled and run, ProModel will automatically define destinations f or your net- 

work mapping, if you have not defined th em yourself. These computer-generated mappings will not appear in the Dest. column of the Mappings table, but the From and To columns will contain information

on these mappings. Do not delete the information in these columns.

How to create mappings using the mapping edit t able:

1. Click on the Mapping... heading button inthe Path Networkedit table. This will open the Mapping edit table.2. Click on the From heading button and select thenode to be mapped.3. Click on the To heading button and select the terminating node for the branch to be mapped.4. Click on the Destination heading button and select the desired node(s).

How to create mappings graphically:

1. Click on the Mapping... heading button inthe Path Networkedit table. This will open the Mapping edit table.2. 2. Click on thefrom node in theLayoutWindow. This placesthe selected node inthe From field.3. 3. Click on theto node in the LayoutWindow. Note that the to node must be directly connected to the from node

with a single branch.4. 4. Clickon the destination node(s) in the Layout Window. Thisplaces the selected node(s) in the Destination field.

©ProModelCorporation

Building the Model: General Elements 166

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 180/715

167 ProModel 2011 User Guide

Please note

ProModel automatically calculates and uses the shortest paths b ased on time or distance on unmapped 

 portion s of networks. If an Expression Array is used to specif y the times for a time-based network and 

the time unit is included as part of the expression in the array, the t ime unit will not be used when deter- 

mining the shortest path. In order to have the time unit affect the shortest path calculation it must be

explicitly entered in the Time field (e.g. Arr1[1,2] min).

 An example of mapping two branches of a network is given on the following pages.

Mapping Example

The following example uses a path network diagram to demonstrate mapping.

In this example, we wishto forceresourcesand entitiesenroute from Loc1 to Loc4, Loc5, or Loc6 to take the branch

directly connecting node N2 andnode N5 to avoid traffic congestion at the intersection of the two main branchesat node

N3. Since there are multiple ways to go from N2 to N5, a decision as to whichalternativewill be used has to be made atN2.

In addition,we want resources and entities to follow thesame path in the opposite direction when enroute from Loc4,

Loc5, or Loc6 to Loc1. In this case, the decision must be made at N5.

Because thecombined length of segmentsconnecting N2 to N3 and N3 to N5 is shorter than thelengthof the single seg-

ment fromN2 to N5, resources and entitiesbased on speed anddistance will normallytake the former path to travel. To

force them to take the longer path, we must specify mapping constraints.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 181/715

Thiscase requires two explicit mapping constraintsto override the selection of default paths in each direction: The first

table entryforcesentitiesand resourcesen-route from Loc1 to Loc4, Loc5, or Loc6 to override the defaultpath and take

the direct branch from N2 to N5. The secondtable entry forces entitiesand resources traveling from N5 (originally from

Loc6, Loc5 or Loc4) to Loc1to take the direct branch from N5 to N2. Entries 3 and4 are optional , and might be usefulto

speed up translation, since the restrictions they impose allow the shortest path calculationsto be bypassed.

©ProModelCorporation

Building the Model: General Elements 168

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 182/715

169 ProModel 2011 User Guide

There isa shortcut to force the same non-default path selection constraint to a number of destination nodes: For instance, ifthe vertical arm of the path networkextendedup to include many other nodesN8, N9, ..., and locationsLoc7,

Loc8, ..., then we would change the Mapping edittable asfollows:

1. Delete line 1 inthe Mapping edit table.2. Make surethat line 3 is there(it is not optionalany more).3. Include a line which reads: “From: N2, To: N5, Dest:<BLANK>”.

The empty destination column will be interpreted as “allother destination nodes” by ProModel.

Please note

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 183/715

For a “from” node ( unless there is a branch map with a blank destination column), any nodes not explic- 

itly listed in th e destination columns o f existing mapping records will be reached via the default path

selections.

Nodes Edit Table

The Nodesedit table liststhe nodesthat make up a path network andis used to limit the number of resources andentities

that mayoccupya node at any given time.In addition to controlling traffic on a path network, nodesalso define where

resources interface with locationsor where entities enter and leave the path network. Nodes may also be used solelyto

controla resource or entity's behavior through node logic or search routinessuch as work and park searches (see

Resources on page 171).

The following defines the fields of the Nodes edit table.

Name The node name.

Limit The maximum number of resourcesand entities that may occupya node at anygiven moment. A blankentrymeans

there isno limit.

Pre-translation check for Path Networks and Automatic Mapping

When you run your simulation, ProModelwill compile your model, check your path networksfor errors and automatically

calculate shortest distances between nodes. If your model haslarge, complex path networks, this could cause your mod-

el’scompilation time to run quite long.

To combat this, ProModelwillperform a pre-translation check for path networks. Thismeans that the first time your model

compiles, it will check your path networksfor errors and automatically calculate the shortest distance between nodes. It will

then save thisinformation.

Every subsequent time your model compiles, it will read the saved information about your path networksand not check for 

errors or recalculate shortest distances. This saves compilation time on large models.

©ProModelCorporation

Building the Model: General Elements 170

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 184/715

171 ProModel 2011 User Guide

However, if you edit one or more of your path networks, ProModelwill once again check the modified path networksfor 

errors and recalculate shortest distances during compilation. ProModelwillconsider a path network to have been mod-

ified if its name was at anytime, since the last compile, highlighted in the Path Networkdialog window.

Or if you have checked to recompile mappings in the simulation dialog, ProModelwillcheck all Path networksfor errorsand recalculate shortest distances (i.e. automatic mappings) between each scenario.

Resources

 A resource is a person, piece of equipment, or some other device used for one or more of the following functions: trans-

porting entities, assisting in performing operations on entitiesat locations, performing maintenance on locations, or per-

forming maintenance on other resources. Resources consist of one or more units with common characteristics, such as a

poolof service technicians or a fleet of lift trucks. Resources may be dynamic, meaning that they move along a path net-

work, or static, in which no movement occurs. Resources may also have downtimes.

Everyresource has a name and a name-index number. Logic referring to a resource, suchas the GET statement, can

use either the resource's name, or the RES() function to refer to the resource. The RES() function allows a statement

using a resource name to refer to different resources as a simulation progresses. See Name-IndexNumbers on page

492 andsee Res() on page 618 for more information.

Resources are defined in the Resources Editor, accessed through the Build menu.

How to create and edit resources:

l Select Resources... from the Build menu.

or...

l Right click on the existing resource and select Edit.

Typical Use of Resources

The diagram below shows two types of resources: forkliftsand an operator. Forklifts are used as resources to transport

entities from Loc1 to any of the processing locations, Loc2 through Loc6. The forkliftsare dynamic resources and travel

along the path network, Net1, explained previouslyin see Path Networkson page 158. The operator inspects all partsat

Loc7 and never movesfrom that location.Therefore,the operator is a static resource and does not need a path network.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 185/715

The remainder of this section defines the elements and the procedures necessary for specifying static and dynamic

resources.

Resources Editor 

The Resources Editor consists of the Resources edit table and the Resource Graphicswindow. These windowsare used

together to specifythe characteristics of a resource.

©ProModelCorporation

Building the Model: General Elements 172

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 186/715

173 ProModel 2011 User Guide

Resources edit table Appears along the top of the workspace with fieldsfor specifying the name of each resource, the

number of identical units of a resource, the downtime characteristics of each resource, and other important information,

such as the path network the resource uses for movement.Resource Graphics window Contains graphicicons that may be selected to represent a resource during simulation. A

resource may have more than one icon to represent different views of the resource, or its status. Thiswindow also allows

you to define multi-unit resources graphicallyon the layout. Defining a resource isas simple as selecting an icon from the

Resource Graphicswindow, giving the resource a name, and specifying the characteristics of the resource.

Resources Edit Table

The Resources edit table defines the characteristics of each resource in the system. The fields of this table are defined

below.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 187/715

Icon The icon selected for this resource. Icons are selected using the Resource GraphicsWindow. If more than one icon

isselected for the resource, the first icon isshown here.

Name The name of the resource.

Units The number of units represented bythis resource name between 0 and 999(or a macro). If the entryis a numeric

expression, the expression will be evaluated at the start of the simulation run. Consequently, the number of resource units

cannot be changed during the simulation run.If you would like to vary the number of unitsof a resource during runtime,

use downtimesto vary the number of resources available at a given time. (See also Resource Downtimes on page 179.)

Please note

When you use a macro with a value of zero in the units field, you can use SimRunner to find the optimal 

number of resources needed for your model.

DTs... Select this field to define any optionaldowntimesfor this resource. Onlyclockand usage based downtimesare per-mitted for resources.

Stats... The desired statistics, if any, to gather for this resource. Statistics can be collected as a summaryr eport over all

units of a resource, or individuallyfor each unit of a resource. The optionsare as follows:

l None: No statistics are gathered.

l Summary: Average utilization and activity times are recorded collectivelyfor all units of the resource.

l By Unit: Statisticsare gathered for each unit individuallyas well as collectively.

l Time Series: Collects basicstatisticsand time series tracking the resource over time.

Specs... Select this field to open the Resource Specifications dialog box. From here you can assign a path network, setthe resource speed, and define pickup and deposit times. For more information on the Specification dialog, see Resource

SpecificationsDialog Boxon page 185.

Search... If a path networkhas been assigned, select thisfield to accessthe Work Search and Park Search edit tables,

used to define optionalwork and park searches.

Logic... If a path network hasbeenassigned, select this field to define anyoptionallogic to be executed whenever a

resource enters or leaves a particular path node. If you have defined a node entryand exit logic, the logic field will show the

number of nodes where node entryand exit logic hasbeen defined.

Pts... If a path network has been assigned, select this field to define resource points. Resource pointsare auxiliary points

where multiple resources mayappear graphically when parked or in use at a multi-capacity node.

Notes... Enter anynotes in this field, or click on the heading button to open a larger Noteswindow for entering notes.

©ProModelCorporation

Building the Model: General Elements 174

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 188/715

175 ProModel 2011 User Guide

Resource Graphics Window 

The Resource GraphicsWindow appears when the Resources module isopened and isused to assign graphicsymbols

to resources. If the New box ischecked in the window, selecting a graphiccreates a new resource. Multiple graphics are

defined for a given resource by selecting the desired resource and unchecking New. Thisprocedure causes a scrollablerow of graphiccellsto appear which are automaticallyand sequentiallynumbered beginning with 1. Graphicsmay be

added or replaced for a given resource by clicking on the desired celland selecting a library graphicfrom the graphics

menu.

By using the GRAPHIC statement in resource downtime logic, or in the case of a dynamic resource, node logic, any of the

multiple graphics assigned to a resource maybe activated during simulation. For static resources, you may define a sec-

ond or third graphicto be used automatically when the resource isbusyor down, respectively.

Resource graphics maybe sized using the scrollbar or edited by clicking the edit button. Edit options include rotating, flip-

ping horizontallyor vertically, and changing the color of the graphic. In addition, you can specify the dimensions of the

resource graphic. For more information, see Graphic Tools Button Bar on page 427.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 189/715

The Layout Position allows you to add or delete resource graphics on the layout. When adding a resource graphicto the

layout, ProModel automaticallyadds a unit and a resource point. When deleting a resource graphicfrom the layout, Pro-

Model deletesthe resource point but leaves the number of units in the units field unchanged.

Static Resources

Static resources are resourcesnot assigned to a path network andthereforedo notvisibly move. A staticresource maybe

needed to perform an operation at only one location, such as an inspection operator, and will appear during the entire sim-

ulation in the same place it was defined graphically. Although a static resource isstationary and doesnot visibly move

between locations, it may be used at more than one location or to move entities between locations.

How to define a static resource:

©ProModelCorporation

Building the Model: General Elements 176

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 190/715

177 ProModel 2011 User Guide

1. Select Resources fromthe Build menu. Thisautomatically brings up the Resources edit table and the

Resource Graphicswindow, used together to define all resources in the model.2. Choose a graphic icon for the resource from the ResourceGraphicswindow.3. Select the Add button in the Resource Graphicswindow.

4. Click on thelayout at the desired position of the resourcegraphic.5. Add additionalresource graphics for the same resource if desired. Every time a resource graphicis placed on

thelayout for thesameresource in the edittable, a new resource point is created.6. Supply any optionalinformation about the resource, such as downtimes.

Please note

Static resources notes:

1. When defining the static resource specifications, the default for Resource Search is Least Utilized. Th e

default for Entity Search is Longest Waiting. You may only specify Pick-up and Deposit Time in the

Motion box.

2. There is not a status light for a static resource; however, a second and third graphic may be defined 

for use when th e resource is busy or down, respectively. If no second and third graphic are defined, the

resource graphic changes color to green when in use and red when down.

Dynamic Resources

Dynamic resources are resources that move along an assigned path network and may transport entities between loca-

tions as a forklift would. They may also need to process entities at several locations, such as an operator performing tasks

at more than one location. For these reasons, it isusually preferable to model the resource's movement using a path net-

work. Defined properly, the resource will travel along the path network during the simulation run.

How to create a dynamic resource:

1. Create a path networkusing the Path NetworkEditor.2. Select Resources from the Build menu. Thisautomatically brings up the Resources edit table and the

Resource Graphicswindow, which are used together to define all resources in the model.3. Choose a graphic icon for the resource from the ResourceGraphicswindow.4. Click the Specs... button to open the SpecificationsDialog.5. Assign a path network to the resource.6. If desired,place units of the resource on the layoutby selecting theAdd button in the ResourceGraphicswindow

andclicking on thelayout. Every time you create and place a resource graphic on thelayout for thesame

resource in the edittable, ProModelcreatesa new resourcepoint.See ResourcePoints on page 191 for more

information.7. Supply any optionalinformation about the resource including number of units, downtimes, work and/or park

searches, and node logic in the Resources edit table.

Please note

Dynamic resources notes:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 191/715

1. When defining t he resource specifications, the default Resource Search for dynamic resources is

Closest Resource. The default for Entity Search is Closest Entity.

2. More than on e resource can use the same path network.

Multiple Resource Graphics

ProModelallows you to define several different graphicicons for the same resource. For example, you may wish to

change the color of a resource whenever it becomesunavailable due to an unscheduled downtime. Resource graphics

for dynamic resources maybe changed during a simulation by using the GRAPHIC statement (see Graphic on page 574)

in either the node or downtime logic. The GRAPHIC statement for staticr esources can only be used in downtime logic,

however, anysecond and third graphics are automatically used when static resources are busy or down, respectively. If 

no second and thirdgraphics are defined, theresource graphic turns green when in use and red when down.

How to assign multiple graphics to a resource:

1. Select Resources from the Build menu.2. Highlight the desired resource in the Resources edit table.3. Uncheck the New boxin the Resource Graphics window.4. Clickon the next blankr esource graphiccell in the Resource Graphicswindow.5. Select the desired resource icon.6. Change the color, rotation,or other aspectof thenew graphic by clicking on the Edit button.7. An example of a single resourcewith multiple graphics isgiven on the following page.

Multiple Resource Graphics Example

©ProModelCorporation

Building the Model: General Elements 178

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 192/715

179 ProModel 2011 User Guide

This example shows a forklift with two different orientations. You may define as manygraphicsas needed for each

resource.

Please note

When changing the graphic for a resource in downtime logic, or in the case of dynamic resources, node

logic, the number after the word GRAPHIC refers to the cell n umber in the Resource Graphics window as

shown above. For example the statement GRAPHIC 2 would change the forklift to the icon in cell number 

2. The default graphic is the graphic in cell number 1 if none is specified. See Graphic on page 574 for more

information.

Multi-Unit Resources vs.

Multiple Single-Unit Resources

Multi-Unit Resources

When a resourceis defined ashaving more than oneunit, each resource unit is given a numeric suffixby which it is iden-tified in the output report. For example, a resource (Res1) which has five units will display output statistics for resources

called Res1.1, Res1.2, . . . . Individualunits of a resource (e.g., GET Res1.1) cannot be requested.

Suppose you define a resource, Technician, which has ten units. You also have ten locationsand each resource unit can

only interface with one location. For example, Technician.5 can only work at Loc5. Since “USE Technician.5” isinvalid,

you would need to use multiple single-unit resources instead (e.g., Technician1, Technician2, Technician3).

Multi-unit resources are intended for use when several resources are defined with the exact same specificationsand any

resource can be used at a number of locations. For example, a computer can be operated by one of three technicians. If 

you did not use multi-unit resources, you would need to specify “USE Technician1 OR Technician2 OR Technician3,”

although this can easily be abbreviated by using a macro to represent the resource expression. When you define three

units for a single resource, Res1, you can simply state “USE Res1” and one resource unit will be used based on its avail-

ability.

Multiple Single-Unit Resources

Multiple single-unit resources are usefulwhen resources have different specifications, follow different path networks, or 

are used at specificlocations. If several resources have the same specificationsand travel the same path network but can

only do work or interface with specificlocations, theymust be defined as multiple single-unit resources. Thisis because a

unitof a multi-unit resourcemust be able to interface with all locations where it is called to work.

Resource Downtimes

Resource downtimes refer to the times when a resource isunavailable due to scheduled eventslike breaks and shift

changes, or unscheduled eventslike illness and random failures. For scheduled events, it ismuch easier and more

straightforward to define these downtimes using the Shift Editor (see Shifts& Breakson page 217). Unscheduled down-

times, based on the elapsed time of the simulation clock or resource usage time, are defined in the Resources edit table

by clicking on the downtime heading button.

How to define resource downtimes:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 193/715

1. Select Resources from the Build menu.2. Select the resource for whichthe downtime isto be defined.3. Click the DTs... button from the Resources edit table.4. Select the downtime basis: Clock or Usage.

5. Enter the required information in either the ClockDowntime or Usage Downtime edit table. Each of these tablesisdescribed in the following pages.

Please note

Unlike location downtimes, multiple resource downtimes occurring within the same time frame are proc- 

essed sequentially, not concurrently. However, through the u se of the DT Delay fun ction, concurrent 

downtimes can be achieved for resources.

Clock-Based Downtime

Clock-based downtimes for resources are specified through the ClockDowntimes edit table shown below. The fields of 

this table are defined as follows:

Frequency The time between downtimes. Thismay be a constant time as shown above, a distribution, or an expression.

First Time The time of the first downtime occurrence. Leave thisfield blankif the firstoccurrence is to be determined from

the frequency field.

Priority The priorityof the downtime (0-999). The default priority is99, which isthe highest non-preemptive priority.

Scheduled... Select YES ifthe downtime isto be counted asa scheduled downtime. Select NO if the downtime is to be

counted as a non-scheduled downtime. (All scheduled downtimesare deducted from the total hours scheduled in the sta-

tistical calculations.)

List A list of the individual unitsof the resourceto be affectedby the downtime.You maylist individual units of the

resource, specify ALL, or leave blank to affect all units.

l 1,2 Units1 and 2 only

l

1-3,5 Units1 through 3 and 5 onlyl none You mayuse none to indicate that no unit will adopt thisdowntime. This isuseful increating a scenario

parameter. Byusing a macro to representthe number of units,the user mayselect none as an option.

l Macro The name of a macro defined asa scenario parameter that allowsthe user to specifythe units to be

affected by the downtime..

©ProModelCorporation

Building the Model: General Elements 180

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 194/715

181 ProModel 2011 User Guide

Node This field applies onlyto dynamicresourcesand defines thenode to whichthe resource will travel to go down. If no

node isentered, the resource stays at thecurrent node. The actual downtime willnot beginuntil theresource arrives at

this node. Traveling to the downtime node iscounted statisticallyas time traveling to park.

Logic... Specific logic to be performed when the downtime begins, typically a WAIT statement. Resources may be used

to service resources that are down if the servicing resource isstatic, or if the servicing resource isdynamicand uses thesame network. (See Appendixon page 657 for a list of statementsvalid in Resource Downtime logic.)

Disable Select YES to disable a downtime without removing it from the table.

Usage-Based Downtime

 A usage-based downtime is a downtime based on how long a resources has been used, such as how often a forklift

needs to be refueled. Usage-based downtimes for resources are specified through the Usage Downtimes edit table

shown below. Actual time in use includesanytime that a resource is moving with an entityor is being used byan entityat a

location. It also includesany time a resource isbeing used in downtime logic as a maintenance resource. The fields of this

table are defined as follows:

Frequency The time between downtimes, based on the usagetime of a resource. This maybe a time distribution as

shown above, or an expression.

First Time The time of the first downtime occurrence. Leave this field blank if the first occurrence isto be determined

from the frequency field.

Priority The priority of the downtime (0-999). The default priority is99, the highest non-preemptive priority.

List A list of the individual units of the resource to be affectedby the downtime. You maylistindividualunitsof the

resource, specify ALL, or leave blankto affect all units.

l 1,2 Units1 and 2 only

l 1-3,5 Units1 through 3 and 5 only

l none You mayusenone to indicate that no unitwill adoptthis downtime. This isuseful in creating a scenario. By

using a macro (whichhas been defined asa scenario parameter) to representthe number of units, theuser 

may select none as an option for that parameter in the scenario manager.

l Macro The name of a macrodefined asa scenarioparameter that allows the user to specifythe unitsto beaffected by the downtime.

Node This field applies onlyto dynamicresourcesand defines thenode to whichthe resource will travel to go down. If no

node isentered, the resource stays at thecurrent node. The actual downtime does not begin until the resourcearrivesat

this node. Traveling to the downtime node iscounted statisticallyas time traveling to park.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 195/715

Logic... Specific logic to be performed when the downtime begins, typically a WAIT statement. Resources may be used to

service resources that are down if the servicing resource isstatic, or if the servicing resource isdynamicand uses the

same network. (For a list of statementsvalid in Resource downtime logic, see Appendix on page 657).

Disable Select YES to disable a downtime without removing it from the table.

Please note

Usage-based do wntimes do not accumulate. For example, if a downtime is p reempted by an entity and 

another downtime is scheduled to occur while processing th e entity, only t he f irst downtime resumes after 

 processing the entity. All others are ignored.

Resource Priorities and Preemption

Priorities for resource requests may be assigned through a GET, JOINTLY GET, or USEstatement in operation logic,

downtime logic, or move logic (or the subroutines called from these logics). Prioritiesfor resource downtimes are assigned

in the Priority field of the Clockand Usage downtime edit tables. The following examples illustrate these points.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 Use Res 1,200 For N(3,.1)

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 EntA Loc2 First 1 MOVE FOR 5

When a resource, being used by an entity, ispreempted by either a downtime or another entity, anyprocessing time for 

the preempted entity due to a WAIT or USE statement isinterrupted until the preempting entity or downtime releases the

resource. If an entity isusing other resources in addition to the one preempted, the other resources remain in possession

of the entity (unless they are preempted away).

In the case of a resource downtime preempting another resource downtime, any remaining time delay, as well as any

other downtime logic remaining to be processed by the preempted downtime, isimmediately discontinued without resum-

ing and the preempting downtime takes over.

Please note

Resource priorities and preemption notes:

©ProModelCorporation

Building the Model: General Elements 182

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 196/715

183 ProModel 2011 User Guide

1. If a resource is transporting an entity, it cannot be preempted b y another entity o r by a downtime until

it drops off the current entity at th e destination location. T herefore, the resource will deliver the current

entity and then immediately come und er control of the preempting entity or downtime.

2. If a resource is moving bu t d oes not possess an entity, the resource can b e preempted b y a d owntime

or entity. The resource will stop at the next node in the path network and travel to the downtime node

after which the resource will go down.

Resource Shift Downtime Priorities

In ProModel, you define the shift downtime priorities in the Shift Assignmentsmodule. The priority for a resource to start a

shift downtime and the priority required for some other task to preempt the downtime must be set in the Shift Assign-

ments module.

 Although a resource may be in use during a shift downtime, the scheduled hours in the statisticswillstill reflect the hours

scheduled to be on shift.For example, a resource goesoff shift after eighthours. Due to an emergency, the resource is

called back two hourslater to work on a machine that has gone down. The statistics will still indicate that the scheduled

hoursfor theresource are eightwhen the resourceactuallyspent more than eight hours in use, because theresource

was scheduled to work only eight hours. The resource's total usage time, however, will still indicate the additional time

spent working on the downed machine.

Resource Shift Carryover 

When a resourceis preempted to go off shift, rather than requiring the exact unitof that resource to return and complete

the work, the entity will make a request for another unit of the resource to continue the work. Thisallows, for example,

another unitassignedto a secondshift to take over thework started bythe resource on the firstshift. In this casea shift

carryover occurs for the entity utilizing a resource to perform a task.

Resource Preemption MatrixThe following Preemption Matrix shows the possibilities of entities and downtimes preempting each other in the use of a

resource. “Current” refersto the entity or downtime in possession of the resource when the requesting entity or down-

time attemptsto capture it. Downtimes below refer to clock and usage-based downtimesonly.Priority values are divided into ten levels( 0 to 99, 100 to 199,..., 900-999), with values beyond 99 used for preempting

entitiesor downtimes of a lower prioritylevel.

To Preempt

The Current

Owner 

To Preempt The

Current Down-

time

Requesting Entity or 

Another Resource or Location’s Downtime

1 priority level

higher 

2 prioritylevels

higher 

Requesting Downtime 1 priority level

higher 1 prioritylevel

higher 

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 197/715

l The upper-left quadrant shows that if an entity tries to seize a resource currently owned by another entity (or 

another resource’s or a location’s downtime), the entity must have a priorityat least one level higher than the cur-

rent entity to preempt the resource.

l The lower-leftquadrantshows that a downtime must have a priorityat least one levelhigher than the entitycur-

rently owning a resource if the resourceis to be preempted.

l The upper-right quadrant shows that an entity musthavea priorityat least 2 levels higher than the current down-

time priority to preempt a downed resource.

l The lower-right quadrant shows that a preempting downtime must have a priority at least one level higher than

the current downtime to preemptit.

The following graphics demonstrate basic preemption concepts.

Example 1 Example 4

Example 2 Example 5  

©ProModelCorporation

Building the Model: General Elements 184

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 198/715

185 ProModel 2011 User Guide

Example 3 Example 6  

Resource Specifications Dialog Box

The Specifications dialog box contains information for defining the operating characteristics of each resource in the sys-tem. Manyof the itemspertain only to dynamic resources (i.e., resources with path networks). If the resource isstatic

(i.e., not assigned to a path network) manyof the options will be disabled. The Resource Specifications dialog box

includes the following fields:

Path Network The name of thepath network alongwhich the resourcetravels. This should be “none” for a static

resource.

Home If a path networkhas been assigned, this is thename of the home node where the resourceis positioned at the

beginning of the simulation.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 199/715

Please note

To have resources start at o ther nodes in th e network, define a Park Search from the h ome node which

causes the resource unit or units to be positioned at the nodes identified in the park search.

Return Home If Idle If a path networkhas been assigned, check thisboxto return theresource to thehome node when

no other tasksare waiting to be performed andno parksearchesare defined.

Off Shift If the resourceis assigned to a path network and shift, this isthe node to which the resourcetravels to go off 

shift.

Break If the resource is assigned to a path networkand shift,this is thenode to whichthe resource travels to go on break.

Resource Search When an entity that needs a resource must select between several available resource units, it follows

this rule. Thisonlyapplies to multi-unit resources. The following rules maybe specified:

l Closest Resource

l Least Utilized Resource

l Longest Idle Resource

Please note

For a non-passing path network, only the Closest Resource rule is allowed since the other rules could 

cause the network to jam. Static resources only allow Least Utilized and Longest Idle rules since there is

no traveling to be done.

Entity Search When two or more entitiesof equalpriorityrequest a resource at the same time,the resource followsthis

rule to choose the one to service. The resource first checksfor any entities waiting at locationslisted in a work search

before defaulting to this rule and, if an exclusive work search has been defined, the default entity search rule isnot used.

The following rules may be specified:

l Longest waiting entity (with highest priority)

l Closest entity (with highest p riority)

l Entity with th e minimum value of a specified attribute

l Entity with the maximum value of a specified attribute

Please note

Entities look for resources to move them after they capture a location. If several entities are waiting to be

transported to one location b y a resource and you want the entity with t he minimum attribute value to

arrive next at the location, you must use the Locations edit table to define the rule at the location for 

incoming entities as minimum attribute value. The Closest entity rule applies to dynamic resources only.

If the path network that the dynamic resource is using is time-based, the closest entity is the entity with

©ProModelCorporation

Building the Model: General Elements 186

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 200/715

187 ProModel 2011 User Guide

the least number of nodes from the resource. If the path network is defined by speed and distance, the

closest entity is the entity the shortest distance from the resource.

Motion If a path network has been assigned, the motion fields define the speedsand times required for basicresourcemovement and contain the following information:

l Speed traveling empty/full*

l Acceleration rate*

l Deceleration rate*

l Pickup time

l Deposit time

Please note

Resource specification notes:

1. The u nits to the side of these fields change automatically from feet to meters (and vice-versa) depend- 

ing on the default distance units selected in the General Information dialog b ox.

2. Pickup and d eposit times for resources are included as transit time in the output statistics.

Resource Search Routines

Search routines refer to the instructions a dynamic resource will follow after being freed at a path node where a search

routine was defined. Two types of search routinesmay be specified.

Work Search A list of locations where entities maybe waiting for the resource. Worksearches maybe either exclusive or 

non-exclusive.

l Use exclusive work searches to limit the locationsa resource may search for work. An exclusive work search will

cause the resource to search only the locationsin the list. If no workis foundat anyof the listed locations, the

resource will either park at a node listedin itspark search, go to itshome node,or simply become idle until work

isavailable at one of the locations in the exclusive work search list.

l Use non-exclusive work searches to have a resource check for work at certain locationsfirst, and then move on

to others. A non-exclusive work search will cause the resource to search the listed locations first and then resort

to the default search rule listed in the Resource Search section of the Specificationsdialog box (e.g., oldest wait-

ing entity, closest waiting entity).

Park Search Park searchesare typically used to get a resource off a mainpath segment, or send the resourceto thenext most likelyplace work will become available. A park search isa list of nodes to which a resource may be sent to park if 

no work iswaiting at either the work or default search locations.

Please note

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 201/715

 A lockup can occur in the model if you define a park search at the home no de and specif y Retu rn Home If 

Idle in the Resource Specifications.

Work Search Edit TableWorksearchesare defined for dynamic resources through the WorkSearch edit table shown below. If several resources

share the same path network, eachresource musthaveitsown worksearchdefined (i.e., resources cannot share work

searches).

The fieldsof theWork Search edit table are defined asfollows:

Node The node for which thework search isdefined.

Type Exclusive or non-exclusive work search. See Resource Search Routines on page 187 for an explanation of exclu-

sive and non-exclusive work searches.

Location List A list of locations to be searched for waiting entities when the resource becomesavailable.In the edit table above, work searches have been defined at each location where the forklift delivers entities. The purpose

of the work search in this example isto force the forkliftsto give priority to entities waiting to be delivered to processing loca-

tionsbefore taking an entity to a non-processing location. Thishelps to keep the processing locations busy at all times.

Park Search Edit Table

Parksearchesare defined for dynamic resources through the ParkSearch edit table shown next. If several resources

share the same path network, eachresource musthaveitsown parksearch defined(i.e., resources cannot sharepark

searches).

©ProModelCorporation

Building the Model: General Elements 188

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 202/715

189 ProModel 2011 User Guide

The fieldsof the Park Search edittable are definedas follows:

Node The node for which the park search isdefined.

Parking Nod e List A listof nodes to which a resource maybe sent to park. The resource will look for available capacityat the firstnode in the list (Node capacityis defined in the Path Networks edittable in the Nodes window). If there isno

capacityat that node, the resourcewill lookto the secondnode in the list and soon until a node with capacity is found. If no

capacityis foundat anynode inthe list, the resource will remain where it is until capacity becomesavailable at oneof the

nodes in the list.In the table above, a parksearch has been definedfor each of the internal path nodeswhere a forklift mightdeliver an

entityand then be in the wayif it has nothing elseto do.Specifically,if a forklift makes a deliveryand then becomes avail-

able at node N3, it will park at node N4. From node N4 it will parkat node N1, and from node N6 it will park at node N7.

Node Logic Editor 

The Node Logicedit table isused to define special logic for a dynamic resource to perform upon entering or exiting a

node. Node logic maybe defined for any dynamic resource at any node. Typical uses of node logic are:

l Changing a resource graphicusing the GRAPHIC statement

l Controlling trafficusing WAIT UNTIL statements

l Gathering specialstatistics on resource movement

The fieldsof the Node Logic edit table are defined asfollows:

Node The entryor departure node where the resource will process the logic.

Entry Logic Logic to be executed when a resource enters thenode.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 203/715

Exit Logic Logic to be executed when a resource leavesthe node.The table above was taken from the example contained on the following pages.

Node Logic Example

Suppose that for safety considerationswe desire to keep track of the number of times both forkliftssimultaneouslyenter a

particular zone of thenetwork consisting of branchesN2 to N3, N3 to N4, andN3 to N5. (It is thought that this zone may be

particularlysusceptible to accidents due to heavy traffic.) We could accomplish this using node logic at the entryand exit

pointsof the zone.

The only wayto enter or exitthe zone isthroughnodes N2 and N5. To trackthe number of forklifts currently in thezone,

we increment and decrement a variable called Current. Each time a forkliftleaves node N2 or N5 en-route to node N3 we

increment variable Current. Each time a forkliftenters node N2 or N5 enroute from N3 we decrement variable Current.

Finally, each time we increment the variableCurrent, we check to see if Current > 1. If so, we increment a secondvariable

called Totalto record an occurrence of both forkliftsin the zone at the sametime.

The following windowsshow theentryand exit logic for node N2, representing oneentryto the zone. The node logic for 

node N5 is identical to that for node N2.

©ProModelCorporation

Building the Model: General Elements 190

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 204/715

191 ProModel 2011 User Guide

Please note

This example follows the rule that allows the LAST() function to be used only in Node Entry Logic, while

the NEXT() function may be used only in Node Exit Logic. (See Logic Elements on page 519 ).

Resource Points

For a static resource, resource points are the layout coordinates of the resource graphics. For dynamicresources,

resource pointsare auxiliary pointswhere multiple resources mayappear graphicallywhen in use or parked at a multi-

capacitynode. When a resourcearrivesat a node, it will appear on that node unless a resource point is definedfor thatresource at that node. The resource willappear on the resourcepoint when it arrives to park or performa taskat a par-

ticular node. Resource points prevent resources from appearing on top of each other. In the case of dynamic resources,

resource pointsare defined in termsof an offset from the node to which they are connected. Resourcepointsare defined

in termsof an offset from the upper left corner of the layout for static resources.The following Resource Points edit table shows that node N8 hastwo resource pointsattached to it. The horizontaloffset

is 0 units for eachpoint.The verticaloffset is13 units both up and down from the node position. (For resourcepointspos-

itive distances are up and to the right.)

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 205/715

Whenever a forklift arrives or parks at node N8, it will automatically go to one of the two resource points. Thisprevents the

forkliftsfrom graphicallyappearing on top of each other if theyare both at node N8 simultaneously.

How to add resource points to a node:

1. Select Resources from the Build menu.2. Clickon the resource pointsheading button, Pts....3. Clickon the node for whicha resourcepoint isto be added.4. Clickon the layout where the resource point is to appear.5. Repeat steps 3 and 4 for each resourcepoint to be added.

Please note

Resource points are automatically added to the ho me node for each resource graphic placed on the lay- 

out.

How to delete resource points:

1. Bring up the Resource Pointsedit tableby clicking on the Pts... heading button in the Resources edit table.2. Select the point to be deleted byhighlighting the edit tablerecord or clicking on theresource point inthe layout. (If 

you click on the point to select it, you must then reactivate the Resource Pointswindow by clicking on the title bar 

of the table.)3. Select Delete from the Edit menu.

How to move resource points:

1. Bring up the Resource Pointsedit tableby clicking on the Pts... heading button from the Resources edit table.2. Drag the resourcepoint to a new location with themouse.

©ProModelCorporation

Building the Model: General Elements 192

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 206/715

193 ProModel 2011 User Guide

Processing

Processing defines the routing of entities through the system and the operations that take place at each location they

enter. Once entities have entered the system, as defined in the Arrivalstable, processing specifies everything that

happensto them untilthey exit the system.Processing isdefined in the Processing Editor, which isaccessed through the Build menu. Thissection first describes how

to create simple processes, then explains each feature of the Processing Editor.

How to create and edit process routings:

l Select Processing fromthe Build menu.

or...

l Right click on the existing process routing and select Edit.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 207/715

Using the Processing Editor 

Thisdiscussion covers the procedures used to define operationsand routings using the Processing Editor. As with most

other procedures in ProModel, theymay be performed graphicallyusing the mouse, or manuallyby typing the information

directly in the edit tables.

Before you begin to specify the processing logic, define all locationsand entities to be referenced in the processing. Thisis

done through theLocation andEntityEditors.If you reference a location or an entitythat hasnot yet been definedin a loca-

tion or entity field, you will be prompted to add that location or entity to the respective location or entity list. However, no

graphicgets automaticallyassigned to the location or entity.

The easiest way to define the processing logic isto define the routing or flow sequence using the tools in the Processing

Tools window, which appears in the lower left corner of the Processing Editor. These tools have been designed to allow

you to easily and rapidly define the flow of entitiesthrough the system. It isalso a good idea to define therouting rule for 

each routing as it iscreated. Once you have defined the from-to relationships between locationsfor each entity, fillin the

details of the operation and move logic for each location. Thisis typically done by typing the logic in the operation or move

logic column manuallyor by using the Logic Builder, documented at the end of this section.

Defining processesgraphically in ProModelrequires interaction with all four process editing windows.

Process Edit Table

Routing Edit Table

Tools Window

Layout Window

Before discussing the procedures for using these windowsinteractively, let us look briefly at a process flowchart of a sim-

ple model.

Example Model Two entity types, EntA and EntB, arrive at Locations 1A and 1B, respectively, according to some specified arrival logic.

 After a short preparation time, both entitiesare routed to Location 2 where 1 EntB is joined to 1 EntA. At this point the

resulting entity, EntC, issent to Location 3 for consolidation. Twelve EntC's are accumulated at Location 3 and processed

together for 3.0 minutes. Then they exit the system.

©ProModelCorporation

Building the Model: General Elements 194

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 208/715

195 ProModel 2011 User Guide

In the flowchart above, each block represents a process record for an entity at a location.The lower left portion of a block

specifies the operation(s) performed on the entity at the location. The lower right portion of the block representsthe

number of entities output to the next location.

Defining Entity Processing

How to define entity processing graphically:

1. Select an entityfrom the entitylist in the Tools window. The selectedentitywill appear inthe editfield at the top of 

the list—this entity will come into the location, it isnot the entity that results from the process.2. Select the desired editing mode: New Process or Add Routing.3. Clickon the first location where the entity will process. A rubber-banding routing line appears. If you select Add

Routing, the rubber-banding routing arrow automaticallyappearsfrom the current location.4. To choose a different entity asthe output entity, select the desired output entityin thetools window.5. Clickthe destination location.

Please note

In the example below, we first clicked on Loc1A and then o n L oc2. The records in the Process and Rout- 

ing edit tables were entered automatically.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 209/715

6. Repeat this process until the flow of entities has been completely defined except for exiting the system.

7. From thefinalprocessing location route an entity to Exit byclicking on the “Route to Exit” button in the Tools win-

dow.

8. Once all routings have been defined, enter the processing logic in the operation field of the Process edit table.

The figure above shows the completed routingsfor the example model. Note that the operations( for example, Join 1

EntB) have been entered manuallyin the operation column. These operationscould also have been entered by way of the

Logic Builder, documented at the end of this section.

Processing Editor 

The Processing Editor consists of four windowsthat appear simultaneously, as shown in the following diagram. Although

the windowsare shown in their default arrangement, you mayarrange them as desired.

©ProModelCorporation

Building the Model: General Elements 196

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 210/715

197 ProModel 2011 User Guide

Process Edit Table Appears in the upper left corner of the workspace and defines the operations performed for all enti-

tiesat all locations.

Routing Edit Table Appears in the upper right corner of the workspace and controls the destination of entitiesthat

have finished at the location.

Tools Window Appears in the lower left corner of the workspace and is used for graphically defining operations and

routings.

Layout Window Appears in the lower right corner of the workspace and shows each location with all from-to routings.

Process Edit Table

The Process edit table isused to create operation logic for each entity type at each location in the system. Processes for 

entities at locationsmay be in anyorder in the edit table, but for the sake of organization you should group them by entitytype or location. The only time the order of processes issignificant iswhen the same entity isrouted multiple times

through the same location, in which case, later processesmust appear somewhere after earlier processes. When search-

ing for the next process, ProModel always searches forward in the process list first, and then starts from the beginning of 

the list.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 211/715

 An explanation of each field of the Process edit table is contained on the following pages.

Entity The entity type for which the process isdefined. If all entities at the same location undergo the same operation or 

have the same routing, the reserved word ALL maybe entered in this field. (See discussion on ALL later in this section.) If 

an entity not previouslydefined isentered in this field, ProModelwill ask if it should create the new entity type.

Click on the heading button to bring up the Entitiesselection box. If this is a preemption processrecord,checkthe box(see

Preemption Process Logic on page 399) and double click on an entity to automatically place it in the table. You can also

clickon an entityname and select OK to place it in the table.

The entity list box defaults to the current field entity, the last entity selected, or the first entity defined.

Location The location where the process occurs.

Clickon the heading button to bring up the Locationsselection boxfrom which you may choose a location.

©ProModelCorporation

Building the Model: General Elements 198

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 212/715

199 ProModel 2011 User Guide

The location list boxdefaults to the current location, the last location selected, or the first location defined.

Specifying ALL in the Location field and omitting any routing defines a process for an entity at all locations previouslyspec-

ified as routing destinations for the entity. Because there isno routing, after the entity finishes that process, ProModelwill

search ahead in the Process edit table for a process for the entity specificto the actuallocation. The keyword ALL in the

Location field isparticularlyuseful when entities route to different locations having the same operationsand then route to

a common destination. In most other instances, it isrecommended that a subroutine or macro be used to define identical

operations.

Operation Operation logic isoptional, but typically contains at least a wait statement for the amount of time the entity

should spend at the location. If the entity needs a resource to process or to be combined in some way with other entities,

that wouldbe specified here aswell. In fact, anything that needsto happen to the entityat the location should be specifiedhere, except for any information specified in the entity's routing.

Statements can be typed directly into the operation field, or inside a larger logicwindow after double clicking in the field or 

clicking on the Operation button. Alternatively, the Logic Builder can help build logic and isaccessed by clicking the right

mouse button inside the operation field or logic window. All of the statements, functions, and distributions available in the

operation field are discussed in detail, including examples, in Statements and Functionson page 523.

Each entity performs the operation stepsdefined for it at a particular location, independent of other operationsper-

formed on other entities at the same location.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 213/715

For more information see Operation Logic on page 397.

Using the “ALL” Entity TypeThe reserved word ALL may be entered asthe processing entityif all entitytypesat that location have the same operation.

 ALL may also be used in the output field of the routing if all entity types at that location have the same routing. If a process

record for a location using ALL as the entity follows several process records for the same location using specificentity

names, and eachprocess record has a defined routing,the ALL process is interpreted to mean ALL of the rest of the enti-

ties. The following examples show how ALL maybe used in different situations.

1. All entiti es have a common operation and a common routing.

To define a common operation and routing for all entity typesat a location, simply enter ALL for both the process entity

name and the output entityname.In the following example three entity types, EntA, EntB, and EntC, are all sent to a packing station for packaging. The pack-

ing time is .5 minutesand theentitiesmoveon to a shipping station.Thoughthis is a simple example, it shows how oneprocess and routing record isused for all entity types. In contrast, the previous operations at Loc1, Loc2, and Loc3 require

separate process and routing records for EntA, EntB, and EntC.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT N(5,.3)

EntB Loc2 WAIT U(3,.2)

EntC Loc3 WAIT T(3,5,9)

 ALL Packaging WAIT .5

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 EntA Packaging FIRST 1 MOVE FOR 1

©ProModelCorporation

Building the Model: General Elements 200

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 214/715

201 ProModel 2011 User Guide

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 EntB Packaging FIRST 1 MOVE FOR 1

1 EntC Packaging FIRST 1 MOVE FOR 1

1 ALL Shipping FIRST 1 MOVE FOR 1

2. All entities have common operations but individual routings.

To define common operationsbut individual routings, use ALL as the process entity and define the common process, but

do not define anyr outings. Then define individualprocesses for each entity type at the common location, with a blank

operation field and the desired routing.

Process Table

Entity... Location... Operation (min)...

 ALL Packaging WAIT .5

EntA Packaging

EntB Packaging

EntC Packaging

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 EntA Ship1 FIRST 1 MOVE FOR 1

1 EntB Ship2 FIRST 1 MOVE FOR 1

1 EntC Ship3 FIRST 1 MOVE FOR 1

If only the destination isdifferent, but move times and output quantities are identical, an alternative method isto assign

each entity an attribute that correspondsto the destination's name-index number and then route with the LOC() function

as shown in the following example.

Process Table

Entity... Location... Operation (min)...

 ALL Packaging WAIT .5

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 ALL Loc(Att1) FIRST 1 MOVE FOR 1

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 215/715

3. All entities have a common routing but individual operations.

To define individualoperations along with a common routing for all entity typesat a location, define operationsfor each

entity, butdo not define any routings. Then define a process record for ALL at this location anddefine thecommon routing

for allentity types.Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT .4

EntB Loc1 WAIT .5

EntC Loc1 WAIT .6

 ALL Loc1

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 ALL Packaging FIRST 1 MOVE FOR 1

 Alternatively, you can assign an attribute to each entity which represents the processing time or some other entity-specific

parameter. Then use the attribute as the processing time, or calla subroutine and pass the attribute as a parameter for 

entity-specificprocessing.In the following example, the test time for each entity type isdifferent. This time isstored in an attribute, Oper_Time. The

attribute isthen listed on a line in the operation logic (with a WAIT statement) to signify an operation time. Once the testtime for each entity iscompleted, the entities are all routed to a packaging location.

Process Table

Entity... Location... Operation (min)...

 ALL Test WAIT Oper_Time

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 ALL Packaging FIRST 1 MOVE FOR 1

Routing Edit Table

The Routing edit table defines the outputsfor each process record defined in the Process edit table. The Routing edit

table is really justa sub-table to the Process edit table (i.e., all routingsthat appear in the routing edittable apply to the cur-

rently highlighted process), though the two tables appear side by side. Not all process records need to have a cor-

responding routing. If the routing isomitted, ProModelwill search forward in the Process edit table for another process for 

©ProModelCorporation

Building the Model: General Elements 202

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 216/715

203 ProModel 2011 User Guide

that entity at that location. So an entity's complete processing at a location could be broken into several records. In that

case, only the last processwould have a routing.If no routing is defined for at least oneof theprocess records for a given

entity and location, an error occurs.

 Another situation that does not require routing is when an entity changes its name at a location after a RENAME AS or 

SPLIT AS statement. Anytime during processing logic that an entity changes its name, ProModelsearchesforward in theProcessing edit table untilit findsa process for the new name at the same location. For example, if the identity of an entity

is changed through a RENAME AS statement in the operation logic, then no routing block will apply to the old entity.

Instead, thenewly named entitywill be routed bythe process for the new name. (See Rename on page 616).

The fieldsof the Routing edittable are asfollows:

Blk Thisfield contains the block number for the current routing block. A routing block consists of one or more alternative

routings fromwhich oneis selected based on the block rule (e.g., a listof routingswhere one is selectedbased on the

most available capacity). Since all of the routingsusing the same rule are part of the sameblock, only the first line of each

routing block contains a route block number. If no routing blockshave been referenced explicitlyin the operation logic (for 

example “Route n”), all routing blockswillbe executed in sequence upon completion of the operation logic (See Route on

page 626). Multiple routing blocksare processed sequentiallywith the next block being processed when all of the entities

in the previous block have begun executing any move logic defined. To change the routing block number or add a new

routing block, see the discussion on the Routing Rule dialog boxlater in this section.

The following example shows a process record with two separate routing blocks. Note that both routings will executeupon completion of the operation time because no ROUTE statement has been specified. One EntB getsrouted to Loc2

and oneEntC getsrouted to Loc3.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT N(5,.3)

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

12

EntBEntC

Loc2Loc3

FIRST 1FIRST 1

MOVEFOR 1MOVEFOR 2

Output If a routing is defined, the name of theentity resulting fromthe operation must be entered here. This name may

be the same asthe entitythat entered,or it maybe another name, or even severalnames,each on a different line. Using

another name worksmuch like a RENAME-AS statement, except that the entity isrouted according to the routing block

instead of being processed further at the same location. Using several names on different lines issimilar to having a

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 217/715

SPLIT AS statement in conjunction with a RENAME-AS statement. The difference isthat multiple routing blocksare proc-

essed sequentiallywhile split entities get processed concurrently. If the reserved word ALL was used as the incoming

entity type for this process, it may also be entered here. Otherwise, every entity entering the location will change to the

specified output entity. (See the discussion on using ALL in the Entities section.)

The entity list box defaults to the current field entity, the last entity selected, or the first entity defined.

To better anticipate the entity entry likelyto be made, the entity highlighted in the list box defaults first to the current field

entity, then to the last entity selected, and finallyto the first entity defined.The example below shows how an incoming entity, EntA, changes identity and becomesan EntB upon exiting location

Loc1. Thisis done by simply specifying the new entity name as the output entity.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT T(2,5,8)

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 EntB Loc2 FIRST MOVE FOR 1

Destination Thisis the location to which entities are to move after the operation iscomplete. Optionally, the destination

maybe followed bya comma anda routing priority. If no priorityis specified,the defaultis zero.The location name maybetyped directly in the field, or selected by either clicking in the field and then on the heading button, or double clicking in the

field. The resulting dialog box looks like this:

©ProModelCorporation

Building the Model: General Elements 204

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 218/715

205 ProModel 2011 User Guide

Instead of entering a location name, you may use the LOC() function which returnsthe location name corresponding to

the indexdesignated by an expression. For example, LOC(5) routes to the fifth location defined or the fifth record in the

location edit table. You can also specify variable destinations such as LOC(Att4). However, the LOC() function may not

be used in conjunction with the BYTURN, UNTIL FULL, CONTINUE, and IF EMPTY routings. (See Loc() on page 590

for more information.)

Rule Thisfield definesthe rule for selecting the route destination. An output quantity may also be specified as part of the

rule. Thisquantity works much like the SPLIT AS statement. (See the following discussion on the Routing Rule dialog

box.) To open the Routing Rule Dialog box, double clickin the field or clickin the field and then on theheading button.

Move Logic The MoveLogic window allows you to define themethod of movement aswellas any other logic to be

executed between the time the next location isclaimed for routing to the time the entity arrives,but notyet enters, the next

location. To open the Move Logic window, double click in the field or click the heading button. This window allows you to

manuallyedit the logic or clickon the Build button to use the LogicBuilder. It also provides other convenient buttons for 

editing and printing the move logic. For single move statementsit iseasiest to right click in the move field to open the Logic

Builder. If left blank,it isassumed that no time, resources, or path networks are neededto make the move.

Routing Rule Dialog Box 

The Routing Rule dialog boxprovidesmethodsfor selecting an entity's destination after finishing a process. The Rule

heading button in theRouting edit table, bringsup theRouting Rule dialog box.The fieldsof this dialog box are definedin

the following example.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 219/715

Start new block Check this boxto signalthe beginning of a new routing block. Checking this box will place a number in

the Blk field for that record.

New Entity Check Box In order to let you designate whether a routing block applies to the main entityor ifyou wish to

create a new entity, ProModel includesa New Entity check box in the routing rule dialog. By default, ProModeldoes not

check the first routing block for a process record but doescheck subsequent blocksunless theyshare the same input and

output name. If you check the New Entity box, an asterisk(*) appears after the block number in the block column of the

routing table.

If you check the new entitybox, the entityusing the routing block will begin routing with new costand time statistics.If the

new entity boxr emains unchecked, ProModelassumesthe entity routing from this block isa main entity (the parent entity),

carrying with it all cost and time statistics.

If the new entity field remains unchecked and you enter a quantity field value greater than 1, ProModelbehaves just as it

doeswith a SPLIT AS statement, dividing the cost statistics between the split members and resetting all time statistics to

zero.

Please note

©ProModelCorporation

Building the Model: General Elements 206

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 220/715

207 ProModel 2011 User Guide

A run-time error occurs if you fail to route one (and only one) main entity for a process. If no routing

block executes for the main entity, a “No routing defined fo r main entity” error occurs. If more than one

route block executes for the main entity, a “Main entity already routed” error occurs.

Quantity The number of entities resulting from this routing block. The default isone. Several entities of the same name

can be created froma single entity, much like a split ASstatement, by entering a number greater than one. Each of the

new entities then processes the routing block one entity at a time. For example, suppose an entity called mail_bag enters

a location and isseparated into 30 individual pieces of mail, called Letters. Enter 30 as the quantity and Letter as the out-

put entity, as in the example below. Onlythe first line in a routing block can specify a quantity.

Process Table

Entity... Location... Operation (min)...

mail_bag Loc1 WAIT T(2,5,8)

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 Letter Loc2 FIRST 10 MOVE FOR 1

Routing RulesChoose the rule for selecting the next location. Onlyone rule maybe chosen for each routing line. Note that

the last three routing rules, alternate, backup and dependent, maynot be chosen asthe start of a new routing block. Note

also that no more than one of the other rules can appear in a single block (e.g., you cannot mix a FirstAvailable rule anda

Most Available rule in the same block).

For exact syntax and examples of each routing rule, see Routing Rules on page 501.

Routing Move Logic 

The Move Logic window allowsyou to define themethod of movementas well asany other logic to be executed prior to or 

after the move actually takes place.

Once the route condition or rule has been satisfied for allowing an entity to route to a particular location, the move logic is

immediately executed. The entity doesnot actually leave the current location until a move related statement (MOVE

FOR, MOVE ON, MOVE WITH) isexecuted or the move logic iscompleted, whichever happens first. This allows the

entity to get one or more resources, wait additional time, or wait untila condition issatisfied before actually leaving the

location.

 Any statements encountered in the move logicafter the move related statement are executed after the move is complete

but before the entity actually enters the next location. This isoften usefulfor freeing multiple resources that may have

been used to transport the entity.

When defining exit logic, such as incrementing a variable used to track the number of exits from a location, it can generally

go beforethe move statement unless a MOVEWITH statement isused and the entitymust capture the resourcebefore

making the move. In this situation, a GET statement should be specified first to get the resource. Then the exit logic may

be specified followed by the MOVE WITH statement.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 221/715

 Any delay occurring as a result of move logicis reported as part of the entity’s move time. For more information on see

Routing Move Logic on page 207.

Processing Tools

The Tools window provides graphical aids that may be used to define processing records and routing records. It isalsoused to define the graphical paths that entities follow when moving without a path network between locations.

The Tools window, which appears along with the other Processing windows, can define processing in one of two modes,

New Process or Add Routing. Each isexplained next. Additionally, Find Process Mode isavailable. To select a mode, click

on the desired button. Each of the modesisdescribedon thenextpage.

In addition to option buttons (New Process, Add Routing, or Find Process) for the process editing mode, the Tools win-

dow containsa listof defined entities aswellas thereserved word ALL to representallentitytypes. The entityin Proc-

essing Tools applies to either the process or routing entity, depending on what iscurr ently being defined.

New Process Mode

New Process Mode isused to create a new process record. A new process isautomaticallycreated for the selected entityeach time you click on a location.This mode should be used if you want to create a processfor a particular entityat a location. You may even create multiple

processes for thesameentityand location if you want to re-route an entitythrough the same location more than oncefor 

additionaloperations. Once a new process iscreated, the mode automatically changes to Add Routing mode to enable a

routing to be defined for the process.

How to define a new process using the Tools window:

1. Depress theNew Process button.2. Select the entityfor which a new process isto be defined from the Toolswindow.3. Clickon the location where theentitywill be processed inthe layout window. A new processrecord iscreated in

the edit table. The mode isautomatically switched to Add Routing mode and a rubber banding line appears that

connects the mouse pointer to the location.4. If a different entityis to be outputfrom theprocess,select it from the Tools window.5. Clickon the destination location.A new routing record appears in theedit table and the mode switches back to

New Process mode.

How to delete a process or routing record:

1. Clickinside the desired record in the Process or Routing edit table.2. Select Delete from the Edit menu.

Editing a Routing Path

Oncea routing path hasbeendefined you mayedit thepath (regardlessof thecurrent mode) by clicking anywhereon the

routing path. Thisselects the path and allows you to change the source or destination of the routing by dragging the begin-

ning or endof thepath to a new location.It also allows you to move anyintermediate joint in the path to change the shape.

You mayalso clickon a path with the right mouse button to create or delete a joint.

If a process isalready defined and a location ismoved while in the Location module, the connecting leg of anyr outing lines

will also move.

©ProModelCorporation

Building the Model: General Elements 208

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 222/715

209 ProModel 2011 User Guide

 Add Routing Mode

 Add Routing Mode is used to create multiple routings for a single process record. Suppose an entity, EntA, can travel to

one of three locations depending on which isavailable first. Selecting the New Process mode and then defining the entity

process causes the entity to travel from one location to another location. Selecting Add Routing mode afterwards allowsyou to define a different destination location within the same routing block.

How to add additional routings to an existing routing block:

1. Select theprocess record in the Process edit table that needsan additionalrouting line (you mayusethe Find

Process button to locate the process record).2. If you wish to insert the routing record rather thansimply append the record to the current routing list, highlight

therouting record where the routing isto be inserted andchoose Insert fromthe Edit menu.3. Select theAdd Routing button from the Tools window. A rubber-banding line iscreated.4. Select theentityin the Toolswindow to be output inthis routing.5. Click on thedesired destination location. This creates a new routing record inthe Routing edit table.

Please note

To cancel a routing once a rubber-banding line appears, click on the New Process button or click on the

originating location.

How to route a current entity to exit:

1. Click theAdd Routing button.2. From theTools window, select the entityfor which you want to define a new process.3. Clickthe Locations button in the process record dialog and select the location from which the entity will exit the

system. ProModelcreatesa new process record in the edit table and displaysa rubber-banding line from the

selected location.

4. Add jointsas needed to define the exit path.5. Click theRoute to Exit button in the tools dialog.

Find Process Mode

To find a previouslycreated process for an entity type at a certain location, use Find Process mode.

How to find a process for an entity at a location:

1. Click on theFind Process button.2. Click on thedesired entitytype.3. Clickon the desired location. The first process found for that entity type at the location will be highlighted in the

Edit window.

This option always searches forward in the process list. By clearing the entity field in the toolswindow, the next processfor any entity at the location selected isfound. If multiple process records exist for the same entity and location, the edit

table indexes forward to the next process record each time you click on the location.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 223/715

View Routing 

The View Routing button in the Processing Tools window causes the process record currently highlighted in the edit table

to become centered on the layout.

Snap Lines to Border 

When you check this option, ProModel snaps the routing linesto the location’s bounding area rather than a specificposi-

tion on the graphic.

Show Only Current Entity 

When you highlight an entity in the list box, checking this option will show only those routingsassociated with the entity.

Arrivals

 Any time new entitiesare introduced into the system, it is called an arrival. An arrivalrecord is defined by specifying the fol-

lowing information:

l Number of new entities per arrival

l Frequencyof the arrivals

l Location of the arrival

l Time of the firstarrival

l Totaloccurrences of the arrival

 Any quantity of any entity type can be defined as an arrivalfor a location. The frequency of arrivals can be defined as either 

a distribution or as an arrivalpattern which cyclically repeats over time.

©ProModelCorporation

Building the Model: General Elements 210

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 224/715

211 ProModel 2011 User Guide

How to edit arrivals

l Select Arrivals from the Build menu.

Arrivals Editor 

The ArrivalsEditor consists of three windowsthat appear on the screen together. The Arrivalsedit table contains the

specificationsof each arrival to the system and appears acrossthe top of the screen. The Tools window contains tools for 

defining arrivals graphicallyand appears at the bottom left corner of the screen. The Layout window appears in the lower 

right corner of the workspace.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 225/715

Arrivals Edit TableThe Arrivalsedit table lists all scheduled entity arrivals to the system. The various fields are explained next.

Entity The name of the arriving entity.

Location The name of thelocation where theentityis to arrive.

Qty each... The number (1 to 999999) of entities to arrive at each arrival time interval. Anyvalid expression may be

entered here except for attributes and non-general system functions. Thisfield isevaluated throughout the simulation run

and will change if the result of the expression changes.

To filla location to capacity at every arrival time, use the keyword INFINITE, abbreviated INF.

©ProModelCorporation

Building the Model: General Elements 212

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 226/715

213 ProModel 2011 User Guide

If you have previouslycreated an arrival cycle and want to use it for this arrival, enter the name of the arrival cycle followed

optionallyby a quantity. You may also click on the Qty each... heading button to select from the list of defined cycles. See

the section on Arrival Cycles for more information about defining cycles.

First Time Thisoption allows you to dynamically vary the time of the first arrival to your model. You may define scheduled

arrivals to occur at given intervals (e.g., appointments) or use an arrival cycle to define random arrivals over a period of 

time (this value isthe start time for the first cycle). ProModelevaluates this field only at the beginning of the simulation.

Occurrences The number of times per simulation run that ProModelwill generate arrivals (1 - 999999). Entering the

reserved word INFINITE (abbreviated INF) willcause ProModelto send the specified number of arrivals at every arrival

time without limit. Thisvalue may be anyexpression and isevaluated only at the beginning of the simulation. If an arrival

cycle isused, this isthe number of times to repeat the cycle.

Frequency The inter-arrival time or time between arrivals. Anyvalid expression may be entered here except for attrib-

utes and non-general system functions. If an arrival cycle was entered for the arrival quantity, this isthe time between the

start of each cycle. This field isevaluated throughout the simulation run and will change if the result of the expression

changes.

Logic This field defines anyoptionalarrival logic, consisting of one or more general statements, to be executed by each

entity upon its arrival (e.g., assigning attribute values to entities as theyarrive). Double-click inside this field or click the

logic button at the top of the columnto define logic for an arrival.

Disable Set this field to YES or NO if you want to temporarilydisable this arrival without deleting it. Thisis usefulwhen

debugging a model and for verification purposes where you want to follow a single entity through the system.

Arrivals edit table notes:

1. When several different entity types are scheduled to arrive at a location simultaneously, they will arrive

in th e order they are listed in the Arrivals table. To have them alternate their arrivals, enter a 1 in the “Qty

each” field and the t otal entry qu antity in the “Occurrences” field.

2. Arrivals defined through an external arrival file will be appended to the arrival list. Therefore, if an exter-

nal arrival file is the only source of arrivals, the Arrival edit table may be left blank. See the section on

External Files for more information on arrival files.

3. If the capacity of the location is insufficient to hold all the arriving entities, the excess entities are

destroyed. Therefore, the arrival location should have a capacity at least equal t o the “Qty each” in the

Arrivals edit table. If more entities are scheduled into the system than are exiting, the arrival location maynot have enough capacity to handle all the arrivals.

Defining Arrivals

 Arrivals may be defined graphically by using the tools in the Tools window, or by manuallyentering the arrivalinformation

directly in the Arrivalsedit table.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 227/715

How to define arrivals graphically:

1. Select Arrivals from the Build menu.2. Select the desired entityfrom theTools window.

3. Clickin the layoutwindow at the location where the entityis to arrive. (You mayneed to scrollthrough thelayout to

bring the desired location into view.)4. Enter the specificationsfor the arrival record (e.g., arrival quantity and frequency).

How to define arrivals manually:

1. Select Arrivals from the Build menu.2. Enter the Entity, Location, and Quantity through either the keyboard or by clicking on the respective heading but-

tonsand choosing the proper information.3. Enter the First Time, Occurrences, and Frequencyusing either the keyboard or the statement builder (accessed

by right clicking inside the desired field).4. Enter thetime of the first arrival byclicking on the First Time button. (See Independent Arrivalson page 214 for 

more information on the First Time dialog.)5. Click on the Logic or Notes heading button to enter desired logic or notes.

Independent Arrivals

 An independent arrivalis any arrivalassigned to occur at a specific time or at a fixed interval. Independent arrivals include

such things as appointments, meeting times, or pickup and delivery times. When defining independent arrivals, remember 

that simulation can model onlypredefined appointment schedules. This means that dynamically scheduled appointments

(e.g., rescheduling return visits to fit into available slots) must take place where you define the appointment schedule.When defining independent arrivals, you may:

©ProModelCorporation

Building the Model: General Elements 214

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 228/715

215 ProModel 2011 User Guide

l Define them by elapsed time, day and time, or calendar date.

l Assign them to occur at fixed intervals (e.g., interviews scheduled every fifteen minutes).

Please note

When you define independent arrivals as intervals, the next arrival time is independent of the p revious

arrival. For example, applicants will arrive for appointments based on the clock time—not the time

elapsed since the last arrival.

l Allow a positive or negative offset to adjust the scheduled time of arrival (e.g., applicants must arrive at least ten

minutes prior to their interviews).

l Define a distribution to allow variability from the adjusted arrival time.

l Allow the possibility that an entity will not arrive at all.

l Define specific appointment types for onlycertain resources or resource types.

How to define independent arrivals:

1. Open the Arrivals module from the Build menu.

2. Click on the Entity button and select the entity type you want to schedule.

3. Click on the Location button and select the location where you want the independent arrival to appear.4. Click on the Qty Each button and enter the number of entities to arrive at the scheduled time. To model no

shows, enter the expression “Rand(1) + <probability of showing>”. For example, if only 90%of applicants show

up for scheduled interviews, enter “Rand(1) + .9”5. Click on the First Time button to open the dialog used to define the independent arrivaltime for the entity. If you

define a block of identical appointments occurring at equal intervals, this isthe time of the first appointment in the

block. (You mayenter the arrival time by elapsed time—since the start of the simulation—by a weekday and

time, or by calendar date.)

Please note

The arrival time must match the time units selected for the simulation run-length. If you d efined the

elapsed time by calendar date, you must also define the simulation length by calendar date. To edit arrival times, select either day and time or calendar date and click the Edit Arrival Time button.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 229/715

6. In the offset field, enter anyoffset you wish to apply to the arrival time. This will direct incoming appointments to

arrive earlier (or later) than scheduled. For example, if job applicants are to arrive 10 minutes prior to the time of 

their appointment, enter “-10”

7. In the variation and offset fields of the First time dialog, enter anyoptional distribution to define the variation from

the adjusted arrival time. Generally, to prevent the arrival from being unrealisticallylate, you should use a doubly-

bound distribution (i.e., uniform, normal, triangular, or beta). The triangular and beta distributionsprovide the

most realistic variation.

8. In the Occurrences field of the arrivals edit table, enter the number of timesto repeat this appointment definition.

(Enter 1 if it will occur only once.)

9. If thenumber of occurrences you entered is greater than zero,enter a time intervalin the frequency field. Pro-

Model assumes this interval to be fixed for each occurrence (if you enter an expression, ProModelevaluates it

only once and applies it to each occurrence). The distribution defined in the First Arrival dialog applies it to each

occurrence.

10. In the Logic field of the arrivals edit table, enter anyattribute assignments you will use to determine the processing

of the entity. This might include the resource or appointment type (e.g., interview) and it will be helpfulif you

define these attributes beforehand.

Arrival Logic

 Arrival Logic allows you to perform certain logicas an entity enters the system and is used primarily for assigning initial

entity attribute values. Suppose you process three different typesof samples at an inspection station and each sample

takes either 8, 10, or 12 minutesto test. Fiftypercentof the samplestake 8 minutesto test, 35% take 10 minutes, and 15%

take 12 minutes.

©ProModelCorporation

Building the Model: General Elements 216

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 230/715

217 ProModel 2011 User Guide

The samples have different processing times depending on the test performed. To differentiate between the different

typesof samples, we assign an entity attribute called Sample_Type to the samples. We define a discrete, non-cumulative

user distribution called Test1 with the following information:The arrivals logic for the entity called Test1 isas follows:

Shifts & Breaks

Weekly shifts and breaks for locations and resources are defined using the Calendar Editor. Shiftsand breaks are

defined by selecting blockson a grid divided into days and hours.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 231/715

How to define a shift:

1. Select Shifts from the Build menu.2. Select Define from the submenu.

Calendar Editor 

Shiftsand time off for activities and resources are defined using the Calendar Editor. Time off for holidays and vacation is

defined in the Calendar tab by simply selecting the specificdaysto take off. A change in which shift an activity or resource is

on can alsobe defined in the Calendar tab. The detailsof a shift,which include what hours of each day theshift runsand

when breaks occur, can be defined in theShifts tab. Shifts andbreaks may start and end at any 5 minute interval of the day

and are defined by selecting blockson a grid divided into days and hours. Once a calendar schedule has been defined, it

may be saved as a calendar file with a PMCAL extension so that it can be chosen for use by other activities and resources.

©ProModelCorporation

Building the Model: General Elements 218

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 232/715

219 ProModel 2011 User Guide

Calendar Editor Window 

The Calendar Editor window consists of a menu button, Quick Accesstoolbar, as well as the Calendar tab and Shiftstab,

and the tab-specifictoolbars. Clicking between the Calendar and Shiftstabs will display different views of functionality for 

defining your calendar schedule. Below isa screen shot of the Calendar Editor with the Calendar tab selected.

The remainder of this section describesthe Shift Editor interface and the following procedures:

l Adding or Editing Time Off 

l Adding or Editing Shift Changes

l Splitting a Calendar day between time off or shifts

l Erasing Time Off or Shift Changes

l Drawing a block of time to define Work

l Adding a block of time to define a Break

l Editing Work or Break timel Erasing Workor Break time

l Adding and Deleting Shifts

l Duplicating Shifts

l Renaming Shifts

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 233/715

l Importing and Exporting Shifts

l Changing the Shift Color 

Main Menu The Main menu in the Calendar Editor isaccessible from the Menu button found at the top left corner of the application.

New Start a new shift file definition. If a shift file is already open,it willbe closed. If theshift file wasmodified, you will be

prompted to save the changes before it isclosed.

Open Browse to open a shift file for viewing or editing.

Save Saves anychangesmade to the loaded shift file. If it is a newly defined shift file, theSave Asdialog willopen.

Save As Save the currently loaded shift file as a different filename.

Recent Calendar Files Lists the most recently loaded calendar files opened in the Calendar Editor.

Quick Access Toolbar 

The QuickAccessToolbar is found at thetop left of the application and to the rightof theMain menu button. The toolbar 

contains Save, Undo, and Redo buttons.

Calendar Tab

The Calendar tab islocated below the Quick Accesstoolbar. A 12 month view of the given calendar year displaysany

defined holiday, vacation, shift change, or other exception to the base shift schedule over the course of that year. These

exceptionscan also be added or modified from this view. The year can be changed by clicking on the year number, which

displaysa scroll of years prior or forthcoming, or by clicking the arrows to the left and right of the displayed year.

Calendar Tab Toolbar Holiday Designatesplanned holidays to be marked on the calendar.A shift is off on a Holiday.

Vacation Designates scheduled vacation time. A shift isoff during a vacation.

Other Designates all other possible time off taken and the scheduled shift isnot worked.

Shift Based on the chosen shift, designates the shift worked (or exception to the base shift) for a given day of the week.

Please Note

One or more shifts in addition to the base shift have to be created in the Shift tab in order to appear on

the Shift button drop do wn list. Whichever shift was the last one selected from the drop d own list will bethe one shown on the button.

Erase Allows time off or shift exceptions to be erased from the calendar and resets the days to use the base shift.

Clear All Clears allthe exceptions defined for the displayed calendar year.

©ProModelCorporation

Building the Model: General Elements 220

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 234/715

221 ProModel 2011 User Guide

Show Non-Work Days

 Allows the user to view non-working days from the Calendar view. Shifts have to be scheduled on the calendar for this to

be possible. The shiftsalso musthaveat least oneor more days where workis notperformed. Once one or more of these

shifts have been assigned to days on the calendar, simply click the Show Non-Work Days check boxin the upper righthand corner of the Calendar Editor.

Calendar Day Right Click Menu 

Split Day Launches the Split Day dialog, which allows you to select how the day’sschedule isdivided between shifts or 

time off. Movethe red line divider to the right or to theleft to movethe time of the split.

Erase Same function as that of the Erase option in the toolbar. Selecting erase will delete the assigned shift or time off 

designated for that day and revert back to the base shift.

Fill Day With Choose between Holiday, Vacation, Other or one of the user defined shifts. Right click on the day and

select Fill Day With to designate what schedule that dayshould follow.

Shifts Tab

The Shifts tab islocated below the Quick Accesstoolbar and to the right of the Calendar tab. Select the Shiftstab to define

the specificwork and breaktime the activity or resource will be available on an hourly basis. A base shift must be defined

and isthe main shift that all other calendar items are exceptions to.

Shifts Tab Toolbar 

Add Work Select Add Work from theShift toolbar to add hoursworked to a shift.Select theAdd Work buttonand click on

a dayof the week on theshift schedule. The period of time clicked on willfillwith thecolor blue to indicate the hours

worked for that selected day.

Add Break SelectAdd Breakfrom the Shift toolbar to add breaktime for a shift. Populate the period of breaktime the

same wayyou would with the Add Work button. Breaktime will show up inred on shift calendar.

Erase Select Erase from the Shift toolbar and then click on anyhour of blocked time to erase a shift decision.

Clear All Select Clear All on the Shift toolbar to delete all previouslyassigned hours.

View Resolution Work and Breaktime can be defined down to thenearest5 minute interval.Other minimum time res-

olutionscanalso be used such as15 minute, 30 minute, and hourly.These are set using the View resolution button.The view resolution button isa drop down button that gives four choices for setting the minimum time resolution. When a

time resolution isselected, the Calendar Editor grid will automatically adjust and only allow Workor Break time to be

defined to that nearest resolution.

For example, ifthe View resolution wasset to 30 minutes, Work or Breaktime could only be drawn to the nearest 30 min-

ute period.

Shifts List 

The Shifts List isa list of the user defined Shifts. Each shift hasa unique color identifier for easy viewing in the Calendar 

tab view.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 235/715

Add Select the Add button to createa new shift

Import Select the Import button to pull a shift schedule in from an external file location on your computer.

Right-Click Menu for Shifts List Hover over a created shift and right-clickto display a menu. The user can rename,

duplicate, delete or export a shift from this menu.

l Rename Allows the user to rename the shift from its default name to a user defined name (this can also be

accomplished by double-clicking on the shift name).

l Duplicate Creates a shift identical to the shift selected for duplication and appendsit to the end of the list.

l Delete Removes the selected shift (this can also be accomplished by clicking the “X” to the right of the shift name.

l Export Allows the user to save the shift as a shift file (.sft) on the user’s computer.

Adding and Editing Time Off, Work and Break Time

Adding or Editing Time Off 

1. To assign time off for an entire day, select Holiday, Vacation, or Other from the toolbar.2. With the time off option selected, clickon a dayin thecalendar that you want to assign the time off to or clickand

drag to assign thetime off to multiple days.3. Or right-click on a day inthe calendar andfrom the pop-up menu choosea time off option in the FillDay With sub-

menu.

Adding or Editing Shift Changes

1. To addor edit shift changesfor an entire day, select Holiday, Vacation, Other or a Shift from theShift drop down

from the toolbar.

2. With the option selected, click on a day inthe calendar that you want to assign thetime or clickand drag to assign

the time to multiple days.

3. Or right-click on a day inthe calendar andfrom the pop-up menu choosea time option in the FillDay With sub-

menu.

Splitting a Calendar Day Between Time Off or Shifts

1. In theCalendar tab, right clickon a dayand select SplitDay fromthe pop-up menu.2. In theSplitDay dialog,select theshiftsto split under the First Item and Second Item drop downs.3. Choose thetime the change should occur in the Time of Split field or grabthe red divider line and drag it to the

desired time split.

Erasing Time Off or Shift Changes

1. To Erasea time off or shift exception for a dayor range of days inthe calendar,select Erasefrom thetoolbar.2. Clickon the day or clickand drag across therange of dayson the calendar to erase any time off or shift excep-

tions.3. Or right-click on a day inthe calendar andfrom the pop-up menu chooseErase.

Adding Work

©ProModelCorporation

Building the Model: General Elements 222

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 236/715

223 ProModel 2011 User Guide

1. Click on the Add Work button to designate the drawing mode.2. Click and begin dragging the mouse from theday and time on the grid the workshould begin.3. Release the mouse button at theday and time the workshould end.

Please Note

Work can be added to multiple days simultaneously by dragging the mouse across multiple days.

Adding a Break

1. Click on theAdd Break button to designate thedrawing mode (or, with the Add Work button selected, press the

Ctrl key while dragging the mouse).

2. Click within a defined Work areaand begindragging the mouse from the dayand time the Breakshould begin.

Break time cannot be added to an area in theshift where Work isnot defined.

3. Releasethe mouse button at theday and time the Breakshould end.

Editing Work or Break Time

1. Select theAdd Work or Add Breakbutton (or, if adding breaktime, select the Add Work button and then press

theCtrl key whiledragging the mouse).

2. Add Work or Break time to the beginning or end of existing Work or Break time byclicking and dragging the

mouseon thegrid.

3. Removing Workor Break time isaccomplished using the Erase button.

Please Note

Break time can be added to multiple days simultaneously by dragging th e mouse across multiple days.

Erasing Work or Break Time

1. Select theErase button (or, with the Add Work button selected, right-clickand dragthe mouse).

2. Erase Work or Break time by clicking and dragging the mouseon theday and time in the grid where Work or 

Breaktime should begin to be removed.

3. Releasethe mouse at the day andtime the Work or Breaktime shouldstop being erased.

Adding or Deleting Shifts

1. Select theAdd button below the listof Shifts.If thisisthe first time you are adding a shift, then you will alreadysee

a “Base Shift” created. Once an additional shift has been added, it will appear in list form under the Shift heading

and act asa tab.2. Select theshift to displayitstime propertiesto the right.3. Rename, duplicate, delete or export anyshift, including the Base Shift by right-clicking on the shift.

4. Select theImport button to importa shift from a file.

Duplicating Shifts

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 237/715

1. Right-Click on a Shift andselect Duplicate from the menu.2. A duplicated shift will appear in the shift listfollowed bya (1).

Renaming Shifts

1. To rename a shift, right-click on theshift located in the shift listand select Rename.2. The shift name is highlighted andcan be renamed.

Importing and Exporting Shifts

1. To import a shift, select itfrom theshift listand then clickon the Importbutton located under theshift list.2. To export, right-clickon the shift in the shift list to be exported.3. Select Exportfrom the right-clickdrop down menu.

Changing the Shift Color 

1. To change the shift’sidentifying color, click on thecolor boxto theleft of a shift inthe shift list. This launchesa

dialog of color palettes to select from.2. Select a color and click Ok.

Shift Assignments

The Shift Assignment module allows you to model everyday, real-life situations involving scheduling and availability issues,

and you can easily define logic to controlthe way your model handles these problems.

If you have an employee that works a split shift, assign two shifts to theresource with the corresponding start times. If you

have a processing location that can only be used during specificallyscheduled hours, set up a separate shift for that loca-

tion.

You mayhave an office or some other operation just starting up, and you need to run a specific shift for the firstweek andanother for two more weeks before going to your fullcapacity shift schedule. Simply set up three shifts and assign them all

to the office in one step, indicating the appropriate start timesfor each.

If you want to establish a controlled location gateway: Among fulfilling other duties, your employee needs to begin doing

something (processing a certain entity at a certain location) at a certain time, so you set up a queue location, a gate loca-

tion (with a capacityof one), and a processing location.Assign a shift to thegate location so it will come on line at the des-

ignated time. Now the gate location begins taking the entities from the queue location and moving them to the processing

location, where the employee will be requested at the appropriate priority level.

There are manyways to use shift assignmentsand shift logic to solve anynumber of problems in creating a valid model.

This chapter explores the features and functionality of the Shift Assignmentsmodule, including statementsand functions

for shift and break logic.

 Assigning Shifts

ProModelallows you to can select multiple locationsand resources and assign them to a shift in one record. Plus, you can:

©ProModelCorporation

Building the Model: General Elements 224

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 238/715

225 ProModel 2011 User Guide

l assign a location or resource to multiple shift files with a start time for each shift,

l define off-shift and breakpriorities, and

l create off-shift and breaklogic.

The Shift Assignmentsmodule allows you to schedule the availability of resources and locations based on shifts and work

breaks defined in the Calendar Editor. When a location or resource goes off shift or on break, it isoff-line or off-dutyand is

reported in the output statistics as non-scheduled time rather than downtime.The off-shift andbreaklogic are optional and allow you to controlmore precisely when a resource or location maygo off 

shift, on break, and how long before it becomesavailable again.

When you select Shiftsfrom the Build menu, two optionsare displayed: Define and Assign. You must define a shift before

you can assign a resource or location to it.

How to assign locations and resources to shifts:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 239/715

1. Select Shifts from the Build menu, then click on Assign. ProModeldisplays the Shift Assignmentsedit window

shown below.

2. Select Locations - Clickon the Locationsbutton to display the Select Locations dialog (shown below ). Click on a

location and use the buttons to select or remove it from the Shift Locations list. Double clicking on a location also

selectsor removes it. Click OK when finished.

3. Select Resources - Click on the Resources button to display the Select Resources dialog (shown next ). Clickon

a resource and use the buttons to select or remove it from the Shift Resources list. Double-clicking on a resourcealso selectsor removes it. Click OK when finished.

©ProModelCorporation

Building the Model: General Elements 226

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 240/715

227 ProModel 2011 User Guide

4. Units Enter the specificunits of the selected resource to be assigned to the shift. You mayassign one, several,

or all unitsof a resourceto a shift. You can alsouse a macro to specifythe units. If left blank, ProModelassigns

the default of  All units to the shift.

1,3 Units1 and 3 only

1-3,5 Units1 through3 and 5 only

All Allunits of the resource

none You mayuse none to indicate that no unit will adopt thisshift. This isuseful in creating a scenario parameter.

Byusing a macroto representthe number of units, theuser may selectnone asan option.

Macro The name of a macro definedas a scenario parameter that allowsthe user to specify the units to be affected

by the shift.

5. Select Calendar File - Click the Calendar File button. If a shift isalready assigned, then the Select Shift Files

dialog will open. If no Calendar File isassigned, then select a Calendar file from a location on your computer.

Please Note:

 A Calend ar f ile must be a .PMCAL file in order to open.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 241/715

6. Define Priorities- Clickon the Priorities button. The Priorities button allows you to enter the priorities for going

offline dueto a break or end-of-shift aswellas the priorities of the off-line state in the event that some other activ-

ityattempts to bring a particular resource or location back on line. You can also use macros to specify priorities.

©ProModelCorporation

Building the Model: General Elements 228

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 242/715

229 ProModel 2011 User Guide

These priorities follow standard ProModel priority level and preemption rules. (See Locationson page 125, Entities onpage 1, andResources(see Resources on page 171)).

Priority for Ending Shift Thisis the priorityfor regularlyending the shift. An entity or downtime must have a higher 

priority level to prevent this location or resource from going off shift at the preset time.

Off Shift Priority This isthe priority for the location or resource to stay off shift. In other words, an entity or downtime

must have a higher priority level to bring this location or resource back on line before the preset time.

Priority for Starting Break This isthe priority for going on break. An entity or downtime must have a higher priority level

to prevent this location or resource from going on break at the preset time.

Break Priority This isthe priority for staying on breakduring the breakperiod. In other words, an entity or downtimemust havea higher prioritylevelto bring thislocation or resourceback on line before the end of the preset break.

Shift & Break Logic 

Shift and breaklogic are optionaland are defined in four distinct logic windows, each executed in a specificsequence

throughout the simulation run. You can define logic to controlhow resources and locationsgo off line and what happens

once they are off-line.

To define shift or break logic, click on the Logic button to display a submenu of four eventsassociated with shifts for which

logic may be defined. Selecting an event from the submenu displaysa standard logic window. You can enter separate

logic for each of these four events to be executed when the event occurs. See the following discussion, Sequence of 

Events.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 243/715

You maywant to use the Logic Builder to helpyou enter thelogic. Just clickon the Buildbutton inthe logic window.

Pre-Off Shift or Pre-Break Logic Executed whenever the location or resource isscheduled to go off shift or on break.

This occurs before the location or resource ischecked for availability, so it isexecuted regardless of availability. This logic

may be used to check certain conditions before actuallytaking the resource or location off line. The logic isexecuted for 

each resource and location listed as members for this shift assignment record. Thisallows some members to be taken off 

line whileothers maybe forced to wait. (Pre-offshift andpre-breaklogicmaybe referredto in this manualas pre-logic

when speaking of either one.)

Off Shift & Break Logic Executed at the instant the location or resource actuallygoes off line.

How to determine the sequence of events

1. When a location or resourceis scheduled to go offline due to a breakor the end of a shift, the pre-logic for that

particular location or resource isexecuted.2. After executing the pre-logic, which may contain conditional(WAIT UNTIL) or time (WAIT) delays, the location or 

resource istaken off line, assuming it iseither available or the priority ishigh enough for preemption.3. At the instant the location or resource istaken off line, the off-Shift or Breaklogic isexecuted.4. After executing this logic, the location or resource waits until the time defined in the shift file expires before going

back on line.

Please note

If the off-shift and break nodes are not specified in the Resource Specs dialog, the resource will stay at 

the current node. If no resources or locations are assigned to a shift, the shift is ignored.

Functions and Statements

ProModeluses several functionsand statementsspecificallyfor shift and breaklogic: SKIP, PRIORITY, DTLEFT(), FOR-

LOCATION(), and FORRESOURCE(). Following isa brief description of each. For more details, see Statementsand

Functionson page 523.

SKIP If used in pre-logic, it causes the off-shift or breaktime (including any off-shift or breaklogic) to be skipped so a loca-

tion or resource never goesoff line. If used in the off-shift or breaklogic, it causes the off-line time defined in the Calendar Editor to be skipped. Thisallows you to specify a WAIT statement for the off-line time and SKIP the off-line time defined in

the Calendar Editor.

©ProModelCorporation

Building the Model: General Elements 230

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 244/715

231 ProModel 2011 User Guide

PRIORITY Thisstatement provides an alternative way to specify off-shift or break priorities. It also allows the priorityto be

changed after some time being off-shift or on break. If the priorityis changed to a value lower than the current value, the

system will check to see if any preemption may occur at that time. This statement isnot allowed in off-shift or break pre-

start logic.

DTLEFT() Thisfunction returnsthe remaining off-shift time based on when the location or resource isscheduled to gobackon shift asdefinedin the shift file. It maybe used inoff-shift and break logic to adjustthe actual time thelocation or 

resource isoff-line.

FORLOCATION() Thisfunction returnsTRUE if the member for which the shift or breaklogic being executed isa loca-

tion. Thismay be followed by a test using the LOCATION() function to determine the precise location.

FORRESOURCE() This function returnsTRUE if the member for which the shift or breaklogic being executed isa

resource. The RESOURCE() function may then be used to determine the precise resource if multiple resources are

listed as members.

RESOURCE() Thisreturns the name-index number of the resource currently processing the off-shift or break logic.

To illustrate how FORLOCATION() and FORRESOURCE() might be used, consider the following example: Suppose

you have locations and resources as members in a shift file assignment and you want to wait until variable Applications

isequal to zero before allowing a particular resource called Loan_Officer to go off shift. You would enter the following

pre-off shift logic:

Pre-off shift logic

IF FORRESOURCE() THEN

BEGIN

IF RESOURCE() = Loan_Officer THEN

BEGIN

WAIT UNTIL Applications = 0

END

END

In addition to these functions, DTDELAY() may also be called at the beginning of the off-shift or breaklogic to determine

how much time haselapsed between the time the shift downtime wasscheduled to start and when it actually started. The

length of the shift downtime definedin theshift file wouldbe thesum of DTDELAY() and DTLEFT().

Preemptions to Off-Shift or Break Logic

If off-shift or breaklogic isdefined using WAIT or USE statementsand happens to get preempted, the logic will resume

one statement after the WAIT or USE statement where it was preempted.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 245/715

Shift Downtime Principles

Locations Shift Downtime Principles

It isimportant to understand that when a location or resource goesoff shift, it isessentially down. We callthistype of down-time a shift downtime and it istreated slightly differently from other downtimes. Breaks, which are also part of the shift

schedule, are treated exactly like clock-based downtimes. These downtimes are discussed in Locationson page 125 and

Resources on page 171.

Shift Downtimes for Locations

 All location shift downtimes have a default priority of 99, the highest non-preemptive priority possible. This means that

when a location isscheduled to go off-shift, this downtime will take priority over all other entities with a priority lessthan 99

waiting for the location. If the location iscurrentlyin use, shift downtimes allow the current entity to complete its process at

the location. After the entity isfinished, the shift downtime proceedsas if it started at its scheduled time. This means that

the location becomesavailable at the start of the next shift regardlessof when it actuallywent off shift. Thisprocedure is

demonstrated in the following example.

Example 1 (a)

 Although the downtime is scheduled to last from time T2 to T4, the actual downtime does not begin until time T3. This is

what happensfor both locationsand resources currently busy when the shift downtime isscheduled to occur.To preempt a location in which an entity iscurrently processing, set the priorityfor going off shift to a number one level

higher than the entity’s priority.

©ProModelCorporation

Building the Model: General Elements 232

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 246/715

233 ProModel 2011 User Guide

Example 1 (b)

Please note

Since the entity was preempted, t he remaining time for the entity to be p rocessed at t he location was com- 

 pleted after the location shift downtime was co mpleted.

Preempting Off-Shift Locations

 An off-shift location may be preempted back into service by an entity. Following the preemption, the shift downtime will

resume for any remaining time before the start of the next shift. The following example demonstrates this principle.

Example 2 

In this example an entity with priorityof 200 or greater preemptsan off-shift location. The location becomesavailable toprocess the entity. Once processing iscomplete, the location returns to its off-shift status.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 247/715

In order for an entity to preempt any location downtime (shift or otherwise), it must have a priority level that isat least 2 lev-

els higher than the downtime's priority. In this example the location shift downtime has a prioritylevel of 99 so the entity

must have a prioritylevel of 200 or greater to preempt the shift.

Overlapping Downtimes

If a preemptive clock downtime occurs during a shift downtime, the downtimessimplyoverlap.

Example 3

Thisexample shows the effect of a preemptive downtime occurring for a location alreadyoff-shift due to a shift downtime.

Because location downtimesalways overlap, the effect isas if the preemptive downtime never occurred. The location

remains off-shift for the total duration of the shift downtime.

The example above could represent the situation where a recurring downtime, such as a lunch or dinner break, hasbeen

defined for a single location that isscheduled to be available for a two-shift period. It would be simpler to specify a single

downtime for lunch and dinner that occurs once every 8 hourscontinuously than to define separate downtimes for lunchand dinner. In this case the preempting downtime would represent a mealbreak occurring while the location was off-shift.

Resource Downtime Principles

Shift Downtimes for Resources

Resource shift downtimes work exactly like location shift downtimes with the exception that if the off-shift downtime is

preempted by some other downtime, the original off-shift downtime never resumes. The following examples show how a

resource that isoff shift isaffected by a preemptive request by another entity (example 1) and by downtime preemption

(example 2).

Example 1

Suppose a resource, repairman, isoff-shift. An important machine goesdown unexpectedly. Because this machine isabottleneck in the operation, it isvital to repair the machine as quicklyas possible. The repairman iscalled in and takes 30

minutesto fix themachine.The logic for thedowntime to callhim backis“USE Repairman, 600 FOR 30 min”. This will

preempt the shift downtime and use the repairman to repair the machine even though the repairman isoff-shift. Once the

repairmanhas repaired the machine, he returns to his shift downtime until he is scheduled to go backon shift. The repair-

man's shift downtime will end at the originallyscheduled time regardless of the fact it was preempted by a repair activity.

©ProModelCorporation

Building the Model: General Elements 234

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 248/715

235 ProModel 2011 User Guide

 Although the shift downtime is scheduled to last from time T1 to T4, the actual downtime lastsfrom T1 to T2 and then

fromT3toT4.

Example 2 

This example shows the effect of a preemptive downtime occurring for a resource alreadyoff-shift due to a shift down-

time. Since resource downtimesare not overlapping, as in the case of location downtimes, the shift downtime in progress

isdiscontinued and the preemptive downtime takes controlof the resource because it hasa priority greater than or equal

to five-hundred (remember that a downtime priority needs to be only one level higher than another downtime priority to

preempt it). The effectin this exampleis that the totaldowntime is actuallyshorter than itwould have been hadthe orig-

inalshift downtime been completed.

 Although in practice, situations like the example above are unlikely to occur, it is important to understand that the above

condition ispossible. Typically, preemptive downtimes are due only to some type of location or resource failure, in which

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 249/715

case, thedowntime occurrence would be based on usage andnot clock time. If a preemptivedowntime isbased on

usage, the situation in the example above could not occur because the location or resource would not be in use, and would

not accumulate usage time.

General Information

The GeneralInformation dialog boxallows you to specify basicinformation about a model, such as its name, default time

units, default distance units, and graphiclibrary. You also may specifythe model's initialization and termination logic.

Finally, a notes window isavailable for specifying particulars of a model, such as the modeler's name, the revision date,

modeling assumptions or anything else about it.

How to open the General Information dialog b ox:

1. Choose General Information fromthe Build menu.

©ProModelCorporation

Building the Model: General Elements 236

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 250/715

237 ProModel 2011 User Guide

General Information Dialog Box

The fields of the GeneralInformation dialog boxare as follows:

Title An optional, brief description of the model. Information will be displayed in the caption bar and included in the model

and results files.

Time Units The unit for anytime value in the model that doesnot have an explicitlyspecified time unit. The smallest unit

of time available in ProModelis .00001 second andthe largest is 1 day.

Distance Units The units in feet or meters for all distances specified in the model. There isno practical limit on the size

of the model.

Model Notes... Bringsup a notes window for specifying general notes about the model. Notes are optionaland are for 

user reference only. An alternative way to display notes isusing a DISPLAY statement (see Display on page 549) in the

initialization logic.

Graphic Library File Opens a dialog box for selecting the graphiclibrary file to use with the open model. Graphicslibrary

files have the extension GLB and are further explained later in this section.

Initialization Logic Opens the Initialization Logic window for specifying initialization logic. An asterisk(*) next to the

name of the button means that some initialization logic hasbeen defined for the model. (See Initialization Logic on page

238.)

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 251/715

Termination Logic Opens the Termination Logic window for specifying termination logic. An asterisk(*) next to the

name of the button means that some termination logic has been defined for the model. (See Termination Logic on page

238.)

Initialization Logic 

Initialization logic allows you to initialize arrays, variables, and other elements at the beginning of a simulation run as shown

below:

Other common usesof initialization logic include:

l Reading externalfiles

l Displaying messages

l Prompting for values

l Resetting general read/write files

l Activating independent subroutines that process logic based on a timer. (See Subroutineson page 326; also see

 Activate on page 525).

For a discussion of each of the buttons in the Initialization Logic window, see Editing Logic Windows on page 99.

Termination Logic 

Termination logic allowsyou to summarizedata or write specialstatistics to an output fileat theend of a simulation run as

shown below:

©ProModelCorporation

Building the Model: General Elements 238

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 252/715

239 ProModel 2011 User Guide

Other common usesof termination logic include:

l Displaying messages

l Resetting read/write files

See the following page for a discussion on the placement of initialization and termination logic within the sequence of run-

time events.

Please note

 Alth ough Init ialization and Termination log ic cannot be tested with the Compile option in the Edit menu,

as with Processing or Arrival logic, the logic can be t ested by clicking on the compile button in the logic 

window. ProModel checks all logic automatically upon selecting OK and, if an error in the logic is found ,

an error message describing the problem will appear.

Execution Time of Initialization and Termination Logic 

It isimportant to understand exactly when initialization and termination logic isexecuted. When you select Run from the

Simulation menu the following things occur in the order listed:

1. Arrays are initialized based upon the defined Import specifications2. Variables are initialized to the values specified in the Variables Editor.3. Macros defined as a scenario parameter are set to their user-specified value.4. The model isloaded into the simulation module. As the model isloaded, anynumericexpressions used to define

such things as location capacities or number of resource units are evaluated and assigned a numericvalue.5. Initialization logic isperformed.6. Simulation begins. Initial arrivals and downtimes are scheduled and simulation processes begin.7. Simulation ends.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 253/715

8. Termination logic isperformed.9. Statistics are compiled.

Logic elements that figure into a model's structure are evaluated only when the model isloaded into the simulation mod-

ule. Those logic elements are:

l Simulation warm-up hours

l Simulation run hours

l Node capacity

l Length of path segments

l Resource units

l Location capacity

l Queue length

l Conveyor length

l Conveyor speed

For a complete list of when each field isevaluated, see Appendix on page 657.

 Any variables or arr ays used in an expression that change any of these logicelements should be initialized in the Variables

Editor, Arrays Import,scenario manager and not in the initialization logic. The model structure cannot change after the

model has been loaded into the simulation module. Thus, anyvariable or array figuring into a location's capacity and initial-

ized in the initialization logic will be initialized too late to affect the location's capacity.

Variables or arrays which do not figure into a location's capacity may be initialized in the Initialization Logic without anyprob-

lem. A variable initialized in the initialization logic could be used as the “First Time” for an arrival or downtime occurrence.

Thisis true because arrivals and downtime occurrences are simulation events, and all initialization logic occurs before the

first simulation event.

Graphic Library File

ProModelallows you to create and store as manygraphicslibraries as desired. However, only one graphiclibrary may be

used for each model. To copy a graphicfrom one graphiclibrary to another model's graphiclibrary, see Graphic Editor on

page 411.

How to select the desired graphics library:

1. Select Graphic Library File from the GeneralInformation dialog box.

©ProModelCorporation

Building the Model: General Elements 240

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 254/715

241 ProModel 2011 User Guide

2. Enter thename of the desired graphics library.3. Select OK.

Please note

Only files with the extension GLB may be used as graphics libraries. For more information on creating,

merging and saving graphics libraries, see Graphic Editor on page 411.

Cost

With ProModel’scosting capability, you can make decisions about your system on a cost basis. Costing dialogsallow you

to monitor costs associated with Locations, Entities, and Resources during a model run and the GeneralStatistics Reportincludes Costing statistics, automatically generated at the start of the simulation.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 255/715

How to use cost

l Choose Cost fromthe Build menu. The Cost Dialog appears.

Cost Dialog Box

Use the Cost Dialog boxto define costs for Locations, Entities, and Resources. Fields in the Cost Dialog box vary between

Object Types and ProModelevaluates expressions in these fields only during translation at run time. The GeneralSta-

tistics Report includesstatistical information automaticallygenerated during run time about cost for locations, entities, and

resources.

Object Type Use this pull-down menu to define costing for the componentsof the selected object type. Object types

include locations, resources, and entities as shown in the following example. All defined model componentsof the selected

type appear in the box below the object type field and ProModelallows you to assign costs to any of these components.

©ProModelCorporation

Building the Model: General Elements 242

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 256/715

243 ProModel 2011 User Guide

Locations

Operation Rate Thisfield specifies the cost per unit of time to process entities at the selected location. Cost accrues only

while an entity executesa WAIT or USE statement in operation logic. ProModelacceptsexpressionsin this field and eval-

uates them at translation.

Per With this pull-down menu, you can set the time units for the Operation Rate. Time units maybe in seconds, minutes,

hours, or days as shown here.

Resources

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 257/715

Regular Rate Thisfield specifies the cost per unit of time for a resource used in the model. You can use expressionsin

this field (evaluated at translation) to set the rate or change it using SetRate. For more information on the SetRate oper-

ation statement, see SetRate on page 628.

Per This pull-down menu allows you to set the time units for the Regular Rate. Times maybe in seconds, minutes, hours,

or days as shown here.

Cost Per Use Thisfield allows you to define the actual dollar cost accrued each time you use the resource (i.e., the mini-

mum usage cost). The cost per use updateswhen you obtain the resource and ProModelacceptsexpressions in this field

(evaluated at translation).

Please note

Since ProModel counts a preemption as a u se, if you preempt a resource from an entity, the usage cost 

applies to the resource only when it returns to the entity.

Entities

Initial Cost Thisfield allows you to define the initial entity cost for an entity which enters the system through a scheduled

arrival, a CREATE statement, or an ORDER statement. ProModelacceptsexpressions in this field and evaluates them attranslation.

Please note

©ProModelCorporation

Building the Model: General Elements 244

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 258/715

245 ProModel 2011 User Guide

When you implicitly create new entities through a ROUTE statement, ProModel does no t add an initial

cost to the entity. To add an initial cost, use t he INCENTCOST statement. See IncEntCost on page 580 for 

more information.

Building a Model with Costing

When you build a model using the costing feature, you must first define the locations, resources, and entities used in the

model. Once you define these model components, you may assign costing information to them through the Cost option in

the Build menu. To collect costing information about your model, uncheck the disable costing box from the simulation

options dialog of the simulation menu. By default, ProModeldisables costing and sets all defaults to zero. See Enable or 

Disable Costing on page 248.

Please note

The following scenarios assume you defined costs for all model components.

Preemption/Downtime

l If you preempt an entity’sresource, an additionalcost per use will apply once you re-acquire the resource. While

waiting for the resource to return, the entity does not record operation or resource costs.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 259/715

l If an entity preempts another entity, the preempted entity continuesto record operation time during the entire

preemption period. While the preempting and preempted entities are simultaneouslyat a location, the location

records the cost for both entities. If the preempting entity obtains a resource, the preempted entity will not record

the resource costs during the preemption period.

l If an entityis at a location when a preemptive downtime occurs, the entityrecordsthe downtime as part of its oper-

ationalcosts. This applies to all types of location downtimes, including shifts. The location records the cost of the

preempted entity while it remains at the location.

l If an entity’s resource has a downtime which requiresthe use of another resource, theentitywill notrecord the

second resource’scost. However, the location will record the extra resource’scost.

Join/Load

l Joined and permanently loaded entitiesadd their costs to their base entities, but not their time statistics.

l Loaded entities do not add their costs or time statistics to their base entities.

l When an UNLOAD occurs, ProModeldivides all costs accrued by a loaded entity among the unloaded entities.

ProModel adds all other entity statistics calculated during the loaded period to each of the unloaded entities.

l Entitiesleaving the system that were temporarily loaded onto other entitiesdo NOT report their individual costs,

but do report all other statistics. To get the cost of each entity, you must unload the entities before theyexit or per-

manently load them when they are initially loaded using the LOAD PERM statement.

Combine/Group

l Combined entities add their costs to the resultant entity, but not their time statistics. The resultant entity begins

with fresh time statistics.

l Grouped entities do not add their costs or statistics to the group shell (a temporary entity representing grouped

entities that starts with cost and time statistics of zero).

l When an UNGROUP occurs, ProModeldivides all costs accrued by a grouped entity among the ungrouped enti-

ties. ProModel copies all other entity statistics calculated during the grouped period to each of the ungrouped enti-

ties.

l Entities leaving the system grouped with other entities do NOT report their individualcosts, but do report all other 

statistics. To get the cost of each entity, you must ungroup the entities before theyexit.

Special Cost Handling

l Assoon asyou acquirea resource, itbeginsto accrue cost.

l Unless obtained in the move logic, ProModelcharges the “Cost per use” for a resource to the location that

obtained it. Resources obtained in the move logic do not charge a “per use” cost to any location.

l ProModel does not charge any resource time used during move logic to any location.

l ProModel adds initial entity costs defined in the cost module only as entity costs, not location costs.

l If a location uses a resource during a downtime, the location accrues that resource’s cost.

l The USE statement countsas operation and resource cost.

l When you CREATE a new entity, it begins with new time statistics and an initial cost.

©ProModelCorporation

Building the Model: General Elements 246

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 260/715

247 ProModel 2011 User Guide

l If you RENAME an entity, previous time statistics and costs continue with the entity.

l The SPLIT AS statement dividesthe cost of the original entity between all entities. Each new entity begins with

new time statistics.

Costing Output Statistics

ProModelcollects costing statistics onlyif you uncheckthe Disable Cost Statisticsoption in the Simulation Options menu

(see Enable or Disable Costing on page 248). Included in the GeneralStatistics Report, ProModelcalculatescosting sta-

tistics.

Locations

l OperationalCost = (Active Operation Time * Rate) + (AnyIncLocCost)

l % OperationalCost refersto the location’s percentage of the sum of all operation costs

l Resource Cost = (Utilization * Rate) + (Times Used * Cost per use)

Please note

F or Resource Cost, Utilizat ion and Times Used refer to the utilization of a resource while at a location.

This applies only to resource use through operation logic.

l % ResourceCost refers to the location’s percentageof thesum of all resource costs

l Total Cost = (Operation Cost + ResourceCost)

l % TotalCost refersto location’s percentage of the sum of all location costs

Resources

l NonUse Cost = (1-% Utilization) * Scheduled Time * Rate

l % NonUse Cost refers to the resource’s percentage of the sum of all nonuse costs

l Usage Cost = (% Utilization * Scheduled Time * Rate) + (TimesUsed * Cost per use)

l % Usage Cost refersto the resource’s percentage of the sum of all resourceusage costs

l Total Cost = Usage Cost + NonUse Cost

l % Total Cost refersto the resource’s percentage of the sum of all resourcecosts

Entities

l Explicit ExitsThe number of entitiesthat have explicitly exited. Whenever an entity exits the system, it is an explicit

exit except in the following cases:

l - When an entity JOINS, permanently LOADS, or COMBINES with another entity, it implicitly exits the system,

and isr eported as an exit in the Entity Activity report. However, for costing purposes, the entity did not explicitly

exit, but its costing information was added to the entity it was JOINED, permanentlyLOADS, or COMBINED

with.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 261/715

l - When an entity temporarilyLOADSor GROUPS with another entity, and the entire LOADED or GROUPED

entity exits the system, the original entity implicitlyexits the system, and isreported as an exit in the Entity Activity

report. However, for costing purposes, the original entity did not explicitlyexit, but its costing information was

added to the entire loador group.

l TotalCost DollarsTotal Cost = cumulative entity cost, or the sum of costs incurred on all locations the entity

passed through + the sum of all costsincurredby use of resource+ initialcost + anyIncEntCost

l % Total Cost%TotalCost refersto the entity’s percentageof sum of all entitycosts

In the above calculations, the rate defined (per day, hour, minute, and second) converts to the default time units specified

in the GeneralInformation dialog.

Please note

ProModel does no t allow you t o g enerate a Costing Graph. However, if you set a variable equal to GetCost 

(e.g., Var1=GetCost), you can generate a time series graph to track changing entity costs. See GetCost() on

 page 570 for more information.

Enable or Disable Costing

To enable the costing feature, be sure that the Disable Cost option in the Simulation Optionsdialog isnot checked.

Tanks

Tanks are simply locations to which ProModelassociatesa level instead of an entity routing. (As a result, the units and

rules fields do not apply to tanks.) Using tanks, you can model the continuous flow of liquids and other substances into and

out of tanks or similar vessels. Also, when combined with discrete-event simulation, ProModel’scontinuous modeling

capability makes it possible to model the exchange between continuous materialand discrete entities (e.g., when you

place liquid into a container). Other usesinclude modeling high-rate, discrete part manufacturing systems.

The Tank Submodel

In order to function properly, all tankmodels should include the tanksubmodel(T ANKSUB.MOD). The tanksubmodelcon-

tains important subroutines and data elements (arrays and macros) used to simplify tankmodeling. Each of these sub-

routinesand data elements has a “Tank_” prefix to help identify it and to prevent any accidental name duplication.

Please note

 All user-d efined model elements should begin with something other than “Tank_”.

How to define a tank

©ProModelCorporation

Building the Model: General Elements 248

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 262/715

249 ProModel 2011 User Guide

1. Select the gauge/tank symbolfrom the Location Graphicswindow.2. Click on thelayout window where you wishto place the tankand select Create T ank Lo cation from the menu

that appears. ProModelplaces the tank on the layout.

Please note

When you create the first t ank in your model, ProModel will display a dialog th at allows you to auto- 

matically import various subroutines, arrays, macros, and library graphics specific to tanks. If you do not 

wish to include these new items, you may cancel the action.

3. Enter a capacity (1 to 999999) for the tankin the location capacity field.

4. Define and reference any necessary tankcontrol subroutines.

How to edit a tank or a gauge

1. Double clickon the tankor gauge (or right clickand select Edit Graphic).2. From thedialog that appears,make the appropriate changes.3. Click OK.

How to change between a tank and a gauge

l Double click on the tankor gauge and check or uncheck the tankoption.

or...

l Right click on the tankor gauge and select Change Tank to Gauge or Change Gauge to Tank.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 263/715

In addition to defining a tankgraphic, you mayadd labels andother figures to a tank. For example, you can add a counter 

to digitallydisplay the filllevel of the tank(ProModel rounds the value displayed to the nearest integer). The following are

examplesof how you can use tanksin ProModel.

Basic Concepts

Since tanks do not process discrete entities, you may not define routingsto or from tanks. To controla tank level, Pro-

Model provides predefined subroutines that fill, empty, and transfer tank contents. To monitor tanklevels and initiate

flows, you must define controlsubroutines using the Subroutine module. To callthese subroutines and operate them inde-

pendently in the model, use the ACTIVATE statement. For examples of how to use these subroutines, see the discussion

at the end of this section. To model tankseffectively, you must understand the following concepts.

Tank Levels

ProModelr ecords tanklevels in a pre-defined array called Tank_Level where each element of the array correspondsto

each tanklocation in the location list. For example, the level of TankA isthe value of Tank_Level [TankA]. If TankA were

the third location in the location list, you could also reference the level of TankA with Tank_Level[3]. For best results, youshould controlall tanklevels using only the pre-defined tank filling and emptying subroutines rather than change the Tank_ 

Level array values directly. This will prevent overfilling or overdrawing and will accuratelygather statistics for each tank.

For example, calling Tank_Fill(T ankA, 500, 30, 0) automatically fills TankA to 500 units at a rate of 30 units per minute.

The 0 signifies that the tank will not accept excessmaterial and, as a result, an error message will occur if the tankreaches

capacity before the specified amount fills into the tank.

The Flow Time Step

To model continuous flow, ProModelusesa Tank_TimeStep macro. This macro isthe time step used when fill-

ing/emptying tanks and isa scenario parameter. Initially, ProModelsets this value to .2 minutes. If you wish to use a dif-

ferentvalue for thetime step, you maychangeit temporarily (for a particular model) in the Scenario Manager or 

 permanently by changing the macro itself. The larger the time step, the longer the interval between filling and emptying

(whichspeedsup the simulation).For example, suppose you set thetime step to .1 minutes. If a tankempties at a rateof 

60 gpm, the simulation would actually empty the tankby a discrete amount of 6 gallons every .1 minutes. When filling or 

emptying a tank, if the remaining quantity doesn't require the full time step, ProModelreduces the time step using a linear 

interpolation.

Please note

©ProModelCorporation

Building the Model: General Elements 250

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 264/715

251 ProModel 2011 User Guide

The on ly adverse effect of using a large time step is that any WAIT UNTIL statement or other test based 

on the Tank_Level array may be of f b y as much as the flow amount for the time step. For example, if the

time step is .5 minutes and the rate of flow is 60 gp m, th e level will change in 30 gallon increments. This

means that the tank will not satisfy t he statement “WAIT UNTIL Tank_Level[TankA]>=31” until t he level 

reaches 60.

Rate of Flow 

To use flow ratesproperly, you must define all ratesin termsof units (i.e., gallons, pounds) per time unit defined in the

GeneralInformation dialog. Whenever you callone of the empty, fill, or transfer subroutines, you must specify the rate of 

flow. The units of flow, however, maychangewhen you move materialfrom one tankto another (e.g., pounds of dry

material may transfer into a tankcontaining gallons of liquid).

To specify a variable rate of flow that changesdynamicallywith eachtime step, passa value of 0. This signals thesub-

routine to call the Tank_Rate subroutine with each time step. To return the desired rate value for each time step when

you use a variable rate, you must modify the Tank_Rate subroutine appropriately.

Tank States

Like other model elements, tanks use states to test and track statistics. ProModelautomatically sets these stateswhen

you use the predefined tank subroutines to controlthe tank. The following are defined states:

Tank_Idle The tankis emptyand not in use. Set automaticallywhen a tank emptiesand at the end of a Tank_DoPrep or 

Tank_GoDown subroutine.

Tank_Operation The tankis active (e.g., mixing, reacting, heating). Set automatically when the model calls the Tank_ 

DoOperation subroutine.

Tank_Setup The tankis cleaning or preparing for future use. Set automaticallywhenever you callthe Tank_Prep sub-

routine.

Tank_Filling The tank is filling. Set automaticallywhenever you fill the tank.

Tank_Emptying The tank isemptying. Set automaticallywhenever you empty the tank.

Tank_Blocked The tankis full and readyto transfer. Set automatically when the tank fills to capacity.

Tank_Down The tankis down. Set automatically whenever you callT ank_GoDown.

Tank_ScheduledDownSimilar to the Tank_Down state, except statistics are not collected.

While ProModelsetsthese statesautomatically, you maychange the state of the tankat anytime by calling the Tank_Set-

State subroutine. ProModelr ecords statistics for these states in the output report under Locations. Since a tankmay filland empty simultaneously, the output report combinesT ank_Filling with Tank_Emptying and reportsit all as waiting time.

Over Filling/Emptying Tanks

When using the predefined subroutines to fill, empty, or transfer from one tankto another, you may accidentallyattempt

to over fill or over emptya tank. To prevent these situations, you have the option to terminate the fill/empty subroutine or 

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 265/715

suspend further filling/emptying untilthe tank reaches a resume level. If you terminate the subroutine, ProModeltem-

porarily storesthe un-filled or un-emptied quantity for immediate accessin the global variable, Tank_QtyLeft.

Tank Downtimes

For Tanks, you must define downtimes and shifts in a special way. First, you maydefine only clock downtimes for tanks.Second, when defining a clock downtime for a tank, use the Tank_GoDown subroutine in the Downtime Logicfield instead

of just a WAIT statement. Thissetsthe state of the tankto Tank_Down and gathers the appropriate statistics. Third, when

defining a shift for a tank, you should callthe Tank_GoDownSched subroutine in the off-shift logic using the DTLeft() func-

tion as the time parameter. A SKIP statement should follow this function as shown next.

SKIP example

Tank_GoDownSched (<TankID>, DTLeft())

SKIP

ProModeltemporarilysuspends tank flow while a tankis down or off shift.

Tank Logic Builder 

 An expanded capability within ProModel, the tank logic builder provides you with what you need to model complex tank

and fluid system operations. The logic builder contains all available tanksubroutinesand provides you with a description of 

the componentsrequired to use each subroutine.

Please note

The subroutine logic is not accessible until you define your first tank location—when you define the tank 

location, ProModel loads th e tank submodel.

©ProModelCorporation

Building the Model: General Elements 252

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 266/715

253 ProModel 2011 User Guide

How to access the Logic Builder:

1. Clickthe right mouse button in the logic window or expression edit field. Or click the Build buttonon thelogicwin-

dow’stoolbar.2. For more information about the Logic Builder,see Building theLogic on page 389.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 267/715

Pre-defined Tank Subroutines

see Tank_Cap on page 263

see Tank_Dec on page 261

see Tank_DoOperation on page 264

see Tank_DoPrep on page 267

see Tank_Empty on page 255

see Tank_FallTrigger on page 263

see Tank_Fill on page 254

see Tank_FreeCap on page 264

see Tank_GoDown on page 265

see Tank_GoDownSched on page 266

see Tank_Inc on page 260

see Tank_Rate on page 272

see Tank_RiseTrigger on page 262

see Tank_SelectInput on page 270

see Tank_SelectOutput on page 268

see Tank_SetLevel on page260

see Tank_SetState on page 268

see Tank_Transfer on page 256

see Tank_TransferDownToon page 259

see Tank_Tr ansfer UpTo onpage 258

see Tank_UpdateStatson page 271

Tank_Fill

S yntax samples

TANK_FILL (<Tank ID>, <Fill Quantity>, <Fill Rate>, <Resume Level>)

TANK_FILL (HoldingTank, 2000, 75, 1500)

Description

Fillsa tankusing a specificquantity and rate. The default tankstate sets to Tank_Filling, then to Tank_Blocked if the tank

becomes full.

©ProModelCorporation

Building the Model: General Elements 254

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 268/715

255 ProModel 2011 User Guide

Use Tank_Fillwhen the source of the materialis not another tank,but an arriving entityor a source that is not part of the

model.

Components

<Tank ID>The tankname or location indexnumber.

<Fill Quantity>

The number of units (gallons, pounds) to fillinto the tank. To fillthe tankto capacity, enter Tank_Cap(<Tank

ID>).

<Fill Rate>

The rate in units (gallons, pounds) per time unit defined in the General Information dialog. To instantly

increase thelevel of a tank, use theTank_Inc subroutine.To initialize the levelof a tank (e.g., at the startof the

simulation), use the Tank_SetLevel subroutine. To use a dynamically calculated rate in the Tank_Rate sub-

routine, enter 0.

<Resume level>

If the tanklevel reachescapacity before you add the specified quantity, the tankmust drop to the resume level

before it can continue filling. To terminate filling if the tankreaches capacity, enter Tank_Stop as the resume

level. A value of 0 causes an error to occur if the tankbecomes full before reaching the fillquantity.

Example

 A tanker arr ivesand fills a storage tank by the quantity stored in the tanker’s attribute, Load_Qty. The rate of fill is 80 gpm

and, if the tankfillsto capacity before the tanker discharges the entire quantity, the level of the storage tank must drop to

12,000 gallons before it resumes filling. To represent this, enter the following statement in the operation logic for the

tanker at the unloading station.

Tank_Fill(StorageTank, Load_Qty, 80, 12000)

See Also

see Tanks on page 248 and see Initializing and Replenishing Supply Tanks on page 276.

Tank_Empty

Syntax samples

TANK_EMPTY (<Tank ID>, <Empty Quantity>, <Empty Rate>, <Resume Level>)

TANK_EMPTY (TankB, 2000, 40, 0)

Description

Emptiesa tank bya specified quantity and rate. The state is set to Tank_Emptying, then to Tank_Idle if the tankbecomes

empty.Use Tank_Emptywhen the destination is notanother tank, but an arriving entityor a source that is notpart of the model.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 269/715

Components

<Tank ID>

The tankname or location indexnumber.

<Empty Quantity>

The number of units (gallons, pounds) to empty. To empty a tank completely of its current contents, enter Tank_ 

Level [<Tank ID>].

<Empty Rate>

The rate in units (gallons, pounds) per time unit defined in the GeneralInformation dialog. To instantly decrease

the level of a tank, use the Tank_Decsubroutine. To specify a dynamically calculated rate using the Tank_Rate

subroutine, enter 0.

<Resume level>

If thetankleveldropsto 0 before you emptythe specified quantity,the tank must rise to the resume levelbefore

continuing to empty. To terminate emptying if the level ever dropsto 0, enter Tank_Stop. A value of 0 causes anerror to occur if the tank becomesemptybefore removing the specified quantity.

Example

When a chemical tank, ChemTank, is full (state isTank_Blocked), workerspump itscontentsinto a rail car at a rate of 60

gpm for transportation to another facility. Since railcars are always available and the delivery activity isnot of interest, it is

not necessary to model the rail cars explicitly. Instead, activate a subroutine in the initialization logic with the following state-

ment:

Tank_Loop //logicr epeats continuously

{

WAIT UNTIL Tank_State[ChemTank]=Tank_Blocked

Tank_Fill(ChemTank, Tank_Level[ChemTank], 60, 0)}See Also

see Tankson page 248.

Tank_Transfer 

Syntax samples

TANK_TRANSFER (<FROM Tank ID>, <TO Tank ID>, <Transfer Quantity>, <FROM Rate>, <TO Rate>,<Resume Level>)

TANK_TRANSFER (Tank1, Tank2, 2000, 100, 0, 0)

©ProModelCorporation

Building the Model: General Elements 256

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 270/715

257 ProModel 2011 User Guide

Description

Transfers a specified quantity from one tankto another. ProModelsetsthe state of the FROM tank to Tank_Emptying

and the TO tank to Tank_Filling. If the FROM tankbecomesempty, itsstate becomesTank_Idle. If the TO tankbecomes

full, itsstate becomes Tank_Blocked. Otherwise, the states remain unchanged.Use Tank_Transfer when you want to transfer a specificquantity from one tank to another.

Components

<FROM Tank ID>

The name or location index number of the FROM tank.

<TO Tank ID>

The name or location index number of the TO tank.

<Transfer Quantity>

The number of units (gallons, pounds) to transfer. To transfer the entire contents of a tank, enter Tank_Level

[<FROM Tank ID>].

<FROM Rate>

The rate in units (gallons, pounds) per time unit definedout of theFROM tank. To use a dynamically cal-

culated rate in the Tank_Rate subroutine, enter 0.

<TO Rate>

The rate in units (gallons, pounds) per time unit defined in the GeneralInformation dialog into the TO tank. Use 0

if same astheFROM rate. (The TO rate is automatically the same astheFROMrate if you add 0 astheFROM

rate.)

<Resume level>

If the TO tank reachescapacity beforethe specified quantity transfers,the TO tank must drop to the resume

level before continuing with the transfer. To terminate transferring when the TO tankreaches capacity, enter 

Tank_Stop. A value of 0 causes an error to occur if the tankbecomes empty before transferring the specified

quantity.

Example

When a mixing tankis readyto mix a new batchof material, 10,000 gallonsof water must firsttransfer from a water 

supplytank at a rate of 100 gpm. The following logic represents thisaction:

Tank_Transfer(WaterTank, MixingTank, 10000, 100, 0, 0)

See Also

see Tanks on page 248.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 271/715

Tank_TransferUpTo

Syntax samples

TANK_TRANSFERUPTO (<FROMTank ID>, <TOTank ID>, <TOLevel>, <FROM Rate>, <TORate>)TANK_TRANSFERUPTO (Tank1, Tank2, 8500, 75, 0)

Description

Similar to Tank_Transfer except that Tank_TransferUpTo doesNOT terminate a transfer based on the transferred quan-

tity , rather when the TO tank level rises to a certain point. If thetankempties beforereaching the TO level, ProModelsus-

pends the transfer untilcapacity becomes available.Use Tank_TransferUpTo when you want to raise the levelof a tank to a certainvalue but are notcertain of the quantity

needed to reach that level(e.g., thetankis draining at the same time you are trying to fill it).

Components

<FROM Tank ID>The name or location index number of the FROM tank.

<TO Tank ID>

The name or location index number of the TO tank.

<TO Level>

Transfer until the TO tankreaches this level.

<FROM Rate>

The rate in units (gallons, pounds) per time unit defined in the GeneralInformation dialog out of the FROM tank.

To use a dynamically calculated rate in the Tank_Rate subroutine, enter 0.

<TO Rate>

The rate in units (gallons, pounds) per time unit defined in the GeneralInformation dialog into the TO tank. Use 0

if the TO rate is the same astheFROM rate.

Example

 An in-process tank supplies several downstream tanks and must maintain a maximum levelof 20,000 gallons. Whenever 

the in-process tank drops below 5,000 gallons, a supply tank refills thetankat a rate of 100 gpm. To modelthis, define an

activated subroutine for the supply tank using the following logic:

Tank_Loop //logicr epeats continuously

{

WAIT UNTIL Tank_Level[InProcessTank]<=5000

Tank_TransferUpTo(SupplyTank, InProcessTank, 20000, 100, 0)

}

©ProModelCorporation

Building the Model: General Elements 258

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 272/715

259 ProModel 2011 User Guide

Tank_TransferDownTo

Syntax samples

TANK_TRANSFERDOWNTO (<FROM Tank ID>, <TOTank ID>, <TOLevel>, <FROM Rate>, <TORate>)TANK_TRANSFERDOWNTO (Tank1, Tank2, 1000, 80, 0)

Description

Similar to Tank_Transfer except that Tank_TransferDownTo terminates the transfer when the FROM tank level lowers

to a designated level instead of lowering by a specificquantity. If the TO tank becomesfull, ProModelsuspendsthe trans-

fer untilcapacity becomes available.Use Tank_TransferDownTo when you want to lower the levelof a tankto a specific value but you are notcertain how

much to emptyin order to drop to that level(e.g., thetankmay fillat thesametime it empties).

Components

<FROM Tank ID>The name or location index number of the FROM tank.

<TO Tank ID>

The name or location index number of the TO tank.

<TO Level>

Transfer until the FROM tankdrops to this level.

<FROM Rate>

The rate in units (gallons, pounds) per time unit defined in the GeneralInformation dialog out of the FROM tank.

To use a dynamically calculated rate in the Tank_Rate subroutine, enter 0.

<TO Rate>

The rate in units (gallons, pounds) per time unit defined in the GeneralInformation dialog into the TO tank. Use 0

if the TO rate is the same astheFROMrate.

Example

 An in-process tank, TankA, supplies TankB at a rate of 50 gpm. TankA must maintain a minimum levelof 200 gallonsto

insure against pump cavitation. When TankA’s level dropsto 200 gallons, the tankstops pumping to TankB untilthe level

of TankA rises above 200 gallons. To model this scenario, enter the following logic in the subroutine controlling the flow

from TankAto TankB:

Tank_Loop //logicr epeatscontinuously

{

WAIT UNTIL Tank_Level[TankA]>200

Tank_TransferDownTo(TankA, TankB, 200, 50, 0)

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 273/715

}

See Also

see SplitTransfers on page 280.

Tank_SetLevel

Syntax samples

TANK_SETLEVEL (<Tank ID>, <Quantity>)

TANK_SETLEVEL (TankA, 1500)

Description

Instantlysetsthe level of a tankto a specified quantity. If the quantity isnegative or larger than the tankcapacity, an error 

occurs. The tankstate setsto Tank_Blocked if you set the tanklevelto the tankcapacity and to Tank_Idle if you set the tank

level to 0. Otherwise, the state remains unchanged.Use Tank_SetLevel when you want to initialize a tank to a specificlevel.

Components

<Tank ID>

The tankname or location indexnumber.

<Quantity>

The level at which to set the tank (number of gallons, pounds). To completelyfill the tank, enter Tank_Cap(<Tank

Name>).

ExampleWhen you begin a simulation,you wishto set the initiallevelof a supply tank, TankX, to 10,000gallons. To modelthis,

enter the following statement in the initialization logic for the model.

Tank_SetLevel(TankX, 10000)

See Alsosee Initializing and Replenishing Supply Tanks on page 276.

Tank_Inc

Syntax samples

TANK_INC (<Tank ID>, <Quantity>)

TANK_INC (StorageTank, 5000)

Description

Instantlyincreases the level of a tank by a specified quantity. If the tankhas insufficient capacity, the level increases as

capacity becomesavailable. ProModelsets the tankstate to Tank_Blocked if the level increases to the tankcapacity,

©ProModelCorporation

Building the Model: General Elements 260

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 274/715

261 ProModel 2011 User Guide

otherwise the state remains unchanged.Use Tank_Inc to instantlyadd a specificquantity to a tank.

Components

<Tank ID>

The tankname or location indexnumber.

<Quantity>

The number of units by which to increment the contents of the tank(gallons, pounds).

Example

Trucksdeliver pelletsto a holding bin twicea day. When a truck arrives at thedrop-off station, it dumpsthe entire 5,000 lb

load in only 2.5 minutes. To model this, define the following operation logic for the truck at the drop-off station:

WAIT 2.5 MIN

Tank_Inc(HoldingBin, 5000)

Tank_Dec

Syntax samples

TANK_DEC (<Tank ID>, <Quantity>)

TANK_DEC (SupplyTankB, 1000)

Description

Instantly decreases the level of a tankby a specified quantity. If the tankhas insufficient quantity, it empties as material

becomesavailable. ProModelsetsthe tank state to Tank_Idle if you decrease the level to 0. Otherwise the state remains

unchanged.Use Tank_Decto instantly remove a specificquantity from a tank.

Components

<Tank ID>

The tankname or location indexnumber.

<Quantity>

The number of units by which to decrement the contents of the tank(gallons, pounds).

Example

 A fill tank fills one 10-gallon container every 15 seconds. After filling, each container moves to a location called FillStation.To model this activity, define the following activated subroutine (this subroutine createsa filled container every 15 sec-

onds):

Tank_Loop //logicr epeatscontinuously

{

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 275/715

WAIT 15 SEC

Tank_Dec(FillTank, 10)

ORDER 1 Container TO FillStation

}

See Also

see Tankson page 248.

Tank_RiseTrigger 

Syntax samples

TANK_RISETRIGGER (<Tank ID>, <Level>)

TANK_RISETRIGGER (TankA, 3000)

Description

Waits until tankcontents rises to a specificlevel. Use Tank_RiseTrigger to initiate some action when a tankrises to a cer-

tain level.

Components

<Tank ID>

The tankname or location indexnumber.

<Level>

When the tanklevel rises to this value, ProModelexecutes any subsequent logic.

Example

 A tanker waits at a dispatch station until the levelof a finished goods tank rises to 2,000 gallons. Once the tank level

reachesthis point, a signaldispatches the tanker to the finished goods tankfor loading. Meanwhile, the finished goods

tankcontinuesfilling. To model this situation, define the following process logic for the tanker at the dispatch station:

Tank_RiseTrigger (FGTank, 2000)

Please note

Using the Tank_RiseTrigger subroutine instead of a WAIT UNTIL statement prevents the n ext tanker fromdispatching until the finished goods tank falls back below 2,000 gallons.

See Also

see Defining Trigger Levels on page 281.

©ProModelCorporation

Building the Model: General Elements 262

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 276/715

263 ProModel 2011 User Guide

Tank_FallTrigger 

Syntax sample

TANK_FALLTRIGGER (<Tank ID>, <Level>)TANK_FALLTRIGGER (TankB, 500)

Description

Waits untiltank contents fallsto a specified level.

Use Tank_FallTrigger to initiate an action when a tanklevel fallsto a specificlevel.

Components

<Tank ID>

The tankname or location indexnumber.

<Level>

When the tank level fallsto this value, anysubsequent logic executes.

Example

When an in-process tank, TankX, fallsto 1000 gallons, it triggers a mixing tank to begin producing more product. To

model this, define the following activated subroutine to controlthe mixing tank:

Tank_Loop //logicr epeatscontinuously

{

Tank_FallTrigger(TankX, 1000)

[Insert logic to mix new batch here]

}

Please note

Using Tank_FallTrigger instead of a WAIT UNTIL statement p revents the action from triggering again

until t he level first rises above the fall trigger level.

See Also

Defining Trigger Levels

Tank_Cap

Syntax samples

TANK_CAP (<TankID>)

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 277/715

TANK_CAP (TankA)

Description

Returns the capacity defined for the specified tank.

Use Tank_Cap when you need to know the definedcapacity for a tank.

Components

<Tank ID>

The tankname or location indexnumber.

Tank_FreeCap

Syntax samples

TANK_FREECAP (<TankID>)

TANK_FREECAP (TankA)

Description

Returns the available capacity of the specified tank.Use Tank_FreeCap when you need to know theavailable capacityof a tank.

Components

<Tank ID>

The tankname or location indexnumber.

Tank_DoOperation

Syntax samples

TANK_DOOPERATION (<Tank ID>, <Operation time>)

TANK_DOOPERATION (TankA, 30)

Description

Sets the state of the tankto Tank_Operation and waits for the specified operation time. ProModelsets the state to Tank_ 

Blocked after the operation.

Use Tank_DoOperation when some activity or treatment time isnecessary for the material in a tank.

Components<Tank ID>

The tankname or location indexnumber.

<Operation time>

©ProModelCorporation

Building the Model: General Elements 264

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 278/715

265 ProModel 2011 User Guide

The duration (in time units defined in the GeneralInformation dialog) of the operation.

Example

 After technicians add all the necessary ingredients to the mixing tank, the tank requires a 20 minute mixing time. To define

thisoperation, enter the following statement in the subroutine for the mixing activity:

Tank_DoOperation(MixingTank, 20)

See Also

see Tanks on page 248.

Tank_GoDown

Syntax samples

TANK_GODOWN (<TankID>, <Down time>)

TANK_GODOWN (TankA, 5)

Description

Setsthe state of the tank to Tank_Down, waitsfor thespecified downtime,then setsthe state backto the previousset-

ting.If you defined a downtime using the location downtime dialog, callthe Tank_GoDown subroutine in the downtime

logic rather than use a WAIT statement. If the downtime isfor cleaning, use the Tank_DoPrep subroutine.

Use Tank_GoDownto shut down a tank dueto equipment failure (e.g.,pump failure).If the downtime occursperi-

odically, you can define a clock downtime in the downtime logic for the tank location and use Tank_GoDown in place of 

the WAIT statement.

Components

<Tank ID>

The tankname or location indexnumber.

<Down time>

The duration (in time units defined in the GeneralInformation dialog) of the downtime.

Example

 A fill line from a dry supplybin plugs randomly according to an exponential distribution with a mean of 10 minutes. The

time to unplug the line isnormallydistributed with a mean of 5 minutesand a standard deviation of 1 minute. To define this

behavior, define a clock downtime for the bin to occur with a frequency of E(10) minutes. In the logic defined for the down-

time, enter the following logic:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 279/715

Tank_GoDownSched

Syntax samplesTANK_GODOWNSCHED (<TankID>, <Down time>)

TANK_GODOWNSCHED (TankA, 5)

Description

Sets the state of the tankto Tank_ScheduledDown, waits for the specified scheduled downtime, then sets the tankstate

back to its previous setting. If you defined a scheduled downtime using the location downtime dialog, callthe Tank_ 

GoDownSched subroutine in the downtime logic rather than use a WAIT statement. If the downtime isfor cleaning and

you will return the tank statusto idle, use the Tank_DoPrep subroutine.

Use Tank_GoDownSched to shutdown a tank for a scheduled task or event (e.g., interim maintenance or end of sched-

uled workday). Since the tank uses a scheduled downtime, the time lapsed during the event does not record asa down-time.

Components

<Tank ID>

©ProModelCorporation

Building the Model: General Elements 266

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 280/715

267 ProModel 2011 User Guide

The tankname or location indexnumber.

<Down time>

The duration (in time units defined in the GeneralInformation dialog) of the scheduled downtime.

Example

Every4 hours, a technician must check the fillline from a drysupply bin. The time required to check the line isnormallydis-

tributed with a mean of 10 minutesand a standard deviation of 3 minutes. To define this behavior, define a clock-based,

scheduled downtime for the bin to occur with a frequency of 4 hours. In the logic defined for the downtime, enter the fol-

lowing:

Tank_DoPrep

Syntax samples

TANK_DOPREP (<TankID>, <Prep time>)

TANK_DOPREP (TankA, 5)

Description

Sets the state of the tankto Tank_Setup, waits for the specified time, then sets the state to Tank_Idle. Use Tank_DoPrep

for cleaning activitiesafter you empty a tank.Use Tank_DoPrep to take a tankoff line for cleaning or other preparation time.

Components

<Tank ID>

The tankname or location indexnumber.

<Prep time>

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 281/715

The duration (in time units defined in the GeneralInformation dialog) of preparation time.

Example

Workers clean a mixing tank for 30 minutes after each batch produced. To model this, enter the following logic in the mix-

ing subroutine defined for the mixing tank:

Tank_Loop //logicr epeats continuously

{

[Enter mixing and transfer logic here]

Tank_DoPrep(MixingTank, 30)

}See Also

see Tankson page 248.

Tank_SetState

Syntax samples

TANK_SETSTATE (<Tank ID>, <State>)

TANK_SETSTATE (TankA, Tank_Idle)

Description

Sets the state of the tank(e.g., Tank_State[<Tank ID>]) to a new state and updatesthe statistics since the last change of 

state.

Use Tank_SetState to explicitlychange the state of a tank. Use Tank_SetState only if the default state changes do not

adequatelymeet modeling needs.

Components

<Tank ID>

The tankname or indexnumber.

<State>

The new state for the tank.

Tank_SelectOutputSyntax samples

TANK_SELECTOUTPUT (<First Tank>, <Number of Tanks>, <Selection Rule>, <Maximum Level>, <Product

Type>)

TANK_SELECTOUTPUT (TankA, 3, Tank_InOrder, 5000, 0)

©ProModelCorporation

Building the Model: General Elements 268

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 282/715

269 ProModel 2011 User Guide

Description

Selects an output tankfrom among several tanks based on a selection rule and optionalproduct type. To use this func-

tion, list all tanks included in the selection decision together in the Location module.

Components

<First Tank>

The name or location index number of the starting tank in the range.

<Number of Tanks>

The number of tanksin the selection range (limit 10).

<Selection Rule>

The rule for making the selection may be one of the following:

Tank_InOrder (selectsthe first idle tank encountered)

Tank_LongestIdle (selectsthe tank idle the longest)

<Maximum Level>

The maximum level of the output tankbefore considering it for selection. Enter 0 if the output tankmust be empty

or idle before being considered.

<Product Type>

 An integer specifying the required value of the Product array in order to select the tank. Enter 0 if the tank selec-

tion requires no product type match. (Thisapplies only if the maximum level specified isgreater than 0.)

Example

 A supplytank feeds one of 3 output tanks and always givespreference first to Tank1, then to Tank2, and finally to Tank3based on availability. Furthermore, the supply tank can select a tankonlyif its contents are lessthan 8000 gallons. To

model this selection, list Tank1, Tank2, and Tank3 together (and in order) in the location module. Then define the fol-

lowing statement to select the tankusing a local variable, Selected_Tank:

INT Selected_Tank

.

.

.

SelectedTank=Tank_SelectOutput(Tank1, 3, Tank_InOrder, 8000,0)

The diagram below showsthe logic used to make a tankselection:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 283/715

If you base a tankselection on product type, you must be carefulto assign an appropriateinteger value to theProduct

array element corresponding to the tanklocation.

See Also

see Selecting from Multiple Input or Output Tanks on page 279.

Tank_SelectInput

Syntax samples

TANK_SELECTINPUT (<First Tank>, <Number of Tanks>, <Selection Rule>, <Minimum Level>, <Product Type>)

TANK_SELECTINPUT (Tank1, 5, Tank_ByOrder, 1000, 0)

Description

Selects an input tankfrom among several tanksbased on a selection rule. To use this function, you must list all tanks

included in the selection together in the Location module.

©ProModelCorporation

Building the Model: General Elements 270

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 284/715

271 ProModel 2011 User Guide

Components

<First Tank>

The name or location index number of the starting tank in the range.

<Number of Tanks>

The number of tanksin the selection range (limit 10).

<Selection Rule>

The rule for making the selection may be one of the following:

Tank_InOrder (selectsthe first blocked tank encountered)

Tank_LongestBlocked (selectsthe tank blocked the longest)

<Minimum Level>

The minimum level of the input tankbefore considering it for selection. If the tankmust be full before considering

it for an input source, enter 0.

<Product Type>

 An integer specifying the required value for the Product array in order to select the tank. Enter 0 if the tank selec-

tion requires no product type match.

Example

 A tanker arr ivesat a pickup station to load from one of 5 tanks depending on which tank has been full the longest. The

tanker will fill from a partialtankif thetankhas anycontentsat all (at least .1 gallons). To modelthe tank selection, define

the following operation logic for Tanker at PickUpStation:

INT SelectedTank

Selected_Tank=Tank_SelectInput(Tank1, 5, Tank_LongestBlocked, .1, 0)

See Also

see Selecting from Multiple Input or Output Tanks on page 279.

Tank_UpdateStats

Syntax samples

TANK_UPDATESTATS (<Tank ID>)

TANK_UPDATESTATS (TankA)

Description

ProModelcallsthissubroutine automatically whenever you callany of the predefined subroutines that affect the tank

level. If you change the value of the Tank_Level directly, callthe Tank_UpdateStatssubroutine afterward. This sub-

routine updatesthe current statistics on the tankand sets the state to Tank_Filling (if filling), Tank_Emptying (if 

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 285/715

emptying), Tank_Blocked (if full), or Tank_Idle (if empty).You should not need to use this subroutine unless you defined a customized Tank_Empty, Tank_Fill, or Tank_Transfer 

subroutine.

Components

<Tank ID>

The tankname or location indexnumber.

Tank_Rate

Syntax sample

TANK_RATE (<FROM tankID>, <TOtankID>)

TANK_RATE (TankA, TankB)

Description

ProModelcallsthis subroutine automaticallyif you pass a 0 value as the From Rate when using the Tank_Emptyor Tank_ Transfer subroutine. To return the desired rate value, enter the necessary logic in the subroutine—ProModel calls the sub-

routine with each time step.A return value of 0 terminatesthe flow andreturns theremaining amountin theTank_QtyLeft

variable.

Components

<FROM Tank>

The name or location index number of theFROM tank(this value should be 0 ifthere isno FROM tank).

<TO Tank>

The name or location index number ofthe TO tank(this value should be 0 ifthere isno TO tank).

Example

TankA fillswith 10,000 gallonsat a rate of 60 gpm until itreachesa level of 9,700 gallons. Thenit fillsat a rate of 30 gpm.

To model this change of rate, define the following logic in the Tank_Rate subroutine:

IF Tank_ToID=TankA

THEN IF Tank_Level[TankA]<9700

THEN RETURN 60

ELSERETURN 30

Now when you fillTankA, enter the following:

Tank_Fill(TankA, 10000, 0, 0)

The first 0 in the expression above causes the logic defined in the Tank_Rate subroutine to execute and determine the

flow rate.

See Also

©ProModelCorporation

Building the Model: General Elements 272

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 286/715

273 ProModel 2011 User Guide

see Varying theTransfer Rate on page 281.

Pre-defined Data Elements

The ProModeltank submodel provides the following data elements for modeling tanks. Unless otherwise specified, all

arrays are single-dimensional and of type integer. Initially, these arrays are 100 elements in size to allow for up to 100locations. If you define more than 100 locations, you will need to enlarge the array or place tankstoward the beginning of 

the location list (within the first 100 locations).

Tank_Level array Stores the level of each tank. Since the values in this array directlycontrol the tankgauge and tank sta-

tistics, the array MUST be present in every tankmodel.

Tank_Statearray Tracksthe state of the tank.

Tank_Product array An optionalarray used to record or test the product currently at a tank.

Tank_Statistics array A two-dimensional array of type real used to record tank level statistics whenever the level

changes. Generally, you will never need to reference this array since values automaticallyupdate when you use the pre-

defined Tank subroutines. All times are in time units defined in the GeneralInformation dialog. ProModelalways gathers

these statistics but reportsthem only if you check Basicor Time Series statistics for the tanklocation.

Column Description Reset After Warm-up

1 Last level NC

2 Last change t ime Cur rent time i n time units

defined in the GeneralInfor-

mation dialog

3 Cum t ime-weighted

level0

4 Entries Value of column 1

5 Max contents Value of column 1

6 Last State Change Cur rent time i n time units

defined in the GeneralInfor-

mation dialog

7 Cum time Idle 0

8 Cum time Operation 0

9 Cum time Setup 0

10 Cum time Filling 0

11 Cum time Emptying 0

12 Cum time Blocked 0

13 Cum time Down 0

14 Current d owntime

countNC

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 287/715

 As shown in the previous table, the statisticscollected in the Tank_Statistics array automatically reset after any warm- up

period. ProModelreports output statistics under Location statistics and Location Statesby Percentage. When reporting

Location statistics for tanks, note the following:

l TotalEntries The number of units (e.g., gallons, pounds) to enter the tank.

l Avg Minutes Per Entry Left blank since there isno individualentry for a tank.

Tank_Fillsarray An optional array used to track the number of transfers to a tank. Thisis especially usefulwhen you acti-

vate multiple Tank_Fillor Tank_Transfer subroutines for a tankand you wish to know when the fills are complete. The

user setsthe value of Tank_Fills to zero before activating the subroutines, then defines a WAIT UNTIL statement after the

 ACTIVATE statement. The Tank_Fills array increments automatically when a Tank_Fill or a Tank_Transfer subroutine

executes. See Tanks on page 248 for additional information.

Statistics

Please note

TS = Tank_Statistics arrayn = Location index number of tank

Calculating Location Statistics for Tanks

Entries=TS[n, 4]

 Avg. Time per Entry = (not applicable)

 Avg. Contents = TS[n,3] / Scheduled Time

MaxContents=TS[n,5]

Current Contents= TS [n,1]

Utilization=100 x TS[n,3] / (Capacity x Scheduled Time)

Calculating Location State Statistics for Tanks

%Operation = 100 x TS[n, 8] / Scheduled Time

%Setup = 100 x TS[n, 9] / Scheduled Time

%Idle= 100x TS[n, 7] / Scheduled Time

%Waiting = 100 - Sum of other percentages

%Blocked = 100x TS[n, 12]/ Scheduled Time

%Down= 100 x TS[n, 13]/ Scheduled Time

To gather statistics on how much of a particular product was processed, you may define variables to record product proc-

essing during the simulation.

©ProModelCorporation

Building the Model: General Elements 274

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 288/715

275 ProModel 2011 User Guide

Defining Tank Control Subroutines

Unlike defining entity activity at a location (defined in the Processing module), modeling tanklocation activity requires the

use of subroutines. Manyof these subroutines are user-defined and called using the ACTIVATE statement. Though you

generallyactivate them from the initialization logic, you mayalso activate them from another tank subroutine. Tank sub-routinesconsist of logic defined to controlwhen, where, and how much to empty, fill, or transfer from a tank. Often, these

subroutines require the use of WAIT UNTIL statementsto monitor conditions( e.g., the tank level or state) before making

a transfer and may include delays for mixing or cleaning.

 At a minimum, you should define a separate control subroutine for any logicthat executesindependently of any other 

logic. For example, if TankA fills TankB at the same time TankB transfers to some other tank, you should define two sep-

arate subroutines since both sets of logic must be capable of executing independently of each other. On the other hand, if 

the logic associated with two tanksis interdependent, only one controlsubroutine isnecessary. For example, if TankA fills

TankB while TankB waits, then TankB pumps out while tankA waits, you need only a single controlsubroutine since you

controlboth tanks by a single logic sequence. If a single tank feeds several other tanks independently, you would need a

separate subroutine to controleach output. In most cases, you will need at least one controlsubroutine per tank and, in

certain situations, you may wish to use a hierarchical controlsystem (i.e., a master or supervisory controlsubroutine) toactivate subordinate subroutines.

Most tank controlsubroutinesshould be activated subroutines. In contrast to called subroutines, activated subroutines

use the ACTIVATE statement and cause the logic activating the subroutine to continue independently of the activated

subroutine. This allows you to execute multiple control subroutines concurrently. Multiple tankswith identical control logic

may share the same controlsubroutine ifyou activate the subroutine for eachtankand pass thetankID asa parameter.

One of the keysto modeling interactive tankbehavior is to effectivelyuse WAIT UNTIL statements. When you use WAIT

UNTIL statements based on the Tank_Level array, use them sparingly since this array changes frequently and may slow

the simulation.

Examples of Tank Control Logic

The following examples show how to model different tank and flow situations. For full modelsillustrating these situations,

see the reference model in the MODELS\REFS directory within the ProModeldirectory.

Filling from an Entity 

 A typical tank modeling situation is the arrivalof an entity (e.g., a tanker or other vehicle) to deliver its contents to a tank.

To model this situation, define an arrival or routing for the entity, causing it to enter the location where it will make its deliv-

ery. In the entity processing logic at the delivery location, callthe Tank_Fillsubroutine. By calling rather than activating the

subroutine, you will detain the delivering entity untilT ank_Fillexecutes. Note that the materialdoes NOT route from the

delivery location to the tank. Instead, the Tank_Fill subroutine simply fills the tank with a specified quantity while the entity

waits. Unless the quantityis a constant amount, it is usually a good idea to use an entityattribute to store thisquantity

value. After filling the contents into the tank, the entity isfree to continue processing.

To illustrate how an entity might transfer its contents to a tank, suppose an entity, Tanker, arrives at a location, Delivery,

carrying a quantity of gallons stored in an entity attribute called Tanker_Qty. The tanker discharges its contents into a

tank, ReceivingTank, at a rate of 200 gallons per minute. Once the ReceivingTank becomesfull, the level must drop to

1000 gallons before filling resumes. Since the entity istied up while it discharges into the tank, use the following statement

in the processing logic for Tanker at Delivery to define the logic used to fillthe tank:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 289/715

Fill the tank

Tank_Fill (ReceivingTank, Tanker_Qty, 200, 1000)

The above statement causes each arriving tanker to wait until the quantity stored in its Tanker_Qty attribute addsto the

ReceivingTank. Once the tanker delivers this quantity, it isfree to execute the routing defined for it at the Delivery location.

Initializing and Replenishing Supply Tanks

 A supplytank is an originating tank that is a source of raw material for one or more downstream tanks. Often, supplytanks

contain ingredientsthat feed into a mixing tank or hold chemicalsthat feed into a reactor. Typically, you replenish a supply

tankwhen it gets low and make it available for use whenever it hasan adequate supply. If you always stock the supply tank

andit isalways available for use, you do NOT need to modelit since it poses no constraint on theprocess.You mayset

supply tanksto an initial level at the start of the simulation in the initialization logic, then use them as needed by a mixing or 

other downstream tank. To initialize the level in a supply tank, enter the following statement in the initialization logic:

Initialize tank level

Tank_SetLevel (<supplytank>, <qty>)If, for example, you wanted to begin the simulation with the supply tank, WaterTank, filled with 800 gallons of water, you

would enter:

Start with full tank

Tank_SetLevel (WaterTank, 800)

To graduallyfill or refilla supply tankwhenever it dropsbelow a trigger level, use the Tank_Fill subroutine with a large fill

quantity and an appropriate resume level. For example, the following statement will continue pumping up to 999999 units

into TankAat a rate of 200 units per minute. Whenever the tank becomesfull, it mustdrop to 400unitsbefore filling

resumes.

Resume fill with trigger levelTank_Fill (TankA, 999999, 200, 400)

Mixing and Reactor Tanks

Mixing and reactor tanksr eceive material usuallyfrom one or more supply tanks. Once it receives the material, the tank

may require a mixing or other reaction time. To illustrate, suppose we have two tanks (Tank1 and Tank2) supplying ingre-

dients to a tankcalled MixingTank. First, workers pump 2000 gallons of a liquid from Tank1 at 50 gallons per minute fol-

lowed by the transfer of 300pounds of drymixfrom Tank2at 20 poundsa minute (thedry mix adds .2 gallonsto the level

of the MixingTank for every pound transferred, equating to 4 gallons per minute). The ingredientsthen mix for 15 minutes

before transferring to an idle storage tank. After transferring the mix, workers must clean the MixingTank for 50 minutes to

prepare it for the next mixing cycle.

The controllogic for the mixing tankshould be a subroutine activated from the initialization logic which continuesto loop

throughout the simulation. The subroutine logic might appear as follows:

Mix and clean the tank

Tank_Loop //logicrepeats continuously

BEGIN

©ProModelCorporation

Building the Model: General Elements 276

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 290/715

277 ProModel 2011 User Guide

Tank_Transfer (Tank1,MixingTank,2000, 50, 0, 0)

Tank_Transfer (Tank2,MixingTank, 300, 20, 4, 0)

Tank_DoOperation (MixingTank,15) //Mixtime

Wait UntilTank_State [StorageTank]= Tank_Idle /* Waits for storage tank availability */

Tank_Transfer (MixingTank, StorageTank,

Tank_Level[MixingTank],40, 0, 0)

Tank_Prep (MixingTank, 50) // Clean mixing tank for 50 minutes.

END

If the ingredientsfeed into the mixing tank at the same time rather than sequentially, activate the Tank_Transfer sub-

routinesfor the mixing tank and monitor the Tank_Fillsarray to know which ingredientsenter into the tank. For simul-

taneousfills, replace the first two transfer statements following the BEGIN statement in the previous subroutine with the

following logic:

Simultaneously mix, then clean tankTank_Fills[MixingTank]=0

 ACTIVATE Tank_Transfer(T ank1, MixingTank, 2000, 50, 0, 0)

 ACTIVATE Tank_Transfer(T ank2, MixingTank, 300, 20, 4, 0)

WAIT UNTIL Tank_Fills[MixingTank]=2

...

Emptying to an Entity 

Often, tanks deliver material to discrete entities such as containers (or perhaps the material itself converts to discrete enti-

ties through a solidification or consolidation process). In either case, you can draw from the delivery tank using the Tank_ Emptysubroutine if outflow isgradualand defined bya flow rate, or the Tank_Decsubroutine if the output occursin dis-

crete intervals based on a bottling or packaging time.

To output materialfrom a tankwithout modeling the entity to which it outputs, callthe Tank_Emptyor Tank_Decsub-

routine. To transfer materialfrom a tankto entities arriving at a filling station (remember, the filling station itself isNOT a

tank), route the entities to the filling station using a SEND or other routing rule, then callthe Tank_Emptyor Tank_Dec

subroutine.

If using the Tank_Decsubroutine, the entity should wait for the filltime before decreasing the tanklevel since Tank_Dec

happens instantly . For example, if a bottling operation fills a 2 gallon container every 6 seconds, define the following proc-

essing logic for the container at the fill station:

Wait to fill from tank, then continue

Wait 6 sec

Tank_Dec( Filler, 2)

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 291/715

If the delivery tankhas insufficient contents to decrease the level by the specified amount, the processing will automatically

pause until enough materialis available. Once the specified quantity empties, the entity can continue processing. To

create an entity as the result of an emptying operation, define an activated subroutine that empties the desired quantity,

then execute an ORDER statement. Thiswill create a new entity at the filling station.

Tank Transfers

When transferring from one tankto another, you must determine whether the source tankmakes the decision to transfer 

to the destination tank (a push approach) or whether the destination tankmakesthe decision to draw materialfrom a

source tank(a pull approach). You should define a controlsubroutine from the perspective of the tankthat makes the deci-

sion. If the model requires no tankselection, specify a WAIT UNTIL statement to wait untilthe FROM or TO tank satisfies

the condition required for transfer. For example, if a source tankmakes the decision to transfer to a destination tank when-ever the destination tankbecomes idle, enter the following statement in the subroutine:

Transfer contents when idle

Wait Until Tank_State [<destination tank ID>] = Tank_Idle

©ProModelCorporation

Building the Model: General Elements 278

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 292/715

279 ProModel 2011 User Guide

If the destination tankmakes the decision to transfer (a pull approach), you should base the WAIT UNTIL statement on a

required condition for the source tankas follows:

Transfer contents based on condition

Wait Until Tank_State [<source tankID>] = Tank_BlockedFollowing the WAIT UNTIL statement, callthe Tank_Transfer, Tank_TransferUpTo, or Tank_TransferDownTo sub-

routine to transfer from the source tank to the destination tank.To illustrate how to define a tanktransfer using a pull approach, suppose that TankB requires 1000 gallons from TankA

whenever TankB becomesempty. TankB will draw material from TankA only when TankA has a minimum level of 1000

gallons. The subroutine to define this logic might appear as follows:

Tank transfer in a pull system

Tank_Loop //logicr epeatscontinuously

Begin

Wait Until Tank_Level[TankA] >= 1000 /*Wait for TankA to reach 1000 gallons*/

Tank_Transfer (TankA, TankB, 1000, 200,0,0) /*T ransfer 1000 galto TankB at 200 gpm*/

[Enter TankB processing and emptying logic here]

End

Please note

To select from among multiple input or output tanks, activate this subroutine in the initialization logic.

Selecting from Multiple Input or Output Tanks

To enable one or more tanksto select from several input or output tanks, use the pre-defined subroutine Tank_Selec-tInput or Tank_SelectOutput (see subroutine descriptions). ProModelbases tankselection on which tankis readyto

transfer or receive and that has the same ProductType array value. You must list the tank selections together in the Loca-

tion module.

For example, if TankX selects from among three input tanks (Tank1, Tank2, and Tank3) based on which input tankhas

waited the longest to discharge its contents, you would enter the following logic in the controlsubroutine defined for 

TankX:

Select from multiple tanks

Int SelectedTank

SelectedTank = Tank_SelectInput(TankX, Tank1, 3,

Tank_LongestBlocked, 0)

The first statement defines a local variable, SelectedTank, used to assign which tankyou select. The second statement

calls the SelectInput subroutine specifying that TankX isto select one of three tanksbeginning with Tank1. Tank_Lon-

gestBlocked causes TankX to select the tank blocked the longest (i.e., tankis full or waiting). Entering 0 at the end pre-

vents selecting a full tank. If no tank is full,the statement does notexecute until one of the input tanks fills.With a tank ID

assigned to SelectedTank, you can calla transfer subroutine to make the transfer.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 293/715

For output tanks, you would define similar logic but include Tank_SelectOutput instead of Tank_SelectInput .

Split TransfersSometimesit isnecessary to use a tankor separator to split the flow to several output tanks. To define the concurrent

transfer of material from one tankto multiple tanks, define an activated subroutine for each transfer. Suppose, for exam-

ple, that when TankA fills it beginstransferring toTankB at a rate of 30 gpm and toTankC ata rate of 40 gpm. To know

when both transfers are complete, define a globalvariable (e.g., TransferDone) which incrementsat the end of each

transfer. Defining the following logic would initiate this split transfer once TankA isfull:

Initiate split transfer 

 ACTIVATE TransferToB () // initiates transfers from A to B

 ACTIVATE TransferToC () // initiates transfers from A to C

WAIT UNTIL TransferDone = 2 // Wait untiltransfers are complete

TransferDone= 0 // reset for nexttransfer 

The subroutines TransferToB and TransferToC would each execute a Tank_TransferDownTo command followed by a

statement incrementing the value of TransferDone. For example, the logic for TransferToB would be as follows:

©ProModelCorporation

Building the Model: General Elements 280

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 294/715

281 ProModel 2011 User Guide

Split transfers subroutines

TransferDownTo(TankA, TankB, 0, 30, 0)

INC TransferDone

Varying the Transfer Rate

The transfer or emptyrate can change dynamicallyduring an empty, fill, or transfer. To varythe rateof flow, pass 0 asthe

flow rate when calling anyof the transfer, fill, or empty subroutines. Thiscallsthe Tank_Rate subroutine automatically

with each time step. You should modify the Tank_Rate subroutine so that it returnsthe appropriate rate value.Suppose, for example, that TankA transfers to TankBat a rate that decreasesfrom 150gpm to 50 gpm when the levelof 

TankBreaches4000. To achieve this, pass 0 asthe From Rate when you call thetransfer subroutine,then enter the fol-

lowing logic in the Tank_Rate subroutine:

Vary the transfer rate

IF (Tank_FromID = TankA) AND (Tank_ToID = TankB)

THEN IF Tank_Level[TankB] >= 4000

THEN RETURN 50

ELSE RETURN 150

Dynamically Suspending Flow 

To momentarily interruptflow intoor outof a tank, use the Tank_GoDown subroutine or set the state of thetankto down

(Tank_SetState = Tank_Down). Thistypically happensif a pump failsbut mayoccur in other situations.

Dynamically Terminating a Flow 

Normally, the flow into or out of a tankstops once you reach the desired quantity or level. However, in some situations you

maywish to terminate a transfer if some event or condition occurs that you cannot predetermine (e.g., a decision to divertflow to a preferred outlet tankthat justbecame available). In this case, you can turn offthe flow into or outof a tankby

specifying a variable transfer rate instead of a fixed transfer rate (see previous discussion, Varying the Transfer Rate). A

variable transfer uses the Tank_Rate subroutine to determine the rate for each time step—to terminate a transfer,

returna rate value of 0.

Defining Trigger Levels

 A trigger level is a levelto which material in a tank either fallsor rises and triggers some action. To continuously monitor 

when a tankreaches a trigger level, define and activate a trigger subroutine in the initialization logic. The subroutine

should call Tank_RiseTrigger or Tank_FallTrigger depending on whether the associated action should execute when

the tanklevel rises or falls to a certain level.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 295/715

To show how to define a trigger subroutine, suppose that whenever TankA rises to 2000 gallons, an entity called Truck

travels to a location called Pickup. The logic for this trigger subroutine might look as follows:

Trigger subroutine

Tank_Loop //logicr epeats continuously

Begin

Tank_RiseTrigger (TankA, 2000) /* waits for TankA to rise to 2000 units*/

Order 1 Truck to Pickup // order a Truck to Pickup

End

Once the tankreaches the trigger level, the Tank_RiseTrigger subroutine preventsfurther triggering until the level drops

backbelow the trigger level first.

When you use trigger subroutines, use them sparingly because they are CPU intensive. Everytime the tank level

changes, ProModelteststo see if the tank reached the trigger level. Trigger subroutines are often unnecessary because,

©ProModelCorporation

Building the Model: General Elements 282

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 296/715

283 ProModel 2011 User Guide

unlike an actualtank where sensors report the tanklevel, you directlycontrol how much to pump into a tank. For instance,

an alternative way to model the previous example without using a triggering subroutine would be to callthe Tank_Trans-

ferToLevel subroutine to first fillthe tank to the 2000 unit level, order the Truckentity and then transfer the rest.

Processing Multiple Products

Where you must track several different products through one or more tanks, it may be usefulto define macros for naming

each product type. For example, setting ProductA equal to 1 and ProductB equal to 2 will improve the readability of the

model. To track which product a particular tank isprocessing, ProModel uses a pre-defined integer array called Tank_ 

Product—the user isr esponsible for maintaining the array values. If, for example, ProductA begins pumping into Tank1,

enter the following after you assign an integer value to ProductA in the Macros module to distinguish it from other prod-

ucts:

Tracking products

Tank_Product [Tank1] = ProductA

Showing Pipes

To show pipes connecting the tanks, use paths or background graphics. If you desire to show the material in the pipe, usea long,skinnytankwith a capacityof 1 to represent the pipe.You can set thelevelof this tank to 0 or 1 to show product

flow. For example, suppose we define a tanklocation called Pipe used to represent the connection between Tank1 and

Tank2. Whenever transferring from Tank1 to Tank2, you would enter the following:

Define pipes

Tank_SetLevel (Pipe,1)

Tank_Transfer (Tank1, Tank2, ….)

Tank_SetLevel (Pipe, 0)

High-Rate Entity Processing 

For systems that process entities at rateshigher than one hundred units per minute, using discrete entities could make

the simulation extremelyslow. For this reason, ProModelusestanks. To use a tankto model high-rate processing, think

of the tankas a buffer where thetanklevel representsthe number of items in thebuffer. For example, supposethat bot-

tles feed through a filling station at a rate of 110 per minute.The input buffer, FillerInput, hasa capacityof 1200 bottles

and the output buffer, FillerOutput, has a capacity of 2000 bottles. If FillerOutput isfull, processing stops until the quantity

in the output buffer drops to 1500 bottles. An arriving container feedsquantities of 200 bottles to the FillerInput location

and it takes 1 minute to unload thecontainer.When thefilling station fills 50 bottles, workersput thebottles intoa box(rep-

resented by an entity) and ship them. Since workers load the boxes as soon as the bottles complete the filling process,

there isno delay time involved.

The operation logic for the container at the arriving location would be as follows:

High-rate processing

WAIT 1 min

Tank_Inc( FillerInput, 200)

To model the processing of bottles from FillerInput to FillerOutput, enter the following statement in the model initialization

logic.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 297/715

High-rate processing

 ACTIVATE Tank_Tr ansfer(FillerInput, FillerOutput, 999999, 110, 0, 1500)

Thisstatement causes the FillerInput tankto transfer bottles to FillerOutput at a rate of 110 per minute whenever there

are bottles in FillerInput and capacity available in FillerOutput. The resume level is1500. (Up to 999999 bottles will trans-fer.)

To model the creation of a 50-bottle box each time the filling station fills 50 bottles, define and activate the following sub-

routine in the model initialization logic:

Create new, combined unit

Tank Loop //causes logic to repeat continuously

{

Tank_Dec(FillerOutput, 50)

Order 1 Boxto Shipping

}

Please note

The Tank_Dec statement automatically removes 50 bottles from FillerOutput whenever there are at least 50 

bottles available.

Special Notes

l Since tankmodels do not stop automatically when there are no more entities or scheduled arrivals, remember to

define a run length or a STOP statement.l When you activate a subroutine, it doesn't process untilthe current logic (the one activating the subroutine) fin-

ishes or becomesblocked. It you want the activated subroutine to process first , enter “WAIT 0” after the ACTI-

VATE statement.

l Do not define a local variable inside of a Tank_Loop since the loop will create the variable multiple times.

l Make sure all IF...THEN logic and WAIT UNTIL statements based on the Tank_Level array use the “>=” or “<=”

operator and not just an “=” operator. (Thisis because flow occurs in incrementsand you can’t check for an exact

value.)

l Tanks are not legalin multi-unit locations or in locations containing a conveyor or queue.

Background Graphics

Background graphics allow you to enhance a model by adding a background to the animation. A background could show a

floor-plan of a factory or anyitem that isnot part of a location, entity, or resource. Backgrounds can be created using the

tools in the Background GraphicsEditor or by importing an existing background from another application, such as Auto-

CAD. Imported graphicsmust havebeen saved inone of thefollowing formats BMP, EMF, WMF, GIF, or PCX. The Back-

ground GraphicsEditor is accessed from the Build menu as shown below.

©ProModelCorporation

Building the Model: General Elements 284

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 298/715

285 ProModel 2011 User Guide

There are two modes for editing in the Background GraphicsEditor: Front of Grid and Behind Grid. Generally, most

graphics should be laid out in front of the grid. Graphicsplaced behind the grid should be reserved for large objects such

as walls or imported backgrounds.

How to create or edit b ackground graphics:

1. Select Background Graphics fromthe Build menu.2. Select Front of Grid or Behind Grid depending on the mode desired.

Background Graphics Editor Modes

ProModelgivesyou the option of placing the backgroundgraphicin front of or behind thegrid. This isuseful when you

want to view the importedbackground graphic, but you alsowant to see the grid for drawing andsizing objectson the

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 299/715

imported background graphic.

Front of Grid Mode

Creating graphicsin this mode placesthe backgroundgraphicin front of the grid asshown below.

Behind Grid Mode

Creating graphics in this mode places the background graphicbehind the grid as shown below.

©ProModelCorporation

Building the Model: General Elements 286

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 300/715

287 ProModel 2011 User Guide

Background Graphics Editor 

The Background GraphicsEditor allows you to place icons, text and other graphicshapes on the layout behind locations

and other system element graphics. The arrangement of the two windowsand button bar isshown below.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 301/715

l The Library Graphicswindow, containing all the iconsin the current graphiclibrary, islocated at the top of the

workspace.

l The Tools button bar,where you mayselect a tool for creating and editing graphic shapes, is located at the left of 

the workspace.

l The Layout window, where all creating and editing of graphicshapes isdone, islocated in the lower right portion

of the workspace.

Library Graphics Window 

The Library Graphicswindow contains the icons of the current graphiclibrary file, specified in the GeneralInformation

dialog. These icons maybe placed on the Layout in the same way as other objects.

You may size the window as desired, or use the scroll bar shown above to scroll through the available icons.

Tools Button Bar 

The Tools button bar contains the toolsnecessary to create objects various shapes. It also contains tools for editing those

objectsincluding flip, rotate, and cut.

©ProModelCorporation

Building the Model: General Elements 288

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 302/715

289 ProModel 2011 User Guide

The Background GraphicsEditor Tools button bar isthe nearly the same Tools button bar used in the Graphic Editor.

The only difference isthat the Background GraphicsEditor Tools button bar does not contain an entity spot or statuslight

tool. For moreinformation on theTools button bar, see Graphic Tools Button Bar on page 427.

Edit Menu 

Use the Edit menu for selecting and duplicating the graphicobjects in the current Background Graphicsmode. You may

also use it to exchange graphics with other applications. To use the Edit menu functions, select the object you wish to edit

by clicking on it in the Layout window.The first four functionsapplyto the currently selected object. To select multiple objects, hold the shift key while selecting

an object. Alternativelyyou can drag a rectangle encompassing the objects you want selected. To deselect one of several

selected objects, click on the selected object while holding the shift key.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 303/715

Cut Removes the selected object(s) and makes a temporary copy that may be pasted back into the edit window later.

Copy Makesa temporary copyof the selected object(s) for later pasting.

Paste Adds the most recently cut or copied object(s) to the Layout window.

Delete Deletesthe selected background graphicfrom the Layout window.

Select All Selects all of the graphicobjects in the current mode.

Copy to Clipboard Copies all graphicobjects in the current mode to the clipboard as a bitmap or windowsmetafile so

theycan be pasted into another application such as a word processor.

Paste WMF Pastesa Windowsmetafile (WMF) from the Windows clipboard into the Layout window. You must have pre-

viouslycopied a Windowsmetafile to the Windows clipboard.

Paste BMP Pastesa bitmap file (BMP) from the Windowsclipboard into the Layout window. You must have previously

copied a bitmap file to the Windows clipboard.

Import Graphic Imports a WMF, EMF, BMP, PCX, or GIF file into the Layout window.

Export Graphic Exportsall graphicobjects in the current mode to a WMF or BMP file.

Importing a Graphic 

Importing a background graphiccan bring reality into the model. For example, if a layout iscreated in a graphicpackage, it

maybe desirable to importthe entire layoutrather than create itin ProModel. This isdoneby saving thefile ina graphic

package, such as AutoCAD, as a WMF, EMF, BMP, PCX, or GIF file and importing the graphicinto ProModel. This can

©ProModelCorporation

Building the Model: General Elements 290

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 304/715

291 ProModel 2011 User Guide

save you an extensive amount of time.

How to import a background graphic into the layout:

1. In a graphicsapplication, save the graphic inone of the following formats,WMF, EMF, BMP, PCX, or GIF.

2. Select Background Graphicsfrom the Build menu.3. Select Frontof Grid or Behind Grid.4. Select Import Graphicfrom the Edit Menu.5. Enter thename of the graphic you would like to import or browse to thedirectorywhere the graphic islocated.6. Select OKto close the import graphic dialog box. The graphic willthen appear in the layoutwindow. The upper 

left corner of the imported graphicwillalign with the upper left corner of the layout window.

How to move an imported background graphic:

1. Place thecursor on the importedbackground graphic anddrag itto the desired location in the layout.

How to size an imported background graphic:

1. Place thecursor on oneof the four cornersof the importedbackground graphic.The cursor becomes a cross-hair at thispoint.

2. Drag the cursor to size the background graphic as desired.

Please note

Once imported, the b ackground graphic is not a separate file from the model. It is included in the model.

Therefore, when moving or copying a model file from one d irectory to another, it is not necessary to

move or copy the imported background graphic file as well. On the other hand, if the external graphic file

is changed, it must be re-imported to update the model layout.

Exporting a Graphic 

In some cases, it isdesirable to export a graphiccreated in ProModel for use in another application. ProModelwill export

all objectsin thecurrent mode (In Frontof Grid and Behind Grid) as one graphic to a WMF or BMP file.

How to export a graphic:

1. Select Export Graphic from the Edit menu.2. Enter a valid DOS name for the graphicin the resulting dialog box, such as forklift.bmp.3. Click the OK button in the Export Graphic dialog box.

Graphics Menu 

The GraphicsMenu allows you to flip and rotate the selected graphicobject(s) in the layout window. It also allows you to

specify whether you want the graphicto be behind or in front of the grid. Additionally, it allows you to group selected

graphicobjects together into a single graphic. Finally, it provides the option to define line styles, fillpatterns, line color, and

fillcolor.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 305/715

Flip Horizontal Horizontally flips the selected object(s).

Flip Vertical Vertically flips the selected object(s).

Rotate Rotates the selected object(s) 90 degrees clockwise. Thisdoes not apply for non-true-type fonts.

Behind Grid Moves theselectedobject in the layoutwindow behind the grid. Oncethis is done, you mustgo to Behind

Grid mode to edit the graphic.

Front o f Grid Movesthe selected object inthe layout window in front of the grid. Once this isdone, you must go to Front

of Gridmode to edit the graphic.

Group Combines or groups several graphicobjects into a single graphicso they may be sized and edited together.

Ungroup Ungroups several grouped graphicobjects so theymay be edited individually.

Lock Locksa graphicin place so that it can’t be moved. This ishelpful for preventing accidental moving of a graphicthat

you wish to leave stationary.

©ProModelCorporation

Building the Model: General Elements 292

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 306/715

293 ProModel 2011 User Guide

Unlock Unlocksa locked graphic, allowing it to be moved on the layout.

Alignment When multiple objectsare selected on the layout, they can be aligned side to side, top to top, etc.

Line Styles Allows the user to define the line style including transparent, dashed, line thickness, and optionalarrow-

heads on either end of the line. If any objects are selected, the line styles of the selected objects are changed.

Fill Patterns Allows the user to define the fillpattern for solid objects including slant, grid, crosshatch, backward slant,

horizontal, vertical, transparent, solid, vertical gradient, and horizontalgradient. If anyobjects are selected, the fillpat-

ternsof the selected objects are changed.

Line Color Allows the user to define the line color and create custom colors. If any objects are selected, the line color of 

the selected objects are changed.

Fill Color Allows the user to define the fillcolor and create custom colors for solid objects. If any objects are selected, the

fillcolor of the selected objects are changed.

Please note

 All functions in the Graphic menu of Background Graphics are n early the same f unctions described in

the Graphic Editor Graphic menu. Differences are no ted b elow for moving a graphic behind the g rid and 

in front of the grid. See Graphic Editor on page 411 for more information on the functions above.

How to move a graphic behind the grid:

1. Select thegraphicon the layoutusing theselector.2. Select Behind Grid fromthe Graphics menu.

How to move a graphic in front of the grid:

1. Select thegraphicon the layoutusing theselector.2. Select Front of Grid from the Graphics menu.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 307/715

Building the Model: Advanced Elements

The following Advanced Elements are useful in model building:

l Attributes

l Variables

l Arrays

l Macros

l Subroutines

l Arrival Cycles

l Table Functions

l User Defined Distributions

l External Files

l Streams

l Materials Handling Systems

l Modeling Tips

Attributes

 Attributes are place holders similar to variables, but are attached to specific locations and entitiesand usually contain infor-

mation about that location or entity. Attributesmay contain integers or real numbers. You may also assign model element

names (e.g., StationA) to an attribute, which isstored as the element’s index number but maybe referenced by name.

 Attributes are defined through the Build menu as shown below.

©ProModelCorporation

Building the Model: Advanced Elements 294

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 308/715

295 ProModel 2011 User Guide

How to create and edit attributes:

1. Select Attributes from the Build Menu.

Attribute Types

 Attributes are classified as follows:

Entity Attributes

Entity attributesare place holders assigned to an entity and contain numerical information about that entity. An entityattribute isidentified by its name and may be assigned a value or model element name stored as a value. An entity attrib-

ute maybe examined and acted upon inany of the following places:

l Arrival logic

l Operation logic

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 309/715

l Move logic whichrefersto the attribute of the entitybeing routed

l Min or Maxattribute rules for locationsand resources

l Routing quantity

l Routing destination priority

l Resource pickup and drop offtimes

l Entity speed

l Debug condition

Location Attributes

Location attributes are place holders assigned directlyto a location and contain numerical information about that location.

 A location attribute is identified by its name and may be assigned a value or model element name stored as a value. A loca-

tion attribute may be examinedand acted on in any of the following places:

l Arrival logic

l Operation logic

l Move logic

l Min or Maxattribute for selecting incoming entities as a location rule

l Routing quantity

l Routing destination priority

l Resource pickup and drop offtimes

l Location down time logic

l Debug condition

Memory Allocation for AttributesBecause locations always exist during a simulation, location attributes always use memory. However, attributes for entities

are not created until the first time any of the entity’s attributesare examined or set. At that time, ProModelallocates

enough memory for all of the entity’sattributes. When the entity exits the system or is absorbed by another entity through a

COMBINE or JOIN statement, ProModelautomaticallyfrees the memory allocated for itsattributes.

Attributes vs. Local Variables

 Attributes are primarily useful where the value of the attribute is assigned in one logicsection and evaluated in another 

logic section or field, perhaps at a different location. If, however, an attribute isassigned a value and evaluated within the

same logic section (e.g., an operation logic), it would be more appropriate to use a local variable. Local variables act like

temporary attributes and are valid only within the logic in which theyare defined. See Variables on page 304 for more infor-

mation.

Cloning Attributes

Whenever one entity initiatesthe creation of other entities through a SPLIT AS, CREATE, or ORDER statement, or as the

result of specifying multiple outputsin a routing, the attributes of the originalentity are automatically copied to each newly

created entity.

©ProModelCorporation

Building the Model: Advanced Elements 296

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 310/715

297 ProModel 2011 User Guide

The following examples show two methodsof splitting an incoming batch of material, called BatchA, into one Tote and six

EntA’s. The first method uses a CREATE statement in the operation logic to create the new entities, called EntA. The orig-

inalentity, BatchA, will have itsname changed to Totein the routing table. In thesecond example, both of thenew entity

types are created in the routing table, so no CREATE statement is needed in theoperation logic.In both cases,the attrib-

utes attached to the original entity, BatchA, are duplicated in both Tote’s and the EntA’s attributes.

Process Logic 

Routing Table

Attribute Edit Table

This edit table isused to define entity and location attributes.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 311/715

ID The name of the attribute.

Type The type of theattribute, real or integer.

Classification Entity attribute or location attribute.

Notes A general notes field for describing the attribute. Notes fieldscontain user comments only and are never analyzed

by ProModel. Clickon the Notes button or double click in the field to open an edit window for entering detailed notes.

Example of Attributes in Logic

 An appliance manufacturer’s model containsan assembly location to join lids to pots. The pots are either aluminum or 

steeland both types of pots arrive at the same assembly location. If an aluminum pot arrives at the assembly location, it

must be joined with an aluminum lid. The same istrue for a steelpot and lid. The entities, steel_lids and alum_lids, are wait-

ing at a queue to bejoined to the pots.

Obviously, one way to model the different pot typesis to use two different entity types. Thisexample shows how to achieve

the same effect using a single entity type (pot) with an attribute designating whether it issteelor aluminum.

 An attribute called “type,” defined in the attribute edit table, allows the location to tell what type of pot has arrived at the

assemblylocation. We will use a value of 1 to representa steel pot and a value of 2 to representan aluminum pot. When a

steel potenters the system,we assign a value of 1 to the attribute TYPE with the statement TYPE=1. When an aluminumpotenters the system,we set itstype to 2.

 At the assembly location, we use the following logic:

©ProModelCorporation

Building the Model: Advanced Elements 298

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 312/715

299 ProModel 2011 User Guide

This logic checks the type of the pot and then joins a lid according to that type.

Attributes and the JOIN or LOAD PERM Statement

In some cases, one entityjoinsonto a base entityusing theJOIN or LOAD PERM statement.See Joinon page 584 for 

more information. If both the joining and base entities possessattributes before the join occurs, the resulting joined entity

will possessthe attribute values of the base entity. In other words, the entity with the IF Join (or IF Load) routing rule is

effectivelydestroyed when it gets joined or permanentlyloaded. Consider the following diagram in which EntA joins to

EntB:

The logic for the above diagram isas follows:

Process Table

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 313/715

Entity... Location... Operation (min)...

EntA Loc1 Att1 = 1

WAIT 2 min

EntB Loc2 Att1 = 2

JOIN 1 EntA

EntB Loc3 ...

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 EntA Loc2 JOIN 1 MOVE FOR 1

1 EntB Loc3 FIRST 1 MOVE FOR 1

... ... ... ... ...

In the above example, EntB would have an attribute value,Att1, equalto 2 after EntA joined to EntB.

Attributes and the GROUP/UNGROUP Statements

Suppose several entities, EntA, EntB, and EntC, are grouped together and called Batch. See Group on page 575 and

Ungroup on page 640 for more information. Each of the originalentities have attributes with values assigned to them

before they are grouped. The Batch is processed for 30 minutes, sentto Loc5 andthen ungrouped intothe original enti-

ties.

The attribute values of the individualentities are not transferred to the grouped entity, Batch. In other words, Att1=0 for 

the entity, Batch. However, once the entities are ungrouped, theyretain their original attribute values. The following dia-

gram graphicallyshowsthe concept of grouping.

The logic for the diagram isas follows:

Process Table

©ProModelCorporation

Building the Model: Advanced Elements 300

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 314/715

301 ProModel 2011 User Guide

Entity... Location... Operation (min)...

EntA Loc1 Att1 = 1

EntB Loc2 Att1 = 2

EntC Loc3 Att1 = 3

 ALL Loc4 GROUP 3 AS Batch

Batch Loc4 WAIT 30

Batch Loc5 UNGROUP

 ALL Loc5 ...

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 EntA Loc4 FIRST 1 MOVE FOR 1

1 EntB Loc4 FIRST 1 MOVE FOR 1

1 EntC Loc4 FIRST 1 MOVE FOR 1

1 Batch Loc5 FIRST 1 MOVE FOR 5

... ... ... ... ...

Please note

 You can assign an attribut e value to a grou ped entity. However, once the entities are ungrou ped, they

retain th e attribute values they p ossessed before t hey were grouped.

Attributes and the LOAD/UNLOAD Statements

The LOAD statement permenantlyor temporarily loads a specified quantity of entities on to a base entity. Temporary

loaded entities retain their identity for future unloading through an UNLOAD statement. See Load on page 588 and

Unload on page 642 for more information. When the entities are temporarilyloaded onto the a base entity, the resulting

entity retains the attribute value of the base entity.

For example, entities called Boxare temporarilyloaded onto a base entity, Pallet. The Boxes are assigned an attribute

value, Att1=1. Pallets are also assigned an attribute value, Att1=2. Once the Boxes are loaded onto the Pallet,the loaded

pallet isrenamed Shipment. The Shipment then hasan attribute, Att1=2, because it inherits the attribute value of the Pal-

let. However, we then assign an attribute value to Shipment, Att1=3. After the Boxes are unloaded from the Shipment,

the unloaded shipment isrenamed back to Pallet and the Boxes retain their original attribute value, Att1=1. Now the Pal-

let has a different attribute value, Att1=3, which was assigned to the renamed entity, Shipment. Consider the following dia-

gram andlogicin whichtwo Boxes are loaded onto a Pallet and renamed Shipment for theoutput entity:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 315/715

The logic for the diagram isas follows:

Process Table

Entity... Location... Operation (min)...

Box Loc1 Att1 = 1

WAIT 2 min

Pallet Loc2 Att1 = 2

LOAD 2

Shipment Loc3 Att1 = 3

WAIT 20

Shipment Loc4 UNLOAD 2

Box Loc4 WAIT 10

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 Box Loc2 LOAD 1 MOVE FOR 1

1 Shipment Loc3 FIRST 1 MOVE FOR 3

1 Shipment Loc4 FIRST 1 MOVE FOR .5

1 Pallet Loc5 FIRST 1 MOVE FOR 1

1 Box Loc5 FIRST 1 MOVE FOR 2

Attributes and the COMBINE StatementConsider the example where several entities are combined permanentlyinto a single entity, Box. See Combine on page

543 for more information. The combined entity, Box, assumesthe attribute values of the last entity that was combined to

the single entity. If three entities, EntA, EntB, and EntC, are combined to form a single entitycalled Box,and EntC wasthe

last entity that was combined, the Boxwill have the same attribute values asEntC. Therefore, ifEntC had an attribute

(Att1=5), then Att1=5 for the combined entity, Box. The following diagram demonstrates three entities combining into one

entity.

©ProModelCorporation

Building the Model: Advanced Elements 302

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 316/715

303 ProModel 2011 User Guide

The logic for the diagram isas follows:

Process Table

Entity... Location... Operation (min)...

EntA Loc1 Att1 = 1

WAIT 2 min

EntB Loc2 Att1 = 3

WAIT 3 min

EntC Loc3 Att1 = 5

WAIT 6

 ALL Loc4 COMBINE 3

 ALL Loc5 ...

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 EntA Loc4 FIRST 1 MOVE FOR 1

1 EntB Loc4 FIRST 1 MOVE FOR 3

1 EntC Loc4 FIRST 1 MOVE FOR .5

1 Box Loc5 FIRST 1 MOVE FOR 1

... ... ... ... ...

In the above example, EntC isthe last entityto be combined so the entityBox assumesthe attribute value of EntC, Att1=5.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 317/715

Variables

Variables are of two types: globaland local. Globalvariables are place holders defined by the user to represent changing

numericvalues. Local variables are place holders which are available only within the logic that declared them. Variables

can contain either Realnumbers or Integers, including element indexvalues, and are typically used for decision making or recording information. A globalvariable can be referenced anywhere numericexpressions are allowed in a model. If a var-

iable or attribute isneeded only in a single block of logic, it iseasier to define a local variable right inside the logic block.

Globalvariables are defined in the Variables Editor, accessed from the Build menu. Local variables are defined with the

INT and REAL statements. See Variables for more information.

How to access the variable edit table:

1. Select Variables (global) from the Build menu.

Variable Edit Table

Thisedit table isused to define Variables used globallyin the model. A description of each field isgiven below.

©ProModelCorporation

Building the Model: Advanced Elements 304

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 318/715

305 ProModel 2011 User Guide

Icon This field shows “Yes” if an icon for the variable appears on the layout. A variable’sicon looks like a counter and dis-

plays the variable’s value.

ID The variable’s name.

Type The type of variable, real or integer.

Initial Value The initial value of the variable to be assigned at the start of the simulation. By default, initial values are 0,

but can be changed in the edit table to whatever value you want. Any expression can be entered here (including pre-

viously defined variables) except attributes and system functions.

StatsProModelcollects statistics for each variable on three levelsof detail, None, Basic, and Time Series.

l None No statistics are collected for thisvariable during simulation.

l Basic Collects basicstatistics such as total changes, average minutes per change, current value, and average

value.

l Time Series Collects all the basicstatisticsplusthe value history based on time or observations. When you

select Time Series, ProModelcollects either time-weighted or observation-based statistics for the variable

depending upon the type selected.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 319/715

Variab le Ob servat io n Reco rd Valu e T ime in Ho urs

Observation 1

Observation 2

Observation 3

Observation 4

6

5

6

5

1

2

3

4

Total 22 10

Time-Weighted Collects information on the percentage of time the variable was at a specificvalue. As shown in the

above table, the average value of the variable is:(6x 1) +(6x 3) + (5x 2) + (5x 4) = 5.4

10Observation-Based Collects information on the number of times the variable changed to a specificvalue. As shown in

the abovetable, thevalue of thevariable is 6, then 5, then 6, then 5. The average wouldsimply be:6 + 5 + 6 + 5 = 5 . 5

4Notes A general notes field for describing the variable. Click on the Notes button or double click in the field to open an edit

window for entering detailed notes.

Please note

In order to create plots or histograms for a variable, Time Series stats must be selected in the variables

edit table.

Variable Layout

 An icon to show a variable’s value during a simulation may be placed anywhere on the layout. The window below shows

the iconsfor thevariables Current and Totalat the rightside of thescreen. Each icon hasbeen labeled with a backgroundgraphic.

©ProModelCorporation

Building the Model: Advanced Elements 306

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 320/715

307 ProModel 2011 User Guide

How to place an icon for a variable on the layout:

1. Highlight the desired variable in the Variable edit table.2. Click on thelayout where the icon is to appear.3. Size the icon bydragging an edge or corner of the sizing box.

How to remove an icon for a variable from the layout:

1. Double clickon the icon.2. Choose Delete from the resulting menu. The icon is removed fromthe layout, but the variable remainsin the

model.

Editing a Variable’s Icon

 A variable’s icon can be customized as necessary by simply double clicking on the icon and choosing Edit. A dialog box

appears as shown below for specifying the characteristics of the variable icon or counter.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 321/715

How to edit a variable’s icon:

1. Double click on the icon.2. Click on the Digit Color , Frame, or Font buttonsto adjust the respective setting.3. Click on OK.4. All other variable iconsthat you create from now on will retain these modifications.

Local Variables

Local variables function as though theywere temporary attributes defined in a specificlogic section which disappear when

the logic section isfinished executing. Local variables are useful for test variables in loops and storing locally used, unique

values for each entity at the current location.

Local variables are used within a block of logic (i.e., operation logic, subroutines) and are declared with an INT or REAL

statement. Local variables are only available within the logic in which they are declared and are not defined in the Var-iables edit table. A new local variable iscreated for each entity to encounter an INT or REAL statement. See Int on page

583and see Real on page 614 for more information. A local variableis specific to each entity, inmuchthe same wayan

attribute isspecificto an entity, except that the local variable isonly available while the entity processes the logic to declare

the local variable. Local variables may be passed to subroutines as parameters. Local variables are available to macros.

Example

 A plant manufactures valves of 10 different sizes, such as 10'', 20'', .... Allvalves areinspected at a common inspection sta-

tion and then move to a dockwhere they are loaded onto pallets. The palletsare designed to holdonly a certain sizevalve.

Therefore, a pallet designed to hold 10'' valves can only hold 10'' valves, not 20'' valves.Suppose a Pallet enters a multi-capacity location, Dock. Each Pallet hasa different entity attribute, p_type, describing the

type of valve it can hold. Valves are loaded onto thePallet.The 10” valves must be loaded onto thepallet designed to hold

the 10” valves. Therefore, the attribute value of the Valve, v_type, must match the attribute value of the Pallet, p_type. Wecan use local variables to accomplish this modeling task. The logic isas follows where X isa local variable:

Process Table

©ProModelCorporation

Building the Model: Advanced Elements 308

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 322/715

309 ProModel 2011 User Guide

Entity... Location... Operation (min)...

Valve Inspect WAIT 5

Pallet Dock INT X

X = p_type

LOAD 10 IFF

X = v_type

WAIT 10

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 Valve Dock LOAD 1 MOVE FOR 2

1 Pallet Delivery FIRST 1 MOVE FOR 8

If we had notused localvariables, we wouldneed to use thefollowing operation logic for Pallet at Dock:

 As can be seen from the two examplesof logic, the first example is much easier and more straight forwar d.It isimportantto note that using “LOAD 10 IFF p_type = v_type” in the operation logic would not workfor theintended pur-

pose. Attributesr eferenced in IFF conditionsalways refer to the entity being loaded. Set the value of a local variable, X, to

the pallet attribute, p_type, so it can be referenced in the LOAD statement. The pallet attribute cannot be directlyref-

erenced in the LOAD statement.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 323/715

If Dock was a single capacity location, using a globalvariable would work the same as using a local variable. However,

because Dock isa multi-capacity location, it can load valves onto multiple pallets at the same time. If a global variable was

used instead of a localvariable, theglobalvariable would change each time a pallet entered Dock. If there were two dif-

ferenttypes of palletsat Dock, there wouldbe only onetype of valveloadedon thepallet because the global variable

refersto both pallets.

Suppose, for example, a global variable, type, signifies the pallet attribute, p_type. We assign type=p_type at the begin-ning of the operation logic for location Dock. The first pallet arrives and type=3. Therefore, only valves with v_type=3 are

loaded onto the pallet. Another pallet enters Dock and type=5. Now only valves with valve_type=5 are loaded onto both

pallets.

Please note

Local variable notes:

1. You may not use the WAIT UNTIL statement with local variables.

2. The local variable definition only needs to appear somewhere in th e logic b efore being referenced. The

entity does no t n eed to execute the local variable definition statement (INT, REAL).

Arrays

 An array is a matrix of cells that contain real or integer values. Each cell in an array works much like a variable, and a ref-

erence to a cellin an array can be used anywhere a variablecan be used. A one-dimensional array maybe thought of asa

single column of values. A two-dimensional array islike having multiple columns of values (similar to a spreadsheet).

To reference a cell in a one-dimensionalarray, give the name of thearray and enclose the cell number in brackets. For 

example, if a one-dimensional array containing ten cells isnamed OpnArray, to reference the fifth cellyou would use

OpnArray[5]. To reference a cellin a two-dimensionalarray, simply use thename of the array with therow and column

number in brackets. For example, the statement OpnArray[3,4] references a cellon the third row in the fourth column. Arrays with more than two dimensions are more difficult to picture, but work exactly the same as one and two dimensional

arrays. For example, ifan arrayhasa third dimension, you can reference anycellsimplyby adding a comma before the

number of the desired cellin the third dimension. For example, Tool[3,5,8]. Four and five-dimensionalarrays work the

same way. The maximum number of dimensions for an array is20.

 Array cellvaluesare assigned in the exact same way as you would assign a value to a variable. For example, to assign the

value 18 to the cell at the fifth row and second columnin an arraynamed Arr1 you would use thefollowing statement.

Assign array cell value

 Arr1[5,2]=18

 Arrays are defined in the Arrays editor accessed through the Build menu.

©ProModelCorporation

Building the Model: Advanced Elements 310

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 324/715

311 ProModel 2011 User Guide

How to use the arrays editor:

1. Select Arraysfrom the Build menu.

Example Arrays

The following examples show how elements are referenced in a one-dimensional array with five cells and in a two-dimen-

sional array with fifteen cells.

One-dimensional array OpnArray[5]

Cell[1]

Cell[2]

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 325/715

Cell[3]

Cell[4]

Cell[5]

Two-dimensional array 

Tool[3,5]

Cell[1,1] Cell[1,2] Cell[1,3] Cell[1,4] Cell[1,5]

Cell[2,1] Cell[2,2] Cell[2,3] Cell[2,4] Cell[2,5]

Cell[3,1] Cell[3,2] Cell[3,3] Cell[3,4] Cell[3,5]

Arrays Edit Table

The Arraysedit table is used to define Arrays that are used inthe model. The fieldsof the Arrays edit table are explained

on the following page.

ID Thename of the array.

Dimensions The size of each dimension of the array in cells. For example, the dimensions of a one-dimensional array of 

100 cells is“100.” Likewise, a two-dimensionalarray with 50 rows and five columnswould have dimensions of “50,5.” Thenumber of rowsis first, followed bya comma and then the number of columns.An array cannot have morethan 20 dimen-

sions.

Type The type (integer, real, string, or expression) for allcellsin the array.

Import File The name of the spreadsheet from which you will populate the array. You mayenter either a fullyqualified

path to your .xls file or a path relative to your .mod file. For example, if your .xls file isin the same directory as your .mod file,

simply enter the name of the .xlsfile into this field.

See Import Data into Arrays on page 314 for more information on using the Import dialog.

Export File The name of thespreadsheet to whichyou will savethe arraydata. You mayenter either a fully qualified pathto your .xls file or a path relative to your .mod file. For example, if your .xls file isin the same directory as your .mod file,

simply enter the name of the .xlsfile into this field.

See Export Arrays to Spreadsheets on page 318 for more information on using the Export dialog.

©ProModelCorporation

Building the Model: Advanced Elements 312

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 326/715

313 ProModel 2011 User Guide

Disable Use this option to have the import file, export file, or both ignored during simulation without deleting the name of 

the import or export files from the Array record. Choose “None” to use the specified import and export files.

Persist When running multiple replicationsyou may choose to keep the values in the array from one replication to the

next or clear (reset) the array values every replication.

For example, ifyou run a simulation for three scenarioswith an arraythat “Keeps” its values, the data inthe arrayat the

end of the first replication willbe kept andused asthe second replication begins. If you are using an Import File, itwill be

used to populate the array for the first replication, but ignored for subsequent replications when “Keep” is selected for the

array.

If you choose to “Clear” the array,no arrayinformation will be kept from one replication to another andthe arraywill be

reset with its initial information at the beginning of each replication (see Initializing Arrays on page 313). If you are using

an ImportFile, it will be used to populatethe arrayat the beginning of eachreplication when “Clear” isselected for the

array.

Notes A general notes field for entering descriptive information about the array. Click the heading button or double click

in this field to open a larger window for entering notes.

The window picturedabove showshow to define the example arrays that appear on the previouspage.

Initializing Arrays

By default, all cells in an array are initialized to zero. Initializing cellsto some other value should be done in the initialization

logic. A WHILE...DO loop isuseful for initializing array cellvalues. The logic below fills a 3 x 5 array (3 rows and 5 columns)

with values from an external, general read file.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 327/715

Thisexample uses the variables Column and Row (which maybe defined as local variables) along with two WHILE...DO

loopsto assign every cellin the array Inventory_Array a value from a general inventoryfile. The logic first sets the value of 

the variable Column to one. It then assignsallthe cells in columnone a value by reading a value from the externalfile and

incrementing the variable Row. When all the cells in column one have a value, the logic increments to the second column

anddoesthe inside loopagain. It repeats this loop until eachcell in the array has a value.

Please note

 Assign ing values to a cell in an array can be done in any expression or logic field, such as initialization

and o peration logic. See Execution Time of Initialization and Termination Logic on page 239 to view the order in

which model elements are evaluated over the course of a simulation.

Import Data into Arrays

When you import data, from either an external Excel spreadsheet or SQL database, into an array, ProModel loads the

data fromleft to right, topto bottom. Although there is no limitto the quantity of valuesyou mayuse, ProModelsupports

onlytwo-dimensional arrays.

Import from an Excel Spreadsheet 

Import File The name of the spreadsheet you will use. You mayenter either a fullyqualified path to your .xlsfile or a path

relative to your .mod file. For example, if your .xls file isin the same directory as your .mod file, simply enter the name of the.xls file into thisfield.

Sheet Name The name of the sheet from which you willimportthe arraydata.

Please note

©ProModelCorporation

Building the Model: Advanced Elements 314

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 328/715

315 ProModel 2011 User Guide

If your spreadsheet contains only a single data set, ProModel will automatically load the data into the

array—you do not have to define any cell information unless you wish to limit the contents of the array to

a portion of the data set.Array import requires Microsoft Excel 97 or later.

Import Start Cell The first piece of data to place into the array.Import End Cell The last piece of data to place into the array.

How to import Excel spreadsheet data into array:

1. Select Arrays from the Build menu.2. Select or create the array record (row) you wishto import.3. Click the Import File button on the Arrays dialog.4. In the File field, enter thename of the spreadsheet you wish to use (you may alsobrowse to selecta file).

5. In the Sheet Name field, enter the name of the worksheet that containsthe data you wish to use.6. Enter the Import Start Cell location. The value in this cellwilloccupy the first position in the array.7. Enter the Import End Cell location. The value in this cellwilloccupy the last position in the array.8. Click OK.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 329/715

Import from a SQL Database

Connection String The connection string used to connect to the SQL database including all necessary security param-

eters.Query or Stored Procedure Enter the SQL query or the name of thestored procedureto be executed during the mod-

el’s initialization logic to populate the array.

How to import SQL database data into array:

1. Select Arrays from the Build menu.2. Select or create the array record (row) you wishto import.3. Click the Import File button on the Arrays dialog.4. Clickon the Database radiobutton.

©ProModelCorporation

Building the Model: Advanced Elements 316

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 330/715

317 ProModel 2011 User Guide

5. In the Connection String field enter the necessary string to connect to the desired database.6. In the Query or Stored Procedure field enter the SQL query or stored Procedure name that willbe used to

populate the array during the initialization logic.7. Click OK.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 331/715

Export Arrays to Spreadsheets

The fields in the Export Arrays dialog have similar functionality as those for the Import Arrays dialog.

If you export multiple timesto the same spreadsheet, ProModelwill overwrite the spreadsheet with new data. If you wish

to prevent your data from being overwritten, you can make a backup of the spreadsheet between each running of the sim-

ulation.

If you are running multiple scenarios and/or replications, see step 5 below for a description of how the spreadsheet han-

dles the multiple scenarios/replications.

How to export array data:

1. Select Arrays from the Build menu.2. Click the Export File button on the Arrays dialog.

3. Enter thename of the spreadsheet file you wish to use, or browse to select a file.

4. Click OK.

When the simulation isr un, the array data will be saved to the spreadsheet file. If you ran multiple scenarios and/or rep-

lications, data fromeach onewill be saved to a separate sheet in the spreadsheet file, asseenbelow.

©ProModelCorporation

Building the Model: Advanced Elements 318

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 332/715

319 ProModel 2011 User Guide

Using Arrays

Using arrays can simplify a model. Suppose you need to model an assembly line that attaches componentsto a computer 

motherboard. Furthermore, you want to track theusage of component parts over time.Without an array,hundredsof 

individualentities of various typeswould have to represent hundreds of individualcomponents. Keeping track of all the

componentswould be very complex, not to mention all of the join operationsand routingsfor performing the assembly.

Instead, various cells in a one-dimensionalarray could track the number of each type of component used during the sim-

ulation.

 An array can do the job more efficiently. The initial inventory levelfor each component could be stored in an external file

and read into the cells of thearray at thestart of the simulation. The firstcell mightcontain the inventorylevelof tran-sistors; the second could contain the inventorylevel of capacitors and so on. When a motherboard arrives at the location

adding the components, each cell’svalue isdecremented according to the number of that type of component joined to the

motherboard. If each motherboard requires twelve transistors and five capacitors, then every time a motherboard

arrives at the location,the array’s first cell is reduced bytwelve and the secondcell is reduced byfive. Thusthe model

becomes much less complexbecause it requires fewer entitiesand less logic.

Notes on Arrays

1. If a warm-up time isspecified,array values are notreset.2. Arrayscanbe nested. For example, if Arr1[2,3]is equalto three, then thestatementArr2[5,Arr1[2,3]]works

exactlylike the statement Arr2[5,3].

3. You can examine the value of a cellin an array during a simulation bychoosing Information and then Arrays. Thisinformation can also be printed.4. Arrayscanbe used with the WAIT UNTIL statement.5. Statisticsare not generated for arrays. However, if you would like to see the final value of an array’s cell,you can

use the array export feature to exportto Excel,you can place a PAUSEstatementin thetermination logic and

then view the array under the Information menu,or you could print an array’s valuesor write them to an external

file as part of the termination logic. If you want more statistical information on a particular cell, assign the cellto a

variable and then choose basic or time-seriesstatistics for the variable.

Macros

 A macro is a place holder for an often used expression, set of statements and functions, or any text that might be used in

an expression or logic field. A macro can be typed once, and then the macro’s name can be substitutedfor the textit rep-

resentsanywhere in the model and as manytimes as necessary. Macros are defined in the Macros Editor, accessed

from the Build menu.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 333/715

How to create and edit macros:

1. Select Macros from the Build Menu.

Macro Editor 

The Macro edittable is used to assign recurring textto a reference name.

©ProModelCorporation

Building the Model: Advanced Elements 320

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 334/715

321 ProModel 2011 User Guide

ID A name to identifythe macro.

Text Any textto be substituted where the macroname is called.Thistext maybe a complete expression, an entire logic

block, or even part of a logic block.

Options Allows you to define the macro as a scenario parameter or select a resource group.

The example table above definesthree macros. The first macro issimply a numeric constant, with fpm representing aconversion factor from miles per hour to feet per minute. If a number isused in multiple places in a model, then a macro

makes it possible to change that number throughout the model simply by changing the macro itself. The second macro,

Operation_Time, calculates the various operation times at different locationsdepending on the attributes at the locations.

The last macro, Number_of_AGVs, isa scenario parameter used to define the number of AGVs in the simulation model.

See see Scenario Parameters on page 322 for more information.

 A macro is different from a subroutine because a macro cannot pass or return a value. However, because it is simply a

text replacement, a macro can reference anyexpression valid in the expression or logic field that called the macro. For 

instance, the string “the number of entriesis” might be a macro called mac1. Thismacro by itself isnot a valid expression.

However, when used with the DISPLAYstatement in the operation logic (i.e., DISPLAY mac1), the compiler will rec-

ognizethe macro asa string.

 A macro may be used in any expression field, but may only contain a numeric expression (e.g., Entries (LOC1), U(5,1) ,

Var1+Att2, etc.). In addition, a macro used in an expression field maynot contain multiple linesof text. When used in a

logic field, the macro may include anylogic element valid in that logic field.Suppose five different locations use the same lines of code. Instead of entering the same logic five times in five different

fields, reference the following macro by typing the macro ID, Mac1, in the operation logic of the machine:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 335/715

Every time the macro isreferenced, the logic isexecuted. Macros can also be nested within other macros. Thismeans that

a macro can consist of one or more other macros. Consider the following Macro edit table:

The macro, Favorite_Quote references other macros, such as Race and Finish. Note that some of the other macros,

such asFor_Quality,are onlyportionsof a complete line of code.Although the macrois valid, itwill not compile asa part of 

macro logic because the create statement requires an expression and an entity name. The line Favorite_Quote in a logic

field wouldbe interpreted asthe following line, Create 2 AsEntB Take 1 Res1.

Please note

Macro notes:

1. A macro may be used only when the elements contained in the macro are appropriate to th e context 

from which it was called. This restriction means that the macro in the previous example is only valid in

operation logic.

2. Because a macro simply substitutes some text for its name, if a macro represents a statement block,

then it should contain a BEGIN at the beginning of the block, and an END at the end of the block. This

technique is especially important when using a macro immediately after a control statement, such asIF...THEN or WHILE...DO. For more information, see Statement Blockson page 520 .

Scenario Parameters

Defining a scenario parameter for a macro allows the user to easily change parameters before the simulation starts. It pro-

vides an experimental framework for defining multiple scenariosto be run in a batch. See Scenarios on page 457 for more

information. A scenario parameter for a macro allows a macro’s text to be changed by the user whenever a simulation run

begins. Since macros are allowed in anyexpression, this gives the user flexibility to edit most scenario parametersevery

time a simulation starts without having to directly edit the model data.

The key difference between a macro defined asa scenario parameter and onethat isnot,is that the macro will be listedas

a parameter in the scenario manager. A scenario parameter allows you to request a variety of information to substitute for a macro; from simple values (e.g., the initial value of a location’s capacity) to complex text (e.g., a line of logic). You may

create scenario parameters using the macros table, under the Type column.

©ProModelCorporation

Building the Model: Advanced Elements 322

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 336/715

323 ProModel 2011 User Guide

Parameter Name Thistext will identify the parameter represented by this macro. It should consist of text that clearly

describesthe parameter to be changed, for example, Operation Time. The macro name and the parameter name can

be different. Thisprovides more flexibility and allows you to view a more descriptive parameter name when defining sce-

narios.

Prompt Thistext will appear as a tooltip in the scenario manager. You should use it to further specify the information to

be entered, for example, “Please enter the amount of time the simulation should run.”

Unrestricted Text Thisoption allows the user to enter any text, such as the distribution U(8,2). Note that any text that

the user enters will be substituted for the macro name in the model. Therefore, the text the user enters must be syn-

tactically correct and valid anywhere the macro name appears.

Record Range Allows you to enable an arrivalor shift record from a range of records. This allows you to test a variety of 

shift and arrival combinations to find the combination that worksbest with your model.

Numeric Range Thisspecifies the lower and upper limits for the parameter if the type isnumeric.

How to define a macro as a Scenario Parameter:

1. Select Macros from the Build menu.2. Type the macro name and click on the Options button.3. Choose Define from the Scenario Parameter submenu.4. Define the Parameter Name and enter the prompt (optional).5. Select the parameter type: Unrestricted Text, Record Range, or Numeric Range.6. If the parameter is numeric,enter thelower value in the From box andthe upper value in the To box.7. Click OK.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 337/715

8. Enter the default textor numeric value inthe MacroText field.9. Use the macroID in the model(e.g., in operation or resourceusage time).

Please note

When using a record range, be sure to group all arrival and shift records. This will allow you t o select 

which series of records to include in t he macro. Not e also th at when you define an arrival or shift scenario

 parameter, ProMod el adds “ARRIVAL_” or “SHIFT_” to the name to help you identify the macro more

easily.

Scenario Parameter Example

Suppose you build a factory model and determine the first lathe,Number_of_Operators, isa bottleneck. The model results

indicate the throughput islower than expected. You decide to perform several what-if scenarios with the model by chang-

ing the operation time of Number_of_Operators. Instead of changing the operation time at Number_of_Operators within

the Process edit table, it iseasier to define a macro as a scenario parameter. This technique allows the model user to

easily see the effect of installing a faster lathe without ever editing the model itself. The following example representsthe

dialog used to define a scenario parameter for themacro where the operation time is a numeric value between 12 and 20:

 After defining the scenario parameter for the macro, substitute the macro, Oper_Time, for the operation time in the oper-ation logic in the Process edit table for Lathe_1 as shown below:

©ProModelCorporation

Building the Model: Advanced Elements 324

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 338/715

325 ProModel 2011 User Guide

You are now able to change the operation time at Lathe_1 using theMacros table or the scenario manager. For moreinformation on changing parametersin the scenario manager, see Scenarios on page 457.

Please note

For more information concerning the differences between macros and subroutines, see Macros on page

319 and Subroutineson page 326 .

Resource Grouping

Resource grouping allows you to define specificgroups of resources rather than define each unit separately. For exam-

ple,suppose you need a specifictechnician to perform an operation. If the technician isnot available, you mayuse either 

another technician or one of two qualified operators to perform the operation. Rather than define each qualified operator asa separate resource, you maydefine a macro that includes them.

How to define a resource group

1. Select Macrosfrom the more elements section of Build menu.2. Define a macro ID and enter a list of all resources you wish to includeas part of theresource group.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 339/715

Please note

When you create a list of resources, separate each resource using AND or OR (e.g., Tech_1 AND Tech_2 

OR Tech_3 AND Tech_4). Resource groups can only be used in Get and Jointly Get statements and not in

a USE statement.

1. Click on the Options button and select Resource Group from the submenu.

 At the end of the simulation, ProModel creates a statisticalreport containing information collected for each resource

includedin theresource group,as well asthe entire group.Thiswill allow you to trackindividual, aswellas group per-

formance. For information on statistics and how to graph theresults,see Reports andGraphs on page 482for moreinfor-

mation.

Subroutines

 A subroutine is a user-defined command that can be called to perform a blockof logicand optionally return a value. Sub-

routinesmay have parameters(local variables) which act as variables local to the subroutine and that take on the values of 

arguments (i.e., numericexpressions) passed to the subroutine.

ProModelhandles subroutines in three ways. First, a subroutine maybe processed by the calling logic as though the sub-

routine ispart of the calling logic. This way isthe most commonlyused, and isdone by simply referencing the subroutine by

name in some logic or expression. Second, a subroutine may be processed independently of the calling logic so the calling

logic continueswithout waiting for the subroutine to finish. This method requires an ACTIVATE statement followed by the

name of the subroutine. See Activateon page 525, or Run-Time InteractMenu on page 476 for moreinformation. Third,

ProModelallows subroutines written in an external programming language to be called through the XSUB() function.

Subroutinesare defined in the SubroutinesEditor which isaccessed from the Build Menu.

©ProModelCorporation

Building the Model: Advanced Elements 326

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 340/715

327 ProModel 2011 User Guide

How to create and edit subroutines:

1. Select Subroutinesfrom the Build menu.

Subroutine Editor 

The Subroutines edit table consists of several fields which identify the componentsof a subroutine. Each of these fields is

described below.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 341/715

ID A name that identifies the subroutine.

Type The type of numeric value returned bythe subroutine can be Real, Integer,None, or Interactive. Use Real and

Integer if the subroutine returns a number and None when no return value isexpected, as isoften the case in initialization

or termination logic. Subroutinesof type Interactive are identical to subroutines of type None, except that interactive sub-

routinesare also accessible for activation by the user through the run-time menu. Interactive subroutines are displayed in

the Interact menu during runtime. For more information on Interactive subroutines, see the discussion later in this section.

Parameters Arguments passed to the subroutine get assigned to localvariablescalled parameter s. Items passed to a sub-

routine asarguments can have different names than the parametersthat receivethem. Parameters can be real or 

integer. The first parameter receives the first argument, the second parameter receives the second argument, and so on.

Logic One or more statementsto be executed whenever the subroutine iscalled. Statementsin subroutines must be

valid in the logic that calls the subroutine. Subroutine logic maycontain a RETURN statement with a value to be returned

from thesubroutine.See Return on page 624 for the correctsyntax andan exampleof this statement.

Please note

Subroutine editor notes:

1. If th e subroutine is of type Integer and t he return value is a real number, the return value will be trun- 

cated unless the ROUND() function is used (e.g., RETURN ROUND(<numeric expression>)).

2. If you do not want a stand-alone subroutine referenced in operation logic to be treated as an implicit 

wait statement, define the subroutine as type None.

3. When using the ACTIVATE statement to call a subroutine, the calling logic continues without waiting 

for the called subroutine to finish. Therefore, independent subroutines can run in parallel with th e logic 

that called them.

4. Independent subroutines called with t he ACTIVATE statement cannot cont ain entity-specific or loca- 

tion-specific system functions.

Subroutine Format

 A subroutine may be named any unique, valid name. The general format for calling a subroutine is as follows:

©ProModelCorporation

Building the Model: Advanced Elements 328

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 342/715

329 ProModel 2011 User Guide

SubroutineName(arg1, arg2,....,argn)

Subroutine call

GetOpTime(3,7)

DoInitialization()

Please note

Subroutine format notes:

1. If no arguments are specified, open and closed parentheses are still required.

2. Statements in subroutines must be valid in the logic th at called the subroutine. For example, if a sub- 

routine is called from the o peration logic, the subroutine may contain only th ose statements valid in th e

operation logic. Subroutines called from an ACT IVATE statement o r from the Interact Menu at run-time

can have any general logic statements, including WAIT.

3. A subroutine may be used in any logic f ield. In addition, a subroutine may be used in any expression

field, provided th at the RETURN statement is u sed to return a value to the expression field. Expression

fields include the Qty Each column of the Arrivals edit table and the routing rule for processing.

4. If a subroutine does no t return an expression with the RETURN statement, a value of zero will be

returned for subroutines of type Real and Integer. No value will be returned for a subroutine of type None

or Interactive.

Subroutine Example

Suppose that you build a CopyCenter model and it isnecessary to define the processing time at the operator assistedmachinesas a function of two parameters: Order Quantity and Quality Level. In addition, you would also like to write the

processing times at each copy machine to a file called Report.Dat.

Because the operation logic isidentical at both machines, a subroutine maybe used to execute the group of statements

required. Notice in the Process Logic pictured next that Subroutine OrderTime iscalled, and each order's Quantity, Qual-

ity, and Ticket attributes are passed as arguments. The third argument issimply a constant value, 1 or 2, which rep-

resentsthe location from which the subroutine was called (i.e., 1 if called from OpAsist1 or 2 if called from OpAsist2). The

operation logic, which calls the subroutine, and routing are shown below. The subroutine itself isshown later in this sec-

tion.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 343/715

Subroutines Edit Table

The Subroutine edit table liststhe name of the subroutine, the return type, the parametersto be passed to the subroutine,

and the logic. Notice that the subroutine ID correspondsto the subroutine name called in the processing logic above and

that the subroutine has four parameters(P1, P2, P3 and P4) corresponding to the four argumentspassed to the sub-

routine.Also note that thesubroutine isof type realsince the return value willbe a realvalued processing time.

Subroutine Parameters

The subroutine parameters, M (for mean) and SD (for standard deviation), are defined by clicking on the Parameters

heading button. These values are unique to each inspection location, and are passed to the subroutine as parametersof 

the normally distributed inspection time.

©ProModelCorporation

Building the Model: Advanced Elements 330

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 344/715

331 ProModel 2011 User Guide

Subroutine Logic

The final step in defining the subroutine isto specify the logic to be processed when the subroutine iscalled. In this exam-ple, thelogicshould includea processing time,a procedureto write the valuesof the attributesto a file, and a routing deci-

sion based on the values of the two attributes. The logic window isaccessed by clicking on the Logicheading button.

The first line of the logic calculatesthe order time as a function of the Quantity and Quality attributes passed as param-

eters. These parametersare used as arguments in two user defined functions, ProcTime() and QualFactor(). Function

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 345/715

ProcTime() returnsa time value based on the number of copies in the order, while function QualFactor() returns a scale

factor depending upon the quality level desired. Operation time isdetermined by simply multiplying the process time by the

scale factor.

Once the order time hasbeen determined, this value iswritten to the file Report.Dat. Included with the operation time is

the job number and the location at which the job was processed.

The last line of the logic returnsthe order time value to the processing logic.

Interactive Subroutines

Interactive subroutines are subroutines activated by the user anytime during run-time by choosing the subroutine from the

Interactmenu. The name appearing in the Interactmenu is either the subroutine name or ifa string is entered asa com-

ment statementat thebeginning of thesubroutine logic, the string is used asthe name (e.g.,# “ArrivalFrequency”).Inter-

active subroutines allow the user to interact with the simulation during run-time. Subroutines are defined as type

Interactive in the Subroutine edit table. Normally, subroutines are activated by entities. However, interactive subroutines

can be user-activated in addition to being entity-activated. Interactive subroutines can be used for:

l changing model variables during a simulation run

l changing routings

l calculating and reporting user-defined statistics

Suppose you want to interactivelychange the arrival frequency for a certain entity, customers, during run time. Define a

variable, Var1, and assign it an initial value to be used for the initial arrival frequency. Enter Var1 in the arrival frequency

field for the entity customers. Create a subroutine of type Interactive and enter the following logic:

During run-time, you can then change the arrival frequency for the customersby choosing the Customer Arrivals from the

Interact menu. See Run-Time Interact Menu on page 476 for more information.

©ProModelCorporation

Building the Model: Advanced Elements 332

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 346/715

333 ProModel 2011 User Guide

Please note

Interactive subroutines may also be called from any logic or expression where no return value is required.

See Statementsand Functions on page 523 for more information.

External Subroutines

There maybe some cases where you need to perform actionsProModel isnot capable of doing.You mayneed

extended capabilities with more sophisticated commands. ProModelallows you to interface with external subroutines

located in thirty-two bit WindowsDLL files you have created. Thisfeature could be usefulfor doing sophisticated file I/O,

performing statistical analysis, making your simulation interactive, or helping with other simulation needs.

Because of the intricacies of the Windows development environment, you must have a sound knowledge of your external

programming language (C, C++, Pascal) to use external subroutines. In addition, you must also have a good Windows

platform knowledge, specificallywith respect to creating DLLsin your language. Because it isa 32-bit program, ProModel

can load andcall only 32-bit DLLs,and requires that you use a 32-bit Windowscompiler.

For more information about this feature, you can load, study and run XSUB.MOD in the reference model directory. See

Xsub() on page 654 for more information. This model uses XSUB.DLL, found in the MODELSdirectory. The source

code and make files for XSUB.DLL (XSUB.CPP, XSUB.MAK, XSUB.IDE) are also included in the MODELS directory.

Some general explanation iscontained in the comments of this source code.

Due to the complexities of Windows programming and the variety of uses for this advanced feature, PROMODEL Cor-

poration can only provide minimal support for this feature. Manyquestionsr egarding Windowsprogramming and other 

programming languages cannot be handled through our customer support department. Please consult your language

programming manuals, language customer service centers, Microsoft, and other resources to resolve these typesof 

problems.

Subroutines vs. Macros Although subroutines and macros work similarly, they have subtle differences. Any logicmay use both macros and sub-

routines.The main difference is inthe waytheyare used. Only subroutinescanbe used when you need to passargu-

ments, get a return value, or activate the independent execution of logic. Onlymacroscan be used when defining

scenario parameters.

Macros may be used in anyexpression field, but the macro may only contain an expression (i.e., Entries(LOC1), U(5,1)).

When a macro is used in a logic field, the macro mayincludeany logic element valid inthat logic field.

Subroutinesmayalso be used inan expression field providedthat the RETURN statement is used to return a value to the

expression field. When a subroutine isused to represent one or more logic statements, the subroutine mayonly include

statementsvalid for the particular context.

Arrival Cycles

 An arrivalcycle is a pattern of individual arrivals which occurs over a certain time period. Some examplesof arrivalcycles

that exhibit a pattern are the arrival of customersto a store andthe arrival of deliverytrucksto a truckdock.At the begin-

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 347/715

ning of the day,arrivals maybe sparse; but asthe dayprogresses,theybuild up to one or morepeakperiodsand then

taper off. While the total quantity that arrives during a given cycle mayvary, the pattern or distribution of arrivals for each

cycle is assumedto be the same. Arrival Cycles are defined in the Arrival Cyclesedit table, accessed through the Build Menu.

How to edit arrival cycles:

1. Choose More Elements from the Build Menu.2. Choose Arrival Cycles.

Arrival Cycles Edit Table

 Arrival cycles are defined by entering the proper data into the Cycle edit table. The fieldsof the Cycle edit table are

explained below.

©ProModelCorporation

Building the Model: Advanced Elements 334

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 348/715

335 ProModel 2011 User Guide

ID The cycle name.

Qty / % Select either Percent or Quantityas the basis for the totalnumber of arrivals per cycle occurrence.

Cumulative... Select Yesto specify the % or Qty values in a cumulative format. Select No to specify these fields in a non-

cumulative format.

Table... Clickon this button (or double click in this field) to open an edit table for specifying the cycle parameters.

Arrival Cycles Example

Suppose we are modeling the operationsof a bank(or any service or manufacturing system) and we need to specify a

pattern for customer arrivals. From past data, we know that customersarrive throughout the day( 9:00 AM to 5:00 PM)

according to the following approximate percentages.

From Before Percent

9:00 AM 10:30 AM 010:30 AM 11:30 AM 1011:30 AM 1:00 PM 251:00 PM 4:00 PM 554:00 PM 5:00 PM 70

Defining the Arrival Cycle

The arrival cycle will be named Bank_Arrivalsin the Arrival Cycles edit table. Because the data isexpressed in termsof 

percentages, we select Percent as the basisfor the cycle. Also, the percentage values are not cumulative so we specify

No in the Cumulative field.

Next, we click on the Table heading button to open another edit table for entering the cycle data.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 349/715

In this example, even though the percentages of customersthat have arrived are not cumulative, the time isalways cumu-

lative. Therefore, the table readsas follows: ten percent of the dailycustomers arrive in the first 1.5 hours, fifteen percent

of the daily customers arrivebetween hour 1.5 and2.5, and so on. The arrivalsare randomly distributedaccording to a

Uniform distribution during the time interval in which theyarrive.

The arrival cycle is now definedand can be assignedto an arrivalsrecord in theArrivals edittable.

 Assigning Arrivals to the Arrival Cycle

 After an arrivalcycle has been defined, assign an arrivalrecord to the arrivalcycle in the Arrivals edit table for the arriving

customers. The arrival record for the bank example appears below. See Arrivalson page 210 for more information.)

The total number of customersper day isnormallydistributed with a mean of1000 and a standarddeviationof 35. The

number of occurrences of the cycle is20, representing 20 working days (1 month) of time. The frequency in this case

refersto theperiod of the cycle or thetime between the startof one cycle and thestart of thenextcycle, which is every24

hours. Make sure the arrival frequency isdefined with the same time unit as the arrival cycle.

Without an arrival cycle, all the Customers for a single day would arrive at the start of the simulation. An arrival cycle will

divide the quantity specified in the Qty each... field into various sized groups arriving throughout the day.

To assign the arrival cycleto thearrivalrecord, clickon the Qty each... heading buttonto open a dialog with the namesof alldefined cycles.

©ProModelCorporation

Building the Model: Advanced Elements 336

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 350/715

337 ProModel 2011 User Guide

Clickon the entryBank_Arrivalsand select OK. The Qty each... field now includesthe cycle.

Cumulative Cycle Tables

In the previous example, percentageswere expressed non cumulatively. Thissame data could have been expressed

cumulativelyas follows:

Before Percent9:00am0

10:30 am 10

11:30 am 25

1:00 pm 55

4:00 pm 70

5:00 pm 100

The data isnow expressed cumulativelyand could be entered in the cycle table as follows.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 351/715

To specify cycles in cumulative form, simply choose Yesin the Cumulative... field of the Arrival Cycles edit table.

Please note

Time values remain cumulative regardless of the form of the percentages.

Arrival Cycles by Quantity

The previous example was based on the assumption that a certain percentage of arrivals came within a specified time

interval. An alternate method of specifying an arrival cycle isto specify the number of arrivals to arrive within each time

interval.

Example 1

Suppose that in the bankexample we knew that for each cycle period, the number of customersto arrive during each time

interval within the cycle period isas follows:

From Before Number 

9:00 AM 10:30 AM 10010:30 AM 11:30 AM 15011:30 AM 1:00 PM 3001:00 PM 4:00 PM 1504:00 PM 5:00 PM 300

With the data in this format, we specify the Arrival cycle by choosing Qty in the “Qty/Percent” field and complete the cycle

table as follows:

©ProModelCorporation

Building the Model: Advanced Elements 338

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 352/715

339 ProModel 2011 User Guide

This table could also be specified cumulativelyby choosing Yesin the Cumulative... field and entering the quantity values

in a cumulative format.

Please note

When specifying Arrival cycles by quantity, the value entered in the “Quantity each” field of the Arrivals

edit table changes meaning. Instead of the t otal arrivals per cycle, it represents a factor by which all 

entries in the cycle table will be multiplied. This field may be any valid expression which evaluates to a

number. This allows the same arrival cycle to be entered for more than one arrival record that has a dif- 

ferent factor applied to it. For example, you might want to define a different factor to a customer arrival 

 pattern depending on the day of the week. In this case, define an arrival reco rd for each day with a

frequency of one week.

Example 2 

Suppose we wish to see theeffecton theBankexample if the number of arrivals is increased by 50%. The relative quan-

titiesper time intervalremain thesame butnow 50% morecustomersarriveeach day. Using thedata from the previous

example, we enter the same values in the Arrival cycle quantity fields, but specify a value of 1.5 in the quantity field of the

 Arrival edit table.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 353/715

The result isan arrival schedule with the following parameters.

From Before Quantity

9:00 AM 10:30 AM 15010:30 AM 11:30 AM 225

11:30 AM 1:00 PM 4501:00 PM 4:00 PM 2254:00 PM 5:00 PM 450

Table Functions

Table functions provide an easy and convenient way to retrieve a value based on an argument (i.e., some other value)

that ispassed to the table. Table functions specify a relationship between an independent value and a dependent value.

 All table functionsare defined in the Table Functions editor which is accessed from the Build menu.

©ProModelCorporation

Building the Model: Advanced Elements 340

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 354/715

341 ProModel 2011 User Guide

How to access the function table editor:

1. Select More Elements fromthe Build menu.2. Select Table Functions.

Table Functions Editor 

Table functions are defined by the user and return a dependent (or look-up) value based on the independent (or ref-

erence) value passed as the function argument. Independent values must be entered in ascending order. If the inde-pendent value passed to a table function fallsbetween two independent values, a dependent value for the unspecified

reference value iscalculated by linear interpolation. The following two examples show how to specify a linear function

(where only two reference values are needed to define the entire function) and a nonlinear function (where more than

two reference values need to be specified).

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 355/715

Example 1

The example below shows a relationship that exists between the time required to process an order and the number of enti-

ties in the order. As the number of entities increases, the time required to process the order also increases. The rela-

tionship in this case islinear, meaning the processing time isdirectly proportionalto the number of copies in the order.Because of the linear relationship, only the two endpointsneed to be entered in the function table. (The function table for 

this example isgiven in the discussion on the Table Function editor.)

Example 2 

In this example the relationship between the independent value and the dependent value isnonlinear and inversely pro-

portional. In addition, interpolation isrequired to determine the dependent value if the independent value passed to the

function lies between the independent values given explicitly in the table function.

In the example above the dependent value representsa factor which isto be multiplied by the processing time required to

complete an order. Each order isassigneda number, 1 through5, according to the levelof quality desired.In this case, a

lower number represents higher quality. (The function table for this example islisted in the following explanation of theFunction Table Editor.)

.

©ProModelCorporation

Building the Model: Advanced Elements 342

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 356/715

343 ProModel 2011 User Guide

Table Function Edit Table

The Function Table Editor iswhere all function tables are created and edited. The fields of the Function Table editor are

defined below.

ID The name of the function table.

Table... Clickon this heading button to open a table for defining the independent and dependent values of the function.

The tables for the two example functions are given below.

The independent and dependent values allow any general expression such as numbers, variables, and math functions.

The fields are evaluated only at translation, and cannot vary during the simulation.

When calling a user-defined table function, if the independent value isout of range, then the table function will return a

zero for the dependent value. Consider the following function table, Operation_Time:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 357/715

If the function were called with the command “Operation_Time(5),” the independent value passed to the table function

Operation_Time would be five. But five isbeyond the limits of the table, so the dependent value returned will be zero. Like-

wise, if the independent value is1, the dependent value returned willbe zero. However, if 2.7 is enteredas the inde-

pendent value, ProModelwill interpolate and return a value between 30 and 50.

User Defined Distributions

Occasionally, none of ProModel’sbuilt-in distributionscan adequately represent a data set. In these cases, the user may

define a User Distribution to represent the data set. User Distributionsspecify the parametersof user-defined (empirical),

discrete, or continuous probability distributions.

©ProModelCorporation

Building the Model: Advanced Elements 344

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 358/715

345 ProModel 2011 User Guide

How to create and edit user distributions:

1. Choose More Elements from the Build menu.2. Choose User Distributions.

User Distribution Edit Table

 A user-defined distribution is a table of empirically gathered data. User distributions may be either continuous or discrete,

and may be cumulative or non-cumulative (more information concerning these options isfound later in this section). Thedata isentered into the User Distribution edit table. The User Distribution edit table’sfields are described below.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 359/715

ID The name of the distribution. When referencing distribution tables (in the operation logic, for example) the open and

closed parentheses after the distribution name must be used, such as Dist1(), OpTime().

Type... Discrete or Continuous depending on the number of possible outcomes.

Cumulative... Yesor No depending on whether the distribution isto be specified in cumulative or non-cumulative format.

Table... Clickon this button (or double click in the field) to open an edit table for defining the parameters of the distribution.

Once a distribution hasbeen defined, the field changes from “Undefined” to “Defined.”

The combination of Discrete and Continuous distributions, along with the ability to express either in cumulative or non-

cumulative terms, createsfour possible formats for specifying distributions. The remainder of thissection gives examples

and proceduresfor specifying each of these distribution types.

Discrete Distributions

Discrete distributionsare characterized by a finite set of outcomes, together with the probability of obtaining each out-

come.In the following example, there are three possibleoutcomesfor the group size: 30% of the time the group sizewill

be 10, 60%of the time the groupsize will be 20, and 10% of the time the group size will be 30.

One way to represent a discrete distribution isby its probability mass function, listing the possible outcomestogether with

the probability of observing each outcome. A probability mass function for the example above could be expressed as fol-

lows (with G representing the group size).

G102030

©ProModelCorporation

Building the Model: Advanced Elements 346

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 360/715

347 ProModel 2011 User Guide

P(G) .30 .60 .10

 An alternate way to represent a distribution is through a cumulative distribution function, listing each possible outcome

together with the probability that the observed outcome will be lessthan or equal to the specified outcome. A cumulative

distribution function for the example above could be expressed as follows.

G102030

P(G) .30 .90 1.0

In the next example, the number of partsare grouped into a batch according to a user distribution.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 GROUP Dist() AS Batch

Batch Loc1 WAIT 10 min

Routing Table

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 Batch Loc2 FIRST 1 MOVE FOR 5

ProModelprovides the flexibility to specifydiscrete distributions according to a probabilitymassfunction or a cumulative

distribution function. Select Yesor No in the Cumulative field of the Distribution edit table and fillin the table according to

the probabilitymass function or the cumulative distribution function. The following tables show the discrete distribution

example defined in both formats.

Discrete (probability mass function)

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 361/715

Discrete (cumulative distribution function)

Continuous Distributions

Continuous distributions are characterized by an infinite number of possible outcomes, together with the probabilityof 

observing a range of these outcomes. In the following example, there are an infinite number of possible operation timesbetween the values2.0 minutesand 8.0 minutes. Twentypercent of the time theoperation will take from 2.0 to 3.5 min-

utes, 40% of the time the operation willtake from3.5 to 5.0minutes,30% of the time theoperation will take from 5.0 to 6.0

minutes, and 10%of thetime the operation will take from 6.0 minutesto 8.0minutes.

 As with a discrete distribution, a continuous distribution can be defined in two ways. A probabilitydensityfunction lists each

range of values along with the probability that an observed value will fall within that range. Each of the values within the

range has an equal chance of being observed, hence the piece-wise linearity of the c.d.f. within each range of values. A

probabilitydensityfunction for the example above isexpressed as follows.

P(0.0 <= X < 2.0) = 0.00 P(2.0 <= X < 3.5) = 0.20 P(3.5 <= X < 5.0) = 0.40 P(5.0 <= X < 6.0) = 0.30 P(6.0 <= X

<= 8.0) = 0.10 P(8.0 < X) = 0.00

The following table representsthe p.d.f. for this example.

©ProModelCorporation

Building the Model: Advanced Elements 348

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 362/715

349 ProModel 2011 User Guide

 As with a discrete distribution, a cumulative distribution function for a continuous distribution specifies the probabilitythat

an observed value will be lessthan or equal to a specified value. A c.d.f. for the example distribution isas follows (where x

representsthe return value).

x 2.0 3.5 5.0 6.0 8.0

P(X <= x) 0 .20 .60 .90 1.0

The following table representsthisc.d.f.

External Files

Externalfilesmay be used during thesimulation to readdata into the simulation or write data asoutput from the sim-

ulation. Files can also be used to specify such thingsas operation times, arrival schedules, shift schedules, and external

subroutines. All external files used with a model must be listed in the External Files Editor which isaccessed from the Build

menu.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 363/715

How to define external files:

1. Select More Elementsfrom the Build menu.2. Select ExternalF iles.

External Files Editor 

The External Files Editor consists of an edit table with fields specifying the external files to be used during the simulation.

Each of these fields isdefined below.

©ProModelCorporation

Building the Model: Advanced Elements 350

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 364/715

351 ProModel 2011 User Guide

ID An aliasto be used in the model for referencing the file. Note that this ID does not have to be the same as the file name.

Type Clickon this heading button to display the following menu. The six file types are discussed in the remainder of this

section.

File Name... The actualfile name, including the path. Press the heading button or double click in this field to browse for a

specific file.

Prompt A promptto be displayed at run time in theevent that thespecified file cannot be opened.

Notes... A general notes field for entering descriptive information about the file. Clickthe heading button or double click in

this field to open a larger window for entering notes.

File Types

Externalfilesmay be defined asone of severaltypesdepending upon the purpose of the file.

General Read File

 A General Read file containsnumeric valuesread into a model using a READ statement. Values must be separated by a

space, comma, or end of line. Anynon-numeric data will be automatically skipped when obtaining the next numericvalue.

See Read on page 613 for correct syntaxand examples. For example, if you specify a normal distribution such as N(5,1)

in the GeneralRead file, ProModelwillnot return a numericvalue following the distribution. Instead, it will read in the firstvalue,5, andthe next value,1.

 A GeneralRead filemustbe an ASCII file. Data created in a spreadsheet must be saved asa text file.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 365/715

General Write File

 A General Write file is used for writing text strings and numeric valuesusing the WRITE and WRITELINE statements. Text

strings are enclosed in quotes when written to the file, with commasautomatically appended to strings. Thisenables the

files to be read into spreadsheet programs like Excel or Lotus 1-2-3 for custom viewing, editing, and graphing. Write filesmay also be written to using the XWRITE statement which gives the modeler full controlover output and formatting. See

Write on page 652, WriteLine on page 653, or Xwrite on page 656for correct syntaxand examples.

If you write to an external file during multiple replications or a single, independent run, the data will be appended to the

data from the previous replication. However, if the RESET statement isused, the data isoverwritten for each replication.

Entity-Location File

 An Entity-Location file (or expression file) isa spreadsheet (.wk1 or .xls format only) file containing numeric expressions

listed by entity and location name. Entity names should appear across the top row, beginning in column 2, while location

names should be entered down the first column, beginning on row 2. A numeric expression for each Entity-Location com-

bination isentered in the cellwhere the names intersect. An example of a spreadsheet file isshown next.

To use the value stored in an Entity-Location file as an operation time, callout the file identifier in the operation logic as

shown in the following example. (In this example, “SvcTms” isthe File ID of the desired Entity-Location file.)

Please note

If the .wk1 or .xls file contains more than one sheet of data, only the first sheet will be read in.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT SvcTms()

Routing Table

©ProModelCorporation

Building the Model: Advanced Elements 352

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 366/715

353 ProModel 2011 User Guide

Ou tp ut ... Dest in at io n... Ru le... Mo ve L og ic...

1 EntA Loc2 FIRST 1 MOVE FOR 5

By specifying SvcTms() with no argumentsin the parentheses, a value isr eturned from the Entity-Location File “SvcTms”

for the current entityat thecurrent location,i.e., EntA at Loc1. You mayalso return the value stored in any other cell of an

Entity-Location file by explicitly specifying the entity and location names in the parentheses, e.g., SvcTms(EntB, Loc1) or 

SvcTms(EntC, Loc2).

 Arrivals File

 An Arrivals file is a spreadsheet (.wk1 or .xls format only) file containing arrivalinformation normally specified in the Arrival

Editor. One or more arrival files may be defined and referenced in the External Files Editor. Arrival files are automatically

read in following the reading of the Arrival Editor data. The column entriesmust be as follows:

Column Data A Entity nameB Location nameC Quantityper arrivalD Time of first arrivalE Number of arrivalsF Frequencyof arrivalsG through... Attribute assignments

Columns A throughF mayhave anyheading desired as longas the data is of theproper type.If attributesare to be

assigned, columnsG and higher should have headings that match the names of the attributes being assigned. The fol-

lowing example illustrates these points.

Example

The values in the spreadsheet cells must be a numeric expression as opposed to a formula commonlyused in spread-

sheets. For example, if cellE4 in the spreadsheet above was actuallya formula generating the value 100, the value Pro-

Model generatesis zero. ProModelonly recognizes expressionsfor the Qty, Time, Number, and Frequencycolumnsin a

spreadsheet.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 367/715

When defining an External ArrivalsF ile, you do not need to define arrivals in the Arrivalsedit table. If several entities are

scheduled to arrive at the same time, entities arrive in the system according to the order in which theyappear in the arrival

list. However, when there ismore than one occurrence for thearrival record,the next entitywill not arriveuntil the

frequency haselapsed. Meanwhile, other entities listed below the record maybe allowed to arrive.

Please note

If the time of the first arrival is zero and t here is only one arrival of some quantity, you do not need to com- 

 plete additional cells. Likewise, if there is only one arrival at a time other than zero, you do not need to fill 

in add itional cells after the Time entry.

Please note

If the .wk1 or .xls file contains more than one sheet of data, only the first sheet will be read in.

Shift File

 A shift file record is automatically created in the External Files Editor when you assign a shift to a location or resource. If 

shifts have been assigned, the name(s) of the shift file(s) willbe automatically created in the External Files Editor. If no

path islisted for the shift file, ProModelwill search in the default modelsdirectory.

Please note

Creating a shift file record in the External Files Editor should no t b e done. It is don e automatically 

through the shift assignment.

DLL File

 A DLL file is needed when using external subroutines through the XSUB() function. See Subroutines on page 326 for 

more information.

Excel File

 An Excel file is automatically created in the External Files Editor when you assign a shift to an array import file. If the exter-

nalfile has been assigned, the name(s) of the Excel file(s) will be automatically created in the External Files Editor. If no

path islisted for the Excel file, ProModelwillsearch in the default models directory.

Other External Files

In addition to allowing the user to define external files, ProModelcreatesother external files. ProModel automatically

createsand/or opens files depending on the specifications in the model. Below isa description of the different files Pro-

Model creates( * indicatesfiles that remain open while the model isrunning):

Extension Type Description

©ProModelCorporation

Building the Model: Advanced Elements 354

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 368/715

355 ProModel 2011 User Guide

CSV ASCII Export Data (comma delimited)

MOD* Binary Model File

RDB Binary Output Database (basic statistics)

RDT Binary Output Time Series data

SED* Binary Seed File used to store seed values for each replication

TRC* ASCII Trace File

GLB Binary Graphic Library Files

PMOV ProModelOutput Viewer SettingsF ile that stores all the settings and options for reports and charts so

theycan be recreated when viewing simulation results in Output Viewer.

PMCAL ProModelCalendar File

Open Files

Depending on the model specifications, there may be some occasions where several files need to be open simul-taneously to execute the model. There isa feature whichallowsthe user to access up to 255 open files at any time. The

[General] section of the promod.ini file contains the following statement: OpenFiles=n where n isthe number of files

between 20 and 255. The default is40. To change the number of available open files, simply edit thepromod.ini file such

that OpenFiles equals the desired number and then restart ProModel. There isalso the option to close files using the

CLOSE statement. See Close on page 542.

Streams

 A stream is a sequence of independently cycling, random numbers. Streams are used in conjunction with distributions.

Up to 100 streams may be used in a model. A stream generatesrandom numbersbetween 0 and 1, which in turn are

used to sample from selected distributions. By default, all streamsuse their own stream number as the starting seed

value, and are not reset between replicationsif multiple replications are run. To assign a different starting seed value to astream or to cause theseedvalue to be reset to the initial seed value between replications, use the Streams Editor. The

Streams Editor is accessed from the Build menu as shown below.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 369/715

How to access the streams editor:

1. Select More Elementsfrom the Build menu.2. Select Streamsfrom thesubmenu.

Streams Edit Table

The Streams Editor consists of an edit table with three fields. The fields of the Streams edit table are explained below.

©ProModelCorporation

Building the Model: Advanced Elements 356

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 370/715

357 ProModel 2011 User Guide

Stream # The stream number (1 to 100). Thisnumber identifies each stream.

Seed # The seed value (1 to 100). Streamshaving the same seed value generate the same sequence of random

numbers. For more information on seed values, see Using Random Number Streamson page 357.

Reset... Set this field to YES ifyou want thestream to be reset to the initialseed value for each modelreplication. Set this

field to NO if you want the stream to continue where it left off for subsequent replications.

The Streams Editor pictured above shows five defined streams. Each stream has a unique seed value. Streams 1, 2 and5 will be reset for each replication, while streams3 and 4 will continue where theyleft off for subsequent replications.

Using Random Number Streams

One of the most valuable characteristics of simulation isthe ability to replicate and isolate probabilisticfunctions and activ-

ities within a system for specific study. In the real world, eventstend to occur randomly, according to a certain statistical

pattern or distribution. To help you model this randomness, ProModeluses distributions.

When you include a distribution (e.g., Normal, Beta, and Gamma) in your model, ProModeluses a random number gen-

erator to produce a set sequence or stream of numbersbetween 0 and 1 (0 <= x < 1) to use in the distribution. Before it

can select anynumbers, however, ProModelrequires an initialseed value to identifythe point inthe streamat which to

begin. Once you specify a seed value, ProModel“shifts” the random number selection (in increments of 100,000

numbers) by that number of positions and starts sampling values. Since there isonlyone random number stream, this will

ensure that the selected values do not overlap. ProModel includes100 seed values, and each seed produces a unique

set of random numbers.If you do notspecify an initialseed value,ProModelwill use the stream number asthe seedvalue

(i.e., stream 3 usesseed 3).

When you use a specific seed value (e.g., 17), ProModelproducesa uniquesequenceof numbersto use each time you

apply that seed value. Thisallows you to maintain the consistency of some model elements and permit other elements to

vary. (To do this, specify one random number stream for the set of activities you wish to maintain constant, and another 

random number stream for allother setsof activities.) In fact, because each seed value produces the same sequence of 

values everytime, completely independent model functions must use their own streams. For example, Arrival dis-

tributions specified in the Arrival Module should have a random number stream used nowhere else in the model. Thiswill

prevent activities that sample random stream values from inadvertently altering the arrival pattern (i.e., the activities will

not affect the sample values generated from the arrival distribution).

Please note

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 371/715

The random number generator is a prime modulus multiplicative linear congruential g enerator. The C code

implementation f or most of the random variates was written by Stephen Vincent and based on the algo- 

rithms described by Law and Kelton. See the Bibliography on page 672 .

Stream Example

The following example shows one reason why multiple streamsare useful.

Two machines, Mach1 and Mach2, are to go down approximatelyevery 4 hoursfor servicing. To model this, the

frequency or time between failures isdefined by a normal distribution with a mean value of 240 minutes and a standard

deviation of 15 minutes, N(240,15). (For more information on distributions, see see User Defined Distributions on page

344). The machines will go down for 10 minutes. Because no stream isspecified in the normal distribution, ProModeluses

stream number one to generate sample values for both machines. So if the next two numbers in stream number one

result in sample values of 218.37 and 264.69, Mach1 will receive 218.37 and Mach2 will receive 264.69. Therefore, the

two machineswillgo down at different times, Mach1 after almost four hoursand Mach2 after somewhat more than four 

hours.

Suppose, however, that the resource to service the machinesmust service them both at the same time. The machines

wouldhave to go down at the same time.Stream number one will notbring them down at the same time because stream

number one sendsthe machine’s distributions two different numbers. Using two streams( in the example below num-

bered ten and eleven) with the same initial seed will ensure that the machines receive the same random number every

time. The two streams havethe same starting seed value so they will produce exactly the samesequence of random

numbers. The first number of stream ten will be exactly the same as the first number of stream eleven; the second

numbers will be the same; indeed, every number will be the same.

The Streams window below shows streamsten and eleven with the same seed values.

Byassigning stream ten to Mach1 and eleven to Mach2, both machines willgo down at exactly the same time.

©ProModelCorporation

Building the Model: Advanced Elements 358

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 372/715

359 ProModel 2011 User Guide

This first clock downtime for each machine will occur at the beginning of the simulation. After that, the first downtime

occurs at 218.37 minutes for both machines. Defining different seed values for the streamswould produce different

sequences and therefore different downtimes. Using the same stream number for the clock downtimes would also

produce different values. But two different streamswith the same seed value will bring both machines down at the sametimes.

Note that if a third machine were to use one of the streams, for example if Mach3 were to use stream eleven,the two

machineswould no longer go down together.Mach1 would use thefirst value from stream ten; Mach2 would use thefirst

value from stream eleven; and Mach3 woulduse the second value from stream eleven.The first time Mach1 and Mach2

went down, theywould go down at thesametime because the first number in streams ten and eleven is the same.But

thereafter they would not. The second time theywould go down at different times because Mach1 would receive the sec-

ond value fromstream ten, Mach2 would receive the third value from stream eleven, and Mach3 would receivethe fourth

value from stream eleven.

Please note

Stream notes:

1. If a stream value is not specified fo r a d istribution, th e stream is assumed to be stream one. Stream #1

does not automatically reset after each replication.

2. The stream parameter is always the last parameter specified in a distribution unless a location param- 

eter is also specified. See Distribution Functions on page 521 for details.

Material Handling Systems

The following section provides advanced techniques to model Material Handling Systems.

Crane Systems

To implement cranes in ProModel, the Path Networkmodule allows three typesof networks: non-passing, passing, and

cranes. From this module, you can lay down and orient a crane envelope, define the bridge separation distance, and

define the graphics for rails and bridgesin the bay. Additionally, the Resources module allows you to define bridge and

hoist speeds, and hoist graphics for one or more cranes operating in the same bay.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 373/715

Creating Multi-Bridge Crane Systems

Modeling multiple cranes operating in the same bayhas never been so easy!

User defined bridge separation distances, extensions to regular dynamic resource usage statements, and a set of new

priority rules have been introduced in order to let you manage conflicting movements in the same envelope zone.

Crane Envelope The parallelogram-shaped area represented by a crane type path network, bounded by two railsand

the linesconnecting the endpointsof those rails. The lines connecting the endpointsof rails are effectively the two extreme

positionsof the center-linesof any bridges operating within the envelope.ProModel usesthe end of one of the railsas the

envelope origin to serve as a reference point for all logical distance calculations within the envelope.

Bridge Separation The minimum distance you want to maintain between center-lines of two neighboring bridges. Thisdis-

tance is notrelatedto how closea bridge center-line can getto oneof theextremeendpointsof the envelope. Caution: if 

bridge B triesto move toa node N that liesvery close to the left end of the envelope, and bridge A is tothe left of bridge B,a

run-time error will occur if the space remaining between node N and bridge A isless than the bridge separation distance.

To avoid such problems, define the crane envelope wide enough to allow sufficient space beyond any serviceable nodes.

Crane Priorities, Preemption & Bridge Bump-Away 

ProModelassociatestwo typesof priorities with the operation of crane resources: (1) resource request priority, and (2)

crane move priority.

Resource Request Priorities Used to resolve any conflicts that arise between multiple tasksrequesting the same resource

at the same time. This priorityscale follows the rules that regular dynamic resource priorities do (i.e., 10 levelsof 100). Use

this priority to preempt crane resources from lower priority tasksto serve higher priority tasks.

Crane Move Priorities Used for multiple bridges operating in the same envelope, to decide which crane bridge haspriority

over another while moving. Thispriority scale isalso in the range [0...999], but doesnot have anypreemption levels. Any

higher value has overriding priorityover a lower value. You can assign priorities to crane resources temporarily, on a task-

by-task basisvia extra parametersin the GET, JOINTLY GET, USE, and MOVE WITH statements. Therefore, you canonly use priorities for cranes that are either moving to respond to a resource request or moving to deliver a part. Moving to

downtime, off-shift or breaknodes hasthe default (0) move priority. Moving to park has the lowest move priority(the same

asan idle crane).

You can further sub-divide crane move priorities into three categories:

l TaskMove Priority Assigned by the modeler via parameterspassed to resource usage statements(GET, MOVE

WITH, etc.). Used asthe base move priorityfor travelto pickup and travel to deposit.

l Claim Priority If crane A’s bridge isheaded towards its ultimate (task) destination, the claim priority isequal to the

task move priorityof crane A. Otherwise (if crane A’s bridge ismoving under the influence of crane B), claim prior-

ity isequal to the claim priority of the claim inducer bridge (bridge B).

l Effective Claim Priority Applies only to envelopeswith three or more cranes. If multiple crane bridges are moving

in the same direction with overlapping claims, the effective claim priority of anybridge in the overlapping region is

the maximum of all the claim priorities of those bridges.

©ProModelCorporation

Building the Model: Advanced Elements 360

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 374/715

361 ProModel 2011 User Guide

Crane Operations

The operation of cranes in ProModelhas been designed to closely resemble the real-life operation of cranes. Under 

most circumstances, you need not be concerned with how ProModel handles crane movements. The following oper-

ational specifications are intended as a reference only and are not essential in order to model cranes using ProModel.

Crane Animation

During a simulation run, entities picked up by a crane appear graphicallyon the entity spot for the hoist. The hoist graphic

appears above the entitygraphicand the bridge of the craneappearson topof theentityand hoist graphics.

Crane Specifications

When you define cranesfor your model, consider the following:

l Crane GraphicsIn the Resources module, the selected graphicrepresents the hoist. You may define, edit, and

size multiple graphics for the same hoist the same way you create multiple graphics for other resources.

l Units & Multiple CranesCrane resources limit you to one unit. When you define multiple cranes operating in the

same envelope, define them as separate resources—each assigned to the same crane network.

l Downtimes In addition to the clock and usage downtimes you may define for cranes, you can assign cranes to

shiftsin the same wayyou assign other resources.When a crane goes down, it moves to the downtime node

specified in the DTs dialog.If you do notassociatea node with thecrane downtime,the crane goes down at its

current position.

l SpecificationsCr anesrequire separate values for bridge and hoist speed and acceleration. You must enter 

Speed (Empty), Speed (Full), and Accelerate and Decelerate values for bridge movement along the rails and

hoist movement acrossthe bridge. In each field, the format isBridge Value, Hoist Value (e.g., if you enter “150,

20” in thespeed field, thebridge movesat 150 and the hoistat 20 feet per minute).Althoughyou must enter 

speed values, acceleration and deceleration values are optional( if you leave them blank, ProModelassumes

the crane to have an infinite acceleration and deceleration capability. (Hint: this provides better run-time com-

putational efficiency).l Crane Searches Define Workand Parksearchesin the same way you define searches for other resources.

l Node Logic Define entryand exitlogicfor cranesat nodesin the same wayyou define node logic for other 

resources.

Handling Zone Claims In Multi-Crane Envelopes

If a crane is inone of thefollowing states, it will be referred to as“immovable at a node.” No other crane will be able to

push this crane away, regardless of its priority.

l Picking up or depositing an entity.

l Being used at a location.

l Having a downtime, off-shift time, or break time.

ExtendedMovement ZoneThe netzonethat itneedsto traverse ± bridge separation distance (± depending on the direc-

tion that it will go).

Before starting to move, any <crane A> attemptsto claim its extended movement zone (zone A) for the entire movement

duration.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 375/715

ProModelcan reject the claim attempt of crane A for zone A for several reasons:

l If there are immovable cranes in zone A

l If there are anycranesin zone A with move prioritiesgreater than or equalto1 themove priorityof crane A, ifthey

are going in the opposite direction, or theyare going in the same direction with conflicting destinations.2

Case Examples of Zone Claims

The following cases illustrate specific situations with examples:

Case 1

BridgeB starts moving first, from [B] to [B'] and claimsthe zone [B'~B] inthe ¨ direction. BridgeA wantsto move from [A] to

[A'] inthe opposite direction.If the move priorityof A islessthanor equalto the move priorityof B, we let bridge A startmov-

ing towards [B' - bridge separation]only.If A hasa higher move priority, B is stopped immediately and sent backto [A' +

bridge separation]. In the latter case, A may queue up behind B.

Case 2

1

Special case treatment not “>=” but strictly “>” if all of the following conditionshold: (1) if the bridge that A istrying to

oppose isstationary,(2) unless crane A istrying to move justto park (ifA hasa taskor ifit istrying to move outof theway of 

another bridge), (3) if the one A istrying to push isidle or its bridge was blocked before reaching its destination.

2

Destination Conflict Test: If sign (B' - A' - sign(existing claim)*(bridge_separation)) = sign (existing claim) then not con-

flicting.

©ProModelCorporation

Building the Model: Advanced Elements 362

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 376/715

363 ProModel 2011 User Guide

BridgeB starts moving first, from [B] to [B'], then bridge A wants to move from[A] to [A']. Bridge B claims zone [B~B'] inthe

Æ direction. Since bridge A wantsto move in the same direction and their destinationsdo not conflict (assuming that B'-A'

is greater than the bridge separation), bridgeA movesallthe way. If B hasalready cleared thezone [A~(A' + bridge sep-

aration)] bythe time A wantsto start moving,A moves independently. Otherwise, A mayqueue up behind B. (If the dis-

tance B'-A' is less than the given bridge separation and the move priorityof A isgreater than the move priorityof B, bridge

 A will push away bridge B, and crane B will not respond to the request while passing over [B']).

Case 3

BridgeB starts moving first, from [B] to [B'], then bridge A wants to move from[A] to [A']. Bridge B claims the zone [B~B'] in

the Æ direction. Since bridge A wantsto move in the same direction and their destinations do conflict, priorities will be con-

sidered. If the move priorityof A isnot greater 1 than the move priorityof B, bridge A startsmoving towards [A'' = B'-

bridge separation] only. Otherwise, A will push B away, and B will not respond to the request while passing over [B']. In

both cases, A mayqueue up behind B.

Case 4

BridgeB starts moving first from [B] to [B'], claiming zone [B~B'] inthe Æ direction. Bridge A wantsto movefrom A to A'

and starts moving behind B. Bridge C wantsto move in the opposite direction with a higher move prioritythan both of the

other bridges. ProModelinterrupts bridgesA and B and lays a new course for both bridgeB [B'' = C' - bridgeseparation]

and bridge A [A'' = B'' - bridge separation]. In this case, B mayqueue up behind A, andC behind B.

1In this special case, bridge A’s claim priority competes with the task move priority of bridge B.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 377/715

Case 5

This is an extension of Case 4. Assume that the move prioritiesfor cranebridgesA, B, and C are 3, 1, and 2 respectively.

When bridge C tries to claim zone [C'~C] in the ¨ direction, it faces an “effective priority” of 3 and isunsuccessfulin its orig-

inalclaim, so it starts moving towards[B' + bridge separation]. Bridge B goes outside the effect of bridgeA in the second

part of itsmovement, [(A' + bridge separation) ~ B'] at time t0. However, bridge C doesnot override bridgeB and start

moving towards [A' + 2 * bridge separation] untilthe first “reclaim trigger event1” after time t0.

If ProModelrejects the original claim of crane A, crane A claims the largest available portion of the original zone, and imple-

ments the procedure described below to move its bridge through the subset zone. The crane waits until a “reclaim trigger 

event” occurs, and then repeats the claim attempt to let its bridge traverse the remaining distance. The hoist, on the other 

hand, moves directlyto its relative destination on the bridge, independent of the bridge zone claim results. In case of 

bridge interruption, the hoist doesnot stop moving. Therefore, for anyparticular crane move, the combined trajectory of 

hoist and bridge may change depending on zone availability at the time of the claim.

If craneA accepts the claimattempt, all cranes inside the claimed extended zonebump away at thetime of the claim. Thisclaim also preventsany other cranes with move priority lessthan or equal to the move priority of A from entering the

claimed zone in conflicting directions.

Zone Claim Notes

A crane cannot do a pickup or deposit while another crane pushes it away, even though the request might

be on its way.

When you interrupt a crane bridge and ask it to make a new claim (or update its claim), its speed is reset to

zero and ProModel re-evaluates its mobility characteristics. ProModel recalculates the move time with

these new parameters. This rule also applies to bridges that are moving when a bridge behind them with a

1Discussed later in this section.

©ProModelCorporation

Building the Model: Advanced Elements 364

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 378/715

365 ProModel 2011 User Guide

higher priority and a conflicting d estination makes a new claim to go in th e same direction. See Case 3

(when priority of A is greater than priority of B) for an example.

Treatment of Potential Queue-Up SituationsFor all bridge claims with the potential of having two bridges queue up after one another (mentioned in the example

cases above), the following rule applies:The acceleration rate (a), maximum speed (s) and deceleration rate (d) of the following bridge (F) are compared with

the a, s, and d of the leading bridge (L). If all of the following conditions are true, bridge F moves independent of bridge L.

Conditions for No Queue-Up

1. aF <= aL The following bridge cannot accelerate faster than the leading bridge.

2. sF <= sL The following bridge’s maximum speed cannot be greater than the leading bridge.

3. dF >= dL The following bridge can decelerate equallyor faster than the leading bridge.

If anyone of the aboveconditions fail, bridge F movesat thesamespeed as bridgeL, maintaining the distancethat

existed between them at the time F started moving.

Please note

Condition 3 usually creates a deviation from the typical real life situation, b ut it is necessary to avoid time

consuming computations that can adversely affect the run-time performance of models with crane

resources. To avoid unrealistic queue-ups when modeling multiple bridges with different mobility char-

acteristics in the same crane envelope, make either no bridge deceleration entry (infinite deceleration), or 

use the same overall average deceleration rate for all crane bridges in that envelope.

Bridge Motion after Queue-Up

If bridgeA is queued up behind bridge B, bridgeA goesthrough up to two stagesof movement. The firststage occurs

throughout the movement of bridge B. Bridge A mimicsbridge B’s motion, maintaining its original distance from bridge B.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 379/715

The second stage occurs after bridge B stops. Bridge A continuestraveling with the former average speed of bridge B

until it reachesits destination.

If bridgeB is moving to accomplishitsown task (asopposed to just moving outof A’s zone),then bridgeA might stopear-

lier, without going through the second stage. In this case, the total traveling time for bridge A iscalculated as if bridge A

were traveling with bridge B’s average speed.

When a bridge arrives at its destination, it triggers a chain queue-up re-evaluation that penetrates the crane envelope in

the opposite direction that the stopped bridge was moving. Thischain re-evaluation handles cases in which there were

multiple bridgesqueued up behind the stopped bridge.

Moving Idle Cranes can Respond to Resource Requests

 A crane can be idle and moving at the same time (moving to park or being pushed away by another). Independent of its

current position and movement direction, the crane still has the capability to respond to resource requests coming from

anywhere in the envelope. If allocated to a task with high enough travel-to-pickup move priority, the crane mayr everse

direction or terminate its move early, bumping other crane bridgeson its way.

Whenever a crane bridgechanges its claim, itchecksto see if there are any bridges behind it that are going in the samedirection with overlapping claims. If there are any, the newly claiming crane triggersa chain queue-up re-evaluation

towards the following cranes. The following example demonstrates this case.

 At time t0, crane A is called for a task and starts moving to [A'] with move priority mpA, pushing idle bridge B to [B' = A' +

bridge separation].At time t1 (bridge A andB are still moving), a request for craneB comes from[B" (1 or 2)] with move

priority mpB. Bridge B isallocated to the task immediately since it isavailable at the time.

If the new destination of bridge B is[B"1], the new claim of bridgeB doesnot conflict with the existing claim of bridgeA, so

the move priorities are not significant. ProModelr e-evaluates all motion values for crane B (acceleration, deceleration,

emptyand full speeds for both the hoist and the bridge) and crane B starts moving to its new destination.If the bridge

motion expressionsfor crane B have changed their values between t0 and t1, the queue-up statusbetween bridges B and

 A (and any others behind A) may change, so ProModel performs a chain queue-up re-evaluation.

If the new destination of bridge B is[B"2], the new claim of bridgeB conflictswith theexisting claim of bridge A, so Pro-Model considers the move priorities:

l If mpB<= mpA, then B does nothave enough priorityto stop A beforeA getsto its destination. Bridge B will have

to go on moving until [B'] and wait until it can claim the region [B"2 ~ B'] inthe Æ direction.

©ProModelCorporation

Building the Model: Advanced Elements 366

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 380/715

367 ProModel 2011 User Guide

l If mpB> mpA, then B doeshaveoverriding priorityover A. Bridge B stops bridge A at [B"2 - bridge separation],

starting a chain move termination which tellsbridge A to stop any other followers with the appropriate bridge sep-

aration distances between each. In this case, bridge A (and other possible followers) will have to wait until the

next reclaim trigger event to attempt reaching their original destinations.

Reclaim Trigger Events

Unsuccessfulclaims of all crane bridges in an envelope are re-attempted when a reclaim trigger event occurs in that

envelope. The following eventsare considered to be triggersfor claim re-evaluations in the related envelope:

l The duration of a USE <crane>statement expires.

l You free a craneusing the FREE statement.

l A crane completesa deposit (unless you specify the KEEP option).

l A cranecompletes a pickup and the craneis aboutto start moving to deliver.

l A crane downtime ends.

l You preempta craneresource.

l A bridge arrives at its task destination (before elapsing pickup/deposit time).

l There are no moving task bridgesleft (for envelopes with 3 or more cranes only).

In the first six cases, a crane changes state from “immovable” to a finite move priority. The seventh case may change the

“effective move priorities” of other cranes. ProModelrequires the eighth case for envelopes with three or more bridges

with overlapping operation zones: It ensures that two or more unsatisfied, opposing claims with the same move priority

will resolve their conflict based on earlier task assignment time instead of locking up the crane system. Hence, all of the

above cases create a potential to realize previously unsuccessful claims.

The reclaim trigger events for each envelope echo in the trace together with the triggering reason for model debugging

purposes. The results of reclaim attemptsfor each crane resource and its effects on other crane resources in the same

envelope are also displayed.

Other Crane Operation Rules

1. If an entitycurrentlypossesses a crane, all move logic for the entitymust use a MOVE WITH statement (until you

free the crane)—the entity cannot move without the crane.

2. Although an entitycannot possess more than one crane at a time,the entitymay possessa crane and a

resource of another type.

3. If a craneis in one of the following states, another cranecannot pushit away.

1. Picking up or depositing an entity.

2. Being used at a location.3. Experiencing a downtime, off-shift time, or breaktime.

4. The hoist moves to its relative destination on the bridge independent of the bridge zone claim attempt outcomes.

The hoist doesnot stop for bridge interruption so, for any particular crane move, the combined trajectory of hoist

and bridge may change depending on zone availability at the time of the claim.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 381/715

5. When a crane pushesawayan idle crane, the idle crane comesunder the controlof the workand park search

lists defined for the node closest to its bridge.

Crane Operations Notes

ProModelallows definition of resource pointsfor crane resources on envelope nodes to achieve the three dimensional

look for “lowering the hoist” upon arriving at a node. Since cranes can only have one unit, only the first resource point for 

anycrane at anynode is meaningful. Also, ProModelonly usesthe resourcepointsif the craneresource arrives at the

node to perform a task. In other words, the hoist does not lower if the cranearrives at a node to parkor justendsup there

after a bump.

In general,once ProModelmakesa matchbetween a resource request and a resource of the requestedtype, the

resource isallocated for that job and the simulation engine does not go on looking for other matchesthat can actually

reach to the requester sooner. Since cranes blocking other crane resources isa common phenomenon in multi-bridge

envelopes, extra care should be used while designing the active operation zonesand resource request logic in such mod-

els.

Nodes, Work, and Park Searches

ProModel“ registers” all cranes to their home nodes at the beginning of a simulation run. When a crane starts to move, Pro-

Model erases registration, and re-establishes it when the crane stops, according to the following rules:

1. Cranesassigned to a task (pickup, drop off, down) remain unregistered throughout intermediate stops and reg-

ister to the task destination node upon arrival.

2. Idle cranes that are bumpedaway, or cranesthat were unsuccessfulin claiming the entire bridgeregion to go

parking register themselves to the node closest to their bridge when theystop. If there are multiple nodes closest

to thebridge,ties are broken bythe minimum distanceto thehoistand then the order of appearance in the nodes

edit table. If the hoist isstillmoving at the time the bridge stops, the registry procedure executesby considering

the destination of the hoist.

Please note

Only users can instruct cranes to park on nodes. However, as a result of bump-aways, a crane can end up

standing still at po sitions that d o n ot necessarily correspond t o n odes. In any case, ProModel registers

an idle stationary crane to a node and places it under the control of work and park searches of that node.

Cranesfollow the same rules as regular dynamic resources while searching for assignments( returning to preempted

 jobs, exclusive & non-exclusive work searches, requests coming from nodes not included in the work search, etc.). There

are some additional stepsto handle interactionswith other cranes operating in the same envelope. Upon completion of its

task, a crane goesthrough these extra steps:

1. Letsother cranes in the same envelope re-attempt their claims, possibly generating an induced claim on itsbridge.

2. Even though other cranes mightbump away its bridge, the craneexecutesthe worksearch defined for it at its cur-

rentnode.(If requestsare waiting at different locationsof thesamework search record, ProModeltakesthe

resource request prioritiesinto consideration.)

©ProModelCorporation

Building the Model: Advanced Elements 368

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 382/715

369 ProModel 2011 User Guide

3. If it wasnot allocated to a taskor bumpedaway, the craneexecutes the park search defined for itat its current

node, or attemptsgoing home if return home ischecked.

Please note

A crane bridge moving to park cannot bump other idle bridges out of its way. In such a case, the bridge

goes as far as it can towards its destination and registers itself to the closest node upon stopping (using

the rules d iscussed above).

Crane Resource Statistics

The statistics reported for cranesare very similar to regular dynamicresource statistics. The following definitions highlight

the differencesin the interpretations.In Use Includes the following states:

l Stationaryuse at a location via GET, JOINTLY GET, and USE statements.

l Gross move time while delivering — actuallycarrying an entity from one location to another.

l Pickup and deposit times before and after the move to deliver.

Travel To Use Isthe gross move time to start being used — traveling to respond to a request for either stationary use or 

use to pickup and deliver an entity to another location.

Gross Move Time May include the following times:

l Moving towards the actual destination.

l Possibly moving away from the destination, when bumped awayby a higher prioritybridge in the same envel-

ope.

l Stationaryblockage timesduring which the bridge iswaiting for a higher move priority bridge in the same envel-ope to lower its move priority.

Blocked Time Tallyblocked time by subtracting the internally computed, hypothetical net traveling time from the actual

incurred grossmove time. ProModeldefinesthe net time asthe time a cranewould have taken to getto its destination ifit

were the only bridge in its envelope.

Please note

The f irst component of gross travel time (moving towards t he actual destination) may be greater than the

net t ravel time, since it may include going back towards th e destination after anot her crane bumps it

away. It may also involve deviations from the bridge’s original motion values when queued-up behind

slower bridges.

Special Case—Blocked Time Accrual for Moving to Park 

Remember that an idle crane registers itself to the closest node whenever its bridge stops. If the hoist isstillmoving, Pro-

Model uses the destination of the hoist to breakany ties between nodes that are equidistant to the bridge position.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 383/715

In case of an unsuccessfulclaim attempt to move to park,the crane bridge needsto stopbefore reaching the instructed

park node, and ProModelignoresthe hoist travel for statistics purposes. The “travel to park” statistic terminates at the time

the bridge stops,not when bridge or hoist stoptime reachesitsmaximum value.In this case, thenet moving time to park

computes as the bridge move time from current position to the endpoint of the claim, using originalbridge motion values

for the crane resource. Blocked time can accrue if this bridge queues up after a slower bridge that isalready moving

(remember that a crane moving to park cannot bump another crane).

Conveyors

 A conveyor is any moving track, belt, chain, or roller which transports parts from one location to another. This section will

help you better understand conveyors and how to model them using ProModel.ProModeldeterminesthe capacity of a conveyor by its speed and load spacing rather than a stated capacity. Specifically,

capacity isa function of the minimum allowable interload spacing on a conveyor (which isthe length of a queue position in

the case of accumulation conveyors) and its length. It maybe desirable, however, to impose a limit to the number of loads

permitted on the conveyor at any one time.Conveyors usually do not pick up anddrop offloads asin the case of lift trucks, AGVS, andcranes. You mustplace loads

onto and remove them from conveyors.

Depending on the nature of the conveyor and its operation, modeling a conveyor can be straightforward or complex. For single conveyor sections, modeling is very simple. Conveyor networks, on the other hand, give rise to several complexities

(recirculating, merging, etc.) that become more difficult to model.

Conveyor Simulation Benefits

Simulating your conveyor system will help you addressdesign and operational issues, answering the following questions:

l What isthe minimum conveyor speed that still meets rate requirements?

l What isthe load rate capacity of the conveyor?

l What isthe load delivery time for different activity levels?

l How much queuing do accumulation conveyors need?

l How manycarriers do trolley or power-and-free conveyors need?l What isthe optimum number of pallets to maximize productivity in a recirculating environment?

Conveyor Types

You may represent conveyors as one continuous span of randomly spaced parts( e.g., belt conveyor) or as intermittent

spaces or carriers located at fixed intervals (i.e., trolley conveyor).

 Accumulating & Non-Accumulating 

In addition to continuous or intermittent conveyors, some conveyors permit loads to accumulate or queue if conditions

impede forward motion progress. ProModelrefers to these conveyors as accumulating conveyors. Other conveyors pro-

vide no queuing and haltallactivityif forward progress of the leading part or load stops.ProModelrefers to thesetypes of 

conveyors as non-accumulating conveyors.

The following figure illustrateshow entities can continue to accumulate after the leading load stopson an accumulating

conveyor. How a non-accumulating conveyor can accept one additionalentity if the leading entity stops, however it is

unable to advance anyfurther since the entire conveyor stopped.

©ProModelCorporation

Building the Model: Advanced Elements 370

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 384/715

371 ProModel 2011 User Guide

The different combination of continuous or intermittent conveyors and transport or accumulation conveyorsresult in the

following four different kinds of conveyors that ProModelis capable of modeling.

Type Example

Continuous, Non-Accumulating Belt, chain

Intermittent, Non-Accumulating Tray, trolley

Continuous, Accumulating Roller 

Intermittent,Accumulating Power-and-free, towline

For best results, you should model carriers or part holding devices on intermittent, accumulating conveyors as though the

devices were entities waiting for you to load and unload other entities to and from them (see "Load" isProModel User 

Guide) as you move parts. An alternative but similar method isto use a JOIN statement and then specify two routingswhen you want the part removed (see Example E in "Modeling Conveyor Systems" in the next section). Yet another way

of modeling partswith carrierson a conveyor, is to simply set a partattribute equalto a particular value if the part is on a

carrier. If thepart isnot on a carrier, assign a different value to the same attribute. Operations mayoccur at either the

beginning or end of a conveyor as shown here.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 385/715

Single Section Conveyors

Conveyors used for simple queuing or buffering often consist of a single stretch or section of conveyor. Loads enter at one

end and exit at the other end. Load spacing isgenerallyr andom. These types of conveyors are generallyquite easy to

model. The modeler merelydefines the length and speed and stateswhether the conveyor is an accumulating or non-accumulating conveyor.

Conveyor Networks

 A conveyor networ k consists of two or more sections that are connected together to enable part merging, diverting, and

recirculating. In such instances, a conveyor may have one or more entrypoints and one or more exit points. Furthermore,

part entryand exit may not always happen at the beginning or end of the conveyor. In ProModel, loads or entities must

always enter at the beginning and exit at the end of conveyor networks. To model merging or branching in the middle of 

the conveyor, break the conveyor into smaller sections.

Modeling Conveyor Systems

 A conveyor system is a combination of one or more types of conveyors which interact to move parts. Such a system may

include branching, merging, and looping. The process of dividing conveyors into logical sections isfairly straightforward if you understand what constitutes a conveyor section.

For modeling purposes, a conveyor section isdefined as anyindependently driven segment of conveyor of the same type.

Conveyor turns are irrelevant as long as the conveyor remains unchanged and both are actuated or stopped together.

In ProModel, an accumulating conveyor section must end at the point where partsare permitted to accumulate or back

up. Thisgenerallyoccurs at a transfer point or process location.

Modeling Conveyors

While not essential, it isvisuallymore effective to draw conveyors to scale on the layout. You should also size entities trav-

eling on a conveyor to scale when you create them. Setting the length of a conveyor different from the scale length or con-

veying entities that have a length or width that isnot to scale will result in the appearance of load overlapping or excessiveload spacing. The underlying logic and simulation isstillvalid, regardless of whether the graphics are to scale.

Loadsmay appear to jump when transferring fromthe end of one conveyor to another conveyor. This isa result of Pro-

Model not allowing a load to transfer onto a conveyor untilthere isroom for the load. Including a transfer time in the Move

Logic column of the Routing edit table can result in smooth movement between conveyor sections. Defining a variable

called Transfer_Time and using that variable rather than entering the actualtime allows for experimentation with various

conveyor speeds with minimal modeling changes.

Clockprecision isalso important. Note that movement of one foot at 40 feet per minute will take .025 minutes. If clock pre-

cision isset at .1 minutes, truncation will result in zero time. Make sure you check your modelfor the correct clock precision.

For most conveyors, a clock precision of .001 isadequate. ProModelmay require greater precision for high-speed con-

veyors where speedsare greater than 200 fpm.

Modeling conveyors in ProModelis quite easy. Select the conveyor icon in the LocationsGraphicswindow and place the

beginning and ending pointsof the conveyor using the mouse. Clicking the right mouse button will end the conveyor. Left-

click to add or delete a joint and allow the conveyor to bend.

©ProModelCorporation

Building the Model: Advanced Elements 372

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 386/715

373 ProModel 2011 User Guide

Some usersprefer to displaythe grid and select theSnap to Grid option inthe View menu. Others willleave Snap to Grid

off. You mayfind that theprecise positioning of a conveyor iseasier when you turnSnap to Grid off and set the Zoom suf-

ficiently high. When you need to change the type of conveyor to accumulating, double-click on the conveyor icon in the lay-

out, select the Conveyor Options button, and select Accumulating from the Conveyor Options dialog.

The following six examples show various ways of modeling conveyors:

Example ARoutesone or more partsfrom one or more non-conveyor locations to anyconveyor location.

Example BRoutesone or more partsfrom anyconveyor location to one or more non-conveyor locations.

Example CRoutes single parts from any conveyor location to one or more other conveyor locations.

Example DJoins one or more partsfrom one or more non-conveyor locationsto another transporting entity (e.g., a pallet

or carrier) at any conveyor location.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 387/715

Example EAccumulates multiple parts coming from one or more non-conveyor locations onto a conveyor location.

Example FSplits partsat a conveyor location sending one or more partsto a non-conveyor location and a single part (e.g.,

a pallet or carrier) onto the conveyor.

Automated Guided Vehicle Systems

 An automated guided vehicle system (AGVS) is a path network along which computer-controlled, driverlessvehicles trans-

port loads. One of the modeling requirements of AGVS isto accurately describe the method for controlling traffic. You can

usuallyaccomplish this in one of two ways:

l Zone blocking

l On-board vehicle sensing

Zone The most common method of trafficcontrol, it involves placing controlpoints along the guide path. Each point

usuallyallows only one vehicle to accessit anyone time, thusblocking any other vehicle from entering any segment of the

path connected to that point. Once the vehicle leavesa controlpoint to travelto thenext point on the path,any vehicle wait-

ing for accessto the freed controlpoint can resume travel.

On-Board Vehicle Sensing Works by having a sensor on-board the vehicle that detects the presence of a vehicle

ahead of it and stops until it detects that the vehicle ahead of it has moved.

Modeling AGVS 

Modeling an AGVS isvery similar to modeling an industrial vehicle, such as a lift truck, (which it isin a sense) except you

controlthe operation more and there exists lessfreedom of movement. Paths are generallyunidirectionaland do not

allow vehicle passing.

One of the challengesin modeling an AGVS isfinding the shortest routes between any two stops in a system. ProModel

provides built-in capability to automatically determine the shortest routes between points in a complex network.

©ProModelCorporation

Building the Model: Advanced Elements 374

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 388/715

375 ProModel 2011 User Guide

 AGVS Simulation Benefits

Simulating your AGV system will help you addressdesign and operational issues, answering the following questions:

l What isthe best path layout to minimize travel time?

l Where are the potential bottleneck areas?

l How manyvehicles do you need to meet activity requirements?

l What are the best scheduled maintenance/recharging strategies?

l Which taskassignment rules maximize vehicle utilization?

l What isthe best idle vehicle deployment to minimize response time?

l Is there any possibility of deadlocks?

l Is there any possibility of collisions?

Manual Material Handling Systems

Manual materialhandling systems (MMHS) are probably the most common systems for handling, moving, storing, retriev-

ing, and managing materials. ProModeleasilyallows you to model manual labor. With shifts, breaks, and downtimes( ill-

ness, training, etc.), model people as resources.

Whether carrying partsfrom one station to another or stocking shelves in a grocery store, people can be modeled as

resources to do just about anything in ProModel. Such resources are dynamic and move along assigned path networks.

Since people can think, you can model them very much like automated guided vehicles with on-board vehicle sensing.

MMHS Simulation Benefits

Simulating your manual labor materialhandling system will help you addressdesign and operational issues, answering

the following questions:

l What isthe best path layout to minimize travel time?

l Where are the potential bottleneck areas?

l How manypeople do you need to meet activity requirements?

l What are the best shift and breakschedule strategies?

l Which taskassignment rules maximize utilization?

l What isthe best idle person deployment that minimizes response time?

Industrial Vehicles

Industrial vehicles include all push or powered carts and vehicles that generallyhave free movement. Utilize poweredvehicles such as lift trucksfor medium distance movement of batched partsin a container or pallet. For short moves, use

manual or semi-powered carts. Single load transporters are capable of moving only one load at a time from one location

to another. Such devices are fairlystraightforward to model because they involve only a single resource and a single des-

tination for each move.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 389/715

Multiple load transporters, on the other hand,can move more than one loadat a time from one or moresources to oneor 

more destinations. Defining capacity and operation for multiple load transporters can be extremelydifficult since there

may be special rules defining when to retrieve additionalloads and when to deliver the loadsalreadyon board.

Modeling Industrial Vehicles

Modeling an industrial vehicle involves modeling a resource that moves along a path network. Paths are typically open

aisles in which bi-directional movement ispossible and passing ispermitted. You mayalso need to define deployment

strategies (work searches, idle vehicle parking, etc.).

Since people generally operate industrial vehicles, theytake breaks and maybe available only during certain shifts. So in

addition to modeling the vehicle, you mayneed to model an operator that takes breaks and works on shifts or you mayjust

want to assign shifts and breaks to the vehicle resource itself, in effect, modeling the vehicle and the operator as one

resource.

Industrial Vehicle Simulation Benefits

Simulating your industrial vehicles will help you addressdesign and operational issues, answering the following questions:

l What isthe required number of vehicles to handle the required activity?

l What isthe best deployment of vehicles to maximize utilization?

l What isthe best deployment of vehicles to minimize response time?

Automated Storage/Retrieval Systems

 An automated storage/retr ievalsystem (AS/RS) is “a combination of equipment and controls which handles, stores, and

retrieves materialswith precision, accuracy, and speed under a defined degree of automation” (The MaterialHandling

Institute 1977). The goalof an AS/RS isto provide random, high density storage with quickload access, all under com-

puter control.

Modeling AS/RSs

 At a simple level, an AS/RS move time may be modeled by taking a time from a probability distribution that approximates

the time to store or retrieve a load. More precise modeling incorporates the actualcrane (horizontal) and lift (vertical)

speeds. Each movement usuallyhas a different speed and distance to travel which means that movement along one axis

iscomplete before movement along the other axis begins. From a modeling standpoint, it isusuallyonlynecessary to cal-

culate and model the longest move time.

In modeling AS/RS, the storage capacity isusuallynot a consideration and the actual inventory of the system isnot mod-

eled. It would require lots of overhead to model the complete inventoryin a rackwith 60,000 pallet locations. Since it ispri-

marilyonlythe activity that isof interest in the simulation, actual inventory isignored. In fact, it isusuallynot even necessary

to model specificstock keeping units (SKUs) being stored or retrieved, but only distinguish between load type insofar as it

affects routing and subsequent operations.

Modeling an AS/RS as a Vertical Bridge Crane

One wayto modelan AS/RS with greater accuracy isto use the bridge craneconstruct. An AS/RSis really just a vertical

crane with the same characteristics as a bridge crane.

©ProModelCorporation

Building the Model: Advanced Elements 376

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 390/715

377 ProModel 2011 User Guide

 AS/RS Simulation Benefits

Simulating your AS/RS will help you addressdesign and operational issues, answering the following questions:

l How manyaisles do you need to handle the required activity?

l What isthe best sequence of stores and retrievals to maximize throughput?

l What isthe best stationing of empty S/R machines to minimize response time?

Modeling Tips

The following section provides advanced Modeling Tips.

Using Entity Attributes

Entity attributesare a powerful construct that enable a user to “tag” entities with characteristics to distinguish them fromother entities of the same name.

Entity attributes are place holders associated with individual entitieswhich usuallycontain information about that entity.

 Attributes may contain integers or real numbers. Unlike variables, attributes are not global. To define attributes, use the

 Attributes module found under the More Elements option of the Build menu.

One use of an entity attribute isto represent a processing time. This isespecially usefulwhen you base processing times

at a location on some characteristicother than entity type, such as size or condition.

Suppose several types of tires enter a machining center that places the steel belts on the tire. The processing time of the

tire increases as the diameter of the tire increases. The following example shows that for a tire entering a machining loca-

tion, the processing time uses the value of the attribute “Proc_time.” You can make the attribute assignment in the “Logic”field of the Arrivalsmodule.

In this example, ProModel attachesthe attribute “Proc_time” (short for process time) to the entity, tire, which contains a

value representing the process time at Machine_1. You can assign a value to “Proc_time” in the Operation field or, as

mentioned above, in the Logic field in the Arrivalsmodule. The latter allows you to assign a value to the attribute for each

entity as theyarrive in the system.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 391/715

When using attributesinstead of operation times, ProModel substitutes the value assigned to the attribute directlyinto the

Operation field. So, if “Proc_time=4.5” were your attribute assignment and the default units for time were in minutes, the

resulting operation time would be 4.5 minutes.

You mayalso use attributesto determine therouting of an entity. Note that theRouting Rule dialog offers a “User Con-

dition” routing rule. In this field, you can enter an expression that evaluates the value of an attribute for the entity currently

at that location. Hence, ProModelselects the routing destination based on the attribute.

In this example, an entity attribute called “Inspected” has a value of zero or one. For uninspected tires, Inspected=0. For 

inspected tires, Inspected=1. Set the attribute value equal to 1 in the Operation field of the Inspection location to indicate

an inspected tire.

©ProModelCorporation

Building the Model: Advanced Elements 378

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 392/715

379 ProModel 2011 User Guide

 At some other location in the model, ProModel makes a routing decision based the tire’s inspection status. The example

above shows that the entity, tire, will route to either Inspect or Machine_2 based on the attribute value.

 Another use for entity attributes is for assigning entity characteristics such as number of times rewor ked, color, model

type, lot size, order number, etc. You may do this to reduce the number of system entities defined.

In the following example, to show that you reworked a casting,each entitythat goes through the location Rework has its

“Reworked” attribute set equal to 1.

You mayassign values to entity attributes in the Operation field in the Processing edit table, the Logic field in the Arrivals

edittable, andthe MoveLogic in the Routing edittable.

Customizing Graphics

Background graphics can enhance the look of your modelsand provide valuable visual information to convey meaning

and lend credibility to your models. Several file types can be imported from various sources including CAD drawings.

How to Import a background graphic:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 393/715

1. Choose Background Graphicsfrom the Build menu.2. Choose Background Graphicsfrom the Build menu.3. Choose Import Graphicfrom the Edit menu.

Front o f Grid When the grid ison, the grid lines will not cover or obstruct the imported graphic.

Behind Grid The importedgraphicwill be behind thegrid lineswhen the grid ison.

You may paste any*.BMP or *.WMF image copied to the Windowsclipboard on the Layout by choosing Paste BMP or 

Paste WMF from the Edit menu.

Once you select Import Graphic from the Edit menu and select the desired file and type, ProModelimports the image into

the layout. Once this procedure iscomplete, you may select or activate the graphicby clicking with the left mouse button on

the graphic. You may then drag the mouse to move the graphic to the desired position on thelayout. You may stretch or 

compress the graphicto the size you desire using any of its four sizing handles.

ProModelallowsyou to import *.BMP, *.WMF, *.GIF, and *.PCXfile types. BMPsand WMFs can alsobe copied to the clip-

board fromother applications andpasted directly into the background.To import a CAD drawing,you must saveit to one

of the file formats described above.

Batching & Unbatching Entities

Batching refers to congregating or consolidating multiple entitiesof the same or different type for processing or movement

purposes. Batching may be either temporaryor permanent. For temporary batching, use the GROUP statement. For per-

manent batching, use the COMBINE statement.

Temporary Batching Using GROUP/UNGROUP 

The GROUP statement allows you to group entities together and ungroup them at a later time. You maygroup entities by

individualentity type by defining a process record for the type to group, or group them irrespective of entity type by defining

an ALL process record. To combine multiple entity typesin which you must controlthe quantity of each type requires con-

trolling the routing which sendsparts to the grouping location. ProModelmaintains all of the identities and attributes of the

grouped entities and allows them to remain with the individualentities after an UNGROUP command.

To illustrate how GROUP/UNGROUP works, suppose we want to consolidate 20 incoming entities into a group called

Batch. If the current location performs no additionaloperation stepsonce you group the entities, you can simply use the

statement “GROUP 20” to group the 20 entitiesand then specify an output of 1 Batch in the routing. If, on the other hand,

the current location performs additional operation steps after the grouping occurs, use the statement “Group 20 as Batch”

and define no output routing for the grouped entities. Instead, the entities become a new entity called “Batch” that needs a

process record defined afterwardsfor the same location where you batched them.

©ProModelCorporation

Building the Model: Advanced Elements 380

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 394/715

381 ProModel 2011 User Guide

Once you accomplish the purpose for which you grouped the entities, such as moving them, you can unbatch the entities

using the UNGROUP statement as shown next. Note that after the ungrouping takes place, you must define processes

for each potential entity that could have been in the group (alternativelyyou could define an ALL process record).

COMBINE Statement 

ProModelusesthe COMBINEstatement to accumulate and consolidate a specified quantity of entities into a single entity,

optionallywith a different name. The entities may be the same type of entity or they may be different. Combined entities

lose their identities and attributes and you cannot ungroup them later. When defining the location, the location capacity

where you use the COMBINEstatement should be at least aslarge asthe combined quantity. The following showsthe

correct syntaxfor combining 5 Castingsinto a single entity called Pallet (the location, Out, should have a capacity of at

least 5).

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 395/715

LOAD/UNLOAD Statements

 Another method of batching and unbatching involves the LOAD and UNLOAD statements. As with the GROUP state-

ment, ProModelmaintains the identities and attributes of the batched entities. Therefore, when you use the UNLOAD

statement, each entity stillhas itsattribute assignments.

The difference between LOAD and GROUP isthat LOAD requires a “base” entity on which you temporarilyload other enti-

tiesthat might representa pallet or container. Also, theentitiesyou are going to load, travel to the loading location on an “If 

load request” routing rule.

In the following example, four Gears are loaded onto a pallet. Pallet isthe entity which issues the LOAD statement. In addi-

tion, the example includes a time element (LOAD 4 in 10 min). This means“load 4 gears or wait 10 minutes, whichever occurs first.” If after 10 minutes only 3 gearsarrive, the entity loaded with the 3 gearscontinues.

©ProModelCorporation

Building the Model: Advanced Elements 382

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 396/715

383 ProModel 2011 User Guide

Note that the loaded entity, Gear, has“LOAD” inthe Routing Rule field as shown here. This tells ProModelthat the gear 

onlygoesto Loc2 when a Load command requestsit.

Since the example doesnot specify an entity type as part of the LOAD statement, ProModelwill load temporarilyany

entity type waiting for the LOAD request. To controlwhich entity typesthe model loads, use the “IFF” option with the

LOAD statement (e.g., LOAD 4 IFF Entity()=gear).

Once the batch moves to its destination, the model uses the UNLOAD statement to breakit into individual components

(Gear and Pallet). You must define a routing for the entity Gear after the UNLOAD takes place. Typical uses for 

LOAD/UNLOAD are palletizing operations, AGVsystems, and AS/RS systems.

 ACCUM Statement 

The ACCUM statement isshort for “accumulate.” Its use isslightly different than the GROUP and LOAD statements.

 ACCUM does not “batch together” entities, but rather holds entitiesat a location until a certain number accumulate. It

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 397/715

behaves much like a gate restricting entities until a certain number arrive at the location. After the required number 

accumulate, ProModelr eleases them for downstream processing. Thisallows you to model a certain type of batching

which involves simplythe accumulation of parts and their subsequent release—allat a single location.

When using the ACCUM statement, makesure the capacityof thelocation where you are using the ACCUM statementisat least as large as the amount accumulating.

Modeling Priorities

Priorities are an important part of modeling anysystem. They range from determining which location haspriority for proc-

essing partsto choosing the appropriate resource. Priorities allow you to determine the order in which eventsoccur in the

simulation. The three most common usesof priorities deal with choosing processing destinations, selecting resources,

and prioritizing downtimes.

Choosing a Processing Destination

When one downstream destination exists and there are two or more upstream entities competing to get there, you can

use priorities. In the following example, two entities at different locationsare both trying to get to Process C.

If you want the entitycoming from ProcessB to havepriority and go to Process C first, define a priorityin the destination

field for the routing of Process B. In thefollowing example, we entered a priorityof 10 for therouting of theentity Casting at

the location Process_B.

How to enter a priority for a destination:

1. Enter a priority value directlyin the destination field, making sure there isa comma separating the destination and

priority.

or...

2. Click the Destination... button and enter the priority in the appropriate field.

Selecting Resources

Similar to the previous example, this type of prioritizing refersto which of two or more processes, requesting the sameresource will have priorityin capturing the resource. In the Operation field, in conjunction with the USE or GET statements,

the process with the higher priority number gets the resource first.

©ProModelCorporation

Building the Model: Advanced Elements 384

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 398/715

385 ProModel 2011 User Guide

Downtimes and Preemption

ProModelusespriorities in conjunction with resource or location downtimes to determine which defined downtime takes

priority. Downtimes with priorities that are 99 or less do not interrupt or “preempt” the activity, but begin after the current

process completes. Downtimes with a priority of 100 or higher preempt the current activity. After the downtime, the activ-ityresumesfrom where it leftoff.

Displaying Statistics On Screen

Effective use of statistics lendsmeaning and credibility to simulation models. This section isdesigned to show ways of dis-

playing statistics on screen while the simulation isr unning. It also provides examples you can incorporate into any model.

Displaying on-screen statistics isvaluable for adding model clarity as well as providing a way to keep track of what ishap-

pening in the model. The technique used for displaying statistics isto define variables within your model, perform certain

functions on those variables (e.g., addition, subtraction, etc.), and then display those variables on the screen.

ProModeldefines variables as symbols (e.g., x, y, and var1) that hold numericvalues. They are defined in the Variables

edit table. When defining variables, you must include the following information:

l Name (may be alphanumericcombination)

l Type (real or integer)

l Initial value (maybe any value)

 After defining a variable, you may display it anywhere on the layout screen by simply clicking with your mouse in the

desired position with the variable highlighted in the edit table.

How to show system throughput on the screen:

1. Define the variable “thruput.”

2. Display the variable on the screen.3. In the processing edittable, increment thevariable byone each time an entityleaves the system.

 Another common, on-screen statistic is work in process (WIP). To show this statistic on the screen, follow the first two

stepsabove. To accurately indicate the WIPin your model, increment a variable as entities enter the system and use the

decrement statement as they exit the system.

How to display the tot al system time for entities:

1. Assign the simulation clock time to an entity attribute at the beginning of your simulation.2. Subtract that attribute from the current clock time at the ending location and assign it to a variable you can dis-

play.

For example, to display total system time for entities in the system, define a variable and an attribute. The entity attribute,Input_Time, records the time an entity entered the system. The variable, Sys_Time, records the elapsed time each entity

spent in the system (clock-input time). By displaying the variable on the layout, you will have a dynamic value showing sys-

tem time of the exiting entity.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 399/715

Creating Pull Systems

Types of Pull Systems

 A pull system is a system in which locations produce parts only on downstream demand. There are two types of pull sys-tems:

l those based on limited buffer or queue sizes.

l those based on more distant “downstream” demand.

The first method, that of limited buffer sizes, isquite easily to model using ProModel. By simply defining limited capacity

locations, a preceding location will not send partsuntil capacity isavailable. This method worksfine for most pull systems.

The second method, triggering part movement, based on more distant downstream demand requires use of the SEND

statement to trigger part movement.

There are additionalways to model pull systems using ProModel. As you review the modeling requirements of your own

pullsystem, you should verify that these constructswill satisfyyour needs.

This section shows how to use theSEND statement to modela pullsystem. The diagram below shows the pullsystemwe

will model. Orders for finished goods arrive at the OrderQue. The arriving order triggersthe release of a unit from the loca-

tion Stores.The order continuesto wait at OrderQue until the unitgoesthrough Processes 1 and 2. At Process_1,Unit

processes for two minutes. At Process_2, Unit processes for four minutes. Finally, the Unit joins to the requesting order 

waiting in the OrderQue.

Creating the Pull System

Now let'sexamine the ProModelstepsto build this pull system.

1. Define four locations: Stores, Process_1, Process_2, and OrderQue.

2. Define two entities: Order and Unit.

3. Define the processing as shown previously.

4. Define the arrivals. Schedule Units to arrive at location Stores. Schedule Orders to arrive at location OrderQue.

©ProModelCorporation

Building the Model: Advanced Elements 386

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 400/715

387 ProModel 2011 User Guide

5. The entity Order “drives” the system by sending Units to Process_1 to fulfillthe order. In the operation logic at

OrderQue, use the SEND statement to send a Unit to Process_1 from location Stores. A corresponding SEND

rule must be used asa Routing Rule for Unit at Stores.

6. After the SEND statement in the operation logic at the OrderQue,use a JOIN statement to join a Unit to an

Order. A corresponding JOIN rule mustbe used asa Routing Rule for Unit at Process_2.

7. Place the processing timesfor the Unit at Process_1 and Process_2.

When you finish, the processing and routing should appear as shown below.

Process Table and Routing Table

Entity Location Operation (min) Output Destination Rule Move Logic

Unit Stores 1 Unit Process_1 SEND 1

Unit Process_1 WAIT 2 1 Unit Process_2 FIRST 1 MOVE FOR .5

Unit Process_2 WAIT 5 1 Unit OrderQue JOIN 1 MOVE FOR .5

Order OrderQue SEND 1 Unit TOProcess_1

JOIN 1 Unit1

Order EXIT

Making Assemblies

 An assembly occurs when you attach specific items or entities to another entity such as a base part or frame. To assem-

ble entities, use the JOIN or LOAD PERM statement. Implementing JOIN isa two-step process:

1. Employ the JOIN statement at the designated assembly location.

2. Use the JOIN routing rule for all joining entities.

It ishelpful to designate one of the joining entities to be the “base” entity which issues the JOIN statement. In the followingexample, “Comp” is the base entity. All other joining entities must travel to the assembly location on an “If Join Request”

routing rule. Note that for “Monitor” traveling to the assembly location, the word “JOIN” appears in the Rule field. Thisindi-

catesthat “Monitor” will go to the location Assembly only if a JOIN statement requests it elsewhere in the model.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 401/715

Several other ProModelstatements similar to JOIN exist such as GROUP/UNGROUP, COMBINE, LOAD, and ACCUM.You generally use these statementsfor temporary or permanent batching. To learn more about these statements, see

the discussion on Batching and Unbatching earlier in thissection.

For more information see Join on page 584.

©ProModelCorporation

Building the Model: Advanced Elements 388

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 402/715

Building the Logicl

Logic Builder l Operation Logic

l Preemptive Process Logic

l Routing Move Logic

l Shift and Break Logic

Logic Builder 

The Logic Builder provides a quickand powerful way to create valid statements and expressions in logic windowsor fields.

It takes you through the process of creating statementsor expressions, as well as providing point-and-click accessto

every element defined in your model. The Logic Builder knowsthe syntaxof every statement and function, and allows you

to define logic simply by filling in the blanks.

How to access the Logic Builder:

Clickthe right mouse button in the logic window or expression edit field. Or clickthe Build button on the logic window’s tool-

bar.

©ProModelCorporation

Building the Logic 389

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 403/715

390 ProModel 2011 User Guide

Using the Logic Builder 

When the Logic Builder isopened from a logic window, it remains on the screen untilyou click the Close button or close

the logic window or table from which it was invoked. Thisallows you to enter multiple statementsin a logic window and

even move around to other logic windowswithout having to constantly close and re-open the Logic Builder. The Logic

Builder closesautomatically when pasting to an expression field.

You can move to another logic window or field while the Logic Builder is still up by right clicking in that field or logic window.

The Logic Builder is then reset with only valid statementsand elements for that field or window, and will paste the logic

you build into that field or window.

How to build a statement o r expression:

1. Right click in an expression field or logic window to open the Logic Builder or click on the Build button in a logic win-

dow.2. Select thestatementor expression you want to use from thelistbox. When openedfrom a logic window, you

have the option to click on the Build Expression button to create only an expression.3. Enter the parametersfor the statement or expression. These maybe expressionsusing model elements and/or 

functions or other statements. Parameters may be edited or entered manuallyin the Parameter Entry field.4. Paste the results into the logic field or window by clicking the Paste button.

Logic Builder Components

When invoking the Logic Builder from a logic window, you have the option of building either statements or expressions.

Different buttons and lists appear in the Logic Builder as you use the Logic Builder’soptionsdepending upon whether you

are selecting a statement or building an expression. The Logic Builder shown at the beginning of this section shows a

statement being selected for building.

 At the top of the Logic Builder is a display (logic text box) of the statement or expression you are building exactly as it will

appear after it ispasted into the logic window. A brief description of the selected statement or function isdisplayed in the

logic text box. Thisdescription isreplaced with the statement or function syntaxwhen you type a parameter, click a param-

eter or logic button, or double-clickon the statement name. Other components of the Logic Builder are as follows:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 404/715

Parameter buttons Below the logic text box are one or more buttonsto controlwhich parameter to enter for the state-ment or expression. Parameters can be expressions, statements, or functions. These buttons only appear when param-

eters may be required bythe statement,and may change when you select a different statement. The name of the

currently selected button appears immediately below the row of buttons and indicates whether or not the parameter is

optional.

Parameter entry field Thisedit field allows you to enter or edit the current parameter. Thisonlyappears when param-

etersmay be required by the statement. As soon as something isentered in this field, the Logic Builder switches to build

mode to allow selection of functions or elements of the model.

Keypad button Clickon this button to display the numerickeypad for entering numbers in the parameter entry field with-

out using the keyboard.

Logic buttons These buttonscan be used to insert logical operators and other punctuation in the parameter entryfield

above. When you click the button, the operator isinserted at the cursor position in the field. A button appears only when

the currently selected parameter can use that particular logicaloperator.

©ProModelCorporation

Building the Logic 391

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 405/715

392 ProModel 2011 User Guide

Logical & String Operators:

Time Unit Operators:

Category Thiscombo box allows you to select which type of statements appear in the statement selection list below it.

You can select all or a specifictype.

Build Expression butt on Thisbutton allows you to create only an expression. It displaysthe logic elements list (see

below) for you to create the expression. An expression consists of a combination of numbers, model elements, and/or 

functions, but does not include statements.

Statement selection list Choose which statement you wish to use from this list. Onlyvalid statementsare displayed for 

the logic window or field you are using.

Paste button Thisbutton pastesthe text of the logic text box into your logic window or field. It isonly available once the

minimum requirements of the statement or expression have been completed. The Paste button closes the dialog if you

are pasting to a field.

Clear button Thisbutton clears whatever you have done since the last paste and allows you to start over.

Close button Closes the LogicBuilder without pasting the current logic text box.

Help button Launches the context sensitive help system.

Logic Elements When editing an expression in the parameter entry field, the Statement selection list isr eplaced by

Logic Elements. The boxon the left lists logic and model element types. The boxon the right lists individualselectionsfrom

the logic or model element type selected.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 406/715

Return and Cancel Buttons When editing the parametersof a function or nested statement, two additional buttonsappear to the right of the parameter edit box: Return and Cancel.

l Return button Thisbutton (available only when required parametershave been entered) returnsto the pre-

vious parameter entry field and pastesthe function or statement at the last cursor position.

l Cancel button Aborts editing of the function or nested statement and returns to editing the previous statement

or function.

Selecting Statements

The first thing to do in creating a statement with the Logic Builder isto select the desired statement from the statementslist

box. You can restrictthe listof statementsto choose from using theStatement Type combobox above the statement list. If 

you are juststarting to use ProModel, you may want to select the BasicStatements type to listonly the most commonly

used statements.

To select a statement,left click on thestatementname in the list box. The statementname appears inthe logic textbox

along with a brief description. The parameter buttonsalso appear just below the logic text box.

Before you begin editing the parametersof the statement, you can select a different statement. However, once you begin

defining a parameter, you must click the Clear button to abandon that statement and select another.

©ProModelCorporation

Building the Logic 393

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 407/715

394 ProModel 2011 User Guide

Editing Statement Parameters

Building a statement issimply a matter of filling in the parameters. To enter a parameter, click the appropriate parameter 

button below the logic text box. The parameter name isdisplayed above the parameter entryfield. Whatever you type in

this field or select from the Logic Elements list replaces the parameter name in the logic text box. The parameter namereappearswhen the entry field is cleared. The namesof optional parametersare notdisplayed inthe logic textbox.

 An optional shortcut to begin editing the statement’s first parameter is to double click on the statement name in the state-

ment list box.

Selecting Logic Elements

The Logic Elements list box, containing model elements and functions, appears with a selection list boxto its right. A

number pad element isincluded in the list, which can also be accessed using the Keypad button.

When you click on an item in the Logic Elements list, the model elements or functionsr elated to that item are listed in the

selection box on the right. For example, when you click on Entities, the selection list isentitled Entities and it contains all the

entities defined in the model.

How to place a model element in the parameter entry field:

1. Left click on thedesired element type in the Logic Elements list box. The elementsfor that type willbe placed in

the selection list box.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 408/715

2. Left clickon the desired elementto paste itinto the parameter entryfieldat its current cursor position.Note that

the element ishighlighted in the parameter field; clicking on another element will replace it.

How to place a function in the parameter entry field:

1. Left click on the desired function type or on All functionsin the LogicElementslist box. The functionsfor that type

will be placed in the selection list box.2. Left click on the desired function to paste it into the parameter entryfield at its current cursor position. The Logic

Builder jumps into build mode for that function’s parameter(s). Note that two new buttonsare placed to the right

of the parameter edit field: Return and Cancel.3. To fill in thefunction’s parameter(s),repeat steps oneand two. If you do notwant to use this function,abandonit

by clicking on the Cancel button.4. Once the function’s parameters are complete, click on the Return button. The parametersyou just completed will

be pasted into the function’s parameter entryfield, and the completed function with its parametersis pasted into

the original statement’s parameter entry field.

Nested Functions & StatementsWhen you select a function as the parameter for your statement, you must also define that function’s parameter(s). In

defining the function’s parameter(s), you may use another function which will also require defined parameters. This sec-

ond function iscalled a nested function. In addition, a function may be nested within a nested function. Functionscan be

nested as manylevels as you like. In this way, the logic builder helps you create complex expressions that would be difficult

to enter manually.

Control statementssuch as IF...THEN and WHILE...DO contain parameters that are themselves statements. These are

called nested statements. For example, an IF...THEN...ELSE statement might looksomething like this:

Nested IF, THEN, ELSE

If (Variable1 > 10) Then

{ <

Statement1 > <

Statement2 > }

Else

{ <

Statement3 > <

Statement4 > }

One or more statementsmay appear in the block between the curly braces. The Logic Builder allows you to define the first

statement of the block.To addother statements to the block,place the cursor in the logic edit window where you want the

next statement and use the Logic Builder to write the statement and paste it in. For example, in the following Logic Builder 

window, an IF...THEN...ELSE statement isbeing built.

©ProModelCorporation

Building the Logic 395

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 409/715

396 ProModel 2011 User Guide

The ELSE statement isbuilt with the parameter button labeled Else and the statement following THEN isbuilt using the

button labeled Statement. When you click on the parameter button labeled Statement, the statement list box isdisplayed

where you can select from thelistof valid logic statements.Clickon paste inthe above example and you get:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 410/715

The parametersof nested statementsmay be model elements or functions, and within those functions you may have

nested functions. This allows you to easily build complex controlstatements without worrying about syntaxand placement

of nested statements and functions.

Creating Expressions or Pasting Logic/Model Elements Only 

In addition to creating statements, the LogicBuilder can also be used to create just an expression or to simply paste a par-

ticular element such as a variable or resource name. You may not need to create a complete statement, or the field may

not accept statements. Pressing the Build Expression button allows you to build and paste expressions, including individual

logic or model element names, into your logic window or field.

The expression being built or element being selected is displayed at the top of the window in the logic text box.Use the

parameter edit field to build the expression. You can use model elements and/or functions in your expression. When you

are finished, click the Paste button to place the expression or selected logic/model element in the logic window or edit field.

Operation Logic

Operation logic defines what happensto an entity when it enters a location. Operation logic isoptional, but typically con-

tains at least a WAIT statement for the amount of time the entity should spend at the location. For modeling purposes, the

exact nature of the operation (joining, grouping, etc.) isirrelevant. What isessential isto know what happens in termsof 

the time consumed, the resources used, and any other logic that impacts system performance. For operationsr equiring

more than a time and resource designation, detailed logic mayneed to be defined using IF...THEN or action statements.

Special operation statements are provided to define the activities that are to occur. By using operation logic, any of the fol-

lowing activitiescan be defined:

©ProModelCorporation

Building the Logic 397

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 411/715

398 ProModel 2011 User Guide

l Detain an entity for a specified length of time while an activity isperformed.

l Detain an entity until one or more resources are obtained.

l Detain an entity until one or more additional entities are joined to it.

l Detach one or more entities from the current entity.

l Consolidate one or more entities into a group.

l Separate an entity into two or more entities.

l Detain an entity until a particular system condition isr eached.

l Destroy an entity.

l Create one or more new entities.

l Execute a block of logic (assignment of variables, etc.).

l Signalthe start of someother action in thesystem (e.g.,place an order).

l Make some decision about further routing.

Statements can be typed directly into the operation field, or inside a larger logic window after double-clicking in the field or clicking on the Operation button. Alternatively, the Logic Builder can help build logic and isaccessed by clicking the right

mouse button inside the operation field or logic window. All statements, functions, and distributions available in the oper-

ation field are discussed in detail, including examples, in Statementsand Functionson page 523.

Example

Each entity processes the operation statementsdefined for it at a particular location, independent of other operations per-

formed on other entities at the same location. The following example presentsthe operation logic for an entity joining an

entity, EntB, and renaming the entity as EntC.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 412/715

Preemption Process Logic

With Preemption Process Logic, ProModelmakes it possible to controlpreemption rather than limit you to default preemp-

tion priority levelsand values. This feature pertains only to the preemption of entities using a location. It does not include

preemption of downtimes.

Normally, if an entity or downtime attemptsto preempt an entity that isusing a location, the location isimmediately

preempted (assuming it ispreemptable). Once the location finishes the preempting activity, the original preempted entity

regains possession of the location and resumes processing where it left off.

To override this default preemption procedure, in the case of entities that are preempted by another entity or a downtime,

ProModelallows a Preemption Process Record to be defined which postpones the actualpreemption of the location until

after the current entity explicitly releases it.

The Preemption Process Record, allows you to controlif andwhen thelocation isgiven up. In the case of a preemptive

request for a location, the preemption process record allows the entity to be routed elsewhere if desired. If a preemptionprocess isdefined, the actual preemption doesnot occur untilthe preemption process explicitlyfrees the location.

 After the location is given up, the entity may (1) elect to use an alternative location to complete the process, or (2) seek to

regain accessto the same location to complete the process.

While an entity isexecuting a preemption process, it cannot be preempted by any other entity or downtime.

How to create a preemption process record:

1. Using the same entity and location names, create a process record somewhere following the process record

where the preemption may occur.

2. Clickon the Entity button to display the Entities dialog shown here.

©ProModelCorporation

Building the Logic 399

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 413/715

400 ProModel 2011 User Guide

3. Checkthe Preemption Process option box and click OK.

4. Clickon the Operation button to enter the preemption logic. You can use any valid operation logic including

delays. It isrecommended that you enter a comment as the first line in the logic indicating that this isa preemp-

tion process. This will make the record easily identifiable as a preemption process.

Please note

When a preemption o ccurs, the entity looks forward and then f rom the beginning o f t he process list t ry-

ing to find a preemption process that matches the same entity and location (a process with ALL as the

entity name will match any entity). If a match is found, the preemption process gets executed. Otherwisethe d efault preemption occurs. Only the first preemption process encountered will be executed in the

event that multiple preemption processes are defined with the same entity and location names.

Possible Effects of Delayed Preemption

Several circumstances can be created through the use of preemption process records. An entity delaying a preemption,

for example, may find at the conclusion of the delay that the preemption isno longer required, or that it faces an even

higher preemption priority.

In cases where an entity has multiple locationsor resources from which to choose, a preemptive request for any one of 

them isnot necessarily a commitment to select that particular location. If anyof the alternative locationsbecomes avail-

able, the entity will select it and withdraw the preemption request.

Functions for Defining Logic in a Preemption Process

The Preemption Process Logic feature includesthe following functions for use in the preemption logic.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 414/715

PREEMPTOR() Identifies whether a downtime or entity ismaking the preemptive request. It returns a 0 if the preemptor 

isa downtime, otherwise it returns the indexnumber of the preempting entity.

TIMELEFT() Returns the amount of time remaining if the preemption occurred during a WAIT or USE statement. It

returnsa time value in default time units (real). If multiple entities are preempted from a location, it returnsthe longest

remaining time for all of the entities.

Please note

The values returned by these functions must be checked before any processing delay occurs since they

are updated whenever a preemption takes place. If the values must be referred to later, th ey should be

assigned to the entity’s attribute or to a local variable.

Preemption Process Example

In thisexample, a Gear maybe preempted in its occupancyof theLathe. This preemption may be because of either a

preempting entity or downtime. Before the actualpreemption takes place, the operation time for the Gear is interrupted

and the Gear immediately begins processing the operation logic defined in the preemption process.In the preemption process, the remaining operation time isstored in Attr1. The Gear routes to Lathe_Backup where it fin-

ishes processing. Because the backup lathe isnot as efficient as the other Lathe, it takes 50%longer to process the Gear 

on Lathe_Backup. Therefore, we multiply the time left to process the Gear by a factor of 1.5.

Process Table

Entity... Location... Operation (min)...

Gear Lathe WAIT 10 min

Gear Lathe Attr1=TIMELEFT()

Gear Lathe_Backup WAIT Attr1*1.5

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Gear Mill FIRST 1

1 Gear Lathe_Backup FIRST 1

1 Gear Mill FIRST 1

Routing Move Logic

To accommodate the use of multiple resources for entity movement, the Move Logic window allows you to define themethod of movement as well as anyother logic to be executed upon movement.

Once the route condition or rule hasbeen satisfied for allowing an entity to route to a particular location, the move logic is

immediately executed. The entity does not actuallyleave the current location untila move related statement (MOVE FOR,

©ProModelCorporation

Building the Logic 401

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 415/715

402 ProModel 2011 User Guide

MOVE WITH) is executed or until the move logic iscompleted, whichever happens first. Thisallows the entity to get one

or more resources, wait additionaltime, or wait until a condition issatisfied before actuallyleaving the location.

 Any statements encountered in the move logicafter a move related statement are executed after the move is complete,

but before the entity actually enters the next location. This isoften usefulfor freeing multiple resources used to transport

the entity.

When you accessthe Processing module in the Build menu, the Routing edit table appears with the Move Logicbutton in

the righthand columnas shown here.

When you click the Move Logicthe following Move Logic window appears.

This window allows you to manuallyedit the logic or click on the Build button to use the LogicBuilder. It also provides other 

convenient buttons for editing and printing the move logic.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 416/715

Move-Related Statements

 Admissible statements in the Move Logic window include the new move-related statements listed here. A brief description

of how each statement functionsin ProModelfollows the list. See Statementsand Functionson page 523 for complete syn-

tax, description, and examplesof these statements.

MOVE statements

MOVE FOR <time>

MOVE WITH <res1>{,{p1}} {FOR <time>} {THEN FREE}

MOVE ON <path network>

MOVE FOR <time> Used to specify the amountof time required to move theentity. If the<time>is zero, events for other 

entities occurring at the same simulation time will be processed before any additionallogic isprocessed for the current

entity.

MOVE WITH This statement isused to move an entity using a designated resource, such asa forklift. With the OR oper-

ator, you can designate alternative resources for making the move. In this case, the statement captures the first available

alternative resource designated in the expression and makes the move. If one of the resources isalready owned by the

entity, that resource will be used.Please note that you cannot use theAND operator to capture (and movewith) more

than one resource with this statement. To move an entity with multiple resources, you must use a GET statement to cap-

ture the additional resources.

Thisstatement also allows you to set the priority(p1) for accessing the designated resource. If the resource isalready

owned by the entity, this priority isignored.

If the resource isstatic, a time (FOR <time>) may be specified for the move.

The resourceused to make the move is only freed ifthe THEN FREEoption isused.

MOVE ON <path network> Use thisstatement to move an entityalong a path network.

Please note

Not entering no move related statement in the Move Logic window causes entities to move immediately to

the next location when the move logic is completed and begin executing the operation logic for that loca- 

tion.

Related Logic Statements

In addition to these routing specificstatements, all statements and functions allowed in exit logic may be used in the Move

Logic window. Note, however, that the LOCATION() function returnsthe current location when executed before theMOVE statement and returns the destination location when executed after the MOVE statement. Additional statements

permitted before a move-related statement include: WAIT, WAIT UNTIL, GET, JOINTLY GET, and USE.

See Statements and Functionson page 523 for full description, elements explained, and examples.

©ProModelCorporation

Building the Logic 403

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 417/715

404 ProModel 2011 User Guide

Statement Processing

Statements executed before a MOVE related statement are processed after the entity claims the next location but before

the entity actuallydepartsfrom the current location.

Statements executed after a MOVE related statement are processed after the move hasbeen completed but before the

entity enters the location. If there isno move logic, the entity continuesprocessing until it encounters an implicit WAIT.

However, if “MOVE FOR 0” isplaced in the move logic, the event list isbroken and other processes scheduled to occur at

the same time are executed. Once these processes are executed, the entity enters the destination location.

This processing sequence allows you to GET or JOINTLY GET one or more resources before the move and optionally

FREE one or more resources at the end of the move. Please note that if a move related statement is notencountered in

the logic,an implied MOVE will be assumed andexecutedat theend of thelogic.

Shift & Break Logic

Shift and breaklogic are optionaland are defined in four distinct logic windows. Each logic window isexecuted in a specific

sequence throughout the simulation run. You can define logic that controls how resources and locationsgo off dutyor off line and what happensonce theyare off-line.To define shift or breaklogic, click on the Logic button in shift assignments to display a submenu of four shift eventsfor 

which logic maybe defined. Selecting an event from the submenu displaysa standard logic window. You can enter sep-

arate logic for each of these four eventsto be executed when the event occurs. See Sequence of Eventsbelow.

You may want to use the Logic Builder to helpyou enter the logic.Just click on theBuildbutton in the logic window.

Pre-Off Shift or Pre-Break Logic Executed whenever the location or resource isscheduled to go off shift or on break.

This occurs before the location or resource is checked for availability, and isexecuted regardless of availability. This logic

maybe used to check certain conditions before actuallytaking the resource or location off line. The logic isexecuted for 

each resource and location listed as members for this shift assignment record. Thisallows some members to be taken off 

line while othersmay be forced to wait. (Pre-off shift and pre-break logic maybe referred to in thismanualas pre-start

logic when speaking of either one.)

Off Shift & Break Logic Logic executed at the instant the location or resource actually goesoff line.

How to determine the sequence of events

1. When a location or resourceis scheduled to go off line due to a break or the end of a shift, the pre-startlogicfor 

that particular location or resource isexecuted.2. After executing the pre-start logic, which may contain conditional(WAIT UNTIL) or time (WAIT) delays, the loca-

tion or resource istaken off line, assuming it iseither available or the priorityis high enough for preemption.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 418/715

3. At the instant the location or resource istaken off line, the Off-Shift or Break logic isexecuted.4. After executing this logic, the location or resource waits until the time defined in the shift file expires before going

back on line.

Please note

If the off-shift and break nodes are not specified in the Resource Specs dialog, the resource will stay at 

the current node. If no resources or locations are assigned to a shift, the shift is ignored.

Functions and Statements

ProModelusesseveral functions and statements specificallyfor off-shift and break logic: SKIP, PRIORITY, DTLEFT(),

FORLOCATION(), -FORRESOURCE(), and RESOURCE(). Following isa brief description of each. For more details,

see Statements and Functions.

SKIP If used in pre-start logic, it causes the off-shift or break time (including any off-shift or break logic) to be skipped so

that the location or resource never goesoff line. If used in the off-shift or breaklogic, it causes the off-line time defined in

the shift file to be skipped. This allows you to specify a WAIT statement for the off-line time and then SKIP the off-line time

defined in the shift file.

PRIORITYThis statement provides an alternative way to specify off-shift or breakpriorities. It also allows the priority to be

changed after some time being off-shift or on break. If the priority ischanged to a value lower than the current value, the

system will check if anypreemption may occur at that time. This statement isnot allowed in pre-off shift or pre-break logic.

DTLEFT() This function returnsthe remaining off-shift time based on when the location or resource isscheduled to go

back on shift asdefined in the shift file. It maybe used in off-shift andbreaklogic to adjust theactualtime that the location or 

resource is off-line.

FORLOCATION() This function returnsTRUE if the member for which the shift or breaklogic being executed isa location.Thismay be fol0lowed by a test using the LOCATION() function to determine the precise location.

FORRESOURCE() This function returnsTRUE if the member for which the shift or break logic being executed isa

resource. The RESOURCE() function maythen be used to determine the precise resource if multiple resources are listed

as members.

RESOURCE() This returnsthe name-index number of the resource currently processing the off-shift or breaklogic.In addition to these functions, the LOCATION() and DTDELAY() functionsare particularlyuseful when defining off-shift

and breaklogic.

©ProModelCorporation

Building the Logic 405

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 419/715

Using Auxiliary Tools

Tools MenuThe Tools menu gives you accessto powerful tools to help you through the model building process.

Expression Search Allows you to perform globalsearch and replace functionson expressions throughout any part of 

the model.

Graphic Editor  Allows you to create, edit, rearrange, or delete library graphics for use as entities, locations, resourcesand background graphics.

Stat::Fit Launches Stat::Fit and allows you to fit analytical distributions to user data.

3D Animator Launches 3D Animator if it isinstalled. If 3D Animator isnot installed, a dialog will provide information about

purchasing 3D Animator or obtaining a demonstration version.

Model Collaborator Launches Model Collaborator, which allows you to combine two or more modelsinto a single

model.

License Manager Launches the license manager. Since license changes cannot be made while ProModelis running,

you will be prompted to close ProModelprior to running the License Manager.

Options Allows you to set various directory and display defaults.

Customize Allows you to customize the Tools menu.

Additional Tools Tools can be added to the Tools menu byusing theCustomizeoption.These tools are discussed inthe

latter part of this chapter.

©ProModelCorporation

Using Auxiliary Tools 406

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 420/715

407 ProModel 2011 User Guide

Expression Search

The Expression Search feature isused to find or replace text entered into logic windowsand expression fields, such as

location downtime logic or location capacity. Name fields can be found, but not replaced. Reference fields can be found

and replaced. However, when the name of a location, resource, or entity ischanged, the user will be prompted to auto-matically change all references to the new name. There are three types of searches: Find expression, Replace expres-

sion, and Search Next expression.

How to perform an expression search:

1. Select Expression Search from the Toolsmenu.

Expression Search Sub-Menu Choices

Find 

 A dialog box givesyou the following options after choosing Find from the Expression Search submenu:

Modules to Search Check the modules you want to search. “Other” includes all other edit tables and some dialog boxes

where text isentered for defining the model, such as attributes or arrays.

Search Notes Check this box to include Notesfields in the text search.

Whole Words Only Checkthis box to search for only wholewords or groups of whole words that matchthe text to find.

For example, searching for “Attr” without the Whole Word. Onlybox checked will find “Attr1” and “Attr2” whereasa

search with the box checked would find neither.

Text to Find Enter the text expression you want to find.

Replace

Choosing replace gives you these optionsin addition to the find options:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 421/715

Prompt on Replace Checkthis box ifeach time ProModelfindsa match, you want ProModelto ask if you want that par-

ticular match changed to the replacement text. The prompt will give you the option to replace that particular match, skip

that particular match, or to cancel the search altogether.

New Text Enter the text you want to replace the search text.

Search Next 

Choosing Search Next in the Expression Search submenu will resume the most recently canceled search. For example,

suppose you begina search andthen breakout of thesearch to adjust something in themodel. If you want to continuethe

original search, you can select Search Next and ProModelwill start the search again at the place you stopped searching.

Find Expression

The Find Expression option allows you to find each occurrence of an expression in a model.

How to find an expression:

1. Fr om the Tools menu, select Expression Search.2. Select Find... fromthe submenu.3. Supply the necessary details in the Find dialog box shown below. Clicking Select All or Deselect All button will

check or uncheckevery module.4. ClickOK.

Once the Expression Search has found the first occurrence of an expression, a dialog boxwillappear giving informationon exactly where the text was found. Then ProModel will display the following dialog, including a boxdisplaying the entire

line on which the text was found, with the search expression highlighted.

©ProModelCorporation

Using Auxiliary Tools 408

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 422/715

409 ProModel 2011 User Guide

How to find the next match of a text expression:

1. Click on Search Again

Replace Expression

The Replace Expression option allows you to find each occurrence of an expression in a model and replace that expres-

sion with a new expression.How to replace an expression with another expression:

1. Select Replace... from the Expression Search submenu.

2. Supply the necessary details in the Replace dialog boxshown below. Clicking Select All or Deselect Allbutton

will check or uncheck every module.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 423/715

8. Click on OK. If you have chosen “Prompt on Replace,” ProModelwillthen display the following dialog box if it finds the text

you specified.

Choose:

1. Yes to change the textand search for thenextmatch.2. Change All to change every match.3. No to skip this match and search for the next match.4. Go to Module to edit the text directly.5. Cancel to leave the match intact and stop searching.

Important Notes Regarding Expression Searches

1. Not every field of every module isincluded. Fields such as statistics, text in graphics, or yes/no fields which may

not be edited cannot be searched for or replaced. To replace record identifiers, see number six.2. Under “Modules to Search,” the Other option refersto information entered in places not listed in the dialog box,

including the Simulation Options dialog box.

3. Notesfieldsare notpart of the actualmodeldata, therefore theyare notautomatically includedin thesearch.

Notesalso include comments in the model. If you want to search or replace Notesfields, check the Search Notes

option in the Find or Replace dialog boxes.

4. The Whole WordsOnly option interprets words loosely enough to distinguish words not separated by spaces.

For example, searching for “Attr1” in the expression Attr1=Attr1+Attr2, would find both occurrences. You can

search for expressions longer than a whole word, such as “Attr1=Attr1+Attr2,” as whole word expressions. To

find a portion of a name, like “Attr” in “Attr1,” deselect the Whole Words Onlyoption.

5. Once the Expression Search hasfound the first occurrence of an expression, a dialog box will appear giving infor-

mation on exactly where the textwas found. This includes a box displaying theentire line on whichthe textwasfound, with the search expression highlighted. In some cases the box may be too small to display the entire line.

To see the hidden portion of the text, left clickwith the leftmouse button on the text, and use the left andright

arrow keysto scrollthe text horizontally.

©ProModelCorporation

Using Auxiliary Tools 410

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 424/715

411 ProModel 2011 User Guide

6. The Replacefeature cannot be used to change an elementidentifier. To change all occurrences of a modelele-

ment name (suchas a location name), change thename of the elementwhere it is defined and all other expres-

sions containing the name, as well as anyr eferences to this record, will be changed automatically.

Local Find and Replace

In the process of creating logic, you mayneed to search for specifictext. The local find and replace button in the operation

logic window opens a dialog that will allow you to search the logic for specifictext.

Graphic Editor 

The Graphic Editor allows you to create, edit, rearrange, or delete library graphics within a particular graphics library file.

You can also copy graphics from one library to another. Graphicsfrom several libraries can even be merged into a single

graphic. Each graphics library issaved with the grid size and scaled used to create the graphics.

How to access the graphic editor from within ProModel:

1. Select Graphic Editor from the Toolsmenu.

How to access the graphic editor from the program manager:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 425/715

l Double click the Graphic Editor icon in the ProModelGroup. Thismethod allows you to use the Graphic Editor as

a separate application from ProModel.

Overview

The Graphic Editor consists of a menu bar, a Graphic Tools button bar, a Graphic Library menu, Library Edit buttons, an

Edit window, and a set of iconsr epresenting the graphics in the graphics library.

Each of the tools in the Graphic Tools button bar is discussed in this section, including the procedures for creating and edit-

ing a graphic’scomponents (called “objects”) using the drawing tools.

Graphic Editor Menus

The Graphic Editor menu bar includes the following menus:

File The Filemenu allowsyou to open a graphicslibraryfor editing and saving a current library. It also allows you to print a

single graphicor an entire library.

Edit The Edit menu provides functions for selecting and duplicating one or more objects that comprise a library graphic. In

addition, it provides functions to import and export graphics from other applications.

Graphics The Graphicsmenu isfor manipulating one or more objects that comprise a library graphic. With this menu,

you can group several objects together, flip and rotate objects, and alter the color, fillpattern and line style of objects. Youcan also adjust the dimensions of the entire graphic.

Options The Options menu controls the editing environment. With this menu you can use a grid to helpyou align com-

ponent objects, edit that grid, andrequire objects to snapto it. Finally,the Options menu allowsyou to zoom inand out on

the graphicso you can edit the graphicat different sizes.

©ProModelCorporation

Using Auxiliary Tools 412

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 426/715

413 ProModel 2011 User Guide

Window The Window menu allows you to arrange the windows (or iconized windows) currently displayed on the screen

such that all windowsare visible at once. It also allows you to bring anyindividual window to the forefront of the display.

This isparticularlyuseful when you are opening multiple graphiclibraries and want to view all libraries simultaneously.

File Menu

New Creates an empty graphics library.

Open Bringsup the Open Library Graphicsdialog boxfor specifying which graphics library file to retrieve. Graphics

library files have the file extension GLB.

Close Closes the current graphiclibrary. If the graphics library hasbeen changed since the last save, you will have the

option to save it.

Save Saves an open graphics library under the current file name or prompts you for a name if the graphics library has

not been named.

Save As Bringsup the Save As dialog box for saving the current Graphicslibrary file under a new filename. Graphic

Library files have the file extension GLB.

Print Graphic Printsthe graphicin the Edit window only.

Print Library Printsthe entire current graphiclibrary.

Exit Quits the Graphic Editor with an option to save the current library if changes have been made since the last save.

Recently Opened Files Lists the five most recently retrieved graphics libraries. Selecting one of these options will

retrieve the listed graphics library.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 427/715

Opening a Graphics Library File

 All individual library graphics are loaded from and saved to the current graphics library, which, by default, is the one spec-

ified for the current model. However, other graphiclibraries may be opened for editing at anytime. The name of the cur-

rent libraryis displayed inthe title bar of the window for eachlibrary. More than onelibrary can be opened and viewed onthe screen at a time. Opening more than one graphiclibrary simultaneouslyfacilitates copying graphics between libraries.

How to open another graphics library file:

1. Choose Open from the File menu.2. Choose Open from the File menu.3. To view all open graphic libraries, choose Tile or Cascade from the Window menu.

Please note

 A history list is given at the botto m of the File menu so you are able to quickly retrieve the last five

libraries opened.

Closing a Graphics Library File

When you are finished working with a graphics library, you can close it to save screen space and memory. This option will

not affect the graphiclibrary used with any model.

How to close a graphics library file:

l Choose Close from the File menu.

Saving a Graphics Library File

Oncea graphic hasbeencreatedor edited and placed in the current library, the libraryfile must be saved in order to make

the changes permanent.

How to save a graphics library file:

l Select Save from the File menu to savethe library with thesamename.

How to save a graphics library file with a new name:

l Select Save Asfrom the File menu to save the librarywith a new name.

Printing an Individual Graphic 

How to print an individual graphic:

1. Double click the mouse on the desired graphic’sicon, or select the graphic’sicon and click the Edit button.2. Select Print Graphic fromthe File menu.3. Choose thedesired options fromthe resulting Print dialog box andclick OK.

Printing an Entire Graphics Library 

How to print an entire graphics library:

©ProModelCorporation

Using Auxiliary Tools 414

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 428/715

415 ProModel 2011 User Guide

1. Select Print Library from the File menu.2. Choose the desired print options fromthe LibraryPrint dialog box and select OK.

Please note

If more than one graphic library is op en, ProModel will print the active g raphic library only.

Edit Menu

Use the Edit menu for selecting and duplicating the individual objects comprising a library graphic. You may also use it to

exchange graphics with other applications. To use the Edit menu functions, load the graphicyou wish to edit by selecting

its icon from the library and clicking the Edit button, or double click the icon.

Cut Removes the selected object(s) and makes a temporary copy that may be pasted back into the edit window later.

Copy Makes a temporary copy of the selected object(s) to be pasted later.

Paste Adds the most recently cut or copied object(s) to the current graphic.

Delete Deletes the selected objects from the current graphic.

Select All Selects all of the objects comprising the current graphic.

Copy to Clipboard Copies the entire graphicto the clipboard as a bitmap so it can be pasted into other applications

including word processors.Paste WMF Pastes a Windows metafile (WMF) from the Windowsclipboard into the Edit window. You must have pre-

viously copied a Windows metafile to the Windows clipboard in another application.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 429/715

Paste BMP Pastesa bitmap file (BMP) from the Windowsclipboard into the Edit window. You must first copy a bitmap file

to the Windows clipboard.

Import Graphic Imports a WMF, EMF, BMP, PCXor GIF fileinto the Editwindow.

Export Graphic Exports the graphic inthe Edit window to a WMF or BMP file.

Importing a Graphic 

How to import a graphic into a graphic library:

1. Select the box to which you wouldlike to add the graphic in thelibrary.If you want to create a new graphic, choose

the blankboxat theend.2. Select ImportGraphic from the Editmenu.3. Enter thename of the graphic you wouldliketo import.

4. Select OK to close the import graphic dialog box.

5. Click on the Save button on the top rightside of the librarywindow.

Exporting a Graphic 

How to export a graphic:

1. Double-click the mouse on the desired graphic’sicon, or select the graphic’sicon and click the Edit button.2. Select ExportGraphic from the Editmenu.

3. Enter a validDOS name for the graphic in the resulting dialog box.

4. Click the OK button in the export graphic dialog box.

Copying a Graphic from One Library to Another 

How to copy an icon from one library to another 

1. Open both libraries.2. Drag the graphic’s icon fromthe first graphic library to thesecond graphic library (preferably left to right).3. Save the destination library by choosing Save from the File menu.

Graphics Menu

The Graphicsmenu isfor manipulating one or more objects that comprise a library graphic. With this menu, you can group

several objects together, flip and rotate objects, and alter the color, fillpattern and line style of objects. You can also adjust

the dimensions of the entire graphic.

©ProModelCorporation

Using Auxiliary Tools 416

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 430/715

417 ProModel 2011 User Guide

Flip Horizontal Horizontallyflips the entire graphicor any selected objects of the current graphic. Thismenu item works

like the button of the same name described later in this chapter.

Flip Vertical Vertically flips the entire graphicor any selected objects of the current graphic. Thismenu item works like

the button of the same name described later in this chapter.

Rotate Rotatesthe entire graphicor anyselected objects of the current graphic90 degrees clockwise. Thismenu item

works like the button of the same name described later in this chapter.

Move to Front Moves the selected object in front of all other objects. Use this option to see an object obscured by other 

objects. Thismenu item works like the button of the same name described later in this chapter (to move an object one

position forward at a time, use theGraphic Tools).

Move to Back Moves the selected object behind all other objects. Use this option to send an object obscuring other 

objects to the background. Thismenu item works like the button of the same name described later in this chapter.

Group Combines or groups several objects into a single object for sizing and editing.

Ungroup Ungroups several grouped objects so theymay be edited individually.

Line Styles Allows the user to choose the line style including solid, dashed, line thickness, and optional arrowheads on

either end of the line.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 431/715

Fill Patterns Allows the user to choose the fillpattern for solid objects including transparent, slant, backward slant, grid,

crosshatch, vertical, horizontal, solid, verticalgradient, and horizontal gradient.

Line Color Allows the user to choose the line color and create custom colors.

Fill Color Allows the user to choose the fillcolor and create custom colors for solid objects.

Dimension Bringsup the Dimensions dialog box for defining the graphicdimension. The dimension can be height or 

width. The unitscan be feet or meters.

Please note

Line Styles, Fill Patterns, Line Color, and Fill Color set the feature and cause the setting to be applied to

the currently selected elements.

Group

When using the graphictools to create an icon, it isoften helpful to group several graphics into a single graphicfor editing

purposes. For example, you maycreatean icon using the square, line,and circletooland want to workwith them asa sin-

gle item.

How to group objects together:

1. Use selector to select all objectsyou desire to group. Hold the shift key down to select morethan one object at a

time.2. Choose Group from the Graphicsmenu.3. Manipulate the group as necessary.

Ungroup

The Ungroup option allows you to ungroup several grouped objects.

How to ungroup previously grouped objects:

1. Use the selector to select the objectyou desire to ungroup.2. Choose Ungroup from the Graphics menu.

Line Styles

You may choose different styles for the linesand borders of objects by choosing Line Styles in the Graphic Editor Graphics

menu.

©ProModelCorporation

Using Auxiliary Tools 418

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 432/715

419 ProModel 2011 User Guide

How to change the line style or border style of an object:

1. Select the desired object(s) using the Selector.2. Choose Line Styles from the Graphic Editor Graphicsmenu.3. Click on thedesired style.

Please note

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 433/715

The arrowhead color is the same as the line color and is defined through the Line Color in th e Graphics

menu.

Fill PatternsVariouspatternsmay be used to filleach object by choosing Fill Patternsfrom the Graphic Editor Graphicsmenu.

©ProModelCorporation

Using Auxiliary Tools 420

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 434/715

421 ProModel 2011 User Guide

How to change the fill pattern of an object:

1. Select the desired object(s) using the Selector.2. Choose Fill Patternsfrom the Graphic Editor Graphicsmenu.

3. Click on thedesired fillpattern.

Line and Fill Color 

You mayalso select a custom color for your linesand graphics.

How to change line or fill color 

1. Select theline or graphic you want to change.2. Choose Line Color or Fill Color from the Graphicsmenu.3. From thedialog below, clickon the color you wish to use.

Dimension

You can define theheightor widthof an object infeet or metersfrom theDimensionsDialog box.Thiswill determine how

largethe graphic appears when placed on a modellayout. For example, to change thewidth of a graphic loaded in the

Edit window to 5.00 feet, enter the following in the Dimensions dialog box:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 435/715

How to change the graphic’s dimensions:

1. Load a graphic intothe Edit window.2. Select Dimension from the Graphicsmenu.3. Enter the new graphicdimension and click OK.

For example, a graphicof a computer isdisplayed in the Graphic Edit window. The size of the graphicin the Graphic Edit

window is 1.40 x 1.00 asshown below.

However, the computer isreally 2 feet wide. To change the graphic’sdimensions, select Dimension from the Options

menu. Type 2 for the horizontaldimension and click OK.

Notice the vertical dimension isautomatically adjusted to 1.43. You can only define either the horizontal or vertical dimen-

sion of the graphic. If you define one dimension, the software will automaticallycalculate the other according to the pro-

portionsof thegraphicin the Editwindow. If you know the graphic isactually 2.00 x 1.50 feet, you will need to adjust the

proportions of the graphicaccordingly by using various tools from the Tools button bar.

Options Menu

The Optionsmenu controls the editing environment. With this menu you can use a grid to help align objects, edit that grid,

andrequire objects to snapto it. Finally,the Options menu allowsyou to zoom inand out on the graphic soyou can edit the

graphicat different sizes.

©ProModelCorporation

Using Auxiliary Tools 422

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 436/715

423 ProModel 2011 User Guide

Grid Settings Bringsup the Grid dialog box for choosing the size, color and visibility of the grid.

Show Grid Causes the grid to appear in the background for editing purposes. If the grid ison, choosing this option will

turn it off. This isthe same aschoosing Grid Onin the Griddialog box.

Snap to Grid Positions any object subsequently drawn or moved on the layout on the nearest grid line. Thisoption

works whether the grid isvisible or not.

Background Color Brings up the color dialog box for choosing a background color for the layout window.

Zoom Shrinks or enlarges your view of the graphicby the percentage selected.

Grid Settings

The grid sizeis changedby using the scroll bar to the rightof thegrid dialog box.Movethe scroll bar up to increasethe

grid sizeand move thescroll bar down to decrease thegrid size. To change the color of the fine grid lines, select the Ones

button and then choose a color. To change thecolor of the coarse grid lines, select the Tens button andchoose a color.

Instead of viewing boxes as the grid units, you may choose dotsby selecting the dots box. You may also choose to switch

the grid, aswellas the grid snap,on inthis same area.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 437/715

How to change the distance per grid unit in the Graphic Editor:

1. Select GridSettingsfrom the Optionsmenu.

2. Clickon the Scale button.3. Define the distance per grid unit in either feet or meters and click OK.

Show Grid 

How to show the grid on the layout window:

l Choose Show Grid from the Options menu.

Snap to Grid 

How to have all new and edited objects snap to the grid:

l Choose Snap to Grid from the Options menu.

Background Color 

How to change the background color of the edit window:

©ProModelCorporation

Using Auxiliary Tools 424

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 438/715

425 ProModel 2011 User Guide

l Choose Background Color from the Options menu.

Zoom

How to magnify a graphic:

1. Choose Zoomfromthe Options menu.2. Choose the level of magnification from the submenu.

Window Menu

The Window menu isused to manipulate the various windows in the Graphic Editor and follows the Microsoft Windows

standard for Window menus.

Tile Causes all open windowsto fit in the available screen space. Windowsthat may be hidden behind other windowswill

become visible. This isuseful when desiring to view morethan one graphic libraryon the screenat a time.

Cascade Causes all open windowsto overlap such that the title bar of each window isvisible.

Arrange Icons Takes all active iconized windows and arranges them neatlyalong the bottom of the screen.

Open Libraries Displays all graphiclibraries currently open in the Graphic Editor. To switch to another open library, click

on the desired name.

Library Edit Buttons

The Graphic Editor contains four library edit buttons: Edit, Save, Delete, and Clear.

Edit Retrieves a selected graphicfrom the library to the edit window.

Save Savesa graphic from the Edit window to the library. For a new graphic to be added to the library, the blank boxat

the end of the library must be selected. Otherwise, the graphicin the Edit window will replace whichever graphic’sicon is

selected.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 439/715

Delete Deletesthe selected graphicfrom the library.

Clear Clears the contents of the edit window.

How to edit a graphic:

1. Double-click on thegraphicin the library. This method clearsthe contents of the Editwindow before loading the

new graphic.

or...

1. Select the graphic byclicking once on the graphic andthen clickthe Edit button. Thismethod clears the contents

of theEdit window before loading the new graphic.

Manipulating Graphics

 Among other things, a graphic can be reduced, enlarged, combined, and reordered.

How to change a graphic’s size:

1. Select the graphic in the Editwindow using the selector.2. Choose Group from the Graphicsmenu.3. Select one of the small grayboxesat the graphic edge to reduceor enlarge the graphic size. The selector will

change to a cross-hair when you are near a graybox.4. Drag the box tothe desiredsize.

Several graphics can be combined together to create a single graphic. For example, a desk and a chair are separate

graphicsbut wouldbe easier to use if theywere combined to form a single graphic.

How to combine two graphics:

1. Load the first graphic intothe edit window.2. Drag the second graphic into the editwindow.3. Position andsize the two graphics asdesired.4. Clickthe blankboxin the graphic library.5. Clickthe Save button.

How to change the order of graphics in a graphic library:

l Drag a graphic to the desired location inthe library.

Create New Graphics and Libraries

How to create a new graphic

1. Select Graphic Editor from the Tools menu.2. Use the drawing tools to create the new graphic.3. Clickthe Save button on the graphic editor.4. The imageappears at the end of the existing icons.

How to create a new graphic library

©ProModelCorporation

Using Auxiliary Tools 426

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 440/715

427 ProModel 2011 User Guide

1. Select Graphic Editor from the Tools menu.2. Select New from the File menu.3. Use thedrawing tools to create anygraphicsyouwish to use in your library. You may alsocopy andpaste graph-

ics from existing libraries.

4. After you finish preparing each new image, clickthe Savebutton on the graphic editor.

Naming a Graphic

Graphicscan be named for resources, locations, and entities, or merelyfor easier identification. When a named graphic

ischosen while building a model, instead of entering a default name, such as Loc1, ProModelwill enter the graphic's

name, such as Desk. If the name alreadyexists for a location or resource graphic, a number will be appended (Desk1,

Desk2, etc.). If the name alreadyexists for an entity graphic, a letter will be appended (ChairA, ChairB, etc.). This will

make the model easier to understand and use.

How to name a graphic:

1. Enter thedesired name at the bottom leftof thescreen where itsays “Name.”2. Click the Save button to save the named graphic.

Please note

Correct syntax for location, resource, and entity names should b e used when entering a name in t he

Name field if the graphic is intended to represent locations, resources, or entities. Graphic names are

allowed to have spaces which automatically convert to underscores “_” when used for locations,

resources, or entities.

Graphic Tools Button Bar 

The Graphic Tools Button Bar contains the toolsnecessary to create and edit a graphic’scomponent objects. The draw-

ing tools are the main tools through whichgraphics are created andeditedin the Editing window. The drawing tools

include the following:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 441/715

Selector Entity Spots

Text Status Lights

Lines Flip Horizontal

 Arcs Flip Vertical

Triangles Rotate

Regular Squares and Rectangles Cut

Rounded Squares and Rectangles Copy

Circles and Ellipses Paste

Chords Step Back

Pies Step Front

Polygons Line Color  

Raised Squares and Rectangles Fill Color  

Selector 

The Selector isa pointing device that allows you to select one or more objects of a graphic. It also allows you to move, size,

and shape all graphicobjects.

How to move an object:

1. Clickon the Selector button.2. Drag the object to thedesired location.

How to size or shape an object:

1. Clickon the Selector button from the button bar.2. Select the desired object.3. Drag the sizing points.The arrow will turn into a cross-hair when it approachesthe sizing points.

Text Tool 

Text maybe placed anywhere inthe graphicby using theText tool.

©ProModelCorporation

Using Auxiliary Tools 428

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 442/715

429 ProModel 2011 User Guide

How to place text in a graphic:

1. Select the Text toolfromthe button bar.2. Click where thetext is to appear. The Text dialog boxwill open.

3. Enter the desired text in the Text dialog box below. Set the desired options for the text. When finished, click the

OK button.

How to edit text already in the graphic:

l Double click on the text.

Lines

Linesmay consist of several segments and are drawn using the line tool.

How to draw lines in the graphic editor:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 443/715

1. Select the Line tool.2. Clickthe left mousebutton where the line is to begin.3. Move the mouse tothe end of the line segment.4. Clickthe left mousebutton to create a joint andbegin thenextsegment.

5. Double click the left mouse button or clickthe rightmouse button to endthe line.

Please note

Lines can be drawn at 15 degree increments by holding t he shift key while moving th e end of a line seg- 

ment.

 Arcs

 Arcs are drawn using the Arc tool.

How to draw an arc in the g raphic editor:

1. Select the Arctoolfrom the Tools window.2. Select the Arctoolfrom the Tools window.3. Drag the mouse to the other end ofthe arcand release the left mouse button.

Please note

To have the arc bow left, start the arc from the top and drag down. To have the arc bow right, start the arc 

from the bottom and drag up.

Triangles

Triangles are drawn using the Triangle tool.

©ProModelCorporation

Using Auxiliary Tools 430

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 444/715

431 ProModel 2011 User Guide

How to draw a triangle in the graphic editor:

1. Select theTriangle toolfrom theTools button bar.2. Pressthe leftmouse button where the center of the base of the triangle is to be located.3. Drag the mouse until the triangle’s base isthe desired size, butdo notrelease the mouse button.4. Pressthe shift key and move the mouse to adjust thesize of the other two sides. Release the mousebutton

when done.

Squares and Rectangles

Squares and rectangles may be drawn using the regular rectangle tool, the rounded rectangle tool, or the raised rec-

tangle tool.

How to draw a rectangle in the graphic editor:

1. Select either the regular, rounded, or raised rectangle toolfrom the Tools window.2. Pressthe leftmouse button at thetop left corner of the desired rectangle.3. Drag the mouse to the lower rightcorner of the rectangle and release the mousebutton.

How to draw a square in the graphic editor:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 445/715

l Hold the shift key while drawing or editing a rectangle.

Circles and Ellipses

Circles and ellipses may be drawn using the ellipse tool.

How to draw an ellipse in the graphic editor:

1. Select the ellipse toolfrom theTools window.2. Press theleft mouse button at one end of the desired ellipse.3. Drag the mouseto the other end of the ellipse and release.

How to draw a circle in th e graphic editor:

l Hold the shift key while drawing or editing an ellipse.

Chords and Pies

Chordsand pies are drawn using theChord tool and Pie tool.

©ProModelCorporation

Using Auxiliary Tools 432

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 446/715

433 ProModel 2011 User Guide

How to draw a chord or pie in the graphic editor:

1. Select thechord tool or pie tool from the tools menu.2. Pressthe leftmouse button at oneend of thedesired chordor pie.

3. Drag the mouse to the other endof thechord or pie and releasethe left mouse button.

How to draw a circular chord o r pie in t he graphic editor:

l Hold theshift key while drawing a chordor pie.

How to adjust the size of the “slice” in the cho rd or pie after th e graphic has been d rawn:

1. Select a corner of the"slice" on the graphic.2. Pressthe leftmouse button at thecorner of the "slice."3. Drag the mouse to the desired position of the"slice" and release theleft mouse button.

Polygons

Polygons are drawn using the Polygon tool.

How to draw a polygon in the graphic editor:

1. Select thePolygon toolfrom the Toolswindow.2. Click theleft mouse button to begin the firstpoint of the polygon.3. Click the left mouse button at each successive point of the polygon.4. Click theright mouse button or double-clickthe leftmouse buttonto endthe polygon.

Please note

The sides of a polygon may be drawn at 15 d egree increments by holding d own the shift key while mov- 

ing the mouse to the next vertex.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 447/715

Positioning Spot 

 A positioning spot controls the positioning of an entity on a location, resource, or path. It also controls the positioning of an

entity or resource on a path. There are two types of positioning spots: entity spotsand alignment spots.

Entity spotscan be defined for a graphicin either the Graphic Editor or in the Locations module. Alignment spotscan only

be definedfor a graphic in theGraphic Editor. In theGraphic Editor, the button showing the red circle with the white X rep-

resentsthe positioning spot. The default type isentity spot. To change the type, the user maydouble click on the spot to dis-

play the Spot Type dialog. Thisallows the user to define the type of positioning spot.

 A graphic may have any number of entity spots. A graphic may also have any number of alignment spots. However, only

the first alignment spot defined will be used. An entity or alignment spot isignored if it isinapplicable for the model element

it isused to represent. The following definitions explain uses of the entity and alignment spotsfor locations, entities, and

resources.

How to place a positioning spot on an icon:

1. Select the positioning spottoolfrom the button bar.2. Clickon the icon where theentityis to appear.

Location Graphics May only use entity spots. Whenever an entity arrives at the location, the entity graphicwillbe placed

on the first entity spot defined for the location. The next arriving entity will use the entity spot defined second, and so forth.

If entity spotsare defined for a location graphicin the Locations module, theyare used ahead of anyentity spots defined in

the Graphic Editor. If no entity spot isdefined for the location graphic, no entity isshown on the location.

Entity Graphics Use only alignment spots. When an alignment spot isdefined for an entity graphic, the entity graphicwill

be positioned so the alignment spot of the entity graphicand the entity spot for the location or resource graphicare

aligned. If the entityis traveling along a path,the entitygraphicwill move along the path with thealignment spotand the

path segment or node aligned. If no alignment spot isplaced on an entity graphic, the center of the entity graphicis used

for alignment.

Resource Graphics May use both entityspots and alignment spots.An entityspot on a resource graphic maybe used to

locatean entity a resource is carrying. An alignmentspot can be placed on a resource graphic sothat when the resource

travelsalonga path, the resource graphic willmove along the path with the alignmentspot and the path segment or node

aligned. If no alignment spot isplaced on a resource graphic, the center of the graphicis used for alignment.

Status Lights

 A status light is a circle that changes color depending on the status of a location. A status light can be placed anywhere rel-

ative to a location to show the statusor current state of the location.At run time,a window can be displayed showing what

status each color r epresents.

©ProModelCorporation

Using Auxiliary Tools 434

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 448/715

435 ProModel 2011 User Guide

How to place a status light on an icon:

1. Select theStatusLight toolfrom the button bar.2. Click on theicon where the status lightis to appear.

Please note

Status lights for location g raphics may also be defined in the Lo cations Editor.

Flip and Rotate

Objects may be flipped about the horizontal axisand vertical axisor rotated by 90 degrees using the flip and rotation tools

from the Tools button bar.

How to flip or rotate an object:

1. Select the desired object(s).2. Clickon the Flip Horizontal, Flip Vertical, or Rotate buttons.

Using the flip and rotate buttonsis the same as choosing flip and rotate options under the Graphicsmenu.The figure below shows an object that has been flipped horizontally, vertically, and rotated through all phases.

Cut, Copy, and Paste

To speed the developmentof complexgraphics,you maycut, copy, and paste objectsfrom one area of the workspace to

another. Each of these buttonsworks exactly the same as the corresponding item from the Edit menu.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 449/715

How to cut an object:

1. Select the desired object(s) using the Selector.2. Clickthe Cut button. The object isremoved from theEdit window but remainsin theGraphic Editor’s internalclip-

board.

How to copy an object:

1. Select the desired object(s) using the Selector.2. Clickthe Copy button. The originalobject remainson the screenand a copyis placed on theGraphic Editor’s inter-

nal clipboard.

How to paste an object:

1. Clickon the Paste button. The contents of the internal clipboard are pastednext to the last object cut or copied.2. Move thenew object to thedesired location using the Selector.

Step Back and Step Front 

You can move an object behind or in front of another object. The Step Back option allows you to move a selected object

behind another object. The Step Front option allows you to move a selected object in front of another object.

For example, suppose you have five graphicobjects displayed and you want to move the top object to the third object. You

can use the Step Backor Step Front option.

How to move an object behind or in front of another object:

1. Select the object to move using the Selector.2. Clickon the Step Backor Step Front toolfrom the button bar.3. Continueto press theStep Back or Step Front button untilthe selected object is behind the desired object.

Please note

If you would like to move an object behind or in front of all objects, use the Move to Back or Move to

Front o ption in the Graphics Menu. Alternatively, use the Page Up or Page Down keys.

©ProModelCorporation

Using Auxiliary Tools 436

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 450/715

437 ProModel 2011 User Guide

Line and Fill Color 

 An object’s line and fillcolors can be chosen using the Line tool and the Fill tool. You may use one of the predefined colors

or create your own custom color. Each tool’s color changes according to the color chosen.

How to define the line color or fill color:

1. Select the object(s) to change using the Selector.2. Click on theLine or Fill tool from the button bar.3. Choose the desired color. The toolwill change to the color specified.

Please note

The line color and fill color can also be defined in the Graphic Editor Options menu.

Editing a Library Graphic

Various editing functions allow you to alter the objects that comprise a library graphic. These functionsmay be applied to

the entire graphicor to oneof theobjectsfrom which the graphic isconstructed. The following is a description of how to

edit a graphic(All mouse actionsare performed using the left button unless stated otherwise).

TO... DO THIS

Select an object. Choose the Selector toolandclick on

the object.

Selectmultiple objects. Drag in an emptyregion until a

bounding rectangle encompasses

the objects.

or 

Shift+Clickon each of the objects

you want selected (Shift + Click

again on a selected object deselects

it).

Move oneor more

selected objects.

Drag the selected object(s).

Delete selected objects. Press the Delete key.

or 

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 451/715

TO... DO THIS

Select Cut from theEdit menu (This

method putsthe object on the clip-

board for subsequent pasting).Copy selected objects. Press theCopy buttonto copythe

selected objectsto the clipboard.

Then pressthe Paste button to place

a copy of the selected objects into

the Edit window.

or 

Choose Copy from the Edit menu.

Then choosePaste from the Edit

menu.

Edit t ext. Double click on t he t ext t o bring u p

the text editor dialog box.

Change the shape of a

selected object.

Drag oneof the sizing points of the

selected object.

 Add a vertex to a

selected line or polygon.

Right click on the line or polygon

where thevertexis to be added.

Delete a vertexof a

selected line or polygon.

Right click on the vertex.

Change the fillpattern

for a selected object.

Choose Fill Patternsfrom the Graph-

ics menu and select the desired pat-

tern.

Change the color of a

selected object.

Clickon the Line or Fill Color button

with one or more objects selected.

Change the line style for 

a selected object.

Choose Line Styles from the Graph-

ics menu. Then choose the desired

line style.

Flip or rotate a selected

object.

Clickon the flip or rotate button with

one or more objects selected.

Move a selected object

infront of another 

object.

Clickon the Step Front button until

the selected objectis in front of the

other objects.

Move the selected

object in front of all other 

objects.

Choose Move To Front from the

Graphic menu.

or 

©ProModelCorporation

Using Auxiliary Tools 438

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 452/715

439 ProModel 2011 User Guide

TO... DO THIS

Pressthe Page Up key.

Move a selected object

behind another object.

Clickon the Step Back button until

the selected object isbehind theother objects.

Move a selected object

behind allother objects.

Choose Move To Back fromthe

Graphic menu.

or 

Pressthe Page Down key.

Nudge a selected object

one pixel left.

Pressthe Left arrow key.

Nudge a selected object

one pixel right.

Pressthe Rightarrow key.

Nudge a selected object

one pixel up.

Pressthe Up arrow key.

Nudge a selected object

one pixel down.

Pressthe Downarrow key.

Size a background

graphic proportionally.

Select the graphic, group it, then size

using the handles.

Create a perfect circle

or square.

Select a graphicand, while holding

down the shift key, size the graphic.

Options

The Options dialog containsdefault folders, selections for displaying the long build menu, defaults for record deletion, and

the time between auto-saves.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 453/715

Default Fo lders These fields contain the default folders for your model.

Default File: Graphics Library Thisfield allows you to specify a default graphiclibrary file for every new model you

create.

Auto-Save time interval Allows you to select how often ProModel will automatically save your model.

Confirm record deletion Use this option to have ProModeldisplay a dialog box confirming that the user wants to delete

a record from an edit table.

Show shortcut panel at start-up Check this option to display the shortcut panel at start-up.

Long build menu Allows the user to view the long build menu.

Recalculate path lengths when adjusted Recalculates the time or distance of a path network or conveyor as it is

graphically lengthened or shortened.

DirectoriesThe Directories section of the Settings dialog allows you to specify which drives and folders to use for storing models,

graphiclibraries, and output results.

How to change the default folders:

©ProModelCorporation

Using Auxiliary Tools 440

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 454/715

441 ProModel 2011 User Guide

1. Select Optionsfrom the Toolsmenu.2. Click on theBrowse buttonnext to the Folder name you would like to change.3. Specify the desired folders for models, graphics libraries, output results, and auto-save.4. Click OK.

Long Build Menu 

The Long Build Menu option reorganizes the Build menu. The longbuildmenu takes the first section of theMore Ele-

ments submenu and places it in the Build menu. Thisincludesattributes, variables, arrays, macros, and subroutines.

Using the long build menu isespecially helpful when using these elements frequently.

How to display the long menu:

1. Choose Optionsfrom the Toolsmenu.2. Check the Long build menu option.

Please note

To display the short menu, follow the same procedure above and uncheck the Long build menu option.

AutoSaving Files

ProModelautomatically saves the open model every few minutes, which isuseful in the event of unforeseen crashesand

power outages. ProModelusesa model file called “AUTOSAVE.MOD” for allautosavesand onlymodifies the original file

when Saveis chosen from theFile menu.

How to specify the amount of time between AutoSaves:

1. From the Toolsmenu, select Options.2. In the Time between autosaves field, enter the time.3. Click OK.

Please note

Models are always autosaved at the start of a simulation run. To deactivate the auto-save feature, set the

time b etween auto- saves to 0.

How to specify th e autosave directory:

1. From the Toolsmenu, select Options.2. In the Auto-save field, enter the directory path you wish to use.3. Click OK.

Customize

You can add direct links to applicationsand files right on your ProModeltoolbar. Create a link to open a spreadsheet, a

text document, or your favorite calculator–it’s your menu.

To create or modify you Custom Tools menu, select Customize from the Tools menu.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 455/715

This will pull up the Custom Toolsdialog window. The Custom Toolsdialog window allowsyou to add, delete, edit, or 

rearrange the menu itemsthat appear on theTools dropdown menu in ProModel.

Three tools come alreadyadded to the Custom Tools menu by default: QuickBar, Modelsto Go, and Model Package Asso-

ciation. These tools can be added to or deleted from the Toolsmenu.

Add a new menu item:

1. Click on the New button.2. In the Name text box, type the name of the item you will be referencing, asyou want it to appear on the drop

menu.3. Clickthe Browse button.4. Use the browse window to find thefile or application that you wish to have launched,then double clickon it or click

Open.5. The file or application name andpath will appear in the Source window.

Delete a menu item

©ProModelCorporation

Using Auxiliary Tools 442

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 456/715

443 ProModel 2011 User Guide

1. In the Menu Itemslist, clickon the name of theitem you would like to delete.2. Click thedeletebutton.

Edit a menu item

1. In the menu Itemslist, clickon the name of theitem you would like to edit. Itspropertieswill appear inthe Edit

Item panel, on the right.2. Change the name that appearsinthe Name text box.3. To redirect the item to another file or application, change the path and filename in the Source textbox byeither 

typing in a new source, or using theBrowse window.

Rearrange items on the menu

1. You can rearrange theorder inwhich menu items appear on the Tools menu, or add separators to divide them

into logical groups. To movean item up in thelist, select the item you wish to move.2. Click on theUp or Down button to move themenu item’sposition in the menu list.

Add a Separator 

1. Clicking on theSeparator button addsa Separator line to thedrop down list. In theMenu Itemslist, thisline is rep-

resented as --<Separator>--, in the Tools menu it appears as a single solid line.2. The Separator line is inserted into the menu list above the highlighted Menu Item. Its placement can then be

adjusted similar to other menu items, using the Up and Down buttons

Please note

Custom Tool settings are saved in your Windows Registry. They are not a part of your model file or model 

 package. If you have multiple installations of ProModel Corporatio n prod ucts (such as a LAN version,

MedModel, or ServiceModel) your Cu stomized Tool menu will be available to your oth er ProModel Cor- 

 poration prod ucts as well.

Power Tools

Packaged with ProModelare several powerful toolsthat can help you better use and understand your ProModel soft-

ware and the statistical data it creates. These tools include:

l ProClare

l Shift Library

l ProActiveX

 Any of these tools can be added to the custom Tools menu using the steps outlined in the section see Add a new menu

item: on page 442.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 457/715

ProClare

ProClare isa quickway to add new variables, attributes, macros and arrays into your ProModelCorporation product with-out having to leave where you are in the model building process. Thisis extremelyuseful if, for example, you are into heavy

logic and need to add a new variable. With thistool you can addthe new variable withoutlosing your place.

Tools

Startup Loads the default ProModelCorporation product for model building and editing. You can choose to specify a

modelto be loaded.

Please note

When using the ProClare too ls, if no ProModel Corporation products is currently open, ProClare will 

launch the default ProModel Corporation product for you.

Variables This willallow theaddition of new variablesinto themodel. The name, initialvalue,type, andstatscan be set

here.

Attributes Thisallows for the addition of new attributes. The attribute name, type, and value can also be configured.

Arrays This allows the user to add arrays, with their corresponding name, dimensions and type.

Options

Select the Optionsbutton to customize ProClare in these additional ways:

Always on T op This option allows ProClare to always be on top of all other windows, which is usefulif you plan on addinga lot of new items.

Auto Roll-up When enabled, ProClare isreduced to just the title bar when the mouse cursor isoutside the window.

When the cursor isinside the window, the window isrestored to normal size.

©ProModelCorporation

Using Auxiliary Tools 444

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 458/715

445 ProModel 2011 User Guide

Shift Library

For your convenience, predefined shift files are now included with your ProModelCorporation product. When installed

they will appear in a Shift subfolder under the Shift Editor installation folder (i.e. C:\Program Files\ProModel Cor-

poration\Tools\Shift Editor\Shifts\shift_file.sft.)

These files have common nomenclature to simplify the process of identification and implementation of the proper shifts.

Each shift file isnamed in the following fashion: ####x_####x_#(_###).sft. The first four numbers tell you what time the

shift starts along with a letter to designate am or pm. The second four numbers specify what time the shift endsalong with

a letter designating am or pm. The third number specifies how manydaysof the weekfor which there isa shift definition.

The numeral 1 meansthe shift occursone day outof seven;seven meansthe shift is defined for everyday of the week;a

Monday through Friday schedule would be represented with the number five. The last value in brackets isonlyused

when breaks are defined for the shift. The firstof these three numbersindicates thenumber of breaks in a day,and the

next two numbers indicate the cumulative minutes of those breaks.

Example

7a_330p_5_360.sft

This file name representsa shift that starts at 7:00 a.m. and ends at 3:30 p.m.,five days a week.There are three breaks

defined, one for 15 minutes, one for 30 minutes, and another for 15 minutes. These breaks add up to a cumulative 60 min-

utesof break time, representedby 360.

ProActiveX

Overview 

The ProActiveX spreadsheet isdesigned to help you understand how to use ProModel’sActiveX components. The work-

sheets and macros give clear and functionalexamples of how to accessall currently enabled data elements.

The ProActiveX spreadsheet maybe used “as is” or modified to suit your specific needs. With ProActiveX and a fun-damentalknowledge of VisualBasicfor Applications, you can create customized user interfacesfor ProModel–or let our 

consulting division do it for you!

ProActiveX.xls hasnineteen data worksheets corresponding to the module with the same name in ProModel. Addi-

tionally, there isone hidden sheet with data for drop-down lists used on the other sheets.

Please note

ProActiveX is only compatible with Excel 2000 or newer.

Worksheets

Drop-down lists, check boxes and text boxes

Manyof the worksheetsin ProActiveX have drop-down lists which make it easier to fillin the required data. In all cases,

the value you select will be inserted into the selected cellor range of cells. However, the assigned macros do not prevent

you fromselecting a different columnthan the one with the drop-down used.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 459/715

Using a combo box with a pre-definedlistis one wayto ensure consistency inthe data. In most cases, thenumeric value of 

the list selection istemporarilyrecorded on the hidden sheet (named Hidden Sheet). On the Simulation Options

sheet, instead of filling ina cell or range,the value showsin thedrop-down box itself and the numeric value is hidden inthe

cell behind it.

The Simulation Options sheet also contains several check boxes and a text box. The values for the check boxes are hid-denin thecells behind them. The method used for hiding the valuesissimply to make the textcolor thesame asthe back-

ground color.

Not Enabled and Partially Enabled

 A few of the worksheets have data columnsdefined for methods which have not yet been implemented in the ProModel

Data Object. These columns have been included to acknowledge that these elements were not forgotten when ProAc-

tiveX was created–these data elements will be enabled in future releases of ProModel.

Calendar Editor Button

The Shift Assignmentsworksheet hasa button to the far right labeled Calendar Editor . Clicking on this button will show

the Calendar Editor, just like when you invoke the menu callfrom your default ProModelCorporation product.

Browse Button

The GeneralInfo worksheet has a Browse... button that uses the Microsoft Common Dialog to display a file selection win-

dow.

Comments

Several worksheetshave comments in the cells of the title rows. These comments are included to give you important infor-

mation about the data contained in that column–like limitationsor formatting requirements.

Panes and Sections

In each worksheet where the data columnsgo beyond the right-hand border of a single screen, separate panes havebeen created and ‘frozen’ to allow you to scrollthrough the columns without moving the column that identifies the record.

The title rowshave alsobeen frozen, so that theuser can scroll down the sheet withoutlosing sight of the titles.

In each worksheet, title labels spanning more than one column indicate that all the columns beneath that title pertain to

that type of information. For example, on the Resources worksheet, there are several columnsfor downtime data which

have duplicate titles, but different section labels. In some cases, the labels are used merely to make the titles easier to

read.

Controls Sheet 

The first sheet of the ProActiveX file isthe ControlsSheet. The options available on this sheet are described below.

Get (All)The Get button copies ActiveX enabled data elements from the currently open model to the ProActiveX spreadsheet.ProModelmust be running and a modelloaded. When all of the data hasbeencopied to the spreadsheet,a message box

will appear saying, “Process Complete.”

©ProModelCorporation

Using Auxiliary Tools 446

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 460/715

447 ProModel 2011 User Guide

Build Model

The Build Model button copies all ActiveX enabled data elements from the ProActiveX spreadsheet to the currently

open model.

ProModelmust be running and a modelloaded. When all of the data hasbeencopied to the model, a messagebox willappear saying, “Process Complete.”

Save Model

The Save Model button savesallupdates to the loaded model. ProModelmust already be open with a modelloaded.

Run Simulation

The Run Simulation button starts the simulation for the loaded model. To view the simulation, you will have to manually

select ProModel from your Windows TaskBar, to bring it forward.

Open ProModel

The Open ProModelbutton starts ProModel, but doesnot load a model.

Load Model

The Load Model button gives the user an opportunityto specifya modeland then open it in ProModel. If ProModelis not

alreadyrunning, the Load Model button will start ProModel and then load the selected model. Thisbutton gives you an

example of a custom dialog box.

Macros

 Allof the processing logicfor ProActiveX is contained in Excel macros. In most caseseach macro is in a separate module.

The controlling modules are named Get_ALL_Model_Data and Pop_ALL_Model_Data. There are also macros in some

of the Excel Sheet Objects. For example, Sheet04 (Resources) hassubroutines that dynamically fillin the Path Network

drop-down list (using the information on the Path Networkssheet) every time the Resources sheet isactivated. Thisis

one method for keeping the drop-down list in sync whenever you update the data.

When the user clickson the Build All button on the ControlsSheet, the create_modelsubroutine isstarted (found in the

POP__ALL_Model_Data module). This subroutine then calls subroutines in other modules to process each type of data.

The order in which the subroutines are called isimportant, since manyof the modules in ProModeldepend on infor-

mation in other modules. For example, the Locationsmodule must be built before the Path Networksmodule, because

the Path Networksmodule references Locations.

 Allof the subroutines in ProActiveX use the constantsestablished in the PM_CONSTANTS module. You willalso find this

module recorded in the file called PM_CONSTANTS.bas. The main purpose of the constants isto provide a method for 

accessing the parametersto the ProModel properties and methodsdata, without having to remember the numbers asso-

ciated with each table and field.

There are some other usefulsubroutinesthat are used throughout the program to do thingslike showing the righterror 

message or replacing Excel style carriage returnswith ProModelstyle carriage returns.

In many caseswhen you lookat thetablesin ProModel, what you actuallyseeon thescreen is a maintable andone or 

more sub tables.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 461/715

The subroutines in ProActiveX must process the data for all tables simultaneouslyby using For...Next or Do While... loops.

In many of the data tables, the firstfield is a Name or ID field that identifieseach record in thetable anddoesnot allow dupli-

cates. In the subroutines that populate these types of tables, the logic isdesigned to search for an existing ProModelrec-

ordwith the same name or ID. If a recordis found,allof itsfieldswill be updated.If no recordisfound, a new one will be

appended. In tables that have no identifying field, records are always appended.

©ProModelCorporation

Using Auxiliary Tools 448

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 462/715

Running the Model

Simulation Menu Allof the run-time controls are accessed through the Simulation menu located on the menu bar. This menu contains

options for running a model, specifying multiple replication statistics, defining scenario data, and other extended run-time

options.

Each of the selections available on the Simulation menu isexplained below.

Run Choose Run to begin simulating the current model using the options previouslyselected in the Simulation Options

dialog box. Choosing Run doesnot automatically save the model, however the model data will be saved to the file AUTO-SAVE.MOD.

Save & Run Saves the current model, then runsit.

Options Select Options to bring up the Simulation Options dialog boxused to specify important run-time information such

as run length, warm-up period, number of replications, and multiple replication statistics. (See Simulation Optionson page

450.)

Simulate Scenarios Choose Simulate Scenarios to run the scenarios marked for simulation in the scenario manager.

Scenario Manager Select Scenario Manager to open the Scenar io Manager dialog. The Scenario Manager allows you

to define different scenarios and edit the parameter valuesprior to simulation. (See Scenarios on page 457.)

Six Sigma Analysis ProModel linkswith Minitab to provide user with Six Sigma analysis capability. This integration allows

for the tracking of Six Sigmametrics ina modeland theautomaticr eporting of these metricsin Minitab after a scenario is

run.

©ProModelCorporation

Ru nn in g t he Mo del 449

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 463/715

450 ProModel 2011 User Guide

SimRunner SimRunner takesyour existing ProModelsimulation models, evaluates them for you, then performs tests to

find better ways to achieve the results you desire. (See SimRunner on page 479.)

Simulation Options

The Simulations Options dialog provides you with a number of options to controlthe simulation, such as run length,warm-up time, clock precision, and the output. You also controlthe type of statistics reporting you want from the sim-

ulation, including period length and number of replications.

In addition to reporting standard statistics based on one or more replications of a simulation, ProModelallows you to aver-

age statistics across intervals of a single replication (batch mean) for analyzing steady-state systems or take the average

of the average statistics for specifictime periodsover multiple replications (periodic) for non-steady state systems. You

maychoose from three statistical reporting options.

How to open the simulation options dialog:

1. Select the Simulation option from the menu bar.2. Select Options to open the Simulation Optionsdialog.

General Options & Settings

Output Path Containsthe path of the output file (the name of the fileis automaticallycreated using the name of the

model). ProModelrecords allstatistical output in thisfile for your analysis.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 464/715

If this field isleft blank, the default path isused, which points to the Output directory in the ProModel directory.

When you change the default path, be sure the path you enter actuallyexists, or an error will occur at run time.

Run Name The name of thedefault scenario, used whether or not you run your own scenarios. Bydefault, therun name

is"Baseline." You may edit or change the name of the default or baseline run in this field. An error message will occur if thisfield isleft blank.

Define Run Length byProModelallows you to define a run length for your model based on the duration you will test.

l Time Only The totalrun length. Time Onlywill run in hours bydefault, butcan also run in time periodsof weeks

(wk), days (day), hours( hr), minutes (min) or seconds(sec).

l Weekly Time The total run length byweek, day,and time.

l Calendar Date The total run length by a specificcalendar date and time.

©ProModelCorporation

Ru nn in g t he Mo del 451

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 465/715

452 ProModel 2011 User Guide

l Warm-up Period The amount of time to run the simulation before collecting statistics. Usuallythisis the amount

of time it takes for the modelto reachsteadystate. The warm-up period usesthe same unitsas the run length.

l ClockPrecision Select the clock precision value from the drop down box. Then click the radio button for the clock

unitsyou want to display at run time.

Please note

The maximum run length depends on the clock precision and time unit selected. The f ollowing table

shows the maximum run hours fo r each p recision setting.

CLOCK PRECISION

Time Unit .01 .001 .0001 .00001

Seconds (sec) 11,930 hrs 1,193 hrs 119 hrs 11 hrs

Minutes (min) 715,827 hrs 71,582 hrs 7,158 hrs 715 hrs

Hours (hr) 42,949,672 hrs 4, 294,967 hrs 429,496 hrs 42,949 hrs

Days (day) 1,030,792,128 hrs 103,079,208 hrs 10,307,904 hrs 1,030,776 hrs

The following table shows the default precision selections based on the time unit selected in the GeneralInformation

dialog.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 466/715

TIME UNITDEFAULT CLOCK PRECISION SELECTIONS

Clock Unit Clock Precision Maximum Run

Seconds (sec) Seconds .01 11,930 hrs

Minutes (min) Minutes .001 71,582 hrs

Hours (hr) Hours .001 4,294,967 hrs

Days (day) Hours .001 1,030,792,128 hrs

Disable: Animation Use this option to improve run-time speed by shutting down the animation. If you choose to disable

animation, you cannot choose the Generate Animation Script option.

Disable Array Exports This option disables the exporting of data to external arrays. Thisis helpfulfor skipping the array

exporting at the end of simulation, whichmay save time if the data being exportedis large.

Disable Cost When you select this option, ProModeldisables all cost information collection for in the model.

Disable: Time Series Use this option to improve run-time speed by foregoing time seriesstatistics. Thisalso saves disk

space used to store the collected statistics.

At Start: Pause To pausethe simulation at thestart of the run, use thisoption. The simulation will pauseuntil you select

Resume from the Simulation menu in the Simulation module.

At Start: Display Notes Use thisoption to display the notesfrom the GeneralInformation dialog at thebeginning of the

simulation.

At Start: Trace Use this option to cause the simulation to beginin Step Trace mode.

General: Adjust for Daylight Saving This option isonly available when you have defined Run Length by Calendar 

Date. When checked, the simulation clock will account for the hour shift of daylight saving time as defined by your com-

puter's operating system.

General: Generate Animation Script When checked, the simulation will generate a 3D animation script for use with

ProModelCorporation’s 3D Animator application. The animation script records the graphical eventsof the simulation for 

later 3D rendering in 3D Animator.

General: Common Random Numbers Thisfeature isa variance reduction technique used primarily when running mul-

tiple scenarios, each with multiple replications. It isintended to help reduce the number of replicationsr equired to deter-

mine the statistical significance of differences between scenario results. When enabled, common random numbers will

ensure that the sequence of starting seed values for each stream in a set of replications for one scenario isidentical to the

starting seed values for corresponding replications in every other scenario.

For example, if you have this option disabled, the match between starting seed values for each stream in corresponding

replications for each scenariowill not be guaranteed. The net effect of this isthat you mayhave to run more replicationsto

getthe same confidence intervalthat you are able to obtain byrunning with common random numbers.

©ProModelCorporation

Ru nn in g t he Mo del 453

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 467/715

454 ProModel 2011 User Guide

When common random numbers are enabled, you can theoretically establish the statistical significance of differences in

output results between multiple scenarios with fewer replications than by not enabling common random numbers. Spe-

cifically, it reduces the amount of variation in differences between outputs of corresponding replications by ensuring that

these differences are due to true differencesin performance andnot to differences due to randomness of the streams.

For more information on random number streams, see Using Random Number Streams on page 357.

General: Skip Resource DTs if Off-shift When checked, the simulation will ignore resource downtimes if the

resource isoff-shift.

General: Recompile Mappings When checked, at the beginning of each run of a scenario, ProModelwill recompile

your path network mappings.If you do not makea change to your path network, then there isno reason to recompile.

During recompile, ProModelwill determine the shortest distance between locations.

Output Reporting Options

Standard When you select Standard output reporting, ProModelcollects output statistics for one or more replications.

No interval length can be specified when using this option. From the output program, statistics can be viewed for each rep-

lication; although, by default theyare displayed as an average over all the replications.

Batch Mean The method of batch means, or interval batching, isa way to collect independent samples when simulating

steady-state systems as an alternative to running multiple replications. The advantage over running multiple replications

isthat the warm-up period runs only once. When you select Batch Mean output reporting, the output statistics are col-

lected for each time interval indicated in the IntervalLength field. The number of intervals isdetermined by dividing the

run length bythe interval length. The intervallengthmay be an expression but will only be evaluatedonce at modeltrans-

lation, so it isalways a fixed interval. The Number of Replicationsedit field isnot used when this option isselected since it

replaces the need for running multiple replications.

Example

The Content History graph below shows that the contents of Lathe1 varied throughout the simulation. The interval length

wasset to 0.5 hours and the simulation ran a little over 3 intervals (1 1/2hours). The average or meanof theintervals

were .96, 2.09, and5.35, so the average of the interval averagesisthe batch mean or 2.8.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 468/715

Periodic Usefulprimarilyin terminating or non-steady state simulations where you are interested in the system behavior 

during different periods( e.g., peak or lull periods) of activity.

When you select Periodic output reporting, the output statistics are collected by period where the length of a period is

defined in the interval length field. The interval length may be an expression but will only be evaluated once at model trans-

lation, so it isalways a fixed interval. To define unequalintervals, see Customized Reporting on page 456.

You may gather statisticsfor a periodic report over multiple replications. From the output program, you can view each rep-

lication averaged over the periods, each period averaged over the replications, or the pooled average (the average for 

each period averaged over all of the replications).

Example

The contenthistory table below shows how thecontentsof Lathe1 varied throughout the simulation and from one rep-

lication to the other. The interval length wasset to 0.5hoursand thesimulation ran a little over 3 periods(11/2 hours) with

two replications. The results are shown below.

Periodic Output Period 1 Period 2 Period 3

Replication 1 Avg. 2.70 3.09 3.15Replication 2 Avg. 2.20 3.13 3.01

Pooled Average 2.45 3.11 3.08

©ProModelCorporation

Ru nn in g t he Mo del 455

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 469/715

456 ProModel 2011 User Guide

Interval L ength Enter the interval length as the number of time units for each interval or period. The interval length may

be an expression but will only be evaluated once at model translation, so it isalways a fixed interval. To define unequal

intervals, see Customized Reporting on page 456. The time unit isdefined in the GeneralInformation dialog. The interval

length need only be specified when using Batch Mean or Periodic reporting.

Number of Replications Enter the number of replications you want the simulation to run in this field. Number of rep-

lications only needs to be specified when using Standard or Periodic reporting.

Output viewer(s) to launch

Output Viewer 4.0New modelscreated in ProModel2010 will choose Output Viewer 4.0 as the default output viewer.

MinitabProModellinksand integrateswith Minitab to provide users with Six Sigma analysis. Thisintegration allows for 

the tracking of Six Sigma metrics in a ProModelmodel and the automaticr eporting of these metricsin Minitab after a sce-

nariois run.

Select the Minitab checkbox to automatically launch Minitab at the end of the simulation.

Please note

At least one checkbox, with the option to have both checkboxes under the "Output viewer(s) to launch"

area, need to be checked at all times.

Running a Specific Replication

ProModelallowsyou to run a specific replication in order to produce time seriesgraphs in the Output Program. To run a

specificreplication, enter the “@” symbolin the “Number of Replications” box followed by the replication number. For 

example, “@5” will run only the fifth replication.

Customized ReportingFor customized reporting, you may want to take advantage of the following statements: REPORT, RESET STATS, and

WARMUP. See Report on page 617, Reset Statson page 620, and Warmupon page 650 for syntaxand examples.

REPORTA general statement called from anylogic. When the statement iscalled, a full set of statistics issaved to be

viewed as a snapshot report in the output processor. Optionally, the statement allows you to reset the statistics after the

report issaved, giving you a batch or period for any time interval you define.

RESET STATSA general statement called fr om anylogic andgenerally used in connection with the REPORT statement.

When this statement isused, all statistics are set to zero. The output database isnot erased (see WARMUP).

WARMUP A general statement called from any logic. When this statement isused, all statistics are set to zero and the out-

put database iserased. Use this statement in conjunction with the WAIT UNTIL statement to wait until specificparam-eters in the system being modeled are at a steadystate or other conditionsare appropriate to declare the warm-up

period over.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 470/715

Scenarios

ProModelgives you the option of defining several scenariosfor a model using parameters. A scenario isa set of param-

eterswith settingsdefined by the user. Using scenarios allows you to alter various parametersto run a series of “what-if”

scenarioswithout changing the model directly.

Scenarioscan also be helpfulfor allowing other users of your model, who may not have experience using model logic, to

make changes to the model through scenario parameters.

Scenariosare saved with the model for future use.

 A checkbox appears under each scenario in the Simulate Scenario? row. To enable the scenario to be simulated,make

sure the checkbox ischecked. To disable the scenario, leave the checkbox unchecked.

Parameters are listed as rows under the Scenario columns. In addition, there isa row for the Last Simulation Run,

which, if there is outputfor that scenario, lists the date andtime that thescenario waslast run.

Please Note

 Aft er a scenario is run, the checkbox under that scenario will default to be unchecked. This is so that the

next time you want to run a n ew scenario, time is not spent generating results that already exist. To re-run

a scenario, simply make sure the scenario’s checkbox is checked.

Help Clickthe Help icon [?] to launch the help system.Run Scenarios Runsthe model with the defined scenarios. When running several scenarios, clicking on the Abort button

during translation will terminate all scenariosinstead of just the current scenario.OK Clicking OK allows you to exit the Scenario Manager without running the simulation.Cancel Clicking Cancel allows you to exit the Scenario Manager without applying any changes or running the simulation.

Scenarioscan be added or deleted in the Scenario Manager.

How to define a Scenario

©ProModelCorporation

Ru nn in g t he Mo del 457

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 471/715

458 ProModel 2011 User Guide

1. Click theAdd button [+] located at the top of the last column.2. A new column will appear with the defaultname, and willtake on thesame parameter valuesas theBaseline sce-

nario. Define the scenario name by typing in the Scenario Name box. Clickin the individualcellsunder the new

scenario'scolumn to change the scenario properties.

3. Scenarios can also be duplicated by right-clicking on a scenario and selecting Duplicate Scenario from thecon-text menu.

How to delete a Scenario

1. Hover over a scenarioname until an [x] appears inthe upper righthand corner of the cell.Press the [x] to delete

the scenario. Or, right-click on any scenario and select Delete Scenario from the context menu. Anyscenario

except the Baseline can be deleted.

The Baseline Scenario c an be renamed, butit cannot be deleted, nor can itsvalues be modified in theScenario Man-

ager.

Please note

Only macros defined as scenario parameters will be displayed as parameters for the scenario. (See Sce-

narioParameters on page 322 and Macroson page 319 for more information.)

Running the Simulation

Choosing Run begins the simulation of the current model. The model isautomatically saved in a file called autosave.mod.

Therefore, if the simulation isterminated abnormally, ProModelwillask you if you would like to load the latest auto-

save.mod file when you re-openProModel. If you choose Save & Run, themodelwill be saved inthe AUTOSAVE.MOD

file as well as the <model name>.mod file.

Once you choose the Run option, a translation status window appears, showing which data iscurrentlybeing translated.

This gives you the option to abort the simulation run at anytime. Asshown below, thepath networks are being mapped.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 472/715

Abort Allows you to cancel model translation at anytime during translation.

Continue Allows you to continue model translation when a warning message is displayed.

Detailed Status Allows you to view more specificinformation about the data in translation.

Run-Time Menus & Controls

Once a simulation begins, a new menu bar appears at the top of the screen with selections for controlling and interacting

with the simulation. As shown below, these menu items appear above the animation speed controlbar and simulation

clock.

©ProModelCorporation

Ru nn in g t he Mo del 459

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 473/715

460 ProModel 2011 User Guide

Each of the menu selections and the tools for controlling the animation are described in the remainder of this chapter.

Run-Time File Menu

The Run-Time File menu contains only one selection, View Text.

View Text Choose this option to bring up a window with a text listing of thecurrent model. This feature isextremely useful

for debugging and verifying models.

Please note

You may switch back and forth b etween a full size View Text window and t he animation screen by choos- 

ing the desired window from the Window menu option.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 474/715

Run-Time Simulation Menu

The Run-Time Simulation menu has two options: End Simulation and Pause/Resume Simulation.

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

Pause/Resume Simulation Choose Pause Simulation to pause the simulation for an indefinite amount of time. With the

simulation paused, you maybegin a trace, zoom in or out, set up the next pause, examine different locationsin the model,

or interact with the model in a number of other ways. Choose Resume Simulation when the simulation ispaused to con-tinue running the simulation.

Run-Time Options Menu

The run-time Options menu has several selections that allow you to interact with the simulation while the model isrunning.

These options are described in the following pages.

Animation Off/On Turns the animation on or off. Off greatlyspeeds up the simulation. Animation speed may also be set

with the ANIMATE statement. (See Animate on page 526 for information).

Zoom Zooms inor out on the animation.

Views Allows you to select a view, which you have defined while building the model. Thisoption isonlyavailable if you

have previouslydefined a view.

©ProModelCorporation

Ru nn in g t he Mo del 461

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 475/715

462 ProModel 2011 User Guide

Trace OptionsLists events as they happen during a simulation. This listing may be Step by Step, Continuous, or Fil-

tered.

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.

User Pause by Date/Time Allows the user to enter a calendar date and simulation clock time for the simulation to

pause. Thisoption isonlyavailable if you chose "Calendar Date" as the Run Length in the Simulation Optionsdialog.

Debug Option

Debugging ProModel Logic 

The Debugger isa convenient and efficient way to test or follow the processing of any logic defined in your model. The

debugger isused to step through logic one statement at a time and examine variables and attributeswhile a model isrun-

ning.

Before discussing the detailsof the Debug option, it isimportant to understand the following terms:

Statement A statement causes ProModelto take some action or perform some operation. Thisincludes statements

such as GET, JOIN, and SPLIT AS. (See Statementsand Functionson page 523 for more information).

Logic Logicr efers to the complete set of statementsdefined for a particular process record, downtime event, initial-

ization logic, or termination logic for a simulation.

Thread A thread isa specificexecution of anylogic. A thread isinitiated whenever a logic needs to be executed. Thiscan

be an entity running through an operation logic, the initialization logic, a resource running a node logic, a downtime logic,

or any other logic. Note that the same logic may be running in several threads at the same time. For example, three enti-

ties of the same type being processed simultaneouslyat the same multi-capacity location would constitute three threads.

 A thread or logic execution can be suspended by any statement, causing simulation time to pass (e.g., GET Res1, WAIT

5, etc.). After such a statement completesits task, the thread isr esumed. During the time a thread issuspended, other 

threads maybe initiated, suspended, resumed, or completed. This iscalled thread switching.

Please note

Even though several threads can execute t he same logic at t he same time in the simulation, the sim- 

ulation processor can only process them one at a time. So t here is really only one current t hread while all 

other threads are suspended (either scheduled for some fut ure simulation time, or waiting to be executed 

after the current thread at the same simulation instant).

ExampleTo better explain the above concepts, consider the following operation logic for a multi-capacity location.

The logic includesall statements shown on previous page. Let’s assume that there are three different entities currently

executing this operation logic. Each executing entity constitutes a thread. A possible scenario for this case isthe following:

Thread 1 isan entity using two units of resource Oper_3 for N(35,5) minutes. Thread 2 isan entity waiting for resource

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 476/715

Oper_1 to become available. The last threadis a different entitywhich hascompleted 10 minutesof the 15 minute wait

executed at the beginning of the logic. Note that two entities arriving at a multi-capacity location at nearly the same time

could both execute the same WAIT or USE time in the logic, only in different threads.

In general, for a logic block containing statements that pass simulation time, any number of threads can wait for the

required simulation time to elapse, corresponding to each time elapsing statement. These threads are scheduled toresume at some future simulation time.

There can also be manythreads( any number of threads corresponding to each of the time elapsing statementswithin the

logic) which have completed their waiting time, but await their turn to continue execution. These threads are on hold

because the simulation engine isbusy with another thread scheduled for the same simulation time. There isonlyone

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.

Debugger Options Dialog Box 

The Debugger Options dialog boxallows the user to specify when to display the Debugger dialog boxduring the sim-ulation run.

Disable d ebugger Disables the debugger completely. By default the debugger is enabled. Running the model with the

debugger disabled increases the run speed. When running multiple replicationsor scenarios, or when the animation isdis-abled, the debugger will automatically be disabled.

DEBUG statement Displays the Debugger dialog box every time a DEBUG statement isencountered in an enabled proc-

ess while running the simulation. See Debug on page 547 for more information.

©ProModelCorporation

Ru nn in g t he Mo del 463

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 477/715

464 ProModel 2011 User Guide

Global Ch ange Displays the Debugger dialog boxevery time a globalchange occurs to a specified variable or array.

The Debugger dialog box showsthe originaland new value of the element.Only one global name can be specified in this

box.

User Condition Displays the Debugger dialog boxwhen a defined user condition written as a Boolean expression

becomestrue, for example, when Var1=5. Onlyone expression can be specified in this box, although several conditions

can be tested by using the OR operator. See Boolean Expressionson page 496 for more information.

Check Condition Allows the user to define how often to check the user condition. The optionsinclude:

l Before each statement The condition, such as Var1=1, will be checked before each statement isexecuted. This

option isthe most precise way to tell exactly when the user condition becomestrue, but it slows down the sim-

ulation the most.

l At each thread switch The condition,such asVar3>17, will be checked only if a statementfrom a different thread

follows the current statement being executed.

l At each thread initiation The condition, such as Att1=5, will be checked only if the next statement to be executed

isthe firststatementin a thread(the first statement in a thread is alsothe first statement of a logic).

Debug button Pressing the Debug button displaysthe Debugger dialog box before the next statement executes.

OK Closes the Debugger Optionsdialog boxand continuesto run the simulation model.

Debugger Dialog Box 

The Debugger can be used in two modes: Basicand Advanced. The BasicDebugger appears initially with the option of 

using the Advanced Debugger. The BasicDebugger dialog boxis shown below:

Error Display Box Displays the error message or reason why the Debugger dialog boxis displayed, such as the User-

Condition becoming true.

Logic Display BoxDisplaysthe statementsof the current logic being executed.

Context Box Displays the module, operation, and line number ( in which the debugger stopped) in the Information box.

Information BoxDisplayslocal variables and entity attributes with non-zero values in the Information box.

End Simulation Choose this option to terminate the simulation. Thiswill prompt you about collecting statistics.

Run Continuesto run the simulation, but still checksthe 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 iswaiting to capture a resource), another thread meeting the debugger conditionsmay be displayed as

the next statement.

Next Thread Brings up the Debugger at the next initiated or resumed thread.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 478/715

Into Subroutine Steps to the first statement in the next subroutine executed by this thread. Again, if the last statement

executed suspendsthe thread, another thread meeting debugger conditions maybe displayed first. If no subroutine is

found in the current thread, a message isdisplayed in the Error Display box.

Options Brings up the Debugger Optionsdialog box. You may also bring up this dialog box from the Simulation menu.

Advanced Changes the Debugger to Advanced mode, provides additional options discussed next.

 Advanced Debugger Dialog Box 

The Advanced Debugger contains all options in the BasicDebugger plus a few advanced features.

Next (Th read) Jumps to the next initiated or resumed thread. This button has the same functionality as the Next Thread

button in the Basicdebugger.

New (Th read) Jumpsto the next initiated thread.

Disable (Thread) Temporarily disables the debugger for the current thread (see also enable).

Exclusive (Thread) The debugger displaysthe statementsexecuted within the current thread only. When the thread ter-

minates, the exclusive setting isremoved.

Next (Logic) Jumps to the next initiated or resumed thread that isnot executing the same logic as the current thread.

New (Logic) Jumps over any resumed threads to the next initiated thread not executing the same logic as the current

thread.

Disable (Logic) Temporarily disables the debugger for all threads executing the current logic (see also enable).

Exclusive (Logic) The debugger displaysonlythe statementsexecuted in anythread executing the current logic.

©ProModelCorporation

Ru nn in g t he Mo del 465

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 479/715

466 ProModel 2011 User Guide

Enable disabled threads and logics Enables the threads and logicswhich were disabled previously.

Debugger Options Examples

Debug Statement Example

 A simulation model demonstrates a proposed flexible manufacturing system which produces castings. A variable, WIP, is

used to track the work in process for the system. Suppose we want to display the Debugger when the variable, WIP,

reachesa value of 300. We could place an IF...THEN statement including DEBUG after the statement incrementing the

variable, WIP, as shown below:

By checking the box next to the DEBUG statement in the Debugger Options dialog, the Debugger isdisplayed when the

variable, WIP, reaches 300.

Global Change Example

Suppose we want to know when thevariable, COUNT, isincremented.We would check thebox to the leftof Global

Change and type COUNT in the Global Change field. This will display the Debugger dialog box each time COUNT

changes. It will also display the previous and changed value of COUNT.

User Condition Example

Suppose we want to follow a casting through the entire system (i.e., from when an entityenters the system to when it

exits). We would set an attribute equal to a unique number in the arrival logic for a single casting (Att1=3). In other words,

only one casting in the system should have Att1=3. We would then check the User Condition box and enter the condition

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 480/715

as “Att1=3.” We would then select At Each Thread Initiation as the Check Condition. The debugger isdisplayed each time

a particular customer initiates a new thread. For example, the debugger may displaythe following information:

Debugger syntax

Casting @ loc1: GET Oper_1

WAIT N(5,3)

INC Var1

Casting @ loc2: JOIN 1 Fixture

...

...

...

Trace Options

 A trace is a list of events occurring over the course of a simulation. For example, a trace statement might state “EntAarrives at Loc1, Downtime for Res1 begins.” A trace listing also displaysassignments, such as variable and array element

assignments. A trace listing of a simulation run maybe viewed in several ways through the trace options provided.

Trace Mode

 A trace listing is generated in one of three modes, Step, Continuous, or Filtered.

Trace Off 

Select this option to discontinue a current trace.

Trace Step

Selectthis option to stepthrough thetrace listing one event at a time.Each time you clickthe leftmouse button, thetracewill advance one event. Clicking and holding the right mouse button while in this mode generatesa continuous trace.

Trace Continuous

Select this option to write the trace continuously to the output device selected from the Trace Output submenu. Thisis use-

ful when you do not know exactly where to begin or endthe trace. Clicking andholding the rightmouse button stopsthe

trace untilyou release the button.

Filtered Trace...

When you view the Trace during simulation, you see a list of all the eventsthat occur as your model isrunning.

 Although it may be helpful to view every event in the simulation, there are many times when you will want to focus on just

the events that affect specific elements (locations, resources, variables, etc.) of your model.

The Trace feature contains an optional, custom filter, which allows you to pickthe elements of your model, or custom text

string,that you wishto view inthe Trace window.

©ProModelCorporation

Ru nn in g t he Mo del 467

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 481/715

468 ProModel 2011 User Guide

From the Custom Trace Options dialog, you may choose which elements of your model you want displayed in the Trace

window.The Custom Filter works by showing the specified elements in the trace according to the following:

l Specified elements found in the main heading of the Trace will be displayed along with the entire contents of the

sub-headings.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 482/715

l Specified elements found in a sub-heading will only display the main heading and the sub-heading with the spec-

ified element. All other sub-headingsof the main heading, which do not contain the specified elements, will not be

displayed.

The Enable button in the Custom Trace Options dialog must be checked for the Trace Filter to take effect.

Output to File

Select this option to send the trace listing to a text file. Trace statementsare automatically written to a <modelname>.TRC

file.

Animation Options

In addition to the debug and trace options, animation optionsallow you to controlthe animation screen.

Animation Off  Choose this option to temporarilysuspend the animation. To resume the animation, select this option

again. (The selection automatically changes to “Animation On.”) Note that running with animation off greatlyincreases the

run speed, especially for modelswith a large amount of graphicdetail. To increase the run speed to an even faster rate,check the Disable Animation in the Simulation Optionsbefore running the model (see Simulation Options on page 450).

Zoom Selectthis option to Zoom inor out on the animation.When thisoption is selected, you may choose a preset zoom

level, enter your own zoom level, or choose Zoom Full 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 func-

tion will automatically pan to show at least part of the layout.

To zoom in a specific area of the simulation layout, press andhold theCTRL key,then clickand drag the mouse to create a

rectangle aroundthe are inwhich you would like to zoom. Release the mouse, then the CTRL key. The layoutwill zoom in

on the selected area.

Views Clickon this menu item to display the available views. Select the desired view.

©ProModelCorporation

Ru nn in g t he Mo del 469

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 483/715

470 ProModel 2011 User Guide

User Pause Choose this option to enter a time for the simulation to pause. The proper format for specifying a user pause

ishh:mm:xxwhere hh representshours, mm representsminutes, and xxrepresents hundredths of a minute.

Run-Time Information Menu

The Run-Time Information menu allows you to see the statusof locationsin two different ways. In addition, you mayview

the current state of all variables and array elements. Each of these options isdefined in the following pages.

Status Light Select this option to bring up the StatusLight Legend.

Locations Select this option and choose a location to view an information box with real time information about the loca-

tion. Information for alllocations may also be displayed.

Variables Select this option to show the current state of all real and integer global variables.

Arrays Select this option to show the current value of all cells for arrays of up to three dimensions.

Dynamic Plots Allows you to graphically monitor the performance of model elements during run time and store sta-tistical data in an Excel® spreadsheet.

Location Status Legend

The Location StatusLegend shows the different colors of a location statuslight and the meaning of each color. Single

capacity locations maybe in anyof several states, while multi-capacity locationsappear only as up or down. Thiswindow

mayr emain open during the simulation.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 484/715

Dynamic Plots

Dynamic plots allow you to select certain metricsfor various model elements and observe value changes for those metrics

dynamically as the model runs. Configurationsof one or more plot windowscan be saved and later retrieved to quickly

view a customized set of graphs.Features include:

l Up to sixelementsmanybe graphed on thesamechart at the same time.

l More than one chart may be active at a time.

l Chartscan be resized.

l Plots displaya meaningful scale for both axes.

l Improved customization for graph appearance

l Chart settingsmay be saved to use over from one simulation run to the next.l Dynamic plots work with multiple replications and scenarios.

Basic Operation

Please note

The Dynamic Plot dialog is only accessible during simulation run-time. If you will be creating saved chart 

views, you may wish to pause the simulation, define Chart views, then resume the simulation.

Starting Dynamic Plots

Dynamicplotsare set up using the Information | Dynamic Plots menu during simulation. Under Dynamic Plots you will

find two sub-items, New and Configurations…

©ProModelCorporation

Ru nn in g t he Mo del 471

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 485/715

472 ProModel 2011 User Guide

New opens a window similar to the one below.

Setting up a Plot 

Tree View

The tree view representsa hierarchical list of all plottable items in the model. Expanding and collapsing of tree items

works in a manner consistent with standard Windows tree controls, including, but not necessarily limited to, double-click-

ing on a parentitem, clicking on plusor minusgraphic next to a parent item, and using the plusand minuskeyson the

number pad of most keyboards. When a subtree isfully expanded, individualplottable items are shown, as below:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 486/715

Each plottable item displaysa checkbox to its left. When checked, the item isadded to the list of currently plotted items

below thetree view and the chart view beginsto plot the value of the item. When unchecked, the item is removed fromthe

list of currently plotted items, and theitem is removed from the chartview. Itemscan also be added or removed from the

chart view bydouble-clicking the item. If theitem wasnot checked,this willcheck the boxnext to theitem, addit to the cur-

rent item list and the chart view, and switch immediately to the chart display. If the item was checked, this will uncheck the

boxnext to the item, remove it from the current itemlistand the chartview, and switch immediately to the chart display.

The maximum number of statisticsthatcan be plotted on a single chart issix. When six itemsare being charted andyou

attempt to add an additionalitem by either clicking the box next to the item or by double-clicking the item, nothing will

happen andno changesto the chart will take place.

Statistic List

The item list below the tree view containsthe items currently being graphed, arranged into two columns:a label anda sta-

tisticname. The labelinitially consists of only the text directlyright of the item icon in the tree view, while the statisticname is

composed of thenames of theitems ancestor nodesand thename of the item node itself. For example, for the "Avg Min

per Entry" item under the Input location, the label would initially be set to "Avg Min per Entry" and the statisticname would

be "Locations\Input\Avg Min per Entry."

Please note

When you click on the Label portion of the item in the list to select it and then click again, the label 

becomes editable, and you can type over or edit t he existing text. This text becomes the n ew label for th eitem, and will now be displayed in the legend in the chart view.

The Remove button removes the selected item, if any,from thelist, unchecks itin thetree view, and removes it from the

chart view. Clicking the Clear button doesthisfor every item in the statisticlist.

Clicking the dividing lines between headings and dragging left or right resizes the columnsin the statisticlist.

©ProModelCorporation

Ru nn in g t he Mo del 473

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 487/715

474 ProModel 2011 User Guide

Chart View

The chart view iswhere graphical representations of changing model elements are displayed. It consists of a chart area

and, optionally, any combination of the following: toolbar, legend, x- and y-axis scales, x- and y-axislabels, vertical and

horizontalgridlines, and a chart title. An example of a chart view isshown below.

The x-axis indicatestime elapsed from the start of the simulation, measured in clock precision units specified in the Sim-

ulation Optionsdialog. The y-axis measures values of the items being plotted. Both axes are re-scaled when necessary

so that all data pointsfit withinthe chart area. When inthe chartview, the maximizebutton inthe title bar expandsthe

chart itself to completely fillthe area within the dialog, removing the “Stats to Plot” and “Chart” tabsand extra spacing.

This maybe helpful when you want to size the chartwindow as small aspossible and stillview the chartupdate. Clickingthe minimizebutton willrestorethe chart to itsnormal state. The items being plottedare color-coded and the keyis on the

right-hand side of the window. Manyof the chart optionssuch as title and colors are customizable; simply click the right

mouse button and select Properties… from the context sensitive menu options.

Dynamic Plot Configurations

Information | Dynamic Plots | Configurations... isdisabled if no saved configurations exist for the model and no

dynamic plot windowsare open.If enabled, selecting itopens a dialog boxlike the onebelow. The dialog boxconsistsof a

list boxcontaining the names of anysaved dynamic plot configurations for the model, an edit field, and Load, Rename,

Delete, Save, and Exit button.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 488/715

If you select a configuration from the list and click Load, the indicated saved configuration of chart(s) will be loaded, with all

of the previous settings as far as selected data items, chart style, colors, fonts, visible elements, screen position and size,

etc. If any of the previouslyselected data itemsno longer exist in the model, they will simply not be displayed. For example,

if a statistichad been selected for a location that was later deleted from the model, it will no longer be selected.

Double-clicking on a configuration in the list hasthe same effect as selecting it and clicking the Load button.

The Delete button removes the selected configuration from the list and deletes the associated data from the model.

The Rename button changes the name of the currently selected configuration to the text in the Save/Rename Asedit

field.

Clicking the Save button saves all settingsof any open dynamic plot windows, including selected data items, chart style, col-

ors, fonts, visible elements, screen position and size to a configuration with the name specified in the edit field. If the name

matches one of the configurations in the configuration list, this data will replace the previous data for that name.

The Save button doesnot actually save data into the model file. Rather, it createsor modifies a set of configuration data

associated with a particular configuration name in memory and tagsthe model as being modified. If you exit the program,

load a model, or execute the New command from the File menu you will be prompted to save the model. Using the Delete

or Rename buttonsin the configuration dialog also tagsthe model as modified.

Advanced Operation

To enhance your simulationsand presentationsyou can turn your dynamic plots on and off using the DynPlot “” statement

in your model logic. Predefine the statistics to be graphed and a chart name, then open your plot through subroutines or 

processing logic.

©ProModelCorporation

Ru nn in g t he Mo del 475

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 489/715

476 ProModel 2011 User Guide

Run-Time Window Menu

The Run-Time Window menu allows you to rearrange windowsand icons and select the active window. These functions

are standard to all Windows applications.

Tile Causes all open windowsto fit in the available screen space. Windowshidden behind other windowsbecome visible.

Cascade Causes all open windowsto overlap such that the title bar of each window isvisible.

Arrange Icons Causes all icons representing iconized applicationsor windowsto be arranged neatly along the bottom

of the screen.

Run-Time Interact Menu

The Run-Time Interact menu displaysthe Interact dialog box. It allows you to execute interactive subroutines during run-

time. Interactive subroutines are defined in the Subroutines edit table (see Subroutine Editor on page 327).

How to execute an interactive subroutine during run-time:

1. Select Inter act from the run-time menu.2. Select the identifier for the subroutine from the list box in the Interact dialog box.3. Choose the Activate button.

Run-Time Help Menu

The Run-Time Help menu contains selections for accessing the ProModelon-line help system. It operatesthe same here

as in the model editing functions.

Index... Choose thisoption to bring up theMain Help Index.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 490/715

Context Choose this option to go directlyto the help screen that correspondsto the active window. If no context sensitive

help exists for the active window, the Main Help Index will appear.

About... Choose the option to display a message containing software version information.

Run-Time Controls

In addition to the animation options discussed in the previous section, you may pan the animation screen in any direction,

controlthe speed of the simulation, and change the format of the simulation clock display. These and other procedures

are discussed in thissection.

How to pan through the animation:

1. Press andhold the leftmouse button anywhere on theanimation screen. This point then becomesthe “anchor 

point” by which the entire animation ismoved.2. Drag andrelease the mouse where you desire theanchor point to be located.The following diagram illustrates

thisprocedure.

How to control the simulation speed:

l Move the animation speed controlbar to the left to decrease the simulation speed or to the right to increase the

simulation speed.

©ProModelCorporation

Ru nn in g t he Mo del 477

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 491/715

478 ProModel 2011 User Guide

Please note

The speed o f t he animation may be altered by model logic with the use of the ANIMATE statement (See

 Animate on page 526  ).

How to change the format of the simulation clock display:

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

How to identify any location on the layout during the simulation:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 492/715

l Clickon a location while holding the CTRL key. (An identifier boxappears and allows you to bring up the location

information window for that location.)

Run-Time Right-Click Menu

Right clicking in the simulation window will bring up a right-clickmenu, which gives you easy accessto several animation

controls.

Animation Off Turns off the animation, which makes the simulation run faster.

Zooms Allows you to choose a levelof zoom.

Views Allows you to choose a view that you have previously defined. See Views on page 107 for information on defining

views.

End Simulation Allows you to interupt and end the simulation during run-time.

Pause/Resume Simulation Allows you to toggle the simulation’s pause on and off.

Trace Options Lists eventsas theyhappen during a simulation. This listing maybe Step by Step, Continuous, or Filtered.

Dynamic Plots Opensthe Dynamic Plots window.

Please note

Right clicking to bring up the right-click menu will pause the simulation as long as the right-click menu is

open.

SimRunner 

SimRunner takes your existing ProModelsimulation models, evaluates them for you, then performs tests to find better 

ways to achieve the results you desire. Typically, most people use simulation tools to predict and improve a system’s per-

formance by modeling the actual location (e.g., a plant floor, a banklobby, or emergency room) or abstract process (i.e., a

©ProModelCorporation

Ru nn in g t he Mo del 479

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 493/715

480 ProModel 2011 User Guide

logical process). Through testing various “what-if” scenarios, SimRunner can help you determine the most ideal way to

conduct operations—we call thisoptimization.

When you conduct an analysisusing SimRunner, you build and run projects. With each project, SimRunner runs sophis-

ticated optimization algorithmson your model to help you optimize multiple factors simultaneously. For each project, you

will need to provide SimRunner with a model to analyze or optimize, identify which input factors to change, and definehow to measure system performance using an objective function. SimRunner can conduct two types of tests: Pre-Anal-

ysis(Sta tistical Advantage ) and Simulation Optimization.

SimRunner Benefits

Using SimRunner will help you find accurate solutionsfor your modeling needs. No longer must you sit and experiment

with what you think might work, only to find that your solution actually interferes with productivity in other partsof the

model. SimRunner will help you locate true solutionsby monitoring how changes affect each part of the model. In other 

words, SimRunner will notlet you improve one area of your modelat the expense of another—the resultsyou get are

beneficial to the entire model.

Starting a New ProjectThe following describes how to start and prepare a project for analysis. Remember that you must create and validate

your model prior to analyzing or optimizing it in SimRunner.

How to select a model:

1. Click the New button on the button bar or select New Projectfrom the File menu.

2. From theOpendialog, select themodelfile you wish to use.

3. Click OK.

4. Once you select a model, the model’s name will appear in the Project Information dialog.

How to define the input factors:

1. Click on the Inputs button.2. To select input variables, click next to each variable in the Selected column. SimRunner will mark the selected

items.

Please note

SimRunner will optimize only single value macros defined as scenario parameters.

How to define the objective function (output variables):

1. Click the Outputs button.

2. In the Objective Function Setup dialog, select the category of the item(s) you wish to minimize or maximize.3. Highlight an itemin the list.4. Select Maximize, Minimize, or Custom to select the type of optimization you wish to use for the variable.5. Enter the Weighting. Thisnumber representsthe importance of Maximizing or Minimizing the item. (The

higher the number, the higher the importance.)

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 494/715

6. After you set thevalues for the item, clickthe right arrow to place theitem in theselectedlist. To removean item

from the selected list, select the item and click the left arrow. (Alternatively, you maydouble click on an item to add

it to or remove it from the list of selected variables.)

Stage one: Pre-Analysis

With the model built, the input factors selected, and an objective function defined, you are readyto conduct a Pre-Analysis.

 Also known as Sta tistical Adva ntage, the Pre-Analysis runs several tests to identifythe initial bias (warm-up period),

determine appropriate run-length to reach steady-state, find the number of replicationsnecessary to ensure that each

event occurs at least once, and locate the model averages.

Stage two: Simulation Optimization

Simulation Optimization isa multi-variable optimization that tries different combinations of input factors to arrive at the com-

bination that provides the best objective function (output) value. Depending on the number of selected input factors and

the complexity of the solution space, this process can take a long or short time. Optimizations with manyfactors and com-

plex solutions take longer to run.How to run an optimization:

1. Click on the Optimize! button or select Start Optimization from the Project menu.2. Click Play on the dashboard to begin.

©ProModelCorporation

Ru nn in g t he Mo del 481

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 495/715

Reports and Graphs

Once your model hasbeen built, and the simulation run, you are readyto begin making important decisions about your real-world process based on your simulation’s data. To help you make the most of the data collected during simulation,

ProModel comes with powerful, easy-to-use tools that allow you to view your data numerically, in spreadsheet format, or 

graphicallyin a variety of charts through the Output Viewer. Or, for Six Sigma analysisselect Minitab. Through the Sim-

ulation Options dialog, choose between using one or both of these powerful tools.

Output Viewer 

Onceyou have defined a process and builta model, you are readyto begin making important decisionsbased upon the

resulting simulation data. To help you make the most of the data collected during your simulation, ProModelcomeswith a

powerful easy to use Output Viewer. The Output Viewer allows you to view your data numericallyin spreadsheet format or 

graphicallyin a variety of charts.

To view results in Output Viewer, check the Output Viewer checkboxin the Simulation Options dialog.

Output Viewer can also be accessed from the toolbar by clicking on the Output Viewer icon.

©ProModelCorporation

Reports and Graphs 482

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 496/715

483 ProModel 2011 User Guide

Please Note

If a simulation or scenarios have previously run, Output Viewer will automatically load the simulated 

results when it opens.

Run the simulation and then click Yes to view the results in Output Viewer. Output Viewer automatically launchesand

organizes and displaysthe data gathered during simulation. The first view of Output Viewer willprovide a predefined set

of four chartsand the Scoreboard.

For detailed information and assistance while working within Output Viewer, click the help icon located in the upper right

hand corner of the Output Viewer browser.

 A complete and detailed help file will launch.

Six Sigma Analysis with Minitab

ProModellinksand integrateswith Minitab to provide users with Six Sigma analysiscapability.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 497/715

Thisintegration allows for the tracking of Six Sigma metricsin a model and the automatic reporting of these metricsin Mini-

tab after a scenario isrun.

Before simulating a scenario in, adjust the Simulation Options dialog to include Minitab to automatically launch at the

end of the simulation.

Simulation Properties - Selecting an Output Viewer 

Selecting Simulation Options from either the Simulation toolbar or from the Simulation menu will open the Simulation

Options dialog.

By default the Output Viewer check boxis selected under “Output viewer(s)" section of the dialog.

Select the Minitab check boxto automatically launch Minitab at the end of the simulation. When prompted to view the sta-

tistics after the simulation runs, if Six Sigma analysiselements have been defined in the Six Sigma Configuration dialog,

the results will be summarized and displayed in Minitab.

Accessing Minitab

Toolbar 

©ProModelCorporation

Reports and Graphs 484

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 498/715

485 ProModel 2011 User Guide

 A Minitab icon has been added to the Simulation toolbar. Click on it to launch Minitab.

Menu 

Minitab can also be accessed from the Simulation menu by selecting Six Sigma Analysis. Thisopens the Six Sigma

Configuration dialog. From within the dialog select the Launch Minitab button to open Minitab.

Six Sigma Configuration Dialog

Disabled Clickand place a checkmark in the boxin the Disabled column for items to be temporarilyremoved from the

analysis. This doesnot delete the items but rather disables them from being included in the Six Sigma analysiswhile pre-

serving all the information about the item.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 499/715

Name Name of the analysisitem selected in the Add Analysis Item dialog. Thisname can be modified by double-clicking in

the cell.Thisname will be used in the title of the graph generatedin Minitab.

Type Type of analysisitem selected in the Add Analysis Item dialog.

Stat Collection Choose a method of statistical summarization for Six Sigma Analysisof a particular item.

l Total/Final Value For each replication run, a single value isreported which represents either a total or final

value of the item being analyzed.

l Observation Over a simulation run, multiple values for an analysisitem may be logged. Choose this option if 

analyzing each individualvalue in the order theywere logged. When multiple replicationsare run, the cor-

responding logged values in each replication will be averaged. For example, the first value logged in each rep-

lication will be averaged, the second value in each replication will be averaged, the third values will be averaged,

and so forth. The replication with the fewest number of observations will determine how manyobservationswill

be compared across replications.

l Periodic Average Allows the user to define a specific period of time over which the valueslogged within that

period willbe averaged andreported. A simulation that runsfor 8 hours with a period definedas 2 hours will

result in 4 averaged data points. When multiple replicationsare run, the replication with the fewest number of peri-

ods reported will determine how manyperiods to compare acrossreplications.

Periodic Time Applies only when Periodic Average is selected for the Stat Collection. Itrepresentsa range of time

that all valueslogged withinthat range will be averaged. The totalnumber of periodsdependsuponthe length of thesim-

ulation. For example, ifa simulation runs for 8 hours anda period is definedas 2 hours,then a totalof 4 periodswill be the

result.

Periodic Unit Applies only when Periodic Average isselected for the Stat Collection. It isthe unit of time, be it seconds,

minutes, hours, days, weeks, quarters, or years, for the value specified for Periodic Time.

LSL (Lower Spec Limit) – A user-defined limit that can be specified on its own or with an Upper Spec Limit. However, both

the LSL andUSL cannot remain blank.

USL (Upper Spec Limit) – A user-defined limit that can be specified on its own or with a Lower Spec Limit selected. How-

ever, both the USLand LSL cannot remain blank.

CI (Confidence Interval) – Thisvalue isused in generating the Capability Analysis graph in Minitab. Bydefault, a con-

fidence interval of 95 isautomatically entered when a new Analysis Item isadded to the Six Sigma Configuration table but

can be modified if desired.

Launch Minitab Button – Clicking on thisbuttonwill launchMinitab.If a simulation hasalready been run and the sta-

tistical data hasbeen generated, the analysisitems in the Six Sigma Configuration table will be summarized and graphed

in Minitab.

OK Button – Click the OKbutton to closethe Six Sigma Configuration dialog and save anychanges that were made.

Cancel Button – Clickthe Cancel button to close the Six Sigma Configuration dialog and discard anychanges that were

made.

©ProModelCorporation

Reports and Graphs 486

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 500/715

487 ProModel 2011 User Guide

Add Analysis Dialog

Add Button Clickon the Add button in the Six Sigma Configuration table to select items to be included in a Six Sigma

analysis. The Add Analysis Item dialog opens.

Variables – variablescan be used anywhere in the model to capture any kind of statistic or data item for a Six Sigma anal-

ysis.For example, it maybe desired to analyze the cycle time for onlya few steps inthe process or a subset of the overall

process. This can be done by assigning the initial simulation time in an attribute and then logging the elapsed time to a var-

iable at a later point in the process.

Add Clickthe Add button (or double-clickthe item text) to add an item to the Six Sigma Configuration table. Analysis

items are appendedto thetable in theorder they were selected to be added.

Done Selecting the Done button will close the Add Analysis Item dialog.

Viewing Results in MinitabTwo charts are generated in Minitab per scenario for each Six Sigma analysisitem defined in the Six Sigma Configuration

dialog, the CapabilityAnalysisChart and the Capability Sixpack Chart.

Please Note

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 501/715

ProModel assumes that the data generated is normalized and creates the charts in Minitab accordingly. It 

is up to the person validating the results to determine the normality of the data.

Toggle between the Minitab charts by double-clicking on them in the Project Manager panel, located by default on the left

in Minitab.

Viewing Data in Minitab

To view the data generated byProModel andpopulated inMinitab,used to create the charts, the user can select theWork-

sheetsFolder view from the Minitab Toolbar.

©ProModelCorporation

Reports and Graphs 488

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 502/715

489 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 503/715

Language Elements and Expressions

Language ElementsLanguage elements are the smallest units of the language used to define a model’s objects and logic. Language elements

include:

l Names

l Keywords

l Numbers

l Character Strings

l Operators

Names A name or identifier isany combination (up to eighty characters long) of letters, numbers, and underscores (“_”), used to

identify model elements such as locations, entities, variables, and functions. Although any valid name can refer to any

object, it isbest to use names which describe the object theyidentify (e.g., using “ClientA” to describe an entity that rep-

resentsa client). Names, like all words in ProModel, are case insensitive, meaning that ProModelsees“ PARKING_A,”

“Parking_A,” and “PaRkInG_a” as identical.

Names must use the following conventions:

l Namesmay contain the lettersA through Z (upper or lower case), digits (0-9) and the underscore “_”. Names

may not contain spaces. When opening an older model, ProModelflagsimproper use of these restricted char-

acters.

l Do not use a digit asthe first character of a name. After the firstcharacter, any character maybe a digit. For 

example, “2Var” isan invalid name, but “V2”, isa valid name.

l Namesmay not be keywords, but names maycontain keywords. For example, “For” isan invalid name, but

“For klift” is a valid name. Similarly, “Queue2” and “Order Qty” are both valid.

l No matter what they identify, everyname ina modelmust be unique.For example, you cannot name both a loca-

tion and an entity “Server.” You may, however, name one “Server1” or “Server_Location” and the other 

“Server2” or “Server_Resource.”

Keywords

Keywords are words that ProModelr eserves for special use as commands or function calls. Keywords maynot be used as

names, although names may contain keywords. Keywords, like all words in ProModel, are case insensitive.

Please note

©ProModelCorporation

Language Elements and Expressions 490

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 504/715

491 ProModel 2011 User Guide

*Reserved for future use.

For info rmation o n tank keywords, see Tankson page 248.

Numbers

ProModelusestwo types of numbers: real numbers and integers. ProModelalso uses a special category of integers,

called “name-indexnumbers.” Thissection discusses real numbers, integers, and name-index numbers. It then dis-cussesconverting between the different types.

Integers

 An integer number is a whole number ranging from -2,147,483,648 to 2,147,483,647. Integer values may not include

commas. Therefore, the number 5,380 should be entered as 5380. Name-indexnumbers( described in this section)

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 505/715

work just like integer numbers.

Examples of integers

-2234798

0

32

Real Numbers

 A real number is any number ranging from 1.7 X 10 -308 to 1.7 X 10 +308, including decimals. Real valuesmay not include

commas. As such, the number 5,380.5 should be entered as 5380.5.

Examples of real numbers

-2.875638

844.2

65.0

Name-Index Numbers

When a simulation begins, locations, resources, and entities are all assigned numbers according to their position in their 

respective edit tables. The number assigned to the element iscalled its name-index number. For example, the third entity

in theEntityedit table will have the number three for itsname indexnumber. The name of an elementmay be used in an

expression to reference its name-index number.

For example, if EntityAwere the third entity in the Entity edit table, the statement, “Attr1 = EntityA,” would assign the

number three to Attr1, because attributestake numbers. Additionally, you may also test for an indexnumber byr ef-

erencing the element name with a statement like, “IF Var5 = Location3 THEN.” In fact, when using a name-index number 

to identify a location, resource, or entity (as in the previous examples), it isusuallybest to use the name of the element,

because inserting or deleting an element from the edit table, may change the name-index number assigned to other ele-ments.

If you need to refer to a location,resource, or entityby name butonly know its name-index number, use the name func-

tions: LOC(), RES(), and ENT(). These functionsallow name-index numbers and variables or attributes containing

name-index numbers to be converted back to their actual names for use in statementsor expressionsr equiring the ele-

ment name.

Consider the statement, “Attr1 = PASSENGER.” Although this statement only stores the name index number of the ele-

ment in the attribute,the name-indexnumber can then be used in conjunction with LOC(), ENT(), and RES() to get the

actualname of the location. For example, if PASSENGER isthe fifth entity in the Entity edit table, the statement JOIN 1

ENT(Attr1) worksthe same as JOIN 1 PASSENGER. Additionally, a name-index number can be used with the name func-

tions to output a name to the screen or a file.

Converting Between Numeric Types

When an expression expects one type of value but receives another, ProModelautomaticallytakes care of converting

between the two, so most often the difference will not matter. However, when ProModelexpects an integer but receives a

©ProModelCorporation

Language Elements and Expressions 492

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 506/715

493 ProModel 2011 User Guide

real value, it truncatesthe real value at the decimal point. For example, say the variable Integer1 isassigned the value

3.9, asin thefollowing statement:Integer1=3.9. The variable Integer1 would hold the value 3, not 4. To round 3.9 when

assigning to an integer variable would require the statement, Integer1=Round(3.9).

Converting from name-index numbers to the name of an element requiresthe ENT(), LOC(), and RES() functionsas

ProModeldoes not automatically convert numbers to names. For information on how to output the name of an elementbased on its name-index number, see String Expressionson page 498.

Character Strings

 A string is any collection of characters enclosed in quotes, such as “Now Boarding.” Unlike some programming lan-

guages, ProModeluses character stringsexclusively for output either to a file or to the screen. Strings maycontain anyof 

the 256 ASCII characters. (ASCII characters not on the keyboard can be included in string expressions with the CHAR()

function.) Stringsmay include keywords and names, but those keywords and names will not be executed in or used by

the logic.

 Additionally, the symbol“\n” can be used to divide a string into multiple lineswhen it is output, as in the example below.

The statement, DISPLAY“ The simulation \nis half over.” displaysthisdialog box:

Examples of character strings

“EntA exited the system.”

“Location 3 isoperating at capacity.”

“ProModel”

 Although ProModel does not provide string variables, it does allow the names of model elements to be stored in variables

and attributesas name-index numbers(see Name-Index Numbers on page 492). The name referenced bya name-

index number may be used instatements and output to the screen or a file with the ENT(), LOC(), and RES() functions.

See String Expressionson page 498 for more information.

Operators

Oper ators are symbolsused to perform operations on elements in an expression. ProModeloperators include Boolean

operators, mathematical operators, and a string operator. Unlike reserved words, you may not use operators as anypart

of a name. The following sections explain the use of these operators for different expression types.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 507/715

Mathematical Operators

Operator Meaning Example

+ Addition A=B+C

- Subtraction A=B-C

* Multiplication A=B*C

/ Division A=B/C

Mod or @ Modulus A=B Mod C

(assigns the remainder of B

divided byC to A)

** Exponentiation A=B**C

(assigns the value of B raisedtothe C power)

Relational Operators

Operator Meaning

= Equal to

> Greater than

< Less than

>= Greater than or equal to

<= Less than or equal to

<> Not equal to

Comparison Operators

Operator Meaning

 AND TRUE if both expressions are TRUE

OR TRUE if one expression is TRUE

NOT MakesTRUE expressionsFALSE and

FALSE expressions TRUE

Operator Precedence

 As in conventional mathematics, ProModel evaluatesexpressions with more than one operator according to certain rules

of precedence. Expressionswith more than one operator evaluate in the following order:

©ProModelCorporation

Language Elements and Expressions 494

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 508/715

495 ProModel 2011 User Guide

1. Termsinside parentheses: ( )

2. Exponentiation: **

3. Multiplication: *; Division: /; and Modulus: @

4. Addition: +; Subtraction: -

5. Equalitiesand Inequalities: =, <>, >, >=, <, <=

6. NOT

7. AND

8. OR

9. Concatenation: $; (For string expressionsonly.)

For more information and additionalexamples of operator precedence, see Operator Precedence on page 499.

Expressions

Expressions consist of a value or combination of values (even of different types), variables, attributes, functions, and oper-atorsthat result in a value. Manyconsider an expression to be a string expression ifit evaluatesto a string,a numeric

expression ifit evaluatesto a number,and so on. (For information on how to handle different value typesin the same

expression, see Converting Between Numeric Types on page 492.)The following are the different expression typesused in ProModel:

Numeric Expressions

Boolean Expressions

Time Expressions

String Expressions

Numeric Expressions A numeric expression is a combination of numeric elements (such as numbers, variables, and functions) and operator s

that evaluates to a numericvalue.

 An expression can contain any of the following in any combination:

 Arrays Mathematical operator s

 Attributes Name-Index numbers

Boolean oper ator s Number s

Distributions Subroutines

Macros System functions

Math function table functions Variables

The following mathematicaloperators are available:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 509/715

Operator Meaning Example

+ Addition A=B+C

- Subtraction A=B-C

* Multiplication A=B*C

/ Division A=B/C

Mod o r @ Modulus A=B M od C ( assigns t he

remainder ofB divided byC to A)

** Exponentiation A=B**C (assignsthe value of B

raised to the C power)

You can perform additionalmathematical operations using math functions. For more information on operator precedence

rules and expression nesting, see Operator Precedence on page 499.

Please note

In each of the examples above, if A is an integer number and B and C are both real numbers, the result will

be truncated un less ROUND() is used (e.g., A = ROUND(B+C)).

Boolean Expressions

Boolean expressionsare relational comparisons between numericexpressions resulting in a value of either True or False.

Boolean expressionsare used most often in IF...THEN and other controlstatements. The following relationaloperators

are used in Boolean expressions:

Operator Meaning

= Equal to

> Greater than

< Less than

>= Greater than or equal to

<= Less than or equal to

<> Not equal to

Relational operator examples

©ProModelCorporation

Language Elements and Expressions 496

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 510/715

497 ProModel 2011 User Guide

 A = B

 A > B

 A < B

 A >= B

 A <= B

 A <> B

Spacing between the termsand operators within a numericexpression isoptional. However, for operators with two char-

acters (for example, >=, <=, <>), no spaces are allowed between characters in the operator.

 Additionally, the following operators compare two Boolean expressions.

Operator Meaning

 AND TRUE if both expressions are TRUE

OR TRUE if o ne e xpression is T RUE

NOT MakesTRUE expressionsFALSE andFALSE

expressions TRUE

For information on operator precedence and nesting rules, see Operator Precedence on page 499.

Time Expressions

 A time expression is a numeric expression followed optionally by a time unit (WK, DAY, HR, MIN, SEC) which defines a

duration. If no time unit isspecified, the default time unit specified in the GeneralInformation dialog boxis assumed. Pro-

Model knows whether an expression isa time expression based on the context. Time expressionsare not valid within a

function call. For example, E(10 sec) isinvalid, while E(10) sec isvalid. If a negative value isused for a time expression, it

isautomaticallyconverted to zero.

Syntax for time expressions

<numeric expression>{<time units>}

Examples

2 hrE(10) minVar1+40.25 min

Note that time units cannot be mixed (e.g.,3 min 21 sec),unless you use colon notation.

Colon Notation for Time Values

Colon notation allows for more complex time expressions. You mayuse colon notation in the following manner to express

time values.

Colon notation

<hours expression>:<minutesexpression>:<seconds expression>

Colon notated time expressionsevaluate from right to left as illustrated in the following examples:

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 511/715

Example Meaning

:05 5 seconds

5:00: o r 5:: 5 h ours

5:00 or 5: 5 minutes

2:40: 2 hours and 40 minutes

15:02:05 15hours, 2 minutesand 5 seconds

3:25 3 minutes and 25 seconds

 Attr1::Var2 Attr1 hours and Var2 seconds

String Expressions

 Any text to be written to a file or displayed on the screen is created with a string expression. String expressions are created

from a combination of the following:

Character strings ENT()

Concatenation operators"$" LOC()

Numeric Expressions RES()

CHAR() FORMAT()

 A string expression must begin with a concatenation operator ($) or with a string constant in quotes (i.e., “...”). The con-

catenation operator combinescomponents together, and must be between all componentsof a string expression. For 

example, if Attr1 is7.83, then the expression “STRING1”$ ATTR1 $ “STRING2” evaluatesto “String17.83String2.”

To output the name of a location, entity, or resource, use the appropriate function inside a string expression: LOC() for 

locations, ENT() for entities, and RES() for resources. For example, the following logic checksthe first ten locations in amodel and displaysthe name of anylocation that iscompletelyfull.

Display name of full location

Var1=1

While Var1 <= 10 Do

Begin If FreeCap(Loc(Var1)) = 0 Then DISPLAY Loc(Var1) $ “isfull.” INC Var1 End

String expressions are valid only as part of the following statementsand functions: DISPLAY, PAUSE, PROMPT, STOP,

WRITE, WRITELINE, TRACE, XSUB(), and XWRITE.

String expressions

If a modelhad been running for sixdays,the statement

©ProModelCorporation

Language Elements and Expressions 498

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 512/715

499 ProModel 2011 User Guide

DISPLAY “The simulation ran \n” $ CLOCK(DAY) $ “days.”

would displaythe following dialog box.

Operator Precedence

 As in conventional mathematics, ProModel evaluatesexpressions with more than one operator according to certain rules

of precedence. Expressionswith more than one operator are evaluated in the following order:

1. Termsinside parentheses: ( )

2. Exponentiation: **

3. Multiplication: *; Division: /; and Modulus: @

4. Addition: +; Subtraction: -

5. Equalitiesand Inequalities: =, <>, >, >=, <, <=

6. NOT

7. AND

8. OR

9. Concatenation: $; (For string expressionsonly.)

When evaluating more than one operator with the same precedence, ProModel works from left to right. Arithmetic and boolean expressions may include nested expressions (expressions in parentheses) to indicate prec-

edence in complex expressions such as the following examples:

Nested expressions

 A+B*(C+D)((A>B) OR (B>C)) AND (C>D)The expression (C+D) isa nested expression which isevaluated first. Multiple nesting ispermitted, with the innermost

nesting being evaluated first.

Example 1

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 513/715

15 - MATRIX[4]**2 + CLOCK(MIN) / 60

In this expression, Matrix[4]**2 isevaluated first, with the result being subtracted from 15. Thisvalue isthen added to the

value obtained from Clock(min)/60.

Example 2

(A>B) OR (A>C) AND (A=D)

would evaluate

(A>B) OR ((A>C) AND (A=D))

©ProModelCorporation

Language Elements and Expressions 500

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 514/715

Routing Rules

Routing rules determine the next location for the processing entity. They are specified in the “Rule” field of the Routing edittable. They may be typed manuallyor selected from the Routing Rule Dialog boxshown below by clicking on the Rule but-

ton. For more information about routing, see Routing Edit Table on page 202.

©ProModelCorporation

Routing Rules 501

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 515/715

Alternate

Syntax samples

 ALT

Description

Causes a location to be selected as an alternate destination

if it hasavailable capacity and the condition for a preceding

routing rule isnot met. If the ALTERNATE location is

unavailable, the entity waitsuntil it becomes available or 

until the preceding routing rule issatisfied.

 ALTERNATE routings are common to all primary routings,

except the Probability and User Condition rules, and should

therefore be listed after the last primary routing but before

any backup routings.

For example, a high-speed machine might be preferred,

but alternatively, a slower machine can be used when the

faster machine is unavailable.

Valid In

The rule field of the Routing edittable only.An ALTER-

NATE routing may be specified after any other type of rout-

ing (including other ALTERNATE routings) except for 

BACKUP, CONTINUE and DEPENDENT routings.

Example

 After Shaft completes a 3 minute operation at Drill, it routes

to either Lathe1 or Lathe2 if a SEND statement some-

wherein the model directsan EntAto be sent to one of 

those locations. If no SEND request iswaiting, an alternate

routing will route the entity to Lathe3. If no capacity isavail-

able at Lathe3, the entity will wait until capacity becomes

available at Lathe3 or a SEND statement that matchesthe

entityand the location in one of the SEND routings

executes somewhere in the model.

Process Table

Entity... Location... Operation (min)...

Shaft Drill WAIT 3

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Shaft Lathe1 Send 1

Shaft Lathe2 Send

Shaft Lathe3 ALT

See Also

See the other routing rules for exceptionsand special

cases. Also see Processing on page 193.

©ProModelCorporation

Alternate 502

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 516/715

503 Backu p

Backup

Syntax samples

BACKUP

Description

Locationsspecified by this rule are selected only if all of the

destinations( primary or alternate) listed in the preceding

routings of the same block are unavailable due to any

downtime, including a shift. One use of BACKUP isto han-

dle a machine that isnot functioning, and entities need

another destination to continue.

Valid In

Inside therule field of theRouting edit table, at theend of a

routing block, after one or more primary routings or evenan ALTERNATE rule. Conditionsfor using Backup rout-

ings with either USER CONDITION and PROBABILITY

routing rules are given in the notes for these rules.

Example

 After an entity, Chip, completes a 3 minute operation at

CNC, itis routedto Stamp1 when Stamp1 becomesavail-

able. Onlyif Stamp1 and the alternate location (Stamp2)

are both down will itbe routed to Stamp3.If Stamp3 is also

unavailable, Chip will wait for Stamp3 only as long as both

Stamp1 and Stamp2 remain down.

Process Table

Entity... Location... Operation (min)...

Chip CNC WAIT 3

Routing Table

Blk Output... Destination... Rule...Move

Logic...

1 Chip Stamp1 FIRST 1

Chip Stamp2 ALTChip Stamp3 BACKUP

See Also

 ALTERNATE routing rule. Also see Processing on page

193.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 517/715

Continue

Syntax samples

CONT 1

Description

Leaves an entity at the current location for further proc-

essing. ProModelsearchesthe process list forward and

then fromthe beginning until a process is found for the out-

putentityat thecurrent location.If the entityname remains

the same and no additionalprocesses for that entity type

are defined at the location, the original process will repeat

continuously unlessa condition bypassesthe routing block

with the CONTINUE rule.

The CONTINUE routing rule also allows dynamic prioritychanges. Thismeans a low priorityentity that enters a loca-

tion can be dynamically upgraded to a higher priority with-

out leaving the location. Move Logic for the routing block

with the CONTINUE rule willnot be executed.

Neither a time value nor a movement rescue isallowed in

the Move Logic column for a route block containing a CON-

TINUE rule. This rule is one way to route an entityfrom a

single capacity location to the same location without caus-

ing a deadlock. The CONTINUE rule can also simulatean

unlimited supply of a raw materialat a location.

Statistics for a location using the CONTINUE rule are col-

lected as one entryfor the entity.

Valid In

The rule field of the Routing edittable only.A CONTINUE

rule must be the only routing in a routing block andmust

always take a quantity of one.

Example

Thisexample simulates an unlimited supply of ore at a loca-

tion. After the Extract location extracts the Iron from the

Ore, two routing blocksexecute. The first routing blockroutesthe Iron just extractedon to a molding location. The

second routing block routes another unit of ore back to the

location, where the process begins again.

Process Table

Entity... Location... Operation (min)...

Ore Extract WAIT 100

Iron Mold ...

Routing Table

Blk Output... Destination... Rule... Move Logic...

1* Iron Mold FIRST 1 MOVE FOR 10

2 Ore Extract CONT 1

... ... ... ... ...

See the next example for an illustration of dynamic priority

changing.

ExampleDynamic Priority ChangingSuppose a gear enters a loca-

tion.The gear has a low priority. If another type of gear 

enters the system with a higher priority, the second gear 

may preempt the first gear. Another worker in the plant

needs the first gear immediately or else he will misshis

deadline. Now the first gear’s priority ishigher than the sec-

ond gear. Using the CONTINUE routing rule allows you to

change the priorityof the first gear. An entity that entersa

location with a priority 99 can increase its priority to 999 with-

out ever leaving that location. In addition, thisfunctionality

will also allow you to specificallycontrol which entities in a

multi-capacitylocation will be preempted by another incom-ing high priorityentity.

Process Table

Entity... Location... Operation (min)...

Gear Loc1 WAIT 2

Gear Loc2 WAIT 3

IF CLOCK() > 1 THEN

BEGIN

var = 999

ROUTE2

END

ELSEROUTE 1

Gear Loc2

©ProModelCorporation

Continue 504

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 518/715

505 Continue

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Gear Loc2, 99 FIRST 1 MOVE FOR 1

1 Gear Loc3 FIRST 1 MOVE FOR 1

2 Gear Loc2, var CONT 1

1 Gear Loc3 FIRST 1 MOVE FOR 1

See Also

see Processing on page 193.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 519/715

Dependent

Syntax samples

DEP

Description

Selects a location if, and only if, the routing immediately pre-

ceding it isselected. An ALTERNATE routing which follows

a dependent routing isan alternate to the last major routing

preceding the dependent condition and not to the depend-

ent routing itself.

 A dependent routing should be used when one process

results in two different typesof entities that should go to dif-

ferent locations. For example, a dependent routing could

simulate the separation of a customer and his or her order placed at the drive-through window at a restaurant. While

the customer continues on to the cashier window, the order 

issent on to the counter for fulfillment.

Valid In

The rule field of the Routing edittable only.A DEPEND-

ENT routing may be specified after any other routing rule

(including other DEPENDENT routings) except for a CON-

TINUE routing.

Example

 After an entity named “Lamp” completes a 3-minute prep-aration at Prep, the paint shopwill paint it. If thepaint shop

hascapacity, theBase routesto thepaint shop andthe

Shaderoutes to theWaiting area based on the dependent

rule. But ifthe paint shop does not havecapacity,the lamp

stays together and routes to Storage on an alternate rout-

ing.

Process Table

Entity... Location... Operation (min)...

Lamp Prep WAIT 3

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Base Painting FIRST 1

Shade Waiting DEP

Lamp Storage ALT

See Also

see Processing on page 193.

©ProModelCorporation

Dependent 506

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 520/715

507 Emp ty

Empty

Syntax samples

EMPTY {<expression>}

Description

Selects a location only if it iscompletely empty. This routing

rule is similar to the UNTILFULL rule except that a location

must be completelyempty before it isinitiallyselected.

Once an empty location isselected, it continuesto be

selected until it isfull. If no location isempty, the output

waits until one becomesempty.

The EMPTY condition isdesigned for the situation where

two or more multi-capacity locations are being filled from

the same source and the modeler desires each location tocompletelyfill and completely empty in an alternating fash-

ion.

Valid In

The rule field of the Routing edittable only.

Components

<expression>

Totalentities output from the process. Thisexpression is

valid only for the first routing of a routing block. For more

information on this expression, see Processing on page

193.

Example

 After EntA completes a 25 second operation at Loc1, it is

routed to one of three multi-capacity locations (Loc2, Loc3

or Loc4) assoon as one becomesempty. Subsequent rout-

ingscontinue to the samelocation untilit isfull, and then to

the next location that isempty. Once all locations are filled,

no more routingsoccur untilone of the locationsbecomes

empty.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT 25 sec

Routing Table

Blk Output... Destination... Rule...Move

Logic...

1 EntALoc2

EMPTY

1EntA Loc3 EMPTY

EntA Loc4 EMPTY

See Also

see Processing on page 193.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 521/715

First Available

Syntax samples

FIRST {<expression>}

Description

Selects the first location available among one or more loca-

tions listed in a routing block. Specifying multiple First Avail-

able routings ina routing block hasthe same effect as

specifying a First Available routing followed by one or more

 ALTERNATE routings. An example of using the First Avail-

able rule in a routing block isgiven below.

The First Available rule isthe default rule when defining the

initial routing in the Process Editor. In this case, the First

 Available routing can be interpreted to be the “primary”routing.

Valid In

The rule field of the Routing edittable only.

Components

<expression>

The total entities output from the process. Thisexpression

isvalid only for the first routing of a routing block. For more

information on this expression, see the Processing on page

193.

Example

 After EntA completesa 4 minute operation at Loc1, it is

routed to Loc2, Loc3 or Loc4 depending on which location

isthe first to have available capacity.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT 4

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Loc2 FIRST 1

EntA Loc3 FIRST

EntA Loc4 FIRST

See Also

see Processing on page 193.

©ProModelCorporation

First Available 508

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 522/715

509 Join

Join

Syntax samples

JOIN {<expression>}

Description

Selects a location whenever a JOIN request isissued at

that location. Since a joining entity doesnot require capac-

ity, there isno need to check for available capacity at the

destination. Multiple JOIN requestsare filled according to

the oldest waiting request with the highest priority. Entities

routedwith theJOIN routing rule are not actually sent to

their destination until a JOIN statement isencountered at

the destination location.

Valid In

The rule field of the Routing edittable only.

Components

<expression>

The total entities output from the process. Thisexpression

isvalid only for the first routing of a routing block. For more

information on this expression, see Processing on page

193.

Example

 After EntA completes a 5.2 minute operation at Loc1, itroutesto Loc2, Loc3 or Loc4to join to some other entity

that issued a JOIN request for an EntA.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT 5.2

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Loc2 JOIN 1

EntA Loc3 JOIN

EntA Loc4 JOIN

See Also

JOIN statement. Also see Processing on page 193.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 523/715

Load

Syntax samples

LOAD {<expression>}

Description

Selects a location whenever a LOAD request isissued at

the destination location. Since a loading entity doesnot fill

capacity, there isno need to check for available capacity at

the destination. Multiple LOAD requestsare filled according

to the oldest waiting request with the highest priority.

Valid In

The rule field of the Routing edittable only.

Components

<expression>

The total entities output from the process. Thisexpression

isvalid only for the first routing of a routing block. For more

information on this expression, see Processing on page

193.

Example

 After EntA completesa 3 minute operation at Loc1, it is

routedto Loc2, Loc3 or Loc4 to be loaded onto some other 

entity that has issued a LOAD request.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT 3

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Loc2 LOAD 1

EntA Loc3 LOAD

EntA Loc4 LOAD

See Also

LOAD statement.

©ProModelCorporation

Load 510

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 524/715

511 Longest Unoccupied

Longest Unoccupied

Syntax samples

LU {<expression>}

Description

Selects one of the locationslisted in a block of routings

based on which has been unoccupied the longest. If sev-

eral multi-capacity locations all have one or more current

entities, the location with the most available capacity will be

selected. If no capacity isavailable at any location, the first

one that becomesavailable isselected. This rule isuseful in

situations where residualeffects must diminish before fur-

ther usage of a location (e.g., an oven cooling to an

ambient temperature, the vapor clearing out of a paint

booth, etc.).

Please note that this routing rule isnot valid for single-

capacity locations

Valid In

The rule field of the Routing edittable only.

Components

<expression>

The total entities output from the process. Thisexpression

isvalid only for the first routing of a routing block. For more

information on this expression, see Processing on page

193.

Example

 After EntA completes a 2.5 minute operation at Loc1, it

routes to Loc2, Loc3 or Loc4 depending on the location

unoccupied the longest.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT 2.5Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Loc2 LU 1

EntA Loc3 LU

EntA Loc4 LU

See Alsosee Processing on page 193.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 525/715

Most Available

Syntax samples

MOST {<expression>}

Description

Selects one of the locationslisted in a block of routings

based on which hasthe most available capacity. If no capac-

ity isavailable at any of the locationslisted, the first one that

becomes available isselected. Use the MOST routing rule

to equalize queues infront of workers. This rule is useful in

cases where inventorylevels need to be balanced among

several downstream queues.

Valid In

The rule field of the Routing edittable only.

Components

<expression>

The total entities output from the process. Thisexpression

isvalid only for the first routing of a routing block. For more

information on this expression, see Processing on page

193.

Example

 After EntA completesa 4 minute operation at Loc1, it is

routed to Loc2, Loc3 or Loc4 depending on which locationhas the most available capacity at the current time.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT 4

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Loc2 MOST 1

EntA Loc3 MOST

EntA Loc4 MOST

See Also

see Processing on page 193.

©ProModelCorporation

Mo st Availab le 512

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 526/715

513 Probability

Probability

Syntax samples

<probability> {<expression>}

Description

Randomly selects a location listed in a block of routings

based on a probability. Several probabilityroutings should

be used together and the sum of all probabilities must

equalone.The entitywill wait to be routed until the

selected location has available capacity. Unlike most pri-

mary routings, an ALTERNATE and BACKUP routing may

be specified after each PROBABILITY routing in a single

routing block. If the selected location has no ALTERNATE

routing and hasno available capacity, the entity will wait for 

the location until it has available capacity.

Valid In

The rule field of the Routing edittable only.

Components

<probability>

The chanceof therouting being taken, expressed as a dec-

imal lessthan one. All probabilities in a single routing block

must add up to one. This number must be a value andmay

not be an expression.

<expression>

The total entities output from the process. Thisexpression

isvalid only for the first routing of a routing block. For more

information on this expression, see Processing on page

193.

Example

EntA completes an eight minute operation at Loc1, and

routes toLoc2 80% ofthe time,Loc3 15%ofthetime,and

to Loc45% of thetime. If EntA selectsLoc2 but the location

hasno available capacity, EntA will select an alternate loca-

tion,Loc2A. If both Loc2 andLoc2A are down, EntAselects a backup location (Loc2B). Loc3 hasan alternate

location (Loc3A) in case it isunavailable, but has no backup

location. Loc4 hasneither an alternate location nor a

backup location.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT8

Routing Table

Blk Output... Destination... Rule...Move

Logic...

1 EntA Loc2 .800 1

EntA Loc2A ALT

EntA Loc2B BACKUP

EntA Loc3 .150

EntA Loc3A ALT

Claim Loc4 .050

See Also

see Processing on page 193.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 527/715

Random

Syntax samples

RANDOM {<expression>}

Description

Randomly selectsone of several available locations listed in

a block of routingssuch that each location having available

capacity isequallylikely to be selected. If none of the loca-

tions listed has available capacity, the first location that

becomes available will be selected.

Valid In

The rule field of the Routing edittable only.

Components

<expression>

The total entities output from the process. Thisexpression

isvalid only for the first routing of a routing block. For more

information on this expression, see Processing on page

193.

Example

 After EntA completesa 3 minute operation at Loc1, it is ran-

domly routed to Loc2, Loc3, or Loc4.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT 3

Routing Table

Blk Output... Destination... Rule...Move

Logic...

1 EntALoc2

RANDOM

1

EntA Loc3 RANDOM

EntA Loc4 RANDOM

See Also

PROBABILITY routing rule. Also see Processing on page

193.

©ProModelCorporation

Random 514

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 528/715

515 Send

Send

Syntax samples

SEND {<expression>}

Description

Causes an entityto remain at the current location until one

of the listed destinationsissues a SEND. Once a location

hasbeen selected, capacity must be available at that loca-

tion before the routing actually takes place. Multiple alter-

native SEND destinations may be specified in a block.

Valid In

The rule field of the Routing edittable only.

Components

<expression>

The total entities output from the process. Thisexpression

isvalid only for the first routing of a routing block. For more

information on this expression, see Processing on page

193.

Example

Purchase Orders (PO’s) are held at a holding location until

final approval isr eceived. Once a SEND request has been

generated at some other location in the system, the PO is

sent to the appropriate vendor.

Process Table

Entity... Location... Operation (min)...

PO Holding

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 POVendorA

SEND

1

MOVE FOR 48

Hr 

PO VendorBSEND

MOVE FOR 48

Hr 

PO VendorCSEND

MOVE FOR 48

Hr 

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 529/715

Turn

Syntax samples

TURN {<expression>}

Description

Selects the locationslisted in a block of routingsin rotation

by availability. If none of the locations listed are available,

the first one that becomesavailable isselected. A particular 

location maybe listedmore than once in a routing block if it

is to have a greater proportion of turns than the others.

Valid In

The rule field of the Routing edittable only.

Components

<expression>

The total entities output from the process. Thisexpression

isvalid only for the first routing of a routing block. For more

information on this expression, see Processing on page

193.

Example

In this example, Purchase Requests (PR’s) are entered

into an on-line accounting system at location Keypunch.

Theyare then assigned on a rotating basis to Buyer1,

Buyer2, or Buyer3.

Process Table

Entity... Location... Operation (min)...

PO Keypunch WAIT U(3,1) min

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 PR Buyer1 TURN 1

PR Buyer2 TURN

PR Buyer3 TURN

See Also

see Processing on page 193.

©ProModelCorporation

Turn 516

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 530/715

517 Until Full

Until Full

Syntax samples

FULL {<expression>}

Description

This rule continuesto direct all output to the first location

specified until it fills to capacity and then to the next location

until it fills andso on. If all locationsare full,the first one that

becomes available is selected.

Valid In

The rule field of the Routing edittable only.

Components

<expression>

The total entities output from the process. Thisexpression

isvalid only for the first routing of a routing block. For more

information on this expression, see Processing on page

193.

Example

In this example, pallets are scanned at a barcode location

before being placed in storage in a warehouse. The policy

at the warehouse callsfor keeping Aisle1 completely full

before storing anything in Aisle2. Similarly, Aisle2 must be

kept full before storing anything in Aisle3.

Process Table

Entity... Location... Operation (min)...

Pallet Barcode USE Scanner FOR U(2.3,4)

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Pallet Aisle1 FULL 1 MOVE FOR 5

Pallet Aisle2 FULL MOVE FOR 6

Pallet Aisle3 FULL MOVE FOR 7

See Also

see Processing on page 193.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 531/715

User Condition

Syntax samples

<Boolean expression> {<expression>}

Description

Selects one of several locations listed in a routing block

based upon a user-defined condition. Several User-Con-

dition routings usuallyare used in the same routing block.

 At least one of the user-defined conditions in a blockmust

be true or an error message will appear and the simulation

will terminate. Capacity must be available at the location

before the routing actuallytakesplace. Unlike most primary

routing rules, an ALTERNATE or BACKUP routing may be

specified after each USER CONDITION routinginthe

same routing block.

Valid In

The rule field of the Routing edittable only.

Components

<Boolean expression>

 Any expression which evaluatesto TRUE or FALSE.

<expression>

The total entities output from the process. This expression

isvalid only for the first routing of a routing block. For more

information on this expression, see Processing on page

193.

ExampleCustomers bring their cars to a local service station for emis-

sions testing and state inspection. After each car completes

a 10-minute inspection operation at location Inspect, they

are putin the proper service bay depending on thecar’s

engine type. Late-model (post-1975) cars are tested in

Bays 1 and 2, pre-1975 carsare testedin Bay3, anddiesel

engine carsare testedin Bay4. If Bay1 is selected but not

available, an alternate location (Bay2) isselected. If both

Bay1 and Bay2 are down, a backup location (Bay3) is

selected. Bay3 also has an alternate location (Bay4) in case

it isunavailable, but has no backup location. Bay4 hasneither an alternate location nor a backup location.

Process Table

Entity... Location... Operation (min)...

CAR Inspect WAIT 10

Routing Table

Blk Output... Destination... Rule...Move

Logic...

1 CAR Bay1 IF Type=11

CAR Bay2 ALT

CAR Bay3 BACKUP

CAR Bay3 IF Type=2

CAR Bay4 ALT

CAR Bay4 IF Type=3

See Also

see Processing on page 193.

©ProModelCorporation

User Co nd it io n 518

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 532/715

Logic Elements

FunctionsFunctionsr eturn information such as a location’s capacity, the amount of time the simulation has been running, or a ran-

dom number. A function isa keyword followed by parentheses, which may contain data that the function needs to com-

plete its operation. You should be aware that if a function or variable expecting an integer getsa real number, it will ignore

everything to the right of the decimal point.

System Functions

The following list describes the function types available in ProModel.

General System Functions

Generalsystem functions return information about the simulation, such as the length of time that the simulation hasr un,

and may be referenced in any numericexpression.

Entity-Specific System Functions

Entity-specificsystem functionsr eturn information about the processing entity, such as the number of entities in an entity

group. For that reason, these functionsmay be used only where an entity isprocessing some type of logic. This includes

 Arrival, Operation, and Location Exit logic.

Resource-Specific System Functions

Resource-specificsystem functionsmay only be used in resource node logic when a resource enters or leaves a node.

Downtime-Specific System Functions

ProModelpermitsyou to use downtime-specific system functionsonly in downtime logic.

Shift & Break System Functions

ProModelallows you to use these functionsonly in shift and breaklogic.

General Functions

Math Functions

Math functions are built-in functions used for performing mathematical operations on numericexpressions.

Type Conversion Functions

When two types of numbers are used in an expression, aswhen a real value is assigned to an integer variable, they must

all be converted to the same type before ProModelcan evaluate them. ProModel performs this conversion automatically

and, in most instances, this conversion will be satisfactory. The only place where the user maywant to use a different con-

version is when ProModelconvertsfrom a real to an integer.

©ProModelCorporation

L og ic Elemen ts 519

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 533/715

520 ProModel 2011 User Guide

When converting froma realto an integer,ProModelignores everything to the rightof the decimalpoint.When con-

verting from an integer to a real, ProModelsimply addsa decimal point to the integer. ProModelhandles name-index

numbers exactly like integers. Most often, these automatic conversion will be sufficient, but occasionallyit will be nec-

essary to convert between the typesdifferently. For these situations, use the conversion functions.

StatementsStatements cause ProModelto take some action or perform some operation. Unlike functions, statements neither return

a value nor use parentheses, and logic may contain comments. (See Commentson page 544.) Statements can use spac-

ing (including a new line) before each word in a statement, and are case insensitive so any letter may be either upper or 

lower case.

General Action and Control Statements

Generalstatements can be divided into two main categories: action and controlstatements. They are called general

because they can be used in anylogic. Action statements cause some action to occur in the model, such as changing an

entity’s graphicor writing to a file. Control Statements determine the next statement to be executed, such as loops,

branches, and statement blocks.

Resource- and Entity-Related Operation Statements

Operation Statementsperform specificactionson entities and resources at locations throughout the system whenever 

theyare encountered by an entityin the operation logic. They are valid onlyin certain areas. See each statement for a list

of places where it isvalid.

There are two subsetsof operation statements: entity-related and resource-related. Entity-related operation statements

perform specific actions on entitiesonly. Resource-related operation statementsinvolve resources alone (for example,

GET and FREE) or resourcesand entitiestogether (for example, USE).

Statement Blocks

 A statement blockis a group of statements that begin with the keyword BEGIN, or the symbol“{”, and end with the key-

word END, or the symbol“}” . Two examples appear below. See BEGIN and END for more extensive examples of state-

ment blocks.

Statement blocks

BEGIN {

Statement 1 Statement 1

Statement 2 Statement 2

Statement 3 Statement 3

... ...

Statement n Statement n

END }

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 534/715

Distribution Functions

Distribution functionsare built-in functions which, in conjunction with streams, return random values according to a sta-

tistical distribution. The following table isa summaryof available distribution functions. They are valid in anynumeric

expression.

Distribution Syntax Individual Components

Beta B(a,b,c,d{,<s>}) a=shape value 1, b=shape value 2, c=lower boundary, d=upper 

boundary

Binomial BI( a,b{ ,<s>} ) a=batch size, b =pr obability o f “ success”

Erlang ER(a,b{,<s>}) a=mean value, b=parameter  

Exponential E(a{,<s>,<ax>}) a=mean

Gamma G( a,b{ ,<s>,<ax>} ) a=shape value, b =scale v alue

Geometric GEO(a{,<s>}) a=probability of “ success”Inverse Gaussian IG(a,b{,<s>,<ax>}) a=shape value, b=scale value

Lognormal L(a,b{,<s>,<ax>}) a=mean, b=standarddeviation

Normal N(a,b{,<s>}) a=mean, b=standard deviation

Pearson5 P5(a,b{,<s>,<ax>}) a=shape value, b=scale value

Pearson6 P6(a,b,c{,<s>,<ax>}) a=shapevalue1, b=shapevalue2, c=scale value

Poisson P(a{,<s>}) a=quantity

T riangular T (a,b,c{ ,<s>} ) a=minimum, b =mode, c =maximum

Uniform U(a,b{,<s>}) a=mean, b=half range,

User-defined <name>({<s>}) Nameof a user-defined distributionasdefined in the User Distribution

section

Weibull W(a,b{,<s>,<ax>}) a=shape value, b=scale value

General Components

<s> The optionalstream to use in conjunction with the distribution’s probabilities. If this option isomitted, ProModelwill use

stream one. For more information on streams, see Streams on page 355.

<ax> An optional axisshift. The distributions,E, G,W, L, IG, P5, and P6 all normally have a minimum value of zero.Use an

axisshift to alter the distribution’s minimum value and at the same time shift the entire distribution. Anytime an axisshift is

specified, a stream must be specified also.

 Any negative value returned by a distribution that is used for a time expression willbe automatically converted to zero.

©ProModelCorporation

L og ic Elemen ts 521

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 535/715

522 ProModel 2011 User Guide

Priorities

Manystatements in this manual use <priority> as a component. A priority determines the order in which competing com-

mands are fulfilled. For example, priority determines which of two competing requests to USE a resource gets fulfilled, or 

which of two competing requests to SEND the same entities to different locations gets fulfilled. Commandsor entities withhigh enough prioritycan even bring back up locationsthat are down, or force a location to stop processing one entity and

process another instead. Thisis called “preemption.” All priorities must be an expression that evaluates to a number 

between 0 and999.

For a complete explanation of priorities and preemption, see Location Priorities and Preemption on page 145, Resource

Shift Downtime Priorities on page 183, Preemptive Entities on page 157, and Preemption Process Logicon page 399.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 536/715

Statements and Functions

Statementscause ProModelto take some action or perform some operation. Unlike functions, statements neither returna value nor use parentheses, and logic may contain comments. (See Commentson page 544.) Statements can use spac-

ing (including a new line) before each word in a statement, and are case insensitive so any letter may be either upper or 

lower case.

Functionsr eturn information such as a location’s capacity, the amount of time the simulation has been running, or a ran-

dom number. A function isa keyword followed by parentheses, which may contain data that the function needs to com-

plete its operation. You should be aware that if a function or variable expecting an integer getsa real number, it will ignore

everything to the right of the decimal point.

©ProModelCorporation

Statements and Functions 523

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 537/715

Accum

Entity-Related Operation Statement 

Syntax samples ACCUM <expression>

 ACCUM 10ACCUM Var1

Description

 Accumulates, without consolidating, the specified quantity

of entitiesat a location.ACCUM works like a gate that pre-

ventsentities from processing until a certain number arrive.

Once the specified number of entitieshave accumulated,

theywill go through the gate and begin processing individ-

ually, independent of each other.

 ACCUM can be used to model situations where several

entities should be accumulated before theyget processed.

For example, when a resourceprocesses ordersat a work

station, it maybe more efficient to accumulate several

ordersbefore requesting the resource.

If you specifyan ACCUM operation in a process for an

individual entity, accumulation will occur by individual entity

type. However, if you specify ALL as the processing entity,

all entity types at that location will participate in the same

accumulation.

Valid InThe operation column of process edit tables only. ACCUM

must be used at a location with enough capacity to accumu-

late the specified quantity.

Components

<expression>

The number of entities to accumulate. If this expression

resultsin zero or one, it is ignored.If itresults in a number 

greater than the location’scapacity or a negative number,

the simulation will stop with an error.

Thisexpression isevaluated every time an entity to be

accumulated arrives, so the quantity to be accumulated can

vary asthe entitiesto be accumulated arrive. If an entity

arrives that changes this expression to a number lower 

than the number of entities alreadyaccumulated, all of the

accumulated entitiesbegin to process.

Example

Entities named “Pallet” arrive at a location named “Load-

ing” and accumulate in batches of 20. Entities named “Box”

also arrive at Loading and accumulate in batchesof 10.Only after the right number of boxes or pallets accumulates

doesProModel request the forklift. The accumulation of 

Boxes and Pallets at Loading isentirelyindependent

because the accumulation statements are in different rec-

ords. Note that the forklift isused for two minutes per pallet

or box, because each pallet and box process individually

after accumulating all of them. While the accumulation of 

entities at Loading isby entity type, the accumulation at the

location, “Storage” isindependent of entity type since the

 ALL keyword denotes common processing for all entitiesat

this location.

Process Table

Entity... Location... Operation (min)...

Pallet Loading ACCUM 20

USE ForkliftFOR 2

Box Loading ACCUM 10

USEForklift FOR 2

 ALL Storage ACCUM 30

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Pallet Storage FIRST 1 MOVE F OR 5

1 Box Storage FIRST 1 MOVE FOR 5

1 ALL Loc3 FIRST 1 MOVE FOR 5

See Also

COMBINE, JOIN, and GROUP.

©ProModelCorporation

Accum 524

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 538/715

525 Activate

Activate

General Action Statement 

Syntax samples ACTIVATE <subroutine>({ parameter 1>,< param-

eter2 >...})

 ACTIVATE Sub1()

Description

Starts an independent subroutine. The calling logic then

continues without waiting for the called subroutine to finish.

Therefore, independent subroutines can run in parallel

with the logic that called them. Independent subroutines

are not entity or location dependent and run without

regard to what happensinside the logic that called them.Use ACTIVATE to process logic that has WAIT or 

WAIT...UNTIL statements when you do notwant to use an

entity to process the WAIT or WAIT...UNTIL statements.

For example, an ACTIVATE in the initialization logic could

calla subroutine that adjusts the arrival frequency for a

type of entitydepending on the time of day.

Independent subroutines called with ACTIVATE cannot

use entity-specific or location-specific system functions. If 

the subroutine has a return value,then that value is

ignored. External subroutines cannot be called with ACTI-

VATE, although theymay be called from within an acti-

vated subroutine.

Valid In

 Any logic.

Components

<subroutine>

The name of thesubroutine to run.Thisname should

appear exactly as if the subroutine were being called nor-

mally. Anyr eturn value for this function isignored. See Sub-

routineson page 326.

<parameters>

The parametersthat the subroutine normallytakes.

Example

This example usesACTIVATE in a model’sinitialization

logic to start a subroutine named Res_Log(). Res_Log() is

a user-defined subroutine that logs every time that all unitsof a resource named Worker are in use. After it logsthe

time that all unitswere busy, it waitsten minutesto check

again. Note that the WHILE...DO loop in the subroutine is

never exited. Thistechnique allows the subroutine to run

during the entire simulation.

Initialization Logic:

Activate Res_Log()

Res_Log()

INT X = 1

WHILEX=1DO

BEGINIF FREEUNITS(Worker)=0

THEN LOG "All workersbusy at ",0

WAIT 10

END

See Also

XSUB(). Also see Subroutines on page 326.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 539/715

Animate

General Action Statement 

Syntax samples ANIMATE <expression>

 ANIMATE 70ANIMATE Var1

Description

Setsthe simulation’s animation speed. The higher the

value, the faster the animation. ANIMATE isused primarily

to speed up or slow down a model for cursoryor detailed

observation whenever a particular condition is encoun-

tered. Another common use isto set the animation speed

to one-hundred in the Initialization Logic to rapidly advance

the simulation to some point in time.

Valid In

 Any logic.

Components

<expression>

The new speed of the animation. This expression can be

anynumber from 0 to 100 andis evaluated everytime the

 ANIMATE statement is encountered. The default speed is

56. A value of 0 will disable animation.

ExampleThis example shows theuse of the ANIMATE statement in

the downtime logic for the location Press. Whenever Press

goesdown for service, the animation speed isslowed to 30

percent of maximum. Thisallows the modeler to more

easily view which resource (RES1 or RES2) iscaptured to

service the location.

See Also

GRAPHIC and SOUND.

©ProModelCorporation

Animate 526

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 540/715

527 ArrayDims()

ArrayDims()

General System Function

Syntax samples ARRAYDIMS(<arrayname>)

 ARRAYDIMS(MyArray)

Description

Returns the number of dimensions in an array.

Valid In

 Any Logic

Components

<arrayname>

The name of thearray for which you wish to know the

number of dimensions.

See Also

 ArrayDimSize().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 541/715

ArrayDimSize()

General System Function

Syntax samples ARRAYDIMSIZE(<arrayname>, <dim_num>)

 ARRAYDIMSIZE(MyArray, 2)

Description

Returnsthe size of a dimension in an array.You must pro-

vide the name of the array and the particular dimension of 

the array for which you want to know the size.

Valid In

 Any Logic

Components

<arrayname>

Thename ofthe array.

<dim_num>

The number of the dimension for which you wish to know

the size.

See Also

 ArrayDims().

©ProModelCorporation

ArrayDimSize() 528

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 542/715

529 Assignment Statement

Assignment Statement

Syntax samples

<variable, array element, or attribute> = <numeric

expression>

Description

 Assigns the value of a numeric expression to a designated

variable, array element, or attribute.

Valid In

 Any Logic

Example

Var1 = 300

 Attr2 = Clock(hr) - Attr3

Please Note

If you assign an expression th at evaluates to a real 

number to a variable, array, or attribute of type

integer, the number truncates unless you use the

ROUND() function.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 543/715

Begin

General Control Statement 

Syntax samplesBEGIN or {

WHILE FREECAP(Loc1) > 5 DO

BEGIN

INC Var2,5

WAIT 5 sec

END

IF Var1 > 5 THEN

{INC Var2,5

WAIT 5 sec

}

Description

Definesa statement block with a corresponding END state-

ment. BEGIN and END are almost always used in con-

 junction with other control statements such as IF...THEN

and DO...WHILE. Every BEGIN statement must pair with

an END statement.

Valid In

 Any logic.

Example

Compare the following logic examples:

The example below includesa BEGIN and END statement.

In this logic, if the attribute Attr1 equalsone, ten entities are

ordered and the variable Var1 increments. ProModel

executes the statementswithin the BEGIN and END only if 

 Attr1 equals one.

IF Attr1 = 1 THEN

BEGIN

ORDER 10 EntA

INC Var1

END

Just asin thelogicabove, if Attr1 in the following

example equalsone, ten entities are ordered. How-

ever, Var1 increments regardless of the value of 

 Attr1. The IF...THEN appliesonly to the very next

statement, no matter how you format the logic.

IF Attr1 = 1 THEN

ORDER 10 EntA

INC Var1

See Also

END, IF...THEN...ELSE, DO...WHILE, WHILE...DO, and

DO...UNTIL.

©ProModelCorporation

Begin 530

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 544/715

531 Break

Break

General Control Statement 

Syntax samplesBREAK

Description

Exitsthe innermost WHILE...DO, DO...WHILE, or 

DO...UNTIL loop. The next statement to be executed will

be the one immediately following the END statement asso-

ciated with the innermost loop. If a BREAK isencountered

outside any loop, then ProModelexits the entire logic.

Valid In

 Any logic.

Example

Normally, a WHILE...DO loop repeats a statement block

untila certain condition becomesfalse. Thisexample

shows the use of a BREAK statement to exitthe loop

based on a condition not included in the WHILE...DO loop.

 As long as the variable V1 is lessthan three and the var-

iable V3 isless than or equal to five, both the three-minute

wait and the five-minute wait will be executed for a totalof 

eight minutes. However, if V3 becomesgreater than five,

the totalwait will be sixminutes: three minutesin the main

part of the loop and another three minutes inside theIF...THEN statement block. The five minute wait will not be

executed because the BREAK statement exits the loop

entirely.

The line “//Breakto here” isa comment that marksthe next

line of logic executed after the BREAK.

Process Table

Entity... Location... Operation (min)...

Claim Station1 WHILE V1<3 DO

BEGIN

WAIT 3 min

IF V3<=5 THEN

BEGIN

WAIT 3 min

BREAK

END

WAIT 5 min

END

//Break to here

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Station2 FIRST 1 MOVE FOR 5

See Also

BREAKBLK.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 545/715

BreakBlk

General Control Statement 

Syntax samplesBREAKBLK

Description

Exits from the innermost statement block. The next state-

ment to be executed will be the one immediately following

the END statement of the innermost statementblock. If a

BREAKBLKis executed outside any statement block, Pro-

Model will exit the logic completely.

Valid In

 Any logic.

Example

Thisexample uses BREAKBLK in the logic for a shipping

department that handles two typesof entities, Letters and

Packages. Both packages and letters need to be

addressed,but packagesmayneed to be wrapped before

theyare addressed. When a package arrives, shipping

increments the variable No_of_Pkg to keep track of the

number of packagesit ships. Attr1 isthen checked to see if 

the package hasbeen wrapped. If thepackage hasbeen

wrapped(if Attr1 = 1), theBREAKBLK statementexitsthe

statement block that wraps packages. If the package hasnotbeen wrapped, a resource, Wrapper, wraps the pack-

age. Finally, all entities that Shipping processes are

addressed bythe same statement androuted to the loca-

tion Post_Office. The line “// Breakblk to here” isa comment

which marks the next statement executed after the

BREAKBLK.

Process Table

Entity... Location... Operation (min)...

 ALL Shipping IF ENTITY() = Letter THEN

INC No_of_Let

IF ENTITY() = Pkg THEN

BEGIN

INC No_of_Pkg

IF Attr1 = 1 THEN

BREAKBLK

USE Wrapper FOR 8

 Attr1 = 1

END

//Breakblk to here

USE Addresser FOR 3

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 ALL Post_Office FIRST 1 MOVE F OR 5

See Also

BREAK.

©ProModelCorporation

BreakBlk 532

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 546/715

533 CalDay()

CalDay()

General System Function

Syntax samplesCALDAY()

Description

The CALDAY() function correspondsto the weekday of 

the calendar date you defined aspart of the warm-up

period or simulation begin date under simulation options.

Since CALDAY() resetswith theadvent of a new week,

every weekdaywillreturn the same value (i.e., Wednesday

will always return a value of 3).

Valid In

 Any logic.

Please note

CALDAY() works only when you select calendar 

date in the simulation options dialog.

Example

Suppose that shipment arrival types vary from day to day.

Since Monday’sShipment_Type_A arrivalpatterns are

unique, you will need to use a distribution specificto thosepatterns.

IF CALDAY()=1 THEN

BEGIN

Shipment_Type_A =

Monday_Distribution_A

USE Forklift FOR Unload_Time

END

See Also

CALDOM(), CALHOUR(), CALMIN(), CALMONTH(),

and CALYEAR().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 547/715

CalDOM()

General System Function

Syntax samplesCALDOM()

Description

The CALDOM() function correspondsto the calendar day

of the month you defined aspart of the warm-up period or 

simulation begin date under simulation options. Values

returned bythis function will be integers inthe range of 1 to

31.

Valid In

 Any logic.

Please note

CALDOM() works only when you select calendar 

date in the simulation options dialog.

See Also

CALDAY(), CALHOUR(), CALMIN(), CALMONTH(), and

CALYEAR().

©ProModelCorporation

CalDOM() 534

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 548/715

535 CalHour()

CalHour()

General System Function

Syntax samplesCALHOUR()

Description

The CALHOUR() function correspondsto the hour of the

calendar date you defined aspart of the warm-up period

or simulation begin date under simulation options. Since

thisfunction tiesdirectly to the 24-hour clockdisplayed on

the screen during simulation, CALHOUR() will never 

return a value higher than 23.

Valid In

 Any logic.

Please note

CALHOUR() works only when you select calendar 

date in the simulation options dialog.

Example

The following example implements a change in personnel

used to perform an operation. After the simulation runs for 

18 hours, the technician becomesavailable to perform theactivity.

IF CALHOUR() > 18 THEN

USE Worker FOR N(10,4)

ELSE USE Technician FOR N(8,2)

See Also

CALDAY(), CALDOM(), CALMIN(), CALMONTH(), and

CALYEAR().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 549/715

CalMin()

General System Function

Syntax samplesCALMIN()

Description

The CALMIN() function correspondsto the minute of the

calendar date you defined aspart of the warm-up period or 

simulation begin date under simulation options. Since this

function tiesdirectly to the 24-hour clockdisplayed during

simulation, CALMIN() will never return a value higher than

59.

Valid In

 Any logic.

Please note

CALMIN() works only when you select calendar 

date in the simulation options dialog.

Example

Suppose partshave a fixed shipping time of 4:30 PM.The

following logic would order parts to the shipping area.

IF CALHOUR() = 16 AND CALMIN() = 30 THEN

ORDER 1 Part TO Shipping_Area

See Also

CALDAY(), CALDOM(), CALHOUR(), CALMONTH(),

and CALYEAR().

©ProModelCorporation

CalMin() 536

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 550/715

537 CalMonth()

CalMonth()

General System Function

Syntax samplesCALMONTH()

Description

The CALMONTH() function correspondsto the month of 

the year you defined aspart of thewarm-up period or sim-

ulation begin date under simulation options. Values

returned by this function willbe integers in therange of 1 to

12.

Valid In

 Any logic.

Please note

CALMONTH() works only when you select calendar 

date in the simulation options dialog.

Example

If CalMonth()=12 THEN WAIT 20

Else Wait 10

See Also

CALDAY(), CALDOM(), CALHOUR(), CALMIN(), and

CALYEAR().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 551/715

CalYear()

General System Function

Syntax samplesCALYEAR()

Description

The CALYEAR() function correspondsto the year of the

calendar date you defined aspart of the warm-up period or 

simulation begin date under simulation options.

Valid In

 Any logic.

Please note

CALYEAR() works only when you select calendar 

date in the simulation options dialog.

See Also

CALDAY(), CALDOM(), CALHOUR(), CALMIN(), and

CALMONTH().

©ProModelCorporation

CalYear() 538

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 552/715

539 Cap()

Cap()

General System Function

Syntax samplesCAP (<location>)

GROUP CAP(Loc1)

Description

Returns the total capacity of a location. CAP() can be used

to prepare a batch of entitiesto fill a location.

Valid In

 Any logicand any expression evaluated after translation.

For a list of expressions evaluated after translation, Appen-

dix on page 657.

Components

<location>

The name of thelocation to examine.If thiscomponent is

the name of a multi-unit location, CAP() will return the

capacity of the entire location. For example, if each unit of a

five-unit location hasa capacity of five, CAP() will return

twenty-five. This component can also b e thenameofan

individual unit in a multi-unit location.

ExampleThe individualovens of a ceramicsplant have different

capacities, but otherwise theyare exactly the same. While

each oven could be modeled as an individuallocation, it

would be easier to model this situation as a multi-unit loca-

tion. Thisexample uses CAP() in the processing logic of 

the parent location to accumulate enough Sinks to filleach

oven. The LOCATION() function returns the value of the

current location.

Process Table

Entity... Location... Operation (min)...Sink Oven ACCUM CAP(LOCAT ION( ))

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Sink Cool FIRST 1 MOVE FOR 5

See Also

FREECAP(), LOC(), and LOCATION().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 553/715

Char()

String Function

Syntax samplesCHAR(<expression>)

CHAR(10)

Description

Returns the ASCII character for the number that the

expression evaluates to. Thisfunction ismost useful for out-

putting ASCII characters that cannot be typed, such as

accented characters. Thisfunction ismost often used in

conjunction with a string expression and the concatenation

(“$”) operator.

The number corresponding to the ASCII character varies

with each computer depending on the character set spec-

ified in the config.sysfile of your computer. To determine

the number corresponding to the ASCII character at your 

computer, run themodelCHAR.MOD found in the MOD-

ELS\REFS directory. View the file this model generates

called CHAR.TXT found in the same directory as the

model.

Valid In

 Any string expression.

Components

<expression>

 Any expression that evaluates to a number between 0 and

255. The expression isevaluated every time the CHAR()

function isencountered.

Example

The logic below displaysthe combined cost of all the Parts

ordered through a particular service center. The simulation

haskept a tally of all the partsit hasordered in thevariable

Parts, and each part cost 25 English pounds. The logic dis-plays the cost of thepartswith the pound symbol(£), which

isASCII code 163.

DISPLAY“Totalcost of parts:” $ CHAR(163) $ Parts* 25

See Also

see String Expressionson page 498.

©ProModelCorporation

Char() 540

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 554/715

541 Clock()

Clock()

General System Function

Syntax samplesCLOCK({<time unit >})

IF CLOCK(DAY) >= 1.5 THEN PAUSE

 Attr1 = CLOCK()

Description

Returns value of the elapsed simulation time in the units

specified. Clockunitsshould be kept consistent when com-

paring values.If an attribute hasbeenassigned a time in

minutes, anytime value compared with that attribute

should also be in minutes.

When no units are specified in the parentheses in the clock

function, ProModelreturns the default time unit specified in

the General Information.

Valid In

 Any logicand most fields, except those fieldsevaluated at

translation. For a list of fields evaluated at translation, see

 Appendix on page 657.

Components

<time unit>The elapsed simulation time will be returned in this unit.

This maybe HR, MIN, SEC, DAY, WK. If omitted, the value

returned will be in the defaulttime units asspecified in the

GeneralInformation dialog box. When using CLOCK() to

capture a time for later use with the LOG statement, the

units should be omitted.

See Also

see General Information on page 236and see Time

Expressions on page 497.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 555/715

Close

General Operation Statement 

Syntax samplesCLOSE <file ID>

CLOSE Arrival_File

Description

Closes a file that haspreviouslybeen written to with

WRITE, WRITELINE, XWRITE, or read with READ. Use

CLOSE when finished with a file to free system resources.

 A file willautomatically be re-opened to be read or written if 

it has been closed. All opened files are automatically closed

at the endof a simulation. When you are using manyexter-

nalfiles and you want to conserve system resources, thisstatement isespecially helpful.

Valid In

 Any logic.

Components

<file ID>

The file ID of the desired file asdefinedin the ExternalFiles

editor.

See Also

READ, WRITE, WRITELINE, XWRITE, and RESET.

©ProModelCorporation

Close 542

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 556/715

543 Combine

Combine

Entity-Related Operation Statement 

Syntax samplesCOMBINE <expression>{ AS <new entity name>}

COMBINEVar1

COMBINE3 ASEntQ

COMBINEVar1 as ENT(Attr1)

Description

 Accumulates and consolidates a specified quantity of enti-

ties into an entity, optionally with a different name. Unlike

the GROUP statement, combined entitieslose their iden-

tities and attributes and cannot be ungrouped later. UseCOMBINE when several entities need to be combined,

such aswhen eight sparkplugsare combined in a box.

Note that after several entities have been combined at a

location, no additional statistics will be collected for any of 

the combined entities at that location.

When specifying COMBINE <expression>AS <new entity

name> in the operation logic, there must be another oper-

ating block at the same location. In this case, the incoming

entityat the new operating block isthe new entityname

specified in the COMBINE statement.

Valid In

Operation logic only. COMBINEmay not be used in com-

bination with CREATE, GROUP, UNGROUP, LOAD,

UNLOAD, SPLIT AS, or other combine statements in the

same process logic.

Components

<expression>

The number of entities to combine. Negative values gen-

erate an error message. If this expression evaluates to

zero,it isignored. If it evaluatesto one, then no entitiesareactually combined, but the entity that encountered the com-

bine statement isrenamed (if the ASoption has been spec-

ified).

This expression isevaluated every time an entity

encounters the COMBINEstatement, so the amount of 

entities to be combined can vary as the simulation prog-

resses. If an entity arrives that changes this expression to a

number lower than the number of entitiesalready waiting

to be combined, all of the entities waiting to be combined

are combined, including the entity that just arrived.

AS <new entity name>

The optionalname of the resulting entity. If leftoff, the new

entity will have the same name as the last combined entity

or the output entity name.

Explicit Entity Actions

COMBINE passes cost on to new entities but not statistical

information. ProModelcounts combined entitiesas exits.

Example

 A manufacturing plant makes computer motherboards. After manufacture and inspection, when the moth-

erboards are readyfor shipping, workers combine them

into sets of twenty to distribute to the company’s cus-

tomers. A COMBINEstatement will work well for this exam-

ple, because workers do not inspect or use the individual

motherboards again. At the final assembly location, work-

ersgroup motherboardsinto totesof twenty,and route the

totes to the shipping department.

Process Table

Entity... Location... Operation (min)...

mboard Assembly COMBINE20

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Tote Shipping FIRST 1 MOVE FOR 5

See Also

GROUP, ENT(), ACCUM, and LOAD. Also see Attributes

and the COMBINEStatementon page 302.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 557/715

Comments

Documentation Symbols

Syntax samples#

//

/*...*/

Components

#

The pound sign signalsthe start of a one-line comment.

ProModelwill ignore anycharacters on the rest of the line.

//

Two forward slashessignal the start of a one-line com-

ment. ProModelwill ignore any characterson therest of 

the line.Thissymbol works exactly thesame asthe # sign.

/*...*/

 A slash followed by an asterisksignals the start of a multi-

line comment. ProModelwill ignore all characters after the

“/*” until it findsan asteriskfollowed by a slash, “*/”. Use this

type of comment for long explanations and to prevent Pro-

Model from executing long portions of logic during debug-

ging. Commentsusing // or # may be nested inside multi-

line comments.

Description

Commentsare notes to the modeler inside blocksof logic.

ProModelignoresthem, but theycan be particularlyuseful

to explain logic when morethan one person will be using a

model.

Valid In

 Any logic.

Example

The logic below hasseveral notes to explain it. Additionally,

ProModelignoresthe ELSE statement and the ELSE state-

ment’s block.

IF Parts_Available > Attr2 THEN

//Parts needed isstored in attribute 2

BEGIN

JOIN Attr2 #Join the number of parts # needed only

if there are # enough partsavailable.

WAIT Attr1

END

/* ELSE

BEGIN //Start operation

INC Var1

WAIT Attr3

END */

©ProModelCorporation

Comments 544

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 558/715

545 Contents()

Contents()

General System Function

Syntax samplesCONTENT S(<location>{,<entity type>})

LOAD CONTENTS(Loc1)

JOIN CONTENTS(Loc1, EntA) EntA

Description

Returns either the total number of entities at a location or 

the number of a certaintype of entityat a location. Use

CONTENTS() to make decisions based on how busy a

location is. Using CONTENTS() to keep track of the

number of entities at a location requires fewer steps and

allows more flexibility than using variables to count the

number of entities that enter and exit a location. For exam-

ple, the second syntaxdoes in one statement what would

require several statements without the CONTENTS() func-

tion.

Valid In

 Any logicand all fieldsexcept those fieldsevaluated at

translation only. For a list of the fields evaluated only at

translation, see Appendix on page 657.

Components

<location>

The name of thelocation to examine.

<entity type>

The optionalname of the type of entity to lookfor. If 

omitted, CONTENTS() will return the total of all entities at

the location.

Example

 An assembly line has a location called Clean that often gets

too busy for one operator to handle and the supervisor then comes to help. The processing logic below models

this situation with an IF...THEN statement and the CON-

TENTS() function. As long as the location contains fewer 

than five entities, a worker processesany arriving entities.

However, if the location’s contents are greater than five,

the Supervisor processesthem.

Process Table

Entity... Location... Operation (min)...

 ALL Clean IF CONTENTS(Clean)<5 THEN

USE Worker FOR 10

ELSE

USE Worker FOR 10

OR Supervisor FOR 10

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 ALL Mold FIRST 1 MOVE FOR 1

See Also

FREECAP(), LOC(), ENT(),and FREEUNITS().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 559/715

Create

Entity-Related Operation Statement 

Syntax samplesCREATE <expression1> {AS <entity name>}

{TAKE {<expression2>} <resource>,...}

CREATE10 ASEntX

CREATE 2 ASEntBTAKE 1 Res1,2 Res2

CREATE Var1 AS Ent(Var2) TAKEVar3 Res(Var4)

Description

Creates a specified number of entities in addition to the orig-

inal entity and copies all attributesof the original entity to

each new entity. The first entity created can optionallytakeanyof theresourcesowned by the parententity. The newly

created entities require no additionalcapacity at the loca-

tion and are processed immediately.

The CREATE statement can simulate the creation of paper-

work that needs to be hand-carried to another location to

be approved while the base entity continuesto process.

Before the base entity can exit the location, the paperwork

must be approved and routed back to the originallocation

where it is joined to thebaseentity.

Valid InThe operation column of process edit tables only. CREATE

may not be used in combination with LOAD, UNLOAD,

GROUP, UNGROUP, SPLIT AS, or other CREATE state-

ments in the same processing logic.

Components

<expression1>

The number of new entities to create. This expression is

evaluated every time the create statement isencountered.

 AS <entityname>

The name of the new entities. ProModelwill search the

process list for the new entity type and begin processing

them before it finishes processing the entity that created

them. If omitted, the entitieswill be named the same asthe

currently processing entity.

TAKE <expression2>

The first created entity will take any resources listed here

from the parent entity. Thiscomponent isoptional. The sec-

ond syntaxexample above creates two EntB’s. The first of 

the two will own one unit of Res1 and two unitsof Res2.

<resource>

The name of the resourcewhose ownership shouldbe

transferred to thefirst new entity. Using the keyword ALL

here will take all resources owned by the parent entity.

Explicit Entity Actions

The CREATEstatementformsa new entitywith new sta-

tistical information and cost. ProModeladds an initial cost to

explicitly created entities( i.e., entitiescreated with the

CREATE statement).

Implicit Entity Actions

ProModel allows you to use the CREATE statement implic-

itly as part of the routing definition. To do this,define a route

block and check the New Entity option. ProModeldoes

NOT add an initial cost to implicitly created entities.

Example

The following shows how one entity, Record, creates two

new entities. Note that there isno routing defined in this

process for the new entities, Copy. The new entities are

handled according to the logic defined in the subsequent

process.

Process Table

Entity... Location... Operation (min)...

Record Station1 WAIT N(8,.3)

CREATE 2 AS

Copy

Copy Station1 WAIT U(3,.3)

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Record Station2 FIRST 1 MOVE F OR 5

1 Copy File_Cab FIRST 1 MOVE F OR 5

See Also ORDER, SPLIT AS, ENT(), and RES().

©ProModelCorporation

Create 546

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 560/715

547 Debug

Debug

General Action Statement 

Syntax samplesDEBUG

Description

Brings up ProModel’sdebugger. Use DEBUG to step

through logic one statement at a time andexamine var-

iable and attribute values while developing a model. After a

model isworking, DEBUG statementsare generally

removed.

Valid In

 Any logic.

Example

If you were having trouble with a Client’s logic at a par-

ticular location, we could start the processing logic with a

DEBUG statement, as in the following example. Thiswould

allow you to watch each Client’s logic execute, statement

by statement, revealing problems with the logic’s flow.

Process Table

Entity... Location... Operation (min)...

Client Recep DEBUG

IF Attr1=1 THEN

GRAPHIC

WAIT 5 min

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Client Waiting FIRST 1 MOVE F OR 5

During run time, the ProModeldebugger would appear dis-

playing the following information:

See Also

see Debug Option on page 462.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 561/715

Dec

General Operation Statement 

Syntax samplesDEC <name>{, <expression>}

DEC Var1

DEC Attr1, 5

Description

Decrements a variable, array element, or attribute by the

value of a specified numericexpression. To decrement a

variable, attribute, or array element when the current entity

actuallyleaves a location, use DEC in the move logic.

Valid In

 Any logic.

Components

<name>

 Any variable, array element, or attribute.

<expression>

The amount to decrement the value. If this expression is

omitted,the value will be decremented by one. This can be

a negative number.

Example

The example below shows two variables decremented in

exit logic. The variable Num_in_system isdecremented by

one, while variable Var3 isdecremented by 20.

See Also

INC. Also see Numeric Expressions on page 495.

©ProModelCorporation

Dec 548

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 562/715

549 Display

Display

General Action Statement 

Syntax samplesDISPLAY <string expression>

DISPLAY “Var1 =” $ Var1 $ “and Attr1 =” $ Attr1

DISPLAY “Now beginning 100th process”

DISPLAY Number_in_Queue

Description

Pauses the simulation and displaysa message. The sim-

ulation will resume when the user selects OK. The con-

catenation operator ($) should be used to combine a

numericvalue into the string (as in the first syntaxexampleabove). Using the ENT(), LOC(), and RES() functions will

display the name of the entity, location, or resource.

Valid In

 Any logic.

Components

<string expression>

The message to be displayed. To display a numericvalue,

use the concatenation operator ($) as in the first syntax

example.

Example

This simple example displaysthe value of both Var1 and of 

 Attr1 if Attr2 is 1. This logicwilldisplay the dialog box below

if Attr2 is 1. If Attr2 isnot 1, an error message willappear.

Operation (min)

IF Attr2=1 THEN

DISPLAY “Var1 =” $ Var1 $ “\nandAttr1 =” $ Attr1

ELSE

DISPLAY “Error”

Please note

The “\n” character starts new lines.

See Also

PROMPT, PAUSE, CHAR(), and FORMAT().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 563/715

Do...Until

General Control Statement 

Syntax samplesDO <statement block>UNTIL <Boolean expres-

sion>

DO INC Var1 UNTIL Array1[Var1] <>10

DO

BEGIN

INC Var2,5

WAIT 5 sec

END

UNTIL FreeCap(Loc1) > 5

Description

Repeats a statement or statement block continuouslywhile

a condition remains false. DO...UNTIL isan exit-condition

loop, meaning that the loop will always be executed at least

once. Use DO...UNTIL when an operation will always be

executed at least one time and possibly more times.

Valid In

 Any logic.

Components

<statement block>

The statement or block of statementsto execute.

<Boolean expression>

 As long as this expression is FALSE, the loop will continue.

Thisexpression isevaluated for each iteration of the loop.

Example

 A machining station can manufacture parts of increasing

complexity from the same entity, called a Blank. When a

Blank arrives at the station, the value stored in Attr1 deter-

mines thecomplexity of the part and the amount of time

needed to create the new part. The following logic models

this situation with a DO...UNTIL loop. All blanks that arrive

go througha five minute processing time,and then go

through the operation several more times depending on

the value of Attr1.

Process Table

Entity... Location... Operation (min)...

Blank Machining INT Count = 0

DO

BEGIN

WAIT 5 min

INC Count

END

UNTIL Count = Attr1

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Base Painting FIRST 1

See Also

BEGIN, END, DO...WHILE, and WHILE...DO.

©ProModelCorporation

Do...Until 550

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 564/715

551 Do...While

Do...While

General Control Statement 

Syntax samplesDO <statement block> WHILE <Boolean expres-

sion>

DO INC Var1 WHILE Array1[Var1]<> 10

DO

BEGIN

INC Var2,5

WAIT 5 sec

END

WHILE FreeCap(Loc1) > 5

Description

Repeats a statement or statement block continuously while

a condition remains true. DO...WHILE isan exit-condition

loop, meaning that the loop will always execute at least

once. Use DO...WHILE for processes that must be

executed one time and possibly more.

Please note

Use caution when using a DO...WHILE with a sys- 

tem function (e.g., FREECAP()) to ensure that thesystem does not enter an infinite loop. For exam- 

 ple, eliminatin g the “WAIT 5 sec” in the syntax sam- 

 ple will cau se the system to enter an infinite loop

because there is no time delay within the loop.

Valid In

 Any logic.

Components

<statement block>

The statement or block of statementsto execute.

<Boolean expression>

 As long as this expression is TRUE, the loop will continue.

This expression isevaluated for each iteration of the loop.

Example

The logic below orders a minimum of ten casesto location

Receiving every time it isencountered. As long as the loca-

tion has a capacity greater than ten, it will send additionalsets of ten entities to the location.

DO

ORDER 10 Cases to Receiving

WHILE FREECAP(Receiving) > 10

See Also

BEGIN, END, DO...UNTIL, and WHILE...DO.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 565/715

Down

Downtime-Specific System Function

Syntax samplesDOWN <dtname>, {<priority>}

Description

Makes a location, with the specified called downtime,

attempt to go down.

Thisstatement isused in conjunction with the Called Down-

time dialog, where you have previouslydefined the called

downtime’sname, priority, and logic.

When this statement isexecuted, the called downtime will

attempt to execute its logic. The timing of the execution of the called downtime’s logic will depend on the location’s

state and the called downtime’s priority.

Valid In

 Any logic, except Initialization and Termination logic.

Components

<dtname>

The name of the called downtime.Thisname is definedin

the Called Downtime dialog, found in the Locationstable.

<priority>

You may optionallydefine a priority. Thiswilloverride the

priority you defined in the Called Downtime dialog for the

specified called downtime.

Please Note

The DOWN statement does not need to be called 

from the processing logic at the location that is to

go down. It can be called from any logic in your 

model, except Initialization and Termination logic,

and still cause the location’s Called Downtime to

execute.

See Also Called Downtime Editor on page 145, and Loca-

tion Priorities and Preemption on page 145.

©ProModelCorporation

Down 552

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 566/715

553 DownQty()

DownQty()

General System Function

Syntax samplesDOWNQTY(<location> or <resource>>)

IF DOWNQTY(Loc1) > 3 THEN ROUTE 2

DISPLAY “TotalRes1 Down Now:” $ DOWNQ-

TY(Res1)

Description

Returns the number of location or resource units down at

the time of the call. Use this function to make decisions

based on how manyresource or location units are down.

For example, iftoo many unitsare down, a foreman could

preempt several units backinto service.

Valid In

 Any logicand all fieldsexcept those fieldsevaluated at

translation only. For a list of the fields evaluated only at

translation, see Appendix on page 657.

Components

<location>

The name of thelocation to examine.LOC() can be sub-

stituted for the name of a location.

<resource>

The name of theresource to examine.RES() can be sub-

stituted for the name of a resource.

Example

Two resources, Welders, weld brackets onto steel frames

at a location, Man_Weld, in 6.5 minutes. An automatic weld-

ing machine, Auto_Weld, can perform the same task, but it

takes 9.3 minutes. However, if only one Welder isavailable

and the other Welder isdown (e.g., on break),it takes one

Welder 13.0 minutes to weld the brackets to the frames.Therefore, if one Welder isdown, the frames should route

to the automatic welding machine, Auto_Weld.

Process Table

Entity... Location... Operation (min)...

Frame Buffer IF DOWNQTY(Welder)>0 THEN

ROUTE 1

ELSE

ROUTE 2

Frame Auto_Weld ...

Frame Man_Weld ...

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 F rame Auto_Weld F IRST 1 MOVE F OR 1

2 F rame Man_Weld F IRST 1 MOVE F OR 1... ... ... ... ...

... ... ... ... ...

See Also

FREECAP, FREEUNITS(), and UNITS().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 567/715

DTDelay()

Downtime-Specific System Function

Syntax samplesDTDELAY(<time unit >)

WAIT Att1 - DTDELAY(Min)

DISPLAY “The downtime delay was”$DTD-

elay(DAY)$“days.”

Description

Returns the difference between the time when you sched-

uled a non-preemptive downtime to occur and the time it

actuallyoccurred. Use DTDelay to determine if downtimes

are being postponed because of incompleted work. You

can use DTDelayin downtime logic to ensure that a loca-

tion comes back up at a specifictime.

 Also returns the difference between the time when a down-

time is preemptedand the time itresumes.

Valid In

 Any downtime logicincluding off-shift and break logic. This

function returns a real number.

Components

<time unit>The function will return thedowntime delay in any of the fol-

lowing units: SEC, MIN, HR, DAY, andWK.

Example

The following statement modelsa situation where a loca-

tion is supposed to go down at 12:00and always goesback

up at 1:00,even ifit stays up past 12:00 to finish processing

an entity. If the downtime was missed entirely(meaning

that thedowntime delay wasgreater than an hour), then

the downtime takesno time at all. If thedowntime wasnot

missed entirely, then it lasts one hour minusthe delay.

IF 60 - DTDelay(min) > 0 THEN WAIT (60 - DTDe-

lay(min))

See Also

DOWNQTY().

©ProModelCorporation

DTDelay() 554

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 568/715

555 DTLeft()

DTLeft()

Shift & Break System Function

Syntax samplesDTLEFT <time units>

Shift_Time = DTLeft()

Description

The DTLEFT function returns the balance of the off-shift

or break time remaining for a location or resource before it

resumesnormal activities. Unless passed as an argument

(e.g., DTLeft(hr)), the return value usesthe time units

defined in the GeneralInformation Dialog (see General

Information on page 236).

Valid In

This function can only be referenced in off-shift and break

logic (either the pre-start or main logic).

Components

<time units>

The time units, if different from the default found in the Gen-

eralInf ormation dialog,in which you want thereturn value

expressed.

ExampleSuppose a technician isfrequently working on a job when

the end of the shift rolls around and that the priorityfor end-

ing theshift isnot high enoughto interruptthe job. To

ensure that the technician gets a minimum of 14 hours off 

before coming back to work, even though the shift file spec-

ified 16 hoursbetween shifts, you could enter the following

off-shift logic:

IF DTLEFT(hr) < 14 THEN

BEGIN

WAIT 14 hr SKIP

END

Please note

In the above example, the SKIP statement is impor- 

tant to skip over the defined time in the shift file.

See Also

DTDELAY()

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 569/715

DynPlot()

General Action Statement 

Syntax samplesDYNPLOT “<chart name>”

DYNPLOT “my dynamicplot name”

DYNPLOT “Chart 1”

DYNPLOT “”

Description

The DynPlot statement isused to automaticallyturn on

predefined Dynamic Plot windows. Its usage issimilar to

that of the View statement. Dynamic Plot windowsare

predefined during simulation mode. These predefined

Chart views can then be called from any logic statement,

invoking the display of the designated chart during sim-

ulation.

Valid In

 Any Logic.

Components

<Chart name>

The name of the Dynamic Plot chart asdefinedin the

Dynamic Plotsdialog. Enclose the name in quotation

marks.

Example

You are giving a presentation to management. Two hours

into the simulation, you want a chart to be displayed show-

ing thevalue of a WIP variable plotted against average part

cost. Four hoursinto the simulation, you want this chart to

disappear.

To do this, define a Chart view fromthe Dynamic Plots

dialog, naming your Chart view “WIP vsCost.” Define a sub-

routine and callit in the initialization logic using the ACTI-

VATE statement. Enter the following logic in the

subroutine:

WAIT 2 HR

DYNPLOT “Wip vs Cost”

Wait 2 HR

DYNPLOT ""

Please note

Using the statement with a null value (no name

defined b etween t he quotation marks) will close all 

currently open Dynamic Plot windows.

©ProModelCorporation

DynPlot() 556

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 570/715

557 End

End

General Control Statement 

Syntax samplesEND or }

WHILE FREECAP(Loc1) > 5 DO

BEGIN

INC Var2,5

WAIT 5 sec

END

DescriptionDefines a statement block along with a corresponding

BEGIN statement. BEGIN and END are almost always

used in conjunction with other controlstatements such as

IF...THEN and DO...WHILE. Every END must pair with a

BEGIN.

Valid In

 Any logic.

Example

Compare the following examples:

The example below includes a BEGIN and END statement

in the form of the “{” and “}” symbols. In this logic, if the

attribute Attr1 equals one, ten Casesare ordered and the

variable, Var1, increments. ProModelexecutes the state-

mentswithin the BEGIN and END only ifAttr1 equals one.

IF Attr1 = 1 THEN

{

ORDER 10 Case

INC Var1

}

Just as in the logic above, if Attr1 in the following example

equals one, ten Casesare ordered. However, Var1 incre-

mentsno matter what the value of Attr1.Without a state-

ment block, the IF...THEN applies only to the very next

statement, no matter how you format the logic.

IF Attr1 = 1 THEN

ORDER 10 Case

INC Var1

See Also

BEGIN, IF...THEN, DO...WHILE, WHILE...DO,

DO...UNTIL, and END.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 571/715

Ent()

Type Conversion Function

Syntax samplesENT(<entity name-index number>)

SEND 10 ENT(Var1) TO Loc1

DISPLAY “Ent A hasbeen combined with” $

ENT(Var1)

Description

Converts a name-index number or integer to an entity

name. Use this function when a statement or function

needsthe name of an entitywhose name index number is

stored in an attribute, variable, or some other expression.

ENT() can alsobe used to varythe entitythat a statement

references by using an expression for the name-index

number. When used in an expression expecting a string,

such as in the second syntaxexample above, ProModelwill

convert the name-index number to the actualname of the

entity.

Valid In

 Any logicwhere an entity name is normally used.

Components

<entity name-index number>

The name-index number of the entity desired. This com-

ponent may be an expression which allows the referenced

entity to change as the simulation progresses. Real

numbers will be treated as integers.

Example

The logic below ordersthree batchesof five different entity

types to a location, Receiving.

Var1=1

WHILE Var1 <= 3 DOBEGIN

ORDER 5 ENT(Var1) TO Receiving

INC Var1

END

See Also

LOC(), RES(), ENTITY(), and LOCATION().

©ProModelCorporation

Ent() 558

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 572/715

559 Entity()

Entity()

Entity-Specific System Function

Syntax samplesENTITY({<expression>})

ENTITY()

ENTITY(Var1)

Description

Returns the name-index number of the current entity or a

particular entity in an entity group. Thisfunction isespe-

ciallyuseful in macros and subroutines that vary depending

on which entity calls them. Use ENTITY() to determine

what type of entityis processing when an entitytype of ALL

isspecified at a location. For example, if a common area

handles several different partswith essentiallythe same

process, use an IF...THEN statement in conjunction with

an ENTITY() to have individual statement blockshandle

the details of the operation. Thisfunction returns an

integer.

Valid In

Speed fields, traveling time fields, conveyor speed fields,

Resource fields, operation logic, routing fields, arrivallogic,

debug user-condition field.

Components

<expression>

The number of theentityin a group to inspect. For exam-

ple, ENTITY(3) returnsthe name-index number of the

third entityin the group.If thisoption is omitted,the name-

indexnumber of the calling entity isreturned.

Example

 Allcars from the motor pool must be washed after use. All

carsexcept vansrequire ten minutesto wash, and vans

require an additionalten minutes. The logic below modelsthis situation.

Process Table

Entity... Location... Operation (min)...

 ALL Wash1 WAIT 10 min

IF ENTITY() = Van THEN

WAIT 10 min

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 ALL Parking FIRST 1 MOVE FOR 30

See Also

ENT() and LOCATION().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 573/715

Entries()

General System Function

Syntax samplesENTRIES(<location>)

DISPLAY “LocA has had” $ ENTRIES(LocA) $

“entries.”

Description

Returns the total entries to a location. Thisfunction returns

an integer.

Valid In

 Any logicand any field except those evaluated only at trans-

lation. For a list of fields evaluated at translation see Appen-

dix on page 657.

Components

<location>

The location to examine.

Example

 A location, Stores, sends entities, Orders, to a location,

Shipping. A variable, Batch_Time, tracksthe amount of 

time it takes to process 50 Orders. After Loc1 processes 50

entities, we want to reset Batch_Time to zero.

Process Table

Entity... Location... Operation (min)...

Order Stores IF ENTRIES(Loc1) =50 THEN

Batch_Time = 0

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Order Shipping FIRST 1 MOVE F OR 30See Also

IF...THEN...ELSE.

©ProModelCorporation

Entries() 560

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 574/715

561 Exp()

Exp()

Math Function

Syntax samplesEXP(<expression>)

Real1 = EXP(Real2)

Description

Returns the exponential of an expression. This function is

equivalent to e x .

Valid In

 Any expression. This function returns a real number.

Components

<expression>

EXP() returns the exponential of thisexpression.

See Also

LN().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 575/715

ForLocation()

Shift & Break System Function

Syntax samplesFORLOCATION()

IF FORLOCATION() THEN Priority 100

IF FORLOCATION() THEN

INC Arr1[1,2]

ELSE

INC Arr1[2,2]

Description

Thisfunction returnsTRUE if the object executing the shift

or breaklogic isa location.

Valid In

Shift or break logic.

Example

We assign three resources (Oper1, Oper2, and Oper3)

and two locations( Mill1 and Mill2) to a shift. When the loca-tionsgo off-shift, the example uses a resource called Maint

for 10 minutes to clean up around the machines. Because

we assigned the same shift to locationsand resources, we

need to check if the object executing the off-shift logic isa

location. We place the following logic in the off-shift logic:

IF FORLOCATION() THEN USE Maint FOR 10 min

See Also

FORRESOURCE(). Also see Shift & Break Logic on page

404.

©ProModelCorporation

F orL ocat io n( ) 562

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 576/715

563 Format()

Format()

String Function

Syntax samplesFORMAT(<expression>, <total number of char-

acters in expression> {,<digitsafter decimal>})

DISPLAY “The value of Var1 is” $ FORMAT(Var1,

5)

Description

Converts a number to a string in the format specified. FOR-

MAT() should most often be used with the concatenation

operator (“$”) and another string, as in the syntaxexample

above. Format isoften used in conjunction with the

XWRITE statement to produce formatted output.

Valid In

 Any string expression.

Components

<expression>

This expression will be evaluated and converted to a string.

If the expression resultsin an integer, it will be converted to

a real.

<total number of characters in expression>

This expression formats the number so that it occupies a

total space equal to the number of digits before + number 

of digits after the decimal + one character for the decimal

point. For example if you were to do the following logic:

XWRITEfile1 Format (10.0 4 1) XWRITEfile1 Format (1.0

4 1),it will show up in the file as10.0 1.0 with a space

beforethe 1.0.

<digits after decimal>

 An expression that evaluates to the maximum number of 

digitsto theright of thedecimal. If there are more digitsto

the right of the decimal than this number, the excessdigitswill be truncated. If there are fewer digits, ProModelwill

pad the number with zeros.

Example

The logic below writesformatted output to a file with

XWRITE and FORMAT.

XWRITE File1, “The variable Var1 is” $ FOR-

MAT(Var1,5,2)

In this example, ifthe value of Var1 is378.87654, it would

be written to the file as:

The variable Var1 is378.87

(Two spaces)

See Also

WRITE and WRITELINE.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 577/715

ForResource()

Shift & Break System Function

Syntax samplesFORRESOURCE()

IF FORRESOURCE() THEN GET Res1

Description

Thisfunction returnsTRUE if the object executing the shift

or break logic isa resource.

Valid In

 AllShift or Break logic.

Example A shift called DAYS.SFT has five resources and eight loca-

tionsassigned to it. When the resources go off-shift, it is

desired to write the resourcename andsimulation time to a

file called RES_TIME. The following logic isplaced in the

off-shift logic.

IF FORRESOURCE() THEN

BEGIN

XWRITE res_time, “Shift for” $ RES(Resource()) $

“ended at” $ Clock(hr) $ “.”

END

See Also

FORLOCATION(). Also see Shift & Break Logic on page

404.

©ProModelCorporation

F orReso urce( ) 564

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 578/715

565 Free

Free

Resource-Related Operation State- 

ment 

Syntax samples

FREE {<quantity>} <resource>, {{quantity}

<resource>...}

FREE Res1, 2 Res2, 5 Res3A

FREEALL

FREE RES(Attr1)

Description

Frees resources which are currently “owned” by the cur-

rent entity. These resources must have been captured

through a GET or JOINTLY GET statement.

Valid In

Location processing logic and downtime logic.

Components

<quantity>

The number of thefollowing resourceto free. A value of 

zero isignored and valueslessthanzero result in an error.

This quantity may be anynumericexpression and iseval-

uatedand truncated to an integer everytime theFREEstatement isencountered.

<resource>

Thename of the resource tofree. TheALL keyword may

be used here to freeallresourcesowned byan entity. Any

resource which is notowned by the entitywill be ignored.

Example

In the following example, EntA arrives at Loc1 for a multi-

step process requiring the use of resources Res1 and

Res2. The first step requires the simultaneoususe of Res1

and Res2 for a normally distributed amount of time. Pro-

Model then freesRes1while Res2 performs the second

step of the process according to a Lognormaldistribution.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 JOINT LY GET Res1 AND Res2

WAIT N(4.5,.2)

FREE Res1

WAIT L(3.4,.23)

FREE Res2

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Loc2 FIRST 1 MOVE FOR 5

See Also

GET and JOINTLY GET.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 579/715

FreeCap()

General System Function

Syntax samplesFREECAP(<location>)

SEND FREECAP(Loc1) EntA TO Loc1

Description

Returns the available capacity of a location. Thisfunction

returnsan integer.

Valid In

 Any logicand any field except those fieldsevaluated only at

translation time. For a list of fields evaluated only at trans-

lation time, see Appendix on page 657.

Components

<location>

The name of the location to examine. The LOC() function

mayalso be used here.

Example

Suppose the entities, Platesand Cams,travelthrough an

assemblyline. The location, Assembly (capacity=1) joins

Camswith the Plates. When a Cam finishes processing at

Station2, it should not enter Station3 unless a Plate iswait-ing to join with it further down the assembly line at

 Assembly. If there is no Plate at Assembly, another loca-

tion, Buffer, sends one. The logic for Cam at Station2is as

follows:

IF FREECAP(Assembly) = 1 THEN

SEND 1 Plate TO Assembly

See Also

CAP().

©ProModelCorporation

FreeCap() 566

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 580/715

567 FreeUnits()

FreeUnits()

General System Function

Syntax samplesFREEUNITS(<location> or <resource>)

USE (FREEUNITS(Res1)) Res1 FOR 5 min

Description

Returns the free units of a location or resource.

Valid In

 Any logicand any field except those fieldsevaluated only at

translation time. For a list of fields evaluated only at trans-

lation time, see Appendix on page 657.

Components

<location>

The name of thelocation to examine.

<resource>

The name of theresource to examine.

Example

This example uses FREEUNITS() to assign a team of Spe-

cialists to rework a problem.The sizeof theteam, stored in

the local variable T_Size, isdetermined by all the free Spe-cialist units. Team_Time isa table function that varies the

amount of time ittakesto solve a problem (the amount of 

time in the USE statement) based on the number of units

on the team.

Process Table

Entity... Location... Operation (min)...

Problem Rework INT T_Size = FREU-

NITS(Specialist)

IF T_Size = 0 THEN T_Size = 1

USE T_Size Specialist FOR Team_ 

Time(T_Size) Hr 

Routing Table

Blk Output... Destination... Rule... Move Logic...

See Also

UNITS(), RES(), and LOC().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 581/715

Get

Resource-Related Operation/Move

Logic Statement 

Syntax samples

GET {<quantity>} <resource> {,<priority>}

{AND or OR {quantity} <resource> {,<priority>}...}

GET Res1

GET 3 Res1, 5

GET 2 Res1OR 3 Res2

GET Res1, 3 AND (Res2 OR Res3)

GET Res(Skill_required)

Description

Captures a specified number of resources as they become

available. If the entity alreadypossesses one of the

requested resources, the entity will still try to capture an

additionalunit of that resource. When capturing multiple

resources, each resource will be captured as soon as it

becomes available until allr esources are captured.

 A resource captured with the GET statement at one loca-

tion and then released with a FREEstatementat another 

location will not be used to move the entity between loca-

tionsunless it isalso specified in a MOVE WITH statementin therouting move logic. Otherwise, itis the entitythat is

moving the resource from onelocation to thenext and the

resource will not be visible when moving with the entity.

Resources captured by a GET statement can only be

preempted when the entity owning the resource isunder-

going a WAIT or USE time except in move logic. If the

resourceis preemptedduring one of those times, thetime

will continue where it left off when the resource becomes

available.

Every GET must have a corresponding FREE or an error occurs when the entity exits the system. If an entity owns

one or more resources and issubsequently temporarily

loaded onto or grouped with another entity, it cannot free

the resource(s) untilit isunloaded or ungrouped.

Valid In

Location processing, downtime, move, and shift logic. A

GET statement cannot follow a move related statement in

move logic.Components

<quantity>

The number of resources to get. A value of zero is ignored

and valueslessthan zero return an error.Thisnumeric

expression isevaluated and truncated every time the GET

statement is encountered.

<resource>

The name of the resourceto GET. You can substitute

RES() for the resource name.

<priority>

When multiple entities are waiting for the same resource to

become available, the entity with the highest priority will cap-

ture the resource first. Thisexpression should be a number 

between 0 and 999.

Example

To start a semi-automaticwelding process, we need a

static resource named “Operator.” Midwaythrough the

process, the Operator tests the weld with a resource

named “Tester,” shared with other operators. After the

test, the operator restartsthe welder. The Operator stays

with thewelder until he or she completes thelast part of the

operation. After the welding process the operator moves

the part to thebuffing area, completes thebuffing oper-

ation andthen is freed.

Process Table

Entity... Location... Operation (min)...

 Assy Weld USE Operator FOR 4 min

GET Operator 

USE Tester FOR U(2,.5)

WAIT 4 min

 Assy Buffer WAIT T(7,10,11)

FREE Operator 

Routing Table

©ProModelCorporation

Get 568

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 582/715

569 Get

Blk Output... Destination... Rule... Move Logic...

1 AssyBuffer 

FIRST

1

MOVE FOR

1.5

1 AssyChecker 

FIRST1

MOVEFOR 5

See Also

JOINTLY GET and USE.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 583/715

GetCost()

Cost Related Function

Syntax samplesGETCOST()

Description

Returns the cost of the current entity executing the logic.

Use this function to return the entity’sactual, accumulated

dollar amount.

Valid In

Operation logic only.

ExampleThe following example shows how to use the GETCOST()

function to generate a Time Series plot that trackschang-

ing entity cost as entities exit the system. (See table below.)

l Create a variable (e.g., Var1), select itto be of 

type real, and select time series statistics.

l For any location where an entity exits the system,

place the following as the last line in operation

logic:

Var1 = GETCOST()

Process Table

Entity... Location... Opn (min)...

EntA Shipping WAIT N(3,.52)

Var1=GETCOST()

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Exit FIRST 1

See Also

INCENTCOST, INCLOCCOST, and SETRATE.

©ProModelCorporation

GetCost() 570

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 584/715

571 GetReplicationNum()

GetReplicationNum()

General System Function

Syntax samplesGETREPLICATIONNUM()

Description

Returns the number of the currently running replication.

Valid In

 Any Logic.

Example

Based on the current replication, you maywant to make a

decision regarding the exporting of array data.

In this case, you could use an IF THEN statement com-

bined with the GETREPLICATIONNUM() function to

decide what data to exportbased on the currently running

replication.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 585/715

GetResRate()

Cost Related Function

Syntax samplesGETRESRATE({<resource>})

GETRESRATE()

GETRESRATE(Operator1)

Description

Returns the cost rate specified in the Cost dialog or through

the SETRATE() function for a resource currently owned by

the entity making the function call. When used without the

optional<resource> parameter, this function returnsthe

cost rate of the entity’smost recently captured, owned

resource.

If an entity ownsmultiple units of a resource, the function

returnsthe cost rate of the entity’s most recently captured

resource unit.

Valid In

Operation and move logic.

Components

<resource>

 A resource currently owned by the entity making the func-tion call. When you use GETRESRATE without this param-

eter, this function returns the cost rate of the entity’smost

recently captured, owned resource.

Example

 A clerk normally works an 8-hour shift. However, if the clerk

doesnot finish entering all the orders in his Input_Queue at

the endof theday, he must stayand finishthem. Since the

clerk ispaid time-and-a-half for any overtime, you must

increment the cost of the resourceby an additional halfof 

the normal rate to get the overtime rate. To do this, set a

variable equal to 1 in the pre-off-shift logic for the resource,

indicating the resource should go off-shift. If the variable is

equalto 1, incrementthe cost of a resourceby halfthe orig-

inalrate. (Since eachunit of the clerk hasa different rate,

you mustobtainthe costrate for the resourceowned bythe

entity.)

Process Table

En tit y... L ocat io n... Op n ( min )...

Order Order_desk GET Clerk, 399

WAIT N (4.5, .3)

IF Off_Shift_Var=1

THEN INCRESCOST GETRES-

RATE() *.50

FREE Clerk

Routing Table

Output... Destination... Rule... Move Logic...

1 Or der Shipping F IRST 1 MOVE F OR 1

See Also

GETCOST(), INCENTCOST, INCLOCCOST, INCRES-

COST, and SETRATE.

©ProModelCorporation

Get ResRate( ) 572

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 586/715

573 Goto

Goto

General Control Statement 

Syntax samplesGOTO <labelID>

GOTO LabelA

Description

Jumpsto the statement identified by the designated label.

 A label should follow the normal rules for names except

that it isfollowed by a colon in the logic. GOTO statements

maybe replaced by IF...THEN...ELSE statements.

Valid In

 Any logic.

Components

<label ID>

The name of thelabelto switchto. Omitthe colon on the

labelname here.

Example

This showshow a GOTOstatement is used to skip thefirst

two increment statementsbased on the value of an attrib-

ute.

Process Table

Entity... Location... Operation (min)...

Box Receive IF Attr1>1 THEN GOTOL1

INC V1

INC V2

L1:

INC V3

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Box Stores FIRST 1 MOVE FOR 5

See Also IF...THEN...ELSE, BREAK, and BREAKBLK.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 587/715

Graphic

General Operation Statement 

Syntax samplesGRAPHIC <expression>

GRAPHIC 2

GRAPHIC Var1

Description

Changes the entity’s or resource’scurrent graphic. Entities

and resources are assigned graphics from the graphics

library in the Entity or Resource editor. Use the GRAPHIC

to show the result of a process.For example, when a cus-

tomer sits down, the graphiccould change from a standing

person to a sitting person.

Valid In

When used in node entry, node exit, and resource-down-

time logic, GRAPHIC changes a resource’sgraphic. When

used in location processing logic, move logic, and arrival

logic, GRAPHIC changes an entity’s graphic.

Components

<expression>

The number of the entity’s or resource’snew graphic.

Example

In the example below, EntA arrives at Loc1 for a two step

operation. Upon arrival, the graphicicon of the entity

changes to Graphic 2. After the first two minute processing

time the icon changes to Graphic 3. Finally, the icon

changes to Graphic 4 after the second two minute proc-

essing time. (The difference between the two graphics may

only be color, but the two could be completelydifferent.)

Process Table

Entity... Location... Operation (min)...

EntA Loc1 GRAPHIC 2

WAIT 15 min

GRAPHIC 3

WAIT 25 min

GRAPHIC 4

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Loc2 FIRST 1 MOVE FOR 5

See Also

see Entities on page 152and see Resources on page 171.

©ProModelCorporation

Graphic 574

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 588/715

575 Group

Group

Entity-Related Operation Statement 

Syntax samplesGROUP <expression>{AS <entity name>}

GROUP (Var1+Var2)

GROUP 10 AS EntX

Description

 Accumulates and temporar ily consolidates a specified

quantity of entities into a single GROUP shell entity. The

shell entity retains the same attributesas the first entity that

wasgrouped into theshell. However, if the GROUP AS

statement isused, the new shell entity doesnot retain any

attribute values, even if the same name isused for the

GROUP shell entity as the entities that have been grouped.

The individualentities comprising the group retain their 

identities, attributes, and resources and are divided from

the group when an UNGROUP statement isencountered.

The firstentityprocessed from the group takesany

resources the group owns.Entitiesin a group can be

grouped into a larger group at another location.

Valid In

The operation column of process edit tables only. GROUPmaynot be used in combination with COMBINE, CREATE,

LOAD, UNLOAD, SPLIT AS, other GROUP statements in

the same processing logic, or with conveyors. An exception

to this rule is that an UNGROUP statement may follow a

GROUP statement in the same process.

Components

<expression>

The number of entities to group. If this expression iszero,

the statement is ignored.If less than zero,it generatesan

error.

This expression isevaluated every time an entity

encounters the GROUP statement, so the amount of enti-

ties to be combined can vary as the simulation progresses.

If it becomesless than or equal to the number of entities

alreadywaiting to be combined, the entity that encoun-

tered the GROUP statement willbe groupedwith all the

waiting entities.

AS <new entity name>

The optionalname of the resulting entity. If leftoff, the new

entityhas the same name asthe last entity to completethe

group.

Explicit Entity Actions

GROUP createsa shell (a temporary entity representing

grouped entities that starts with cost and time statistics of 

zero) to which ProModel assigns all cost and time statistics

for the group. Each grouped entity retains its individualcost

and time statistics and, when you ungroup the entities and

the shell disappears, ProModeldividesall statistics and

cost (accrued by the shell) between them.

Example

In this example, Man, Woman, and Child are grouped

together at Floor1 before getting on an elevator. The

group of entitytypes, called Grp_A, is then routed to Floor2

where it will be ungrouped. (See theUNGROUP state-

ment example.)

Process Table

Entity... Location... Operation (min)...

Man Floor1 WAIT E(2.0)Woman Floor1 WAIT U(3,1)

Child Floor1 WAIT N(2.1,.2)

 ALL Waiting GROUP 10 AS Grp_A

Grp_A Waiting GET Elevator 

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 ManWaiting

FIRST

1

MOVE FOR

0.51 Woman

WaitingFIRST

1

MOVE FOR

0.5

1 ChildWaiting

FIRST

1

MOVE FOR

0.5

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 589/715

Blk Output... Destination... Rule... Move Logic...

1 Grp_A

Floor2FIRST

1

MOVE WITH

Elevator 

See Also COMBINE, ACCUM, GROUPQTY(), and

ENTITY(). Also see Attributes and the GROUP/UN-

GROUP Statementson page 300.

©ProModelCorporation

Group 576

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 590/715

577 GroupQty()

GroupQty()

Entity-Specific System Function

Syntax samplesGROUPQTY({<entityname>})

ORDER GROUPQTY(Part1) Part2 TO Loc1

IF GROUPQTY(Part1) >5 THEN...

Description

Returns the number of entities of a specified type in a

grouped or loaded entity. If no name isspecified, it returns

the entire group quantity. If itis a loaded entity, it willonly

return the number of temporarilyloaded entities, not the

base entity. For example, if four Castings are temporarily

loaded onto a Pallet and called Batch, the GroupQty() will

return the number of Castings( i.e., 4), which doesnot

include the base entity Pallet.

In the case of hybrid nested groupswith severalmixed and

nested levelsof groups and loads, GroupQty() returnsthe

number of entities in the uppermost level only.

If multiple loads have occurred (no groups), either of dif-

ferent entitiesor at multiple locations, GroupQty() returns

the combined total of all loads

Valid InSpeed fields, traveling-time fields, conveyor-speed fields,

Resource fields, operation logic, routing fields, arrivallogic,

and debug user-condition fields. Thisfunction returnsan

integer.

Components

<entity name>

The optionalspecifictype of entity to search for in the

group.

Example A group of entitiescalled GRPA arrivesat Loc1 and proc-

ess for some amountof time according to a Normaldis-

tribution. If the group contains three or more entities it

routes to Loc2, otherwise it routes to Loc3. Routing

requires 1.2 minutes.

Process Table

Entity... Location... Operation (min)...

GRPA Loc1 WAIT N(3,.1)

IF GROUPQTY() > 2 THEN

ROUTE 1

ELSE

ROUTE 2

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 GRPALoc2

FIRST

1

MOVE FOR

1.2

2 GRPALoc3

FIRST

1

MOVE FOR

1.2

See Also

GROUP, UNGROUP, and ENT().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 591/715

If...Then...Else

General Control Statement 

Syntax samplesIF <Boolean expression> THEN <statement 1>

{ELSE <statement 2>}

IF Var1= 5 THEN WAIT 2min

IF (Attr2 = 5) OR (Var5 <>0) THEN WAIT 2 min

ELSE WAIT 3 min

IF Var1 > Attr2 THEN

BEGIN

Var1 = Attr2

WAIT Attr1END

ELSE

BEGIN

INC Var1

WAIT Attr2

END

Description

Executesa statement or statement block if the Boolean

expression istrue. If an ELSE statement isincluded and the

Boolean expression isfalse, an alternate statement or state-

ment block isexecuted. For an IF...THEN statement to be

broken intomore than oneline,the first itemon thenextline

must be THEN, AND, or OR. IF...THEN statementsonly

apply to the next statement or statement block in a logic.

 Any statements outside of the BEGIN and END willexecute

normally. See BEGIN and END for examples.

Valid In

 Any logic.

Components

<Boolean expression>

The condition to be tested.

THEN <statement 1>

The statement or block to be executed if the condition is

true.

ELSE <statement 2>

The statement or block to be executed if the condition is

false.

ExampleIn the following example an IF...THEN...ELSE test ismade

to see if the simulation clockisless than eighthours. If so,

the Client isrouted to Office1, otherwise the Client isrouted

to Office2.

Process Table

Entity... Location... Operation (min)...

Client Loc1 IF CLOCK(Hr ) < 8 T HEN

ROUTE1

ELSE

ROUTE2

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Client Office1 FIRST 1 MOVE FOR 5

2 Client Office2 FIRST 1 MOVE FOR 5

See Also

BEGIN, END, DO...WHILE, WHILE...DO, andDO...UNTIL.

©ProModelCorporation

If...Then...Else 578

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 592/715

579 Inc

Inc

General Operation Statement 

Syntax samplesINC <name>{, <expression>}

INC Var1

INC Attr2, 5+Var1

Description

Increments a variable, array element, or attribute by the

value of a specified numeric expression. When counting

the number of entities a location has processed, increment

a variable at the endof theprocessing logic.

Valid In

 Any logic.

Components

<name>

The name of any variable, array element, or attribute.

<expression>

The amount to increment the value. If this expression is

omitted, thevalue will be incremented by one. This can be

a negative number.

Example

The following example incrementstwo variables in the exit

logic. Num_complete isincremented by one, and Count is

incremented by the expression Attr1*Attr2.

See Also

DEC.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 593/715

IncEntCost

Cost Related Statement 

Syntax samplesINCENTCOST <expression>

INCENTCOST 15

INCENTCOST -15

Description

Enables you to increment the cost (positivelyor negatively)

of the current entityby a given amount. Use thisfunction to

add to the entity’s actual, accumulated dollar amount.

Please note

When working with new entities created through a

ROUTE statement, use INCENTCOST to assign an

initial cost t o entities. Initial entity cost defined fo r 

an entity in the cost module applies to entities

entering the system through a scheduled arrival,

the CREATE statement, o r the ORDER statement.

Valid In

Operation and Move logic.

Components

<expression>

The positive or negative change to the value of cost.

Example

The logic below allows you to addan initialcost to an entity

implicitlycreated through the ROUTE statement. In the fol-

lowing example, a Pallet of entities, PalletA, arrives at

Unload_Loc where workers unload entities called Box

every 20 secondsuntilthe pallet isempty. ProModeldeter-

minesthe number of Boxes unloaded from PalletA by the

value of PalletA’s attribute, Qty_Attr. In Move Logic, the

statement “IncEntCost 10” adds an initial cost of 10 dollars

to each implicitly created entity, Box.

Process Table

Entity Location... Opn (min)...

PalletA Unload_Loc int x = 0

WHILE x < Qty_Attr DO

{INC x

WAIT 20 sec

ROUTE2}

ROUTE1

Routing Table

Output... Destination... Rule... Move Logic...

1 PalletAExit

FIRST

1

2* Box

Conveyor1FIRST

1

INCENTCOST

10

See Also

GETCOST, GETRESRATE(), INCLOCCOST, INCRES-

COST, and SETRATE.

©ProModelCorporation

IncEntCost 580

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 594/715

581 IncLocCost

IncLocCost

Cost Related Statement 

Syntax samplesINCLOCCOST <expression>

INCLOCCOST 15

INCLOCCOST -15

Description

Enables you to increment the cost (positivelyor negatively)

of the current location by a given amount. Use this function

to add to the location’sactual, accumulated dollar amount.

Valid In

Operation logic.

Components

<expression>

The positive or negative change to the value of cost.

Example

The logic below showshow to add a cost per entry to a loca-

tion for an entering entity. ProModel automatically tracks

operation cost per time unit specified in the cost dialog,

however, you mayassign a onetime cost each time anentity enters a location.

In the following example, an entity, EntA, arrives for inspec-

tion at location Inspect. We define no rate of operation cost

for Inspect because each inspection accrues a one time

cost regardless of how long the entity remains at Inspect.

 At Inspect, workers inspect EntA. After inspection, Pro-

Model addsthe cost to the location through the IncLocCost

statement and then to the entity with the IncEntCost state-

ment.

Process Table

Entity... Location... Opn (min)...

EntA Inspect WAIT N(3,.7)

INCLOCCOST 3

INCENTCOST 3

Routing Table

Output... Destination... Rule...Move

Logic...

1 EntAPackaging

PROBABILITY

.93

EntA Rework .07

See Also

GETCOST, GETRESRATE(), INCENTCOST, INCRES-

COST, and SETRATE.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 595/715

IncResCost

Cost Related Statement 

Syntax samplesINCRESCOST <cost expression> {,<resource>}

INCRESCOST 10

INCRESCOST GETRESRATE(Operator1)*20,

Operator1

Description

Enables you to increment the cost (positivelyor negatively)

of a resource currently owned by the entity executing the

statement. Use this function to add to the resource’sactual,

accumulated dollar amount. When used without the

optional <resource> parameter, thisstatement increments

the cost rate of the entity’smost recently captured, owned

resource.

If an entityowns multiple unitsof a resource, thecost dis-

tributes evenly to each unit.

Valid In

Operation and move logic.

Components

<cost expression>The positive or negative change to the value of cost.

<resource>

 A resource currently owned by the entity executing the

statement. When used without the parameter, this state-

ment incrementsthe cost rate of the entity’smost recently

captured, owned resource.

Example

 A clerk normally works an 8-hour shift. However, if the clerk

doesnot finish entering all the orders in his Input_Queue at

the endof theday, he must stayand finishthem. Since the

clerk ispaid time-and-a-half for any overtime, you must

increment the cost of the resourceby an additional halfof 

the normal rate to get the overtime rate. To do this, set a

variable equal to 1 in the pre-off-shift logic for the resource,

indicating the resource should go off-shift. If the variable is

equalto 1, increment the cost of a resource byhalf the orig-

inal rate.

Process Table

En tit y... L ocat io n... Op n ( min )...

Order Order_desk GET Clerk, 399

WAIT N (4.5, .3)

IF Off_Shift_Var=1

THEN INCRESCOST GETRES-

RATE() *.50

FREE Clerk

Routing Table

Output... Destination... Rule... Move Logic...

1 Order 

Shipping F IRST 1

MOVEFOR 1

See Also

GETCOST(), GETRESRATE(), INCENTCOST, INCLOC-

COST, INCRESCOST, and SETRATE.

©ProModelCorporation

IncResCost 582

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 596/715

583 Int

Int

Local Variable Declaration Statement 

Syntax samplesINT <name1>{= <expression1>, <name2>=

<expression2>...)

INT Count

INT Count = 1

INT Count = 1, Test = FREECAP(Loc2)

Description

Creates a local variable of type integer. Local variables

work much the same as attributes, except that theyonly

are available within the logic that declares them. A new var-iable will be created for each entity that encounters an INT

statement. Local variables are not directlyavailable to sub-

routines, which have their own local variables. However, a

localvariable maybe passed to a subroutine asa param-

eter. Local variables are available inside referenced mac-

ros.

Use local variables where ever possible for the test var-

iable in WHILE...DO, DO...WHILE, and DO...UNTIL loops.

Valid In

 Any logic. Variables declared with INT are valid in anyexpression within the logic where a normal integer number 

is valid.

Components

<names>

 An identifier for the localvariable. This identifier must be a

valid name.

<expressions>

The variable will initially be assigned this value. Thisexpres-

sion isevaluated every time the INT statement isencoun-tered.

Example

 A plant manufactures pipes of 12 different types, such as

2" steel, 4" aluminum, etc. All workers inspect pipes at a

common inspection station after which theymove to a dock

where other workersload them into boxes.The boxes are

designed to hold only certain types of pipes. Therefore a

box designedto hold 2" steelpipescan only hold 2" steel

pipes, not 4" aluminum pipes.

Suppose a Box, enters a multi-capacity location, Dock.Each Boxhas a different entity attribute, b_type, describing

the type of pipe it can hold. Workersload pipes into the

Box.Workersmust loadthe 2" steel pipes into the box

designed to hold the 2" steelpipes. Therefore, the attribute

value of the Pipe, p_type, must match the attribute value of 

the Box, b_type. We can use local variables to accomplish

this modeling task. In the following example, we defined X

asa localvariable and set itequalto b_type:

Process Table

Entity... Location... Operation (min)...Pipe Inspect WAIT 5

Box Dock INT X= b_type

LOAD 5 IFF

X=p_type

Box Dock WAIT 10

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Pipe Dock LOAD 1 MOVE FOR 2

1 Box Delivery FIRST 1 MOVE FOR 8

See Also

REAL. Also see Local Variables on page 308.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 597/715

Join

Entity-Related Operation Statement 

Syntax samplesJOIN <expression><entityname> {,<priority>}

JOIN 4 EntA

JOIN Var1 EntA, 1

Description

Joins a specified quantity of a designated entity type to the

current entity. The entities joined to the current entity lose

their identities and any resources owned by the joining enti-

ties are transferred automaticallyto the base entity. Use

JOIN to simulate a component being assembled to a main

part, suchas when wingsare attachedto thefuselageof an

airplane.

Entities to be joined must be routed to the current location

with a JOIN rule. The currententitywaits until enough enti-

tiesto fillits request have been routed to the current loca-

tion with a JOIN rule.

The resulting entity retains the attributes and name of the

base entity. To transfer attributesfrom the joining entity to

the current entity, in the exit logic for the joining entity, copy

the desired attribute to a globalvariable. Then assign the

globalvariable to the attribute of the base entity after theJOIN statement in the processing logic.

 All resources owned by the joining entity are transferr ed to

the base entity. To JOIN an entity with a specificattribute

value to another entity with the same attribute value, use

the LOAD PERM statement.

Valid In

Operation logic only. More than one JOIN statement may

be used in the same logic.

Components

<expression>

The number of entitiesto be joined. A zero value is ignored

and a negative value generatesan error. Thisexpression is

evaluated when each entity first encounters it, but isnot re-

evaluated as the requested entities are joined.

<entity name>

The entity type to be joinedto thebase entity. Joining enti-

ties must come from a JOIN routing and lose their identity

once joined.

<priority>

 An entity with a higher priority willhave arriving entities

 joined to it before one with a lower priority. This expression

should be a number between 0 and 999. For more infor-

mation on priorities, see Priorities, at the beginning of this

section.

Explicit Entity Actions

JOIN passes cost on to the base entity but not statistical

information. ProModelcounts joined entitiesas exits.

Example

 A certain location on an assembly line manufacturing cars

attaches doorsbuilt on another assembly line. When the

Body of the car arrives at the Assembly location, we attach

a left door,Ldoor,and a right door,Rdoor, with a JOIN

statement. The paint station paintsthe doorsand routes

them to Assembly with a JOIN rule. Note that the Bodywill

wait untilwe join both doors before routing to the nextloca-

tion.

Process Table

Entity... Location... Operation (min)...

Rdoor Paint WAIT 30

Ldoor Paint WAIT 30

Body Assembly JOIN 1 Ldoor 

JOIN 1 Rdoor 

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Rdoor Assembly JOIN 1 MOVE F OR 3 0

1 Ldoor Assembly JOIN 1 MOVE F OR 3 0

1 EntB Cleaning FIRST 1 MOVE FOR 5

See Also LOAD, COMBINE, and GROUP. Also see Attrib-

utes andthe JOIN or LOAD PERM Statement on page

299.

©ProModelCorporation

Join 584

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 598/715

585 Jointly Get

Jointly Get

Resource-Related Operation State- 

ment 

Syntax samples

JOINTLY GET {<quantity>} <resource>

{,<priority>}

{AND or OR {<quantity>} <resource> {,<priority>}}

JOINTLY GET 3 Res1,5

JOINTLY GET 2 Res1 OR 3 Res2

JOINTLY GET Res1,3 AND (Res2 OR Res3)

JOINTLY GET 2 Res(Attribute1)

Description

Captures a specified number of resources when that

number of resources is available. When capturing multiple

resources, none of the resources will be captured untilall

are available. If the entity alreadypossesses one or more

of the requested resources, the entity will still try to capture

additional units of the specified resources.

Valid In

Location processing, downtime, move, and shift logic.

Components<quantity>

The number of resources to get. A value of zero is ignored

and valueslessthanzero return an error. This numeric

expression isevaluated and truncated every time the

JOINTLY GET statement is encountered.

<resource >

The name of theresource to JOINTLY GET. RES() can be

substituted for the resource name.

<priority>

When multiple entities request a resource, the requests will

be filled in order of priority. Thisexpression should be a

number between 0 and 999.

Example

In the following example (which also demonstrates the

FREE statement) EntA arrives at Loc1 for a multi-step

process. Because the first step of the process uses Res1and Res2 simultaneously, a JOINTLY GET statement is

issued to ensure that both resources are available before

the process begins. The resources are then freed inde-

pendently.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 JOINT LY GET Res1 AND Res 2

WAIT N(4.5,.2)

FREE Res1WAIT L(3.4,.23)

FREE Res2

Blk Output Destination Rule Move Logic

1 Car Parking_Lot FIRST 1 MOVE FOR 5

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Loc2 FIRST 1 MOVE FOR 1

See Also

GET and USE.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 599/715

Last()

Resource-Specific System Function

Syntax samplesLAST()

Var1=LAST()

IF LAST() =13 THEN Var3 = 0

IF LAST() = PathNet1.N1 THEN INC Var1

Description

Returnsthe name-index number of thenode from which a

resource has just traveled. LAST() can be usefulto choose

the appropriate graphicor to reset a variable. You can also

check the name-index number of the last node by spec-ifying <path networkname>. <name of thenode>. For 

example, if you wanted to know if the last node wasN5 on

the network Net3, you could specify “IF LAST() = Net3.N5

THEN...” in the node entry logic.

Valid In

Node entrylogic.

Example

ThisEntry Logic window shows that whenever a resource

entersa particular node a check is made to see ifthe name-index number of the last node equals one. If so, the

resource graphicis changed to Graphic 2, otherwise it is

changed to Graphic 3.

See Also

NEXT() and WAIT...UNTIL.

©ProModelCorporation

Last() 586

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 600/715

587 Ln()

Ln()

Math Function

Syntax samplesLN(<expression>)

Real1 = LN(Real2)

Description

Returns the natural logarithm of an expression.

Valid In

 Any expression. This function returns a real number.

Components

<expression>

LN() returnsthe natural logarithm of this expression.

See Also

EXP().

Please note

To get a logarithm to a particular base, use the fol- 

lowing formula:

logbase<expression> = LN<expression>/LN<base>

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 601/715

Load

Entity-Related Operation Statement 

Syntax samplesLOAD <expression>{PERM}{IFF <Boolean expres-

sion>}{IN <time>}{,<priority>}

LOAD 5, 99

LOAD 5 IFF Attr3 > 2 IN5 min

LOAD Pallet_Capacity

LOAD 5 PERM IN 10 min

Description

Loads a specified quantity of entities onto a base entity.

Temporarily loaded entities retain their identity and may be

unloaded with an UNLOAD statement. Permanently

loaded entities, using the PERM option in the LOAD state-

ment, do not retain their identity and cannot be unloaded

later. Loaded entities must be routed to the loading location

using the LOAD routing rule. Additional entities maybe

added to an entity’s existing load with additionalLOAD state-

ments. Use LOAD to model partsplaced into a container or 

pallet when they must be removed later. If a baseentity

owns a resourcewhen theentitiesare unloaded the

resource stays with the base entity. Anyresources owned

by permanentlyloading entities are transferred auto-

matically to the base entity. Anyresources owned by tem-

poraryloading entities are kept and cannot be freed until

the entities are unloaded.

Valid In

Operation logic only. A process may contain multiple load

statementsand no more than oneUNLOAD statement fol-

lowing all LOAD statements. LOAD maynot be used in the

same process with SPLIT AS, CREATE, COMBINE,

GROUP, or UNGROUP.

Components

<expression>

The number of entitiesto load onto thebase entity. This

expression isevaluated at the time the entity encounters

the LOAD request.

PERM

This option causesthe LOAD to behave thesameas the

JOIN statement. It will permanentlyjoin entities to the base

entity executing the LOAD statement. Anyresources

owned by the permanentlyloading entities are transferred

automaticallyto the base entity.

IFF <Boolean expression>

Thisoption allows the LOAD command to be conditional.

 Any attributes, entity functions, or location functionsapply

to theentityto be loaded, not to the baseentity. This tech-

nique allows only entities with certain properties to be

loaded onto the base entity. To use attributes, entity func-

tions, and location functionsthat apply to the base entity,

assign the desired value to a local variable and use the local

variable in the Boolean expression.

IN <time>

The entity will load entities up to the specified limit for this

amountof time andthen go on. Entitiesloadedwith this

option mayhave a load smaller than the specified amount.

<priority>

Waiting entitieswill load arriving entitiesby priority. This

expression should be a number between 0 and 999.

Explicit Entity Actions

LOAD does not transfer cost or statistics of the loaded

entity. However, if the PERM option is used, the cost of the

loading entity doesget transferred to the base entity.

Example

In this example, boxes are loaded onto a semi-truck. The

quantity isdetermined by the value of the Truck’sattribute,

 Attr1. The resulting entity retains the name Truck and is

sent on to its finaldestination, New York, Chicago, or Bos-

ton.

Process Table

Entity Location Operation...

Box Shipping Wait 2 Min

Truck MFgSite

T ruck Dock LOAD Attr 1 IN 2 HR

Routing Table

©ProModelCorporation

Load 588

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 602/715

589 Load

Blk Output... Destination... Rule... Move Logic...

1 BoxDock

LOAD

1

MOVE FOR 45

sec

1 TruckDock

FIRST1

MOVE FOR 10min

1 TruckNewYork

FIRST

1

MOVE FOR 24

hr 

Truck ChicagoFIRST

MOVE FOR 12

hr 

Truck BostonFIRST

MOVE FOR 28

hr 

See Also

LOAD, GROUP, UNLOAD, ACCUM, COMBINE, JOIN,GROUPQTY(), and ENTITY(). Also see Attributesand the

LOAD/UNLOAD Statementson page 301.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 603/715

Loc()

Name-Index-Number Conversion Func- 

tion

Syntax samples

LOC(<location name-index number>)

ORDER 10 EntA TO LOC(5)

DISPLAY “EntA arrived at” $ LOC(5)

Description

Convertsa name-index number or integer to a location

name. Use this function when a statement or function

needsthe name of a location butwhose name-index

number isstored in an attribute, variable, or some other expression. It can also be used to vary a selected location

based on the name-index number stored in the expression.

When used in a string expression, as in the second syntax

example above, ProModelwillconvert the name-index

number to the actual name of the location. If the expression

pointsto a unit of a multi-unit location, then the LOC() func-

tion will return the name of the parentlocation.

Valid In

 Any statement where a location name is normally used,

including the Destination field of the Routing edit table. Also

used in string expressions.

Components

<location name-index number>

The name-index number of the desired location. Thiscom-

ponent may be an expression, allowing the location to vary

as the simulation progresses. Real numbers will be trun-

cated to integers.

Example

Suppose there are five locations which appear one after 

the other in the Location edit table as follows: Dock1,Dock2, Dock3, Dock4, Dock5. Shipments could be ordered

to each of the five locations in rotation with the following

logic. Note that Dist() isa user-defined distribution that

returnsan integer value for the number of Shipments to

order.

INT Var1= 1

WHILE Var1 <=5 DO

BEGIN

ORDER Dist() ShipmentsTO LOC(Var1)

INC Var1

END

See Also

ENT(),RES(), andLOCATION().

©ProModelCorporation

Loc() 590

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 604/715

591 LocState()

LocState()

General System Function

Syntax samplesLOCSTATE (<locationname>)

Description

Returns a value indicating the current state of the specified

location. Return values will range from 1-7, which translate

to the following:

1 = idle/empty

2=setup

3 = operating

4 = blocked

5 = waiting

6 = up (multi-capacitylocation)

7=down

Valid In

 Any Logic.

Components

<locationname>

The name of thelocation.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 605/715

Location()

Location-Specific System Function

Syntax samplesLOCATION()

 Attr1 = LOCATION()

IF LOCATION() = 2 THEN WAIT 4 MIN

Description

Returns the current location’s name-index number. This

function isespecially useful in macrosand subroutinesthat

vary depending on which location’s logic calls them. By

using a LOCATION() function with an IF...THEN state-

ment, the macro or subroutine can act differently depend-

ing on the location that called it. Also, the same technique

can be used to determine whichlocation iscarrying outa

process when ALL isused as the process location.

Valid In

 Any logic.

Example

The individualovens of a ceramicsplant have different

capacities, but are otherwise exactly the same. While each

oven could be modeled as an individuallocation, it would be

easier to model this situation as a multi-unit location. Thisexample usesCAP() and LOCATION() in the processing

logic of the parent location to accumulate enough Sinks to

fill each oven.

Process Table

Entity... Location... Operation (min)...

Sink Oven ACCUM CAP( LOCAT ION( ))

Routing Table

Blk Output... Destination... Rule... Move Logic...1 Sink Cool FIRST 1 MOVE FOR 5

See Also

LOC() and ENTITY().

©ProModelCorporation

Location() 592

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 606/715

593 Log

Log

General Action Statement 

Syntax samplesLOG <string>, <expression>

LOG“Activity Time”, Attr1

Description

ProModelassumesthat the time stored in the expression is

in the model’s default time units set in the GeneralInfor-

mation dialog box. Use the LOG statement to record the

time from one statement to another statement by storing

the time of thefirst statement in an attribute,variable, or 

array element with CLOCK() and using the same attribute,

variable, or array element as the expression in the LOGstatement. Use the LOG statement to determine through-

put time or throughput in a particular section of the facility.

Valid In

Downtime logic, location processing logic, node entry and

exit logic, and routing exit logic.

Components

<string>

This string willbe stored in the filebefore the result of the

log expression and may not be a string expression. Usethis string to identify the number that follows.

<expression>

The result of this expression subtracted from the model’s

current time will be stored in the file <modelname>.LAP,

after the string above.

Example

The example below showsa LOG statement used to cap-

ture each Client’s total throughput time as theytravel

through the system. Time starts when the Client arrives at

Receptionist and stops when the Client exits through thedoor. The first process setsattribute CT equalto thecur-

rent clocktime.Next, Clients are sent randomly to one of 

three offices. Finally, when a Client leaves the system at

location OutDoor, the LOG statement records the cycle

time by subtracting the time stored in attribute CT from the

current simulation time.

Process Table

Entity... Location... Operation (min)...

Client Reception CT=CLOCK()

Client Auditor WAIT T(5,6,8)

Client Loan WAIT T (4.5,5,7)

Client Service WAIT N(6.2,1.1)

Client OutDoor LOG “Cycle Time”, CT

Routing Table

Blk Output... Destination... Rule...Move

Logic...

1 Client Auditor 

Loan

Service

RANDOM

1

RANDOM

RANDOM

MOVE FOR

1.5

1 ClientOutDoor FIRST 1

MOVE FOR

0.5

1 ClientOutDoor FIRST 1

MOVE FOR

0.5

1 ClientOutDoor FIRST 1

MOVE FOR

1.2

1 Client EXIT

See Also

WRITE, WRITELINE, and READ. Also see External Files

on page 349.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 607/715

MapArr 

General Action Statement 

Syntax samplesMAPARR <array name>{TO <variable name>}

MAPARR Array1 TO Var10

MAPARR Array5

Description

Starting with the variable you specify, the MAPARR state-

ment mapseachindividual cellof an array to a unique var-

iable (i.e., ifyou define 12 cellsfor thearray, the array will

mapto 12 variables). To displaythe cellvalue of a mapped

array, create a variable graphicfor the variable to which

you mapped the array cell. ProModelcollects statistics for 

an array cell through the variable to whichyou mapped the

cell. (Choose “Basic” or “Time Series” statistics for a

mapped variable, then view the variable in the Statistics Out-

putprogram.) The initialvalue of the array cells are not

written to the variables. Only changesto the array are

recorded.

If you do notspecifythe optionalvariable name in the state-

ment, ProModelwill unmap the array from the variables

that you originally mapped it. You can remap arrays by

using the MAPARR statement.

Valid In

 Any logic.

Components

<array name>

Map, unmap, or remap this array. The brackets, [ ], are

unnecessary after the array name in the statement.

TO <variable name>

The optional name of thevariable to whichyou mapthe firstcell inthe array. If you do not specifya name, ProModelwill

unmap the array from the variables.

Example

Suppose you want to dynamically view an array, Storage_ 

 Array, during simulation. The array has a dimension of 

2x3x2 (a three-dimensionalarray with 2 cells in the first

dimension, 3 cells in the second, and 2 cells in the third) and

contains a total of 12 cells (multiply all the dimensions

together).

Since you alreadyused the first 8 of the30 variablesdefined in the model, Var1 through Var30, you will start

mapping the array with Var9 andend with Var20 (the 12th

variable from Var9 listed in the Variables module). In the

initialization logic, use the following statement:

MAPARR Storage_Array TO Var9

The cells in Storage_Array will map to variables Var9 to

Var20 in the following order:

[1,1,1] ... Var9

[1,1,2] ... Var10[1,2,1] ... Var11

[1,2,2] ... Var12

[1,3,1] ... Var13

[1,3,2] ... Var14

[2,1,1] ... Var15

[2,1,2] ... Var16

[2,2,1] ... Var17

[2,2,2] ... Var18

[2,3,1] ... Var19

[2,3,2] ... Var20

In the Variables module, create graphics for variables Var9throughVar20 andplace them on thelayout. This willallow

you to view them during the simulation.

Please note

Changing the cell value of a mapped array will 

change the value stored in the array cell AND the

value of th e variable to which you mapped the spe- 

cific cell. Changing the value o f a variable (e.g., INC 

Var12), however, will change ONLY the variable

value and NOT the cell value of the mapped array 

cell. Also, when you use a mapped array in anexpression, the array returns the value of the var- 

iable mapped to it.

©ProModelCorporation

MapArr 594

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 608/715

595 Match

Match

Entity-Related Operation Statement 

Syntax samplesMATCH <attribute>

MATCH Attr1

Description

Causes the current entityto wait untilthe value of the spec-

ified attribute matches the value of another entity’s same

attribute. Both entities must have a corresponding MATCH

statement specified for the same attribute name. The two

entities maybe at any location in the model, including the

same location and two completelyunrelated locations.

Therefore, the value of the attribute to MATCH shouldalmost always be assigned to the value of a globalvariable

incremented for each entity that will be matched, as in the

following example.

Locationsusing the MATCH statement usuallyshould be

multi-capacity because otherwise they would not be able to

process anyother entities until the MATCH was made.

 Additionally, locations using MATCH usually should be

non-queuing to allow the entities to move out of sequence

when the MATCH isfulfilled.

Use the MATCH statement to pair two specificpartsbeforeassembling them, or to matcha workorder to a

completed job.

Valid In

The operation column of process edit tables only.

Components

<attribute>

 Any attribute associated with the processing entity.

Example

You can use a MATCH to recombine the partsof an entity

which has been split using multiple routing blocks. In the

example below, every time an EntAB arrives at the loca-

tion, the variable Count increments. ProModelassigns

 Attr1 for EntAB the value of count, which ensures that each

EntAB will have a unique value for Attr1. Additionally, when

each EntAB issplit intoEntAand EntB, both of the resulting

entities, (EntA and EntB) willhave the same value for Attr1.

EntA and EntB then travel independently through their 

respective processing steps, denoted by the ellipses.

Finally, EntA and EntB arrive at Loc10A and Loc10B

respectively, where each piece must wait for its matching

half to arrive before consolidating the entities with the JOIN

construct.

Process Table

Entity... Location... Operation (min)...

EntAB Loc1 INC C ount

 Attr1= Count

EntA Loc2 ...

EntA Loc10A MAT CH Attr 1EntB Loc3 ...

EntB Loc10B MAT CH Attr 1

JOIN 1 EntA

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntALoc2

FIRST

1

MOVEFOR 5

2 EntBLoc3

FIRST

1

MOVEFOR 5

... ... ... ... ...

1 EntALoc10B JOIN 1

MOVE FOR 30

sec

... ... ... ... ...

1 EntABLoc11

FIRST

1

MOVEFOR 5

See Also

WAIT...UNTIL and LOAD.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 609/715

Move

Entity-Related Operation Statement 

Syntax samplesMOVE {FOR <time expression>}

MOVE FOR .25 min

MOVE FOR 3.2

MOVE

Description

Moves the entity to the end of a queue or conveyor location.

Use the MOVE statement to explicitlycontrol the movement

of an entity through a queue or conveyor.

Please note

If th ere is no MOVE statement, when an entity 

enters a queue or conveyor, it executes all the proc- 

essing logic defined for the entity at that location

and then moves to the end of the queue or con- 

veyor. For queues, its movement time is based onthe entity’s speed and the queue’s length. For con- 

veyors, its movement time is based on the conveyor 

speed and length.

If an entity processing at a queue or conveyor encounters a

MOVE statement, the entity stops executing the processing

logic, moves to the end of the queue or conveyor inthe

appropriate amount of time,and then resumes theproc-

essing logic. The move-time for an entity on a conveyor is

calculated using the following formula:

Time = (Conveyor Length - Entity Length or 

Width)/Conveyor Speed

For queues only, a MOVE may optionallybe followed by a

FOR statement and then a move-time. If a move-time is

specified, the entity moves through the queue in the spec-

ified amount of time regardless of the entity’sspeed and the

queue’s length. Entitieswith shorter move timeswill catch

up to, but will not pass, entities with longer move times.

If a queue is notempty when an entityenters the queue,

then the move-time will continue to elapse even though thearriving entity’s graphicmay have stopped moving. When

an entity’smove-time haselapsed, an entity will begin

executing anylogic following the MOVE statement and then

will be available for routing, even if graphicallythe entity

doesnotappear to be at the end of the queue.

For a conveyor, if additional logic follows a MOVE state-

ment, theentitymustadvance to the last position on the con-

veyor before the remaining logic is executed.

Valid In

The operation column of process edit tables only, and only

ifthe location is a queueor a conveyor. MOVEmay onlybe

used once per logic.

Components

<time expression>

The amountof time needed for the entityto travel through

the queue. Thisexpression isignored for conveyors. It is

evaluated every time the statement isencountered and

should be on the same line asthe MOVEcommand.

ExampleThe example below shows the processing stepsnecessary

to mimic the behavior of a queue system using MOVE state-

ments. LocationsQueue1, Queue2 and Queue3 should

each be represented graphicallywith a queue symbol. The

time value in the MOVE statement representsthe time

required to traverse each queue section from beginning to

end when the queueis empty.

Process Table

Entity... Location... Operation (min)...

 ALL Queue1 MOVE FOR 2.5

 ALL Queue2 MOVE FOR 3.5

 ALL Queue3 ...

Routing Table

©ProModelCorporation

Move 596

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 610/715

597 Move

Blk Output... Destination... Rule... Move Logic...

1 ALL Queue2 FIRST 1

1 ALL Queue3 FIRST 1

... ... ... ... ...

See Also

Locations. Also see WAIT.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 611/715

Move For 

Entity-Related Move Logic Statement 

Syntax samplesMOVE FOR <time>

MOVEFOR 0

MOVE FOR 2.5 + CleanupTime

MOVEFOR N(8, .5) + 3 sec

Description

Used to specifythe amountof time required to movethe

entity. A move-time of zero maybe entered to cause events

for other entities occurring at the same simulation time to

be processed before anyadditional logic isprocessed for the current entity. If no move related statement (MOVE

FOR, MOVE ON, MOVE WITH) is specified, the entity

instantly enters the next location and immediatelybegins

executing the operation logic for that location.

Valid In

This statement is validin Move Logic. MOVEFOR maybe

encountered only once by an entity in the same logic.

Components

<time>

The length of time the systemtakes to executethe move.

This expression is evaluated whenever the statement is

encountered. If no time unit isspecified, the default time

unit specified in the GeneralInformation dialog isapplied.

Example

It takes 4 minutesfor the entity, Cutter, to move from one

location, Grinder, to the next location, Profiler.

Process Table

Entity... Location... Operation (min)...Cutter Grinder GET Operator WAIT 1

Cutter Profiler WAIT Attr1

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Cutter Profiler FIRST 1 MOVE F OR 4

1 Cutter Exit

See Also

MOVEON and MOVEWITH. Also see Routing Move Logic

on page 401.

©ProModelCorporation

Move For 598

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 612/715

599 Mo ve On

Move On

Entity-Related Move Logic Statement 

Syntax samplesMOVE ON <path network>

MOVE ON StatPath2

Description

Use thisstatement to move an entityalong a path network.

Valid In

This statement isvalid only in Move Logic. MOVE ON may

onlybe encountered once byan entityin thesame move

logic.

Components

<path network>

 Any valid path network name.

Example

 An entity, EntA, moves from StationA to StationB along a

network called Net1.

Process Table

Entity... Location... Operation (min)...EntA StationA WAIT 2

EntA StationB ...

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntAStationB

FIRST

1

MOVE ON

Net1

... ... ... ... ...

See Also

MOVEFOR andMOVE WITH. Also see Routing Move

Logic on page 401.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 613/715

Move With

Entity-Related Move Logic Statement 

Syntax samplesMOVE WITH <res1> {,p1}

OR <res2> {,p1}

{FOR <time >} {THEN FREE}

MOVE WITH Technician, 100

MOVE WITH Operator1, 399 FOR 3 min

MOVE WITH Truck1, 99 THEN FREE

MOVE WITH Operator1 OR Operator2

Description

Thisstatement isused to move an entity using a designated

resource such as a person or forklift. With the OR operator,

you can designate alternative resources for making the

move. In this case, the statement captures the first avail-

able resource designated in its expression and makes the

move. As soon as the destination becomesavailable, the

entity implicitlygets the resource. However, if one of the

resources isalready owned by the entity, it will use that

resource.

It also allows you to set the priority (p1) for accessing the

designated resource. If the resource isalready owned by

the entity, this priorityis ignored.

If the resource isstatic,you may specifya time (FOR <time

expression>) for the move. If a resource isdynamic, a time

(FOR <time expression>) isnot valid. If you use “FOR

<time>” with a dynamic resource, you will receive a run-

time error. The resource will travel based on either the time

or speed/distance defined in the path networksmodule.

The resourceused to make the move is freed only ifthe

THEN FREE option is used.

Valid InThisstatement isvalid only in Move Logic. MOVE WITH

mayonly be encountered onceby an entityin the same

move logic.

Components

<res1>

Resource to be captured and used to transport the entity.

<res2>

 Alternate resource to be captured and used to transport

the entity.

<priority>

The priorityfor accessing the resource. If the resource is

alreadyowned by the entity, this priorityis ignored.

<time>

The length of time the system takes to execute the move.

Used only if the resource isstatic. Thisexpression iseval-

uated whenever the statement isencountered. If no time

unit isspecified, the default time unit specified in the Gen-

eral Information dialog isapplied.

Example An entity moving from Station A to Station B may use either 

Tech1 or Tech2 to move theentity depending on which one

isavailable first. The resource isfreed after the move.

MOVEWITH Tech1 OR Tech2 THEN FREE

The same thing could be accomplished in longer form:

GET Tech1 OR Tech2

MOVE WITH OwnedResource()

FREE OwnedResource()

See Also

MOVEFOR and MOVEON. Also see Routing Move Logic

on page 401.

©ProModelCorporation

Move With 600

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 614/715

601 Next ()

Next()

Resource-Specific System Function

Syntax samplesNEXT()

Var1=NEXT()

IF NEXT() = PathNet5.N11 THEN Var5=3

Description

Returns the name-index number of the resource’sdes-

tination node. Use NEXT() to determine the direction an

entity isheaded and choose the appropriate graphic. This

function can be used to controlinterference between mul-

tiple transporterson thesamepath network.You can also

check the name-index number of the next node by spec-

ifying <path network name>. <nameof thenode>. For 

example, if you wanted toknow if the next node is N5 on

the network Net3, you could specify “IF NEXT() =Net3.N5

THEN...” in the node exit logic.

Valid In

Node exit logic. Thisfunction returnsa name-index

number.

Example

This Exit Logic window shows that whenever the resourceleaves a node a check is made to see ifthe name-index

number of thenextnode equals 1. If so, the resource

graphicis changed to Graphic 3. (Otherwise it ischanged

to Graphic 2.)

See Also

LAST() and WAIT...UNTIL.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 615/715

ObjectID()

Entity-Specific System Function

Syntax samplesObjectID()

Description

Returns the unique ID number associated with the entity

calling the function. As each entity enters the simulation,

whether through an arrival, order, or being created, its ID

number isincremented in sequence, thusensuring that

every ObjectID isunique throughout the simulation. The

first entity isgiven the number 1, and each subsequent enti-

ty’sID number is incremented by 1.

Valid In

 Any logic.

Example

Every 100th entity entering a process step must be routed

to a QA process. Bydividing the ObjectID number by 100,

you can route everyentitythat has no remainder (ID

number divides evenly by 100) to the QA process.

Process Table

Entity... Location... Operation (min)...

EntA Pre_QA Real T est

Test=ObjectID() Mod 100

If Test<>0 ThenRoute 1

Else Route 2

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Packaging FIRST 1

2 EntA QA FIRST 1

©ProModelCorporation

ObjectID() 602

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 616/715

603 Ord er  

Order 

General Action Statement 

Syntax samplesORDER <expression><entity>{TO <location>}

ORDER 10 EntA TO Loc2

ORDER Order_Qty_Attr ENT(Entity_Attr) TO

LOC(Loc_Attr)

Description

Causes the specified number of entities to be created and

placed into the system at the designated location. If the

location doesnot have enough capacity for all the new enti-

ties, the excessentities will be destroyed. Attributesfrom

the creating entity will be copied to the resulting entities.

Use ORDER to replenish inventories when a particular con-

dition occurs. Such as when an inventory reaches the mini-

mum level.

Valid In

 Any logic.

Components

<expression>

The number of new entitiesto be ordered. This field is eval-

uated every time the ORDER statement isencountered,

allowing the number ordered to vary as the simulation prog-

resses.

<entity>

The name of thenew entities. ENT() may be used for an

entity name.

<location>

The destination of the new entities. LOC() maybe sub-

stituted for the names of locations. If no location isspec-

ified, the entitieswill be ordered to the location of the

ORDER statement.

Example

In this example, EntA arrivesat LocA1 andtriggers an

order for 100 EntB’s to LocB1.

Process Table

Entity... Location... Operation (min)...

EntA LocA1 ORDER 100 E ntB T O L ocB1

EntB LocB1 ...

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntALocA

FIRST

1

MOVE WITH

Forklift

See Also

SEND, CREATE, and SPLIT AS.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 617/715

OwnedResource()

Resource-Specific System Function

Syntax samplesOWNEDRESOURCE ({<expression >})

OWNEDRESOURCE (2)

OWNEDRESOURCE (ResQty())

OWNEDRESOURCE ()

Description

Returns the name-index number of the nth resource cur-

rently owned by the entity or downtime making the function

call. The function parameter indicates the position of the

resource in the chronological list of owned resources. For example, OwnedResource(1) returns the longest owned

resourcein the listand so on.

When used without a parameter, this function returnsthe

most recent resource that the entity captured and still

owns.If the parameter value isnot withinthe range of the

resource list, or if the entity or downtime currently doesnot

own a resource, the function will return a 0 (zero) without a

warning or error message.

 A preempted resource is NOT removed from the list but

marked temporarilyto indicate that the preemptee doesnot own the resource. After the resource resumes the orig-

inal process after being preempted, it retains its original

rank in the list.

Valid In

Entity speed fields, traveling-time fields, resource fields,

resource downtime logic, location processing logic, location

downtime logic, routing fields, arrivallogic, debug user-con-

dition fields, and move logic.

Components

<expression>

The nth resourcecurrently owned bythe entity or down-

time making the function call. When this parameter is not

used, the function returns the last resource captured that is

still owned by the entity.

Example

Suppose an entity ownstwo resources. The first resource

was captured using the statement GET Worker. The sec-

ond resource was captured using the statement GETOper1 OR Oper2. We know the entityowns the resource

Worker,but we do not know if the entityowns Oper1 or 

Oper2.It is time to release thesecond resourceso we use

the following logic:

FREE OWNEDRESOURCE()

See Also

RES(), GET, JOINTLYGET, USE, and FREE. Also see

Resources on page 171.

©ProModelCorporation

OwnedResource() 604

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 618/715

605 Pause

Pause

General Action Statement 

Syntax samplesPAUSE{<string expression>}

PAUSE

PAUSE“Var1 =” $ Var1

PAUSE “Reached the midpoint of the simulation.”

Description

Pauses the simulation and optionally displays a message at

some point of interest. This pause allows the user to exam-

ine the system in detail. An information dialog boxwill

appear on the animation screen when the pause occurs.The simulation will continue only when the user selects

Resume Simulation from the Simulation menu.

Valid In

 Any logic.

Components

<string expression>

The optionalmessage to display.

ExampleThe simple example below pauses the simulation after the

100thEntAhas been processed at Loc1. The purpose for 

doing thismightbe to view the current state of the system

at this particular point in time.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT N(3.2,.1)

INC Total

IF Total>= 100THEN PAUSE

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Loc2 FIRST 1

See Also STOP, DISPLAY, and PROMPT.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 619/715

PercentOp()

General System Function

Syntax samplesPERCENTOP (<locationname>)

Description

Returns the cumulative operation time percentage for the

specified, single-capacitylocation. The value returned by

this function represents the cumulative percentage of time

the location was actuallyprocessing an entity up to the point

where the function was called.

If PercentOp() is called for a multiple-capacitylocation, the

value returned will always be zero, since operation time per-

centage is not calculated for multiple-capacitylocation

Please Note

The method u sed to calculate operation percentage

for this function is the same method used in the

output statistics.

Valid In

 Any Logic.

Components

<locationname>

The name of the location.

©ProModelCorporation

PercentOp() 606

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 620/715

607 PercentUtil()

PercentUtil()

General System Function

Syntax samplesPERCENTUTIL (<locationname>)

Description

Returns the cumulative utilization percentage for the spec-

ified location. The value returned by this function rep-

resentsthe cumulative percentage of capacity occupied at

the location,on average,at thetime the function was

called.

Cumulative OccupancyTime x 100

Capacity x Scheduled Time

Cumulative Occupancy Time in the above equation refers

to the sum of theclock time eachentityspends at a location

for processing.

PercentUtil() may be called to return percent utilized for 

both multi- and single-capacity locations.

Please Note

The method used to calculate utilization per- 

centage for this f unction is the same method used in the output statistics.

Valid In

 Any Logic.

Components

<locationname>

The name of thelocation.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 621/715

Preemptor()

Preemption Logic System Function

Syntax samplesPREEMPTOR()

Var1=PREEMPTOR()

Description

Identifies whether a downtime or entity ismaking the

preemptive request. The function returnsthe name index

number of the preempting entity; however, it returns a 0 if 

the preemptor is a downtime.

Valid In

Operation logic defined as a preemptive process.

Example

Workers mayprocess an entity, bracket,at one of two loca-

tions, Punch_1 or Punch_2. You may preempt the bracket

at Punch_1 byeither an entitywith a preemptive priority or 

a location shift downtime with a preemptive priority. If an

entity preempts the bracket, workers send the bracket to

Punch_2 to finish processing. Punch_1 and Punch_2 are

on the same shift,and are scheduled to go off-shift at the

same time. Therefore, if a shift downtime preempts the

bracket at Punch_1, the bracket wouldnot be able to go toPunch_2. In this case, the bracket issent to a location called

Punch_Wait where it waits for Punch_1 to come back on-

shift. The PREEMPTOR() function determines whether an

entity or shift downtime preemptsthe bracket.

Process Table

Entity... Location... Operation (min)...

Bracket Punch_1 WAIT 3 min

Bracket* Punch_1 IF PREEMPTOR()>0 THEN

ROUTE 1

ELSE

ROUTE 2

* Preemptive Process Record

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Bracket Inspect FIRST 1

1 Bracket

Punch_2 FIRST 1

2 BracketPunch_Wait FIRST 1

See Also

see Preemption Process Logic on page 399.

©ProModelCorporation

Preemp to r( ) 608

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 622/715

609 Priority

Priority

Shift & Break Logic Statement 

Syntax samplesPRIORITY <expression>

PRIORITY 199

Description

This statement isused to change the priority of the off-line

state of the location or resource. If the priorityis lessthan

the value set previously, the system will check if the location

or resource can be preempted.

Valid In

Shift and breakmain logic only. Thisstatement isnot valid

in pre-off shift or pre-breaklogic.

Components

<expression>

 Any expression that yields a value between 0 and 999.

Standard ProModelpriority levelsapply.

Example

Suppose you want to insure that the resource is non-

preemptable for the first four hours it isoff-shift. Simply

enter a high (e.g., 999) off-shift priority value in the prioritydialog in the Shift Assignmentsmodule. Enter the following

off-shift logic to lower the priority(to 99) four hours into the

off-shift period:

WAIT 4 hr 

PRIORITY 99

WAIT 4 hr 

SKIP

See Also

see Shift & BreakLogic on page 404.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 623/715

Prompt

General Operation Statement 

Syntax samplesPROMPT <string expression>, <name>{, <choice1>-

:<expression1>,

<choice2>:<expression2>, <choice3:-

<expression3>...}

PROMPT “Enter the number of entitiesto process:”,

Var2

PROMPT “Enter the size of batchesto accumu-

late:”,Var1, “Large”: 20, “Medium”: 15, “Small”: 10

Description

Pauses the simulation and displays either a message and

input field or a menu for selecting a choice. The value

entered or selected isthen assigned to the designated var-

iable, array element, or attribute. To have PROMPT

present a menu, specify one or more choices asin thesec-

ond syntaxexample above. The value alreadyin the var-

iable, array element, or attribute isused as the default

value inthe dialog box.One use of PROMPT is to give the

user the option to change the operation time represented

by a variable during a simulation.

Valid In

 Any logic.

Components

<string expression>

The message to display. Thisexpression should tell the

user what value to enter or choose.

<name>

The name of the variable, arrayelement,or attribute to

give the value.The value already in thisitem will be used as

the default value.

<choices>

 A string expression identifying the choice. Any number of 

choices may be specified, and all must have corresponding

expressions.

<expressions>

The value to assign the variable, array element or attribute

if the user selects the corresponding choice from the menu.

Example

The logic below uses PROMPT to let the user select anysize of a batch. Attr1 represents the batch size for EntA. If 

the batch size has notbeen set (if Attr1=0), then the user is

prompted to enter the batch size. The SPLIT AS statement

then splits the single entity into the number of entities spec-

ified in the prompt dialog box. The PROMPT statement in

thisexample displays the following dialog box.

IF Attr1=0 THEN

PROMPT “Enter the Batch Size”, Attr1

SPLIT Attr1 AS EntA

Example

Thislogic workssimilarlyto the logic in example one, except

that it usesPROMPT to let the user selectfrom oneof three

different sized batches. The PROMPT statement in this

example displays the dialog box below.

©ProModelCorporation

Prompt 610

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 624/715

611 Prompt

IF Attr1=0 THEN PROMPT “Enter the Batch

Size”, Attr1, “Small”:10, “Medium”:15,

“Large”:20SPLIT Attr1 AS EntA

See Also

PAUSE; DISPLAY. Also see Scenario Parameters on

page 322.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 625/715

Rand()

Math Function

Syntax samplesRAND(<expression>)

RAND(10) min

ORDER RAND(10) EntA TO Loc1

IF RAND(100) >45 THEN ROUTE 1

Description

Returnsa randomvaluen between 0 and X (0 <= n < X)

where X isthe result of the expression.

To generate random numbers between the expressionand a number other than zero use the expression as the

range between the maximum and minimum values. Then

addthe minimumto therandom number. For example, the

statement Attr1 = 2+RAND(3) generatesa random

number from two up to, but not including, five. An alternate

method is to use a uniform distribution.Note that the

RAND() function works very similar to a uniform dis-

tribution. For more information on Distributions, see Dis-

tribution Functions on page 521.

Thisfunction returnsa real number, although the real value

maybe converted to an integer.To have the RAND() func-tion generate random integer values between zero and

some upper bound, use the formula, Integer_Value =

RAND(X+1), where X is thegreatest integer that should be

returned bythe function. For example, to generate a ran-

dom integer value between zero and six, use the formula,

Integer_Value = RAND(7).The RAND(7) part of this for-

mula will actuallygenerate a real value between 0 and

6.999, but will be truncated to a whole number between 0

and 6 when assigned to an integer value. Therefore, when

generating integer values, make sure that the result of the

RAND() function isassigned to an integer value, or is used

in an expression where it will be truncated to an integer.

Valid In

 Any expression.

Components

<expression>

The upper limit of the random value to return. This value

will never be returned.

Example

Two resources, Oper_1 and Oper_2, perform the sametask at a location, Press. Oper_1 works at several other 

locations. As a result, Press only uses him 30%of the time.

The other 70% of the time, Oper_2 performs the task.

Process Table

Entity... Location... Operation (min)...

 Axle Press IF RAND(100) < 30 THEN

USE Oper_1

ELSE USE Oper_2

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Axle Lather FIRST 1 MOVE FOR 3

See Also

see Streams on page 355.

©ProModelCorporation

Rand() 612

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 626/715

613 Read

Read

General Action Statement 

Syntax samplesREAD <file ID>, <name>

READ File1, Var1

Description

Readsthe next numeric value from a generalread fileand

assignsthat value to a name. Generalread files are

defined in the External Files Editor. When reading from a

file, ProModelskips all non-numeric data, such as text, and

readsthe next numeric value. Thus comments and notes

maybe included in a read file. Multiple replicationsof a

model will continue reading from a file where the previousreplication left off unless reset with the RESET statement.

Please note

ProModel reads a period (.) in a General read file as

a zero. To avoid this, you should use the comment 

symbol (#) in front of notes and comments that 

contain a period.

READ can read ASCII files. Most spreadsheet programs

can convert spreadsheets to ASCII files (.TXT) and

comma-delimited files (.CSV).

If a readstatementis not assigning theright valuesto the

proper name, there may be numericinformation in the

read-file’sheader information (notes and comments). Addi-

tionally,if thevaluesare being read intoan array, the array

indices may not be incremented properlybetween reads.

Ifa read file should be read more than once in a model, it

may need to be reset. One way to tell when a file needs to

be reset iswith an end of filemarker such as9999 and the

following two linesof logic.

Read File1,Value

IF Value= 9999 then RESET File1

Valid In

 Any logic.

Components

<file ID>

The file identifier as defined in the External Files Editor.

<name>

The variable, array element, or attribute to be assigned the

value.

Example

The example below showsan outside file being read in the

 Arrival logicfor entity type Box. In this case three valuesrep-

resenting the length, width anddepth of eachBox are

listedon each line of a file called “Size.Dat.” The File ID for 

this file issimply Size. Length, Width, and Depth are all

entity attributes.

See Also

see General Read Fileon page 351. Also see RESET and

CLOSE.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 627/715

Real

Local Variable Declaration Statement 

Syntax samplesREAL <name1>{= <expression1>, <name2>=

<expression2>...)

REAL Var1

REAL Counter = 0

REAL Var1 = CLOCK(SEC), Random_Num =

RAND(10)

Description

Creates a local variable of type real. Local variables work

much the same as attributes, except that they only are avail-able within the logic that declares them. A local variable will

be created for each entity that encounters a REAL state-

ment. Local variables are not directly available to sub-

routines, which have their own local variables. However, a

localvariable maybe passed to a subroutine asa param-

eter. Local variables are available to macros.

Valid In

 Any logic. Variables declared with REAL are valid in any

expression within the logic where a real number is valid.

Components

<names>

 An identifier for the first localvariable. This identifier must

be a valid name.

<expressions>

The variable will initially be assigned this value. Thisexpres-

sion isevaluated every time the REAL statement isencoun-

tered.

Example

The example below usesa localreal variableto trackthetotal time an entity waits for another entity to be joined to it.

 A shipping area has an operation where invoices are joined

to boxes to produce packages. The user wants to know

exactly how long an invoice mustwait before a box arrives

to be joined. Bysetting the value of a localvariable, Start, to

the clock time just before the JOIN statement andusing a

LOG statement immediatelyafter the JOIN, we can deter-

mine how long eachinvoice had to wait before a box

arrived. A local variable isa better choice here than an

entity attribute because the only place the information is

needed is inside this logic.

Process Table

Entity... Location... Operation (min)...

Box Packing WAIT N( 10,3)

Invoice Shipping REALStart = CLOCK()

JOIN 1 Box

LOG "Delay:", Start

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Box Shipping JOIN 1 MOVE FOR 1

1 Package Dock FIRST 1 MOVE FOR 3

See Also

INT. See Variableson page 304.

©ProModelCorporation

Real 614

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 628/715

615 Real( )

Real()

Type Conversion Function

Syntax sampleREAL(<expression>)

Var2 = Var1 + REAL(Var3)

 Attr3 = 1.05 * REAL(Var5)

Description

Converts an integer to a real number. ProModelauto-

matically converts integers to real when needed.

Valid In

 Any expression.

Components

<expression>

REAL() converts this expression to a real number.

See Also

ROUND() and TRUNC().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 629/715

Rename

Entity-Related Operation Statement 

Syntax samplesRENAME {AS} <new entity name>

RENAME EntB

RENAME AS EntB

RENAME AS ENT(Var2)

Description

Renames the processing entity to the new entity name.

 After a RENAME statement is encountered, the entity then

searches forward in the processlist and again from the

beginning until a process isfound at the current locationthat hasbeendefined for thenew entitytype. No further 

logic will be executed for the entity under its originalname.

Use RENAME to start collecting statistics for an entity

under a new name. Usually, the easiest and most efficient

wayto rename an entity is simply byusing the new name as

the output entity in the routing.

Valid In

The operation column of process edit tables only.

Components

<new entity name>

The new name of the processing entity. ENT() may be sub-

stituted for the entity name.

Explicit Entity Actions

With RENAME, statistics and cost continue on with the

entity.

Implicit Entity Actions

ProModelallows you to define the RENAME action implic-

itly aspart of the routing definition.To do this, define a route

block with a different inputand outputname and the New

Entity option unchecked.

Example

The following example shows how two entities, EntA and

EntB, join together at Loc2. Once the join iscomplete,

ProModel renames the resulting entity EntC and processes

it according to a normal distribution N(9.4,.3). RENAME is

the last statement inthe process because assoon asyou

rename an entity, ProModel searches the processing logic

for a processfor the entity with the new name.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT 1.5 min

EntB Loc2 JOIN 1 EntA

RENAME AS EntC

EntC Loc2 WAIT N(9.4,.3)

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Loc2 JOIN 1

1 EntC Loc3 FIRST 1

See Also

COMBINE, SPLIT AS, and GROUP.

©ProModelCorporation

Rename 616

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 630/715

617 Rep ort

Report

General Action Statement 

Syntax samplesREPORT {WITH RESET} {AS <string expression>}

REPORT

REPORT WITH RESET

IF thruput = 50 THEN REPORT AS “RepOvr50”

Description

Calculatesand reportsthe current statistics to the output

database. This isuseful to get a snapshot of the model

while it isr unning.

The REPORT statement may be followed by the WITH

RESET option to reset the statistics after the report is

made to thedatabase When you use the WITH RESET

option, you generallywant to provide some looping or 

event creation that will callthe report function at the appro-

priate time.

Used with the ASoption, REPORT createsa report with

the name specified in the expression that can be accessed

in the Output Programwhen creating a GeneralStats

report.

Valid In

 Any logic.

Components

<string expression>

 A unique name given to the report so it can be easily iden-

tified in the General Stats dialog inthe Output Program. If 

any reportshave the same name,a number istacked on

the end of the name tomake it unique.

Example

To get a snapshotreport every40 hours, enter the fol-

lowing:

WHILE Clock(hr) < 10000 DO

BEGIN

WAIT 40 hr 

REPORT AS “40HOUR”

END

Thisresults in reportsnamed, 40HOUR,

40HOUR2, 40HOUR3....

Please note

If you use the REPORT statement even once, a final 

overall report will NOT be created since the report 

generated with your use of the statement may be

the final report desired. In this case, you must use

the REPORT statement at the end of termination

logic in order to create a final report if desired. If a

REPORT statement is never used, a final overall 

report is created automatically.

See Also

RESET STATS and WARMUP.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 631/715

Res()

Name-Index-Number Conversion Func- 

tion

Syntax samples

RES(<resource name-index number>)

USE 10 RES(Var1) for 1.5 min

FREE RES(Var1)

DISPLAY “Now using” $ RES(Var1)

Description

Converts a name-index number or integer to a resource

name. Use this function when a statement or function

needsthe name of a resource whose name index number 

isstored in an attribute, variable, or some other expression.

When used in a string expression expecting, such as in the

third syntax example above, ProModelwilloutput the actual

name of the resource.

Use RES() to assign a properly skilled operator according

to the attribute of the part or to change the dutiesof 

resources as the simulation progresses.

Valid In

 Any statement where a resource name is normally used,

except in the Move Logicfield in the Routing edit table. Also

used in string expressions.

Components

<resource name-index number>

The name-index number of the resource desired. This com-

ponent maybe an expression.Real numberswill be trun-

cated to integers.

Example

The logic below uses five different resource typesfor ten

minutes in rotation.

INT Var1= 1

WHILE Var1 <= 5 DO

BEGIN

USE RES(Var1) FOR 10 min

INC Var1

END

See Also

ENT(),LOC(), andGRAPHIC.

©ProModelCorporation

Res() 618

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 632/715

619 Reset

Reset

General Action Statement 

Syntax samplesRESET <file ID>

RESET Times

RESET (Times)

Description

Starts a general read file over from the beginning. RESET

isused primarily in the Initialization or Termination logic to

reset a general read or write file at the beginning or end of 

multiple replications and single, independent runs. RESET

can alsobe used to re-read cyclic data in the same sim-

ulation run. The parentheses are optionaland are included

onlyto insure compatibilitywith older models.

Valid In

Initialization and termination logic, node entry and exit

logic, down-time logic, location processing logic, routing

exit, and arrivallogic.

Components

<file ID>

The file identifier as defined in the External Files Editor.

Example

The example below showshow a general read file, Times,

isreset in the Initialization logic. Each time a simulation

begins, whether a single replication or one of several mul-

tiple replications, the Times file isreset so that calls to the

Timesfile start at the beginning of the file.

See Also

see ExternalFiles on page 349. Also see READ,WRITE,

XWRITE, and RESET.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 633/715

Reset Stats

General Action Statement 

Syntax samplesRESET STATS

IF Total= 20 THEN RESET STATS

Description

Resetsthe simulation statistics. Usefulin connection with

the REPORT statement to manually control statistics for 

reporting purposesin case specific or event logic.

Valid In

 Any logic.

Example

Supposeyou want to generate a new output report for 

each 20-hour period of the simulation. Enter the following

logic in an independent subroutine which isactivated at the

beginning of the simulation:

WHILE Clock(hr) < 10000 DO

BEGIN

WAIT 20 hr 

REPORTRESET STATS

END

See Also

REPORT and WARMUP.

©ProModelCorporation

Reset Stats 620

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 634/715

621 Resource()

Resource()

Shift & Break System Function

Syntax samplesRESOURCE( )

Description

Returns the name-index number of the resource currently

processing the off-shift or break logic.

Valid In

Pre-Off Shift, Off-shift, Pre-Break, Break, Resource Clock

DT, ResourceUsage DT, Resource Node and Subroutine

logic.

Example

Suppose you have locationsand resources as members in

a shift file assignment and you want to wait until variable

Parts_To_Processis equal to zero before allowing a par-

ticular resource called Operator to go off shift. You would

enter the following pre-off shift logic:

IF FORRESOURCE() THEN

BEGIN

IF RESOURCE() = Operator THEN

BEGIN

WAIT UNTIL Parts_To_Process= 0

END

END

See Also

LOCATION(), FORLOCATION(), and FOR-

RESOURCE().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 635/715

ResourceUnit()

Shift & Break System Function

Syntax samplesRESOURCEUNIT()

Description

Returns the unit number of the resource being used.

Valid In

Pre-Off Shift, Off-shift, Pre-Break, Break, Resource Clock

DT, ResourceUsage DT, ResourceNode andSubroutine

logic

ExampleWhen a multi-unit resource goeson shift, it issometimes

helpfulto know whichunit of the resource is going offshift.

Depending on theresource unityou maywant to skipthe

shift or update a variable that isused elsewhere in your 

model.

©ProModelCorporation

Reso urceUn it () 622

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 636/715

623 ResQty()

ResQty()

Entity-Specific System Function

Syntax samplesRESQTY({<resource name>})

IF RESQTY(Res1) > 5 THEN FREE5 Res1

Description

Returns the number of units of the specified resource that

the current entity owns. RESQTY() can be used to deter-

mine the amount of time necessary to process an entity

based on the number of resources an entity owns.

Valid In

Entity speed fields, traveling-time fields, resource fields,

location processing logic, routing fields, arrivallogic, debug

user-condition fields, and exit logic. This function returns

an integer.

Components

<resource name>

The name of theresource to check for. If no resource

name isspecified, the total number of units of all resource

types owned bythe entityis returned. RES() may be sub-

stituted for a resource name.

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. Before EntA’s

arrive at Loc1, theycapture a certain number of resources

named Res1. Processing logic at Loc1 determines how

manyRes1’s each EntA captured and processes it accord-

ingly. The more resources an entity captures, the more

workersavailable to workon theproject, and the less time

it takes.ProModelthen routes EntA’s on to Loc2. The logic

at Loc2makes sure that no EntA owns more than one

Res1.

Process Table

Entitiy... Location... Operation (min)...

EntA Loc1 WAIT 120/RESQTY(Res1)

Entitiy... Location... Operation (min)...

EntA Loc2 IF RESQT Y( Res1) >1 T HEN

FREE (RESQTY(Res1)-1)

Res1

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Loc2 FIRST 1

1 EntA Loc3 FIRST 1

See Also

FREECAP(), FREEUNITS(), and GROUPQTY().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 637/715

Return

General Action Statement 

Syntax samplesRETURN {<expression>}

RETURN

RETURN Attr1**Sqrt(Attr2)

Description

Sendsa value from a subroutine to thelogicthat called the

subroutine. In the same way that parameterssend infor-

mation from the calling logic to the subroutine, RETURN

sendsinformation from the subroutine to the calling logic.

 After the RETURN is executed, no more logicin the sub-

routine isexecuted. When subroutines return values, the

RETURN statement must be followed by an expression.

When used inlogicthat is nota subroutine,RETURN func-

tionslike a very powerful BREAK or BREAKBLK statement.

Whereas BREAK and BREAKBLK exit only the innermost

loop or statement block, RETURN exits the logic com-

pletely, no matter how deeplynested inside loopsand state-

ment blocks.

Valid In

 Any logic, but used most often in user-defined subroutines.Components

<expression>

The value to return.Thisexpression mustbe on thesame

line asthe RETURN. If a subroutine wasactivated, then

the return value isignored.

Example

The following example uses a subroutine to check the

supplyof items in a storage location. If the free capacityof 

the location isgreater than 10, the user is prompted for an

order quantity; otherwise no new items will be ordered. If 

an order ismade, the order time isreturned; otherwise the

variable OrdTm remains unchanged. The logic for Sub1()

appears in the logic window.

Process Table

Entity... Location... Operation (min)...

Item99 Stores

Item99 Shipping WAIT N(3.2,.2)

OrdTm = Sub1()

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Item99 Shipping SEND 1 MOVE F OR 15

1 Item99EXIT FIRST 1

See Also

see Subroutine Editor on page 327. Also see BREAK and

BREAKBLK.

©ProModelCorporation

Return 624

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 638/715

625 Ro un d( )

Round()

Math Function

Syntax samplesROUND(<expression>)

Integer1 = ROUND(3.5)

Description

Rounds the expression to the nearest whole number. Use

thisfunction to override ProModel’sdefault, truncation.

Valid In

 Any expression. This function returns an integer.

Components

<expression>

The expression to be rounded.

See Also

TRUNC() and REAL().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 639/715

Route

Entity-Related Operation Statement 

Syntax samplesROUTE <expression>

ROUTE 2

ROUTE Attr1

ROUTE Dist1()

Description

Immediately executes a routing block for the processing

entity before finishing any remaining processing logic. The

process doesnot continue untilall of the entities being

routed for the particular block have begun executing their move logic and pass controlback to the process

(see"ghost" etntity reference below). The processing logic

may contain several ROUTE statements. These state-

ments may be selected individually using IF...THEN state-

ments, or they may be processed sequentially, with or 

without other process statementsin between. If any

ROUTE statement appears in a process logic, then Pro-

Model assumesall routing for that process will be activated

bythe user and therefore doesno automatic routing. If no

ROUTE statement appears in the processing logic, then all

routing blocks will be executed automaticallyonce proc-

essing logic has been completed.

The ROUTE Statement is most oftenthe laststatementin

the process logic and isused with IF...THEN statements to

make routing decisions based on complex logic that isnot

available through other ProModelfeatures (such as system

functionsor the User Condition routing rule). ROUTE, if 

used with IF...THEN properly, will insure that only one of 

the routing blocksisactivated.

This statement can be used to route one or more entities

and leave behind a “ghost” entity that will process the

remaining logic after the route statement. The “ghost”entityis also referred to asthe parententity. The child entity

takes the route specified by the ROUTE statement. If the

child entity cannot go to the next location and isblocked, the

parent entity isalso blocked and will not continue logic

execution until the child entity isno longer blocked. For 

more information, see Entities on page 152.

Valid In

The operation column of process edit tables only.

Components

<expression>

The integer result of this expression determines the routing

block that the entity will take. The expression isevaluated

every time it isencountered, allowing the chosen block to

vary during the simulation.

Example

This example illustrates a “nested” probabilityrouting. The

initial entity, EntAB, enters Loc1 and ProModelmakesa

decision based on the user-defined distribution Dist1()

whether to route the resulting entities according to Route 1,

Route 2, or Route 3. If ProModelchoosesRoute 1, it sends

an EntA60%of the time, or an EntB40%of the time, to

Loc2. If ProModelchoosesRoute 2, itsends an EntA 20%

of the time, or an EntB80%of the time, to Loc3. If Pro-

Model chooses Route 3, it sends an EntA 30% of the time,

or an EntB 70% of the time, to Loc4.

Process Table

Entity... Location... Operation (min)...

ENT AB Loc1 Route Dist1( )

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Loc2 .600 1 MOVE FOR 2

EntB Loc2 .400 MOVE FOR 2

2 EntA Loc3 .200 1 MOVE FOR 2

EntB Loc3 .800 MOVE FOR 2

3 EntA Loc4 .300 1 MOVE FOR 2

EntB Loc4 .700 MOVE FOR 2

See Also

see Routing Ruleson page 501.

©ProModelCorporation

Route 626

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 640/715

627 Send

Send

General Action Statement 

Syntax samplesSEND <expression><entityname> TO <des-

tination>{,<priority>}

SEND 2 EntATO Loc2

SEND 1 Grp_A TO Grp_A_Processing, 10

Description

Sends the specified number of a particular entity type to

the destination. The entities to be sent must be waiting with

a SEND routing rule. The entity that issued the SEND com-

mand continues processing whether or not entitiesof the

type requested are waiting to be sent.If no entitiesare wait-

ing to be sent, a SEND notice isautomatically posted so

that entities will be sent when theybecome available.

The SEND statement can modela system based on

demand, rather than on entity arrival, (called a pull sys-

tem). Customer orders cause a SEND to be issued for a

main assembly. Main assembly issuesSEND commands

for sub-assemblies. The example model SEND hasan

excellent example of thistechnique.

The SEND statement can also be used asa control device

to limit the amount of work-in-progress (WIP) in certain crit-ical areas. Quantities are only sent to the production area

when the WIPlevel fallsbelow a certain point.

Valid In

 Any logic.

Components

<expression>

The number of entities to send to the destination. Negative

values will generate an error message.

<entity name>

The type of entityto send to the destination. You may sub-

stitute ENT() for an entity name.

<destination>

The name of thelocation to which the entitieswill be sent.

You maysubstitute LOC() for the location name.

<priority>

Multiple SEND requests for the same entity type are filled

according to the longest waiting request having the highest

priority. Thisexpression should be a number between 0

and 999. For more information on priorities, see Priorities,

at the beginning of this section.

Example

In this example, EntA’s arrive at LocA1 and trigger the

sending of EntB’s to LocB2. The value of EntA’s Attr2 deter-

minesthe number of EntB’s sent to LocB2.

Process Table

Entity... Location... Operation (min)...

EntA LocA1 WAIT U(3,.5)

SEND Attr2 EntB TO LocB2

EntB LocB1 Wait 5 m in

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA LocA2 FIRST 1

1 EntB

EntB

EntB

LocB2

LocB3

LocB4

SEND 1

SEND

SEND

See Also

ORDER, JOIN, ROUTE, WAIT...UNTIL, and LOAD.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 641/715

SetRate

General Operation Statement 

Syntax samplesSETRATE <resource name>, <expression>,

<unit #>

SETRATEOperator, 25, 3

Description

 Allows you to define the regular rate of cost for resources

containedin a model. If you have alreadydefined the reg-

ular rate in the Cost module, this statement will override

that rate. You can use SetRate to set different ratesfor 

each unitof a resource.

Valid In

Initialization logic.

Components

<resource name>

The name of the resource whoserate you wish to set.

<expression>

The rate assignedto the resource.

<unit #>

The unit number of the resource. Where multiple instances

of a resource exist, you must specify which instance of the

resourceto use (e.g., Tech1, Tech2, Tech3, etc.). The key-

word ALL maybe used to indicate all instances of a

resource.

Please note

SETRATE uses the time units defined for the

model. (By default, SETRATE uses hou rs.)

ExampleThe logic below displayshow you can uniquely assign the

regular rate for each unit of a resource, Operator. Oper-

ator hasthree units, meaning that each unit can perform

the sametask. However, eachof thethree Operators hasa

different hourly rate. We set these ratesin the Initialization

logic using the following:

See Also

GETCOST, GETRESRATE(), INCENTCOST, INCLOC-COST, and INCRESCOST.

©ProModelCorporation

SetRate 628

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 642/715

629 Skip

Skip

Shift & Break Logic Statement 

Syntax samplesSKIP

Description

In pre-off-shift or pre-break logic, a SKIP statement

causes anyoff-shift or breakmain logic to be skipped as

well asthe off-shift or break time defined in the shift file so

that the affected location or r esource stays on line.

In off-shift or breaklogic, a SKIP statement causes the off-

shift or break time defined in the shift file to be ignored. This

isuseful if you want to define your own off-shift or break

time as part of the logic rather thanuse the time defined in

the shift file.

Valid In

Shift logic only.

Example

Suppose a Worker isscheduled to go on breakat 10:15 for 

fifteen minutes. However, if there are more than two parts

in queue, the Worker will skip his or her breakto stay on

schedule. The following logic isentered in the pre-break

logic for the resource, Worker.

IF Contents(Worker_Que) > 2 THEN SKIP

See Also

see Shift & BreakLogic on page 404. Also see FOR-

LOCATION() and FORRESOURCE().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 643/715

Sound

General Action Statement 

Syntax samplesSOUND <string expression>

SOUND “Chimes.wav”

SOUND “Tada.wav”

Description

Playsa wavefile. Wavefiles, which have the extension

.WAV, maybe purchased commercially or created with a

sound card. A few sounds,such as the examples here,

come with Windows and are found in the Windows direc-

tory.Use SOUND to alert a model’s user that some event

has taken place.

Valid In

 Any logic.

Components

<string expression>

The DOS name of thewavefile to be played.Thisexpres-

sion must evaluate to a validDOS file. It may includea path.

Example

The example below shows an entity’soperation logic. A var-

iable called Totalis used to keep trackof the number of enti-

ties passing through the location. Every 100th entity to pass

through the location will cause the sound “Tada” to sound,

thusnotifying the user of the 100th entity. In addition, Pro-

Model resets the counter.

See Also

PAUSE, DISPLAY, and PROMPT.

©ProModelCorporation

Sound 630

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 644/715

631 Split As

Split As

Entity-Related Operation Statement 

Syntax samplesSPLIT <expression>AS <new entity name>

SPLIT 10 AS Entx

Description

Splits an existing entity into a number of new entities

(greater than one) you specify, and optionally changes the

entity names. The treatment of cost and time statistics is

based on whether the Split As statement isused explicitly

or implicitlyas defined later. ProModelcounts the old entity

as an exit and the resulting entities share the same attrib-

ute values as the original entity.

 Any entity you wish to split must release all owned

resources using the FREE statement. Use SPLIT AS to

divide pieces of raw materialinto components. The entities

formed by the SPLIT AS statement at a location will not

appear in the statistics for thislocation.

Valid In

The operation column of process edit tables only. Pro-

Modeldoesnot allow SPLIT ASon conveyors, andnot at

the end of a queue. You alsomay notuse SPLIT AS after a

ROUTE statement. Do not use SPLIT AS in combinationwith COMBINE, CREATE, GROUP, UNGROUP, LOAD,

UNLOAD, or other split statementsin the same process

logic.

Components

<expression>

Split the entity into this number of entities. ProModeleval-

uates this expression every time it encounters the state-

ment.

<new entity name>

The name of the resulting entities. Each split entity

searchesforward in the processlist, and then from the

beginning of the list, until it finds a process for the new

entity type at the current location.

Explicit Entity Actions

When you use the SPLIT AS statement as an explicit entity

action, ProModeltransfers the accrued cost from the orig-

inal entity to the new entities and divides it evenly betweenall of them, and countsthe old entityas an exit.

Time statistics however are treated differently. The

accrued time stays with the original entity when it is

countedas an exit, and eachnew entitybeginsat zero with

new time statistics.

The results will show that the original entity and new enti-

ties each have their own time statistics but only the new enti-

ties will have costs as all accrued costs from the original

entity were passed to and split between the new entities.

Implicit Entity ActionsProModelallows you to split entities implicitlyas part of the

routing definition.To do this, define a route block with a

Quantity field output value greater than one and the New

Entity option unchecked.

When you split entitiesimplicitly, ProModel transfers the

accrued cost from the original entity to the new entities and

dividesit evenly among all new entities, and countsthe old

entity as an exit – same treatment as an explicit entity

action.

In this case time statistics however are treated differently

than explicit entity actions . The accrued time getstrans-

ferred in fullto each of the new entities. The resultswill

show that theold entityhas no time or cost stats, and the

new entities have all the time and cost stats.

Example

In the following example, a batch of entities, Batch A,

arrives at Loc1 for a 2 hour processing time. Once the proc-

essing completes, BatchA splits into individual entities

called EntA. ProModeldetermines the number of EntA’s

resulting from the SPLIT AS statement by the value of Bat-chA’sattribute, Attr3.

Process Table

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 645/715

Entity... Location... Operation (min)...

BatchA Loc1 WAIT 2 H r  

SPLIT Attr3 AS EntA

EntA Loc1 USE Res1 F OR U (2,.3)

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Loc2 FIRST 1

See Also

JOIN, GROUP, UNGROUP, and CREATE.

©ProModelCorporation

Split As 632

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 646/715

633 Sq rt ()

Sqrt()

Math Function

Syntax samplesSQRT(<expression>)

Real1 = SQRT(Real2)

Description

Returns the square root of an expression.

Valid In

 Any expression. This function returns a real number.

Components

<expression>

SQRT() returns the square root of this expression.

See AlsoROUND().

Please note

To get a root other than the square root, use the

exponentiation operator as shown in th e following

formula:

X**(1/Y)

For example, where Y is the desired root, the for-

mula 9**(1/3) returns the cube root of 9.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 647/715

Stop

General Operation Statement 

Syntax samplesSTOP {<string expression>}

STOP

STOP “Normal termination”

Description

Terminatesthe current replication and optionally displays a

message. The simulation will then continue with the next

replication. Use STOP to end a replication when the sim-

ulation has run long enough to provide sufficient statistical

data.

Valid In

 Any logic.

Components

<string expression>

 An optional message to display when the replication stops.

Example

In the example below, a STOP statement is used in Oper-

ation Logic to end the simulation whenever the variableTotal_Complete reaches100.

See Also

BREAK, BREAKBLK, RETURN, and PAUSE.

©ProModelCorporation

Stop 634

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 648/715

635 ThreadNum()

ThreadNum()

General System Function

Syntax samplesTHREADNUM()

IF THREADNUM()=215 THEN DEBUG

Description

Every time any logic isexecuted, it isexecuted by a thread

which isassigned a unique number. THREADNUM

returns the number of the thread that called the function.

This function ismost usefulin conjunction with the

IF...THEN andDEBUGstatementsto bring up the

debugger at a certain process. See below for a detailed

example. Note that if the modeldoesnot change betweensimulation runs, every thread will have the same number 

from run to run,but not from replication to replication. Also,

most changesin a modelwill cause threads to have dif-

ferent numbers on subsequent runs.

Valid In

 Any logic

Example

For example, suppose that when the 50th entity of a certain

type arrives at a certain location, the model alwayscrashes. A DEBUG statement at the beginning of the proc-

essing logic would be cumbersome because the debugger 

would come up forty-nine timesbefore itwas needed. How-

ever, when the error occurs, the debugger displays the

processand logic that caused the error, asshown below.

By adding the statement, “IF THREADNUM() = 210

THEN DEBUG” before the statement that causes the

error, the simulation will run untilthe proper process and

then bring up the debugger.The debugger can then be

used to step through the process to find the particular state-

ment causing the error.

See Also

DEBUG.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 649/715

TimeLeft()

Preemption Logic System Function

Syntax samplesTIMELEFT()

 Attr1=TIMELEFT()

Description

Returns the time remaining if the preemption occurred dur-

ing a WAIT statement. The value returned isin default time

units and must be checked before anyprocessing delay

occurs since the value isupdated whenever a preemption

takes place. If thevalue is referredto later, itshould be

assigned to the entity’sattribute or to a local variable.

If several entities were preempted at a location, the value

returned bythe function to eachentity will be taken from

whichever entity hasthe largest time remaining in the WAIT

statement.

When no units are specified in the parentheses in this func-

tion, it returns the default time unit specified in the General

Information dialog.

Valid In

Operation logic defined as a preemptive process.

Example

You may preempt an entity called Gear while it processes

at a location called Lathe1. When you preempt the Gear, it

shouldgo to a location called Wait_Area where itwaits to

return to Lathe1. When itreturns to Lathe1, the lathe

should continue processing the Gear from where it left off 

when you preempted the Gear. For example, if Lathe1

must processthe Gear for a totalof 10 minutes, but it only

processes for 8 minutes before you preempt the Gear,

Lathe1 should process it for only 2 additionalminutes when

it returnsto Lathe1. To do this,we assign theremaining

process time using TIMELEFT() to an attribute, Att1. We

also check Att1 at Lathe1to determine if it is greater than 0

to know whether the Gear wasexecuting the process for 

the first time or as a preempted entity. Processing should

be as follows:

Process Table

Entity... Location... Operation (min)...

Gear Lathe1 IF Att1=0 THEN WAIT 10

ELSEWAIT Att1

Gear * Lathe1 Att1=TIMELEFT()

Gear Wait_Area

* Preemptive Process Record

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Gear Lathe2 FIRST 1

1 Gear Wait_Area FIRST 1

1 Gear Lathe1, 99 FIRST 1

See Also

see Preemption Process Logic on page 399.

©ProModelCorporation

TimeLeft() 636

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 650/715

637 TimesUsed()

TimesUsed()

General System Function

Syntax samplesTIMESUSED(<resource>)

IF TIMESUSED(Res1) >5 then USE Res2 for 10

Description

Returns thenumber of timesa resource hasbeen used.

Valid In

 Any logicand any field evaluated after translation. For a list

of fieldsevaluated after translation, see the Appendix.

Components

<resource>

The name of theresource to examine.RES() may be used

here.

Example

In the example below, when an EntA arrives at Loc1, it will

onlyusethe resource Res1 if the resource hasbeenused

five or fewer times. If the resource has been used more

than five times, EntA will use Res2 instead.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 IF T IMESUSED ( Res1)> 5

THEN USE Res2 FOR 10

ELSEUSERes1 FOR 10

Routing Table

Blk Output... Destination... Rule... Move Logic...

See Also

UNITS().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 651/715

Trace

General Action Statement 

Syntax samplesTRACE {<message>}{STEP or CONT or OFF or 

CLOSE}

TRACE “Begin Test for Resource A”

TRACE CONT

TRACE CLOSE

Description

Turns tracing on and off. Trace listings will appear in a sep-

arate window on thescreen. Use trace to follow the logical

flow of a model.

Valid In

 Any logic.

Components

<message>

The message to appear in the trace listing when the

TRACE statement isencountered. The message can be

any string expression.

STEP

Makes ProModel wait for the user to click the left mouse but-

ton to execute the next statement or trace continuously

while the right mousebutton is held down. TRACE state-

ments default to step.

CONT

Stepscontinuously without user intervention. Clicking the

right mouse button will step through the logic.

OFF

Turns tracing off but does not close the trace listing.

CLOSE

Turns tracing off and closes the trace listing.

Example

In this example, a message will appear in the trace listing

whenever Agent1 and Agent2 have been captured and the

downtime for Gate1 begins. Another message will appear 

in the tracelisting at the endof the downtime.

See Also

DEBUG.

©ProModelCorporation

Trace 638

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 652/715

639 T ru nc()

Trunc()

Type Conversion Function

Syntax samplesTRUNC(<expression>)

Integer1=TRUNC(3.9)

Description

Returns a real expression truncated to an integer. Anydig-

itsto theright of the decimalplace will be removed. When

necessary, ProModel automatically converts real values to

integers by truncating them. For more information about

ProModelautomatically converting between realsand

integers, see Converting Between NumericT ypes on

page 492.

Valid In

 Any expression. This function returns an integer.

Components

<expression>

The expression to be truncated.

See Also

ROUND().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 653/715

Ungroup

Entity-Related Operation Statement 

Syntax samplesUNGROUP {LIFO}

UNGROUP

UNGROUP LIFO

Description

Separates entities that were grouped with the GROUP

statement. Each of the resulting entities searches ahead in

the process list and then fromthe beginning of the list until a

process isfound that has been defined for that entity type at

the current location. The first entity processed from the

group takes any resources the group owns. If a grouped

entity has members that are also grouped entities, only the

top level group isungrouped with an UNGROUP state-

ment. An additionalUNGROUP will ungroup anymember 

groups.

Valid In

The operation column of process edit tables only. You may

notuse UNGROUP on conveyorsnor at theend of a

queue. UNGROUP may not be used in combination with

COMBINE, CREATE, UNGROUP, LOAD, UNLOAD,

SPLIT AS or other UNGROUP statements in a processinglogic. It mayfollow a GROUP statement no morethan once

in the same processing logic to allow batch processing.

Please note

If you are trying to ungroup an entity that has

never been grouped, ProModel ignores the

UNGROUP statement.

Components

LIFO

Last In, First Out. Starts the ungrouped entities processing

from last to first, rather than from firstto last. If thisoption is

not specified, the ungrouped entities will be processed

FIFO, or First In,First Out.

Explicit Entity Actions

With an UNGROUP, ProModel dissolves the temporary

shell and dividescosts among the ungrouped entities

(ungrouped entitiesmay include smaller clusters of grouped entities).

Example

The example below isthe continuation of the GROUP state-

ment example where EntA, EntB and EntC were grouped

to formGrp_A. Now the entitiesare ungroupedwith all of 

their originalproperties. (See the GROUP statement exam-

ple.)

Process Table

Entity... Location... Operation (min)...

Grp_A Loc3 UNGROUP

EntA Loc3 USE Res1 F OR 2 min

EntB Loc3 USE Res1 F OR 2 min

EntC Loc3 USE Res1 F OR 2 min

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Loc4 FIRST 1 MOVE FOR 21 EntB Loc5 FIRST 1 MOVE FOR 2

1 EntC Loc6 FIRST 1 MOVE FOR 2

See Also

GROUP, LOAD, JOIN, COMBINE, and SPLIT AS. See

 Attributes and the GROUP/UNGROUP Statements on

page 300 for more information.

©ProModelCorporation

Ungroup 640

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 654/715

641 Un it s( )

Units()

General System Function

Syntax samplesUNITS(<location> or <resource>)

PAUSE “There are” $ UNITS(Res1) $ “Res1's in

the system.”

Description

Returns the total units of a location or resource.

Valid In

 Any logicand any field except those evaluated before trans-

lation. For a list of fields evaluated before translation, see

 Appendix.

Components

<location>

The name of the location to examine. You may substitute

LOC() for the name of a location.

<resource>

The name of theresource to examine.You maysubstitute

RES() for the name of a resource.

See Also

FREEUNITS() and RESQTY().

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 655/715

Unload

Entity-Related Operation Statement 

Syntax samplesUNLOAD <expression>{IFF <Boolean expres-

sion>}

UNLOAD 5

UNLOAD 5 IFF Entity() = EntA

Description

Unloadsa certain quantity of entities, or a certain quantity

of those entities depending on a condition. Use UNLOAD to

unload entities from a carrier entity that was previously

loaded with LOAD. The unloaded entities are processed

ahead of the entity which unloaded them. Each unloaded

entity searches ahead in the process list, and then from the

beginning of the list, until a process isfound for that entity

type at that location.

Valid In

The operation column of process edit tables only. UNLOAD

is not valid at conveyors, after routing, or at the endof a

queue. You may not use UNLOAD in combination with

COMBINE, CREATE, GROUP, UNGROUP, and SPLIT

 AS or other UNLOAD in the same process logic. If the proc-

ess contains LOAD statements, UNLOAD can only appear once after all of them.

Components

<expression>

The number of entitiesto unload. A value of zero isignored

anda negative value producesan error. If the quantity spec-

ified for unloading isgreater than the number of entities

that have been loaded, the extra quantity isignored. This

expression isevaluated every time the statement isencoun-

tered.

IFF <Boolean expression>

This option allows the UNLOAD command to be con-

ditional. Any attributes, entity functions, and location func-

tions apply to theentityto be unloaded,not to the base

entity. Thistechnique allows only entities with certain prop-

erties to be unloaded from the baseentity. To use

attributes, entity functions, and location functionsthat apply

to thebaseentity, assign thedesired value to a local var-

iable and use the local variable in the Boolean expression.

Explicit Entity Actions

UNLOAD dividesup costs and copies statistical information

accrued while loaded, to each unloading entity.

Example

The following example isa continuation of the LOAD state-

ment example and shows how the loaded entity (Truck) is

unloaded, resulting in the original Truckand the boxes that

were loaded onto it. Boxes continue to the next location

while Truckis returned to its starting location, Factory. (See

the Load statement example.)

Process Table

Entity... Location... Operation (min)...

Box Shipping WAIT 2 min

Truck MfgSite

Truck D ock LOAD Attr1 IN 2 Hr  

Truck NewYork WAIT T(20,30,60)

UNLOAD 5

Box NewYork

Truck Chicago WAIT T(20,30,60)

UNLOAD 5

Box Chicago

Truck Boston WAIT T(20,30,60)

UNLOAD 5

Box Boston

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Box Dock LOAD1

MOVEFOR 45sec

1 TruckDock

FIRST

1

MOVEFOR 10

min

©ProModelCorporation

Unload 642

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 656/715

643 Un lo ad

Blk Output... Destination... Rule... Move Logic...

1 TruckNewYork

FIRST

1

MOVE FOR 24

Hr 

Truck ChicagoFIRST

MOVE FOR 12Hr 

Truck BostonFIRST

MOVE FOR 28

Hr 

1 TruckMfgSite

FIRST

1

MOVE FOR 24

Hr 

1 BoxNY_Recv

FIRST

1

MOVEFOR 5

min

1 TruckMfgSite

FIRST

1

MOVE FOR 12

Hr 

1 BoxChi_Recv

FIRST

1

MOVEFOR 5

min

1 TruckMfgSite

FIRST

1

MOVE FOR 28

Hr 

1 BoxBos_Recv

FIRST

1

MOVEFOR 5

min

See Also

LOAD, COMBINE, JOIN, GROUP, and UNGROUP. Also

see Attributesand the LOAD/UNLOAD Statementson

page 301 for more information.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 657/715

Use

Resource-Related Operation State- 

ment 

Syntax samples

USE {<quantity>} <resource> {,<priority>}

FOR <time> {AND or OR {<quantity>}

<resource> {,<priority>} FOR <time>... }

USE 2 Res2,5 FOR 4:23:03

USE 2 Res1 FOR 2.0 min OR 3 Res2 FOR 1.5 min

USE Res1,3 FOR 1 hr AND (Res2 FOR 5 OR Res3

FOR 5)

USE Oper_Attr RES(Type_Attr) FOR Time_Var1

Hr 

Description

Captures a resource or combination of resources as each

resource becomesavailable. Once the resource hasbeen

captured it isused for the specified amount of time, and

then freed when the specified duration isover. If the entity

alreadypossesses one of the specified resources from a

previous GET, JOINTLY GET, or MOVE WITH statement,

the entity will still try to capture an additionalunit of that

resource.

Please note

If an entity uses a USE statement to capture a

resource, the resource must complete its operation

before you can preempt the entity. However, if t he

entity uses a GET, WAIT, FREE sequence, you may

preempt the entity during the WAIT portion of the

logic.

If multiple units of a resource type are defined in

the USE statement, t he time specified after t he FOR

will be treated as "total man-hours". For example, inthe statement "USE 2 Worker FOR 1 HR," a tot al of 

two man-hours is required (i.e. 2 units x 1 hour = 2

man-hours). In the case where only one unit of the

Worker resource is available, that unit could be

used for a total elapsed time of two hours if a

second un it n ever becomes available during the

process. However, if two units of the Worker 

resource are available at the same time, only one

hour o f elapsed p rocessing time will occur. To f ur-

ther illustrate, if one unit is captured and used for 

one hour after which time the second unit is then

captured, the remaining one man-hour of time will

be divided between the two units and together will

complete it in half an hour. In this case, the entity

would be processed in an elapsed time of 1.5

hours.

Valid In

Location processing logic, downtime logic, and move logic.

Components

<quantity>

The number of resources to get. ProModelignores a value

of zero and valueslessthanzero return an error. ProModel

evaluates and truncates thisnumeric expression every time

it encounters the USE statement.

<resource>

The name of the resourceto USE. You can substitute

RES() for the resource name.

<priority>

When multiple entities request a resource, ProModelfills

the requests in order of priority. Thisexpression should be

a number between 0 and999.

<time>

The length of time the entitywill tie up the resource. Pro-

Model evaluates thisexpression whenever it encounters

the statement. If you specify no time unit, ProModelapplies

the default time unit specified in the GeneralInformation

dialog.

ExampleThissimple example shows how Clients arriving at location

Reception must USE the Secretaryfor some amount of 

time according to the user-defined distribution, Dist1.

Clients are then sentto a waiting area until the desired next

location becomes available.

©ProModelCorporation

Use 644

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 658/715

645 Use

Process Table

Entity... Location... Operation (min)...

Client Reception USE Secretary

FOR Dist1()

Client Waiting

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 ClientWaiting

FIRST

1

MOVE FOR 30

sec

1 Client Loan .400 1 MOVE FOR 1

Client Auditor .350 1 MOVE FOR 1

Client Service .250 1 MOVE FOR 1

See Also

GET, JOINTLY GET, and MOVE WITH.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 659/715

Variable()

General System Function

Syntax samplesVARIABLE(<numeric expression>)

VARIABLE(Attr) = 124

VARIABLE(x) = VARIABLE(y)

N=VARIABLE(x) + VARIABLE(y) - 1

Description

Converts a name-index number or integer to a variable

name. Use this function when a numericexpression uses a

variable whose name-indexnumber is stored in an attrib-

ute, array, or variable.

Valid In

 Any logic.

Please note

 You cannot use VARIABLE() in a PROMPT, INC,

DEC, or READ statement.

Components

<numeric expression>

The name index number for a variable. You can determine

the name-index number associated with a particular var-

iable by the position of the variable record in the Variables

module.

Example

.In the example below, partsof different typesarrive at loca-

tion In_Queue. Each entity type hasa unique value for Attr1

that correspondsto the name-index number of a variable in

the Variables module. Once partsarrive at In_Queue, they

increment the variable specificto that entity type beforerouting to the location Process_Loc.

Process Table

Entity... Lo cation... Operation (min)...

 All In_Queue VARIABLE(Attr1) =

VARIABLE(Attr1) + 1

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 All Process_Loc FIRST1 MOVE 1

See Also

LOC(), ENT(),and RES().

©ProModelCorporation

Variable() 646

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 660/715

647 View

View

General Action Statement 

Syntax samplesVIEW “view name”

VIEW “Cell5”

VIEW “View10”

Description

Use thisstatement to change the view in theLayoutwin-

dow from within your logic. Once the view hasbeen

defined from theView menu in main menu,you can use it

in the logic.

Valid In

 All logic.

Components

<view name>

The name of theview defined in the Viewsdialog. Enclose

the name in quotation marks.

Example

You are giving a presentation on theuse of simulation for 

airport design. Two hours intothe model run, you want tozoom in on the baggage areato show theactivity there.

Three hoursinto the simulation,you want to zoom outto

show the entire airport..You are giving a presentation to

management on the factory floor using simulation. Two

hoursinto the simulation,you want to zoom in on a par-

ticular cell in the factory to show the activity there. Three

hoursinto the simulation,you want to zoom outto show the

entire factory.

To do this, define two views called Cell1 and Factory using

the Views editor on the View menu. Define an independent

subroutine and callit in the initialization logic using the ACTI-

VATE statement. Enter the following logic in the sub-

routine:

INT X=1

WHILE X=1 DO

BEGIN

IF CLOCK(hr) = 2 THEN VIEW “Cell1”

IF CLOCK(hr) = 3 THEN VIEW “Factory”

WAIT 1 hr 

END

See Also

see Commandson page 117.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 661/715

Wait

Entity-Related Operation Statement 

Syntax samplesWAIT <time expression>

WAIT 3 min

WAIT 0

WAIT 2.5 + CleanupTime

WAIT N(8,.5) + 3 sec

Description

Simulates the time it takes to process an entity. WAIT

delays further processing of the entity until the specified

time has elapsed. The rest of the modelcontinues to proc-

ess while an entity waits. If the expression evaluates to

zero, the current entity will not finish processing until all

other processes scheduled for that moment in the sim-

ulation have finished.

Please note

 You may use the “^” symbol in place of a “WAIT”

statement.

Valid InLocation processing, downtime, and move logic. Inde-

pendent subroutines may also use WAIT statements which

function as timers. (For more information about Inde-

pendent subroutines, see Subroutineson page 326.)

Components

<time expression>

The length of the WAIT. This expression isevaluated when-

ever the statement isencountered. If no time unit isspec-

ified, the default time unit specified in the General

Information Dialog isapplied.

Example

In the following example, customersarrive at a fast-food

restaurant and place their orders at location Counter. How

long customerswait dependson the type of meal ordered.

If they order mealone, two, or three, they wait only 2 min-

utes. Otherwise theywait 5 minutes.The example below

shows WAIT statements used in an IF...THEN...ELSE

expression. If the value of EntA’s attribute, Attr1, isgreater 

than zero, the time delay is5.0 minutes. Otherwise the

delay is2.5 minutes.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 IF Attr1>0 T HEN

WAIT 5 min

ELSE

WAIT 2.5 min

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 EntA Loc2 FIRST 1 MOVE FOR 10

See Also

WAIT UNTIL can stop additionalprocessing untila con-

dition istrue.

©ProModelCorporation

Wait 648

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 662/715

649 Wait Until

Wait Until

Entity And Resource-Related Oper- 

ation Statement 

Syntax samples

WAIT UNTIL <Boolean expression>

WAIT UNTIL Var1 > 3

WAIT UNTIL Var1 < Attr3AND Var2 >= 5

Description

Delays processing of the current logic untilthe Boolean

expression istrue. The rest of the modelcontinues to proc-

ess during the delay. Note that if the expression isinitially

evaluated to be false, it isonlyr eevaluated when a locationattribute, variable, or array element in the expression

changes. Multiple entitieswaiting on the same condition

are released oneat a time. This allowsa released entityto

change a variable value that will prevent the other waiting

entitiesfrom being released.

Valid In

Node entry and node exit logic delays processing for 

resources, and location processing logic delays processing

for entities. Independent Subroutines. (See Subroutines.)

Components

<Boolean expression>

The condition that must be satisfied to continue processing

the entity or resource. Elements of this expression are lim-

ited to location attributes, variables, and array elements.

Example

The example below uses the WAIT UNTIL statement to

group a variable quantity of entities. As each EntA arrives

at Loc1, a variable (Total) isincremented to keep track of 

the total entities waiting at the location. The WAIT UNTILstatement causes processing of all EntA’s to halt at this

point untilthe variable, Var1, reaches or exceeds 500.

Then all of thewaiting EntA’s are GROUPed together as a

BatchA.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 INC Total

WAIT UNTIL Total>= 5

GROUP TotalAS Batch

Routing Table

Blk Output... Destination... Rule... Move Logic...

See Also

DO...WHILE, WHILE...DO, and DO...UNTIL.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 663/715

Warmup

General Action Statement 

Syntax samplesWARMUP

WARMUP

IF thruput = 50 THEN WARMUP

Description

Instructs the simulation to end the warmup period by reset-

ting all the statistics and erasing relevant time series files.

Only one WARMUPstatement may be used inthe sim-

ulation.

Please note

If multiple WARMUP statements are encountered or 

a WARMUP statement is used in addition to the

warmup time specified in th e Run Options dialog,

ProModel will generate a warning to inform you that 

this has occurred. Only the first warmup encoun- 

tered (the statement or the Run Options setting)

will actually be executed. While the statement will 

be encountered within the logic, the Run Options

setting will be executed at the specific time indi- 

cated in the dialog.

Valid In

 Any logic.

Example

Supposeyou want to base thewarmup period on 2,000

entities being processed rather than on a lapse of time. You

could increment a variable (e.g., Total_Processed) when-

ever an entity exited the system. Enter the following logic in

an independent subroutine activated from the initialization

logic:

WAIT UNTIL Total_Processed = 2000

WARMUP

See Also

See Customized Reporting on page 456 for more infor-

mation on warm-up periods.

©ProModelCorporation

Warmup 650

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 664/715

651 While...Do

While...Do

General Control Statement 

Syntax samplesWHILE <Boolean expression> DO <statement

block>

WHILE Array1[n]<> 10 DOINC n

WHILE FREECAP(Loc1) > 5 DO

BEGIN

INC Var2,5

WAIT 5 sec

END

Description

Repeats a statement or statement block continuously while

a condition remains true. WHILE...DO isan entry-condition

loop, meaning that theloop willnot be executed once

unless the Boolean expression istrue.

Valid In

 Any logic.

Components

<Boolean expression>

 As long as this expression is TRUE, the loop will continue.

This expression isevaluated for each iteration of the loop.

<statement block>

The statement or block of statementsto execute.

Example

The example below shows the arrival logic window for an

entitythat arrivesevery 40 hours to reset thevalues of 

 Array1 elements 1 through 100 to 0.

See Also

BEGIN, END, DO...WHILE, and DO...UNTIL.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 665/715

Write

General Operation Statement 

Syntax samplesWRITE <file ID>, <string or numericexpression>

{,<maximum digits before decimal>,

<digits after decimal>}

Description

Writes information to a general write file. The next item

written to the file will appear immediately after this item.

WRITE always appendsto the file unless the file isRESET.

Thisholds true for multiple replications as well as single,

independent runs. Any file that is written to with WRITE

automatically becomesa text file and will have an end of file

marker attached automatically to the end when it isclosed.

For more flexible WRITE capability, use XWRITE.

WRITE and WRITELINE automatically separate values by

commas

Valid In

 Any logic.

Components

<file ID>

The name of the file aspreviously defined in the ExternalFiles Editor.

<string or numeric expression>

The string or numeric expression to be written to thefile. In

the output file, quotes will automatically be added to string

expressionsso that most spreadsheet programs can easily

read the file.

<maximum digits before decimal>

The maximum number of digits before the decimal. This

value isused to line up any numericvalues into columnson

the decimal point. Thisvalue may be anynumericexpres-sion.

<digits after decimal>

The number of spaces to save after the decimal point. Use

this option to line up any labels appearing after numbers.

Example

The following example uses both WRITE and WRITELINE

to record the time when EntA completesprocessing at

Loc1 ina general write file called Rpt.Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT N(7.3,.4)

WRITE Rpt,”EntAComplete at:”

WRITELINE, Rpt

CLOCK(min),3,2

Routing Table

Blk Output... Destination... Rule... Move Logic...

See Also

XWRITE, WRITELINE, RESET, READ, and FORMAT().

 Also see General Write File on page 352.

Please note

The sum of the maximum digits before and after the

decimal must be less than 20.

©ProModelCorporation

Write 652

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 666/715

653 WriteLine

WriteLine

General Operation Statement 

Syntax samplesWRITELINE <file ID>, <string or numericexpres-

sion>{,<maximum digits before decimal>, <digits

after decimal>}

Description

Writesinformation to a general write file and starts a new

line. WRITELINE always appends to the file unless the file

is RESET. Any filethat iswritten to with WRITELINEauto-

maticallybecomes a text file and will have an end of file

marker attached to the end when it isclosed.

WRITE and WRITELINE automaticallyseparate values by

commas

Valid In

 Any logic.

Components

<file ID>

The name of thefile aspreviously definedin the External

Files Editor.

<string or numeric expression>The string or numeric expression to be written to thefile. In

the output file, quotes will automatically be added to string

expressionsso that most spreadsheet programs can easily

read the file.

<maximum digits before decimal>

When writing real numbers, the maximum number of digits

beforethe decimal. Use this value to line numbers on dif-

ferent linesup on the decimal.

<digits after decimal>

When writing real numbers, the maximum number of digitsafter the decimal.

Example

The following example uses both WRITE and WRITELINE

to record the time when EntA completes processing at

Loc1 in a generalwrite file called Rpt.

Process Table

Entity... Location... Operation (min)...

EntA Loc1 WAIT N(7.3,.4)

WRITE Rpt, "EntA Complete at:"

WRITELINE Rpt,

CLOCK(min),3,2

Routing Table

Blk Output... Destination... Rule... Move Logic...

See Also

WRITE, RESET, XWRITE, READ, and FORMAT(). Also

see General Write Fileon page 352.

Please note

The sum of the maximum digits before and after 

the decimal must be less than 20.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 667/715

Xsub()

External Subroutine Call 

Syntax samplesXSUB(<file ID>, <ordinal function number> or <func-

tion name> {, <parameter1>, <parameter2>...})

XSUB(Interface,1, 5)

XSUB(LogDLL, “_Log_B_of_X”,10,5)

Description

Callsan external subroutine inside a DLL file. XSUB() isper-

hapsthe most powerful statement in ProModel, because

by using it the user can accessthe entire functionality of any

32-bit Windowsprogramming language such as C, C++,

Delphi, or Visual Basic. XSUB() can be used for sophis-

ticated file IO and to make simulations interactive. In fact,

subroutines called with XSUB() can do anything that the lan-

guage theywere written inallows. Because of itspower,

however, XSUB() should be used with caution. When

called, the simulation issuspended untilthe external sub-

routine finishesexecution.

The subroutine inside the DLL must have been compiled as

exportable by a Windows 32-bit compiler and have a return

type of IEEE format double real. XSUB() will copy the

parametersfollowing the function name to a block of mem-

ory, then passthe function a pointer to that block of mem-

ory.

The function can take only one parameter: a pointer to

void. But the function mayaccessany number of param-

etersthrough structure overlaying. The function should

define a structure to match the type and order of the param-

eters, and assign the pointer just passed to a pointer to that

type of structure. The parameterscan then be used

through structure overlaying. Integersare passed as four 

byte values and reals are passed as eight byte IEEE values.

Please note

For Windows Programmers Only T he h andle to the

run-time simulation frame window will be the last 

 parameter passed. Most subrout ines can

completely ignore this parameter, but it will be

needed if the subroutine displays a window.

Valid In Any expression or logic.

Components

<file ID>

The file ID assigned to an externalDLL file asdefined in the

External Files editor. Thisfile should be a 32-bit Windows

DLL file.

<ordinal fu nction number>

The ordinal number of the function inside the DLL. This

function must be exportable. When DLL’s are compiled,every exported function inside them isnumbered. The

individualfunctions can then be accessed by calling the pro-

gram bynumber. This field maybe an expression that eval-

uates to an ordinalfunction number that isvalid inside the

DLL. Use an ordinalfunction number or the function name.

<function name>

The name of the function inside theDLL. This function must

be exportable. Note that when most compilers compile

DLL’s, theyadjust the name of the functionsinside them.

The function name inside theXSUB statementmustbe the

adjusted name, not the original name.

Most C compilers add an underscore to the function name;

so a function called “Test1” would be compiled as “_Test1.”

For most C++ compilers, valid ProModelexternalfunction

names will be mangled to “@<function name>$pv.” Dif-

ferent compilers will vary, however, so the user should be

aware of the particular compiler’s quirks.

<parameters>

The parametersto passto the function. Thesemay be any

variable, number, or expression. They are only limited by

the type of field or logic that uses the XSUB function. Eachparameter should be separated by a comma. See above

for how the external subroutine will accessthese param-

eters.

©ProModelCorporation

Xsub() 654

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 668/715

655 Xsu b( )

Example

 An external function written to the ProModel specification,

called Log_B_of_X and written inC, returns thelog of a

value to a variable base. The function, reproduced below,hasbeen compiled into the DLL, “XSUB.DLL.” The func-

tion itself is reproduced on the leftbelow, and the source

code can be found in the file “XSUB.CPP.”

The ProModellogic statementsassign the base five log-

arithm of thereal variableR1 to the real variable R2. Each

statement assumes that the file XSUB.DLL has been

assigned the identifier “Log” in the External Files Editor.

The first statement accesses the function as if the DLL had

been compiled in C++by using the mangled function

name. The second statement accesses the function as if it

had been compiled in C byusing the C adjusted function

name. The third statement accesses the function using the

ordinalfunction number.

ProModelLogic

R2 = XSUB(Log, “@Log_B_X$pv”,5.0,R1)

R2 = XSUB(Log, ”_Log_B_X”,5.0,R1)

R2 = XSUB(Log, 2, 5.0, R1)

XSUB.CPP

struct TEST_SUB_PARAMS

{

double base;

double x;

HWND hWndFrame;

};

extern “C” //This makes this a C function rather 

than a C++ function

{

/* On compile, Borland and Microsoft add a lead-

ing underscore to a 'C'name! */

double _export Log_B_of_X(void *p)

{

//Parameterscome in a structure pointed to byp;

TEST_SUB_PARAMS * params;

params = (TEST_SUB_PARAMS*) p;

MessageBox( GetTopWindow (params-

>hWndFrame),

“Executing Log_B_of_X function.”, “XSUB”, MB_ 

OK);

return log (params->x) / log (params->base);

}

}

See Also

see External Subroutineson page 333 (normalsub-

routinesare lesspowerful, but much easier to create and

use).

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 669/715

Xwrite

General Operation Statement 

Syntax samplesXWRITE <file ID>, <string or numericexpression>

Description

Writesinformation to a generalwrite file in anytext format

the user chooses. XWRITE isfor writing user-formatted

files, while WRITE and WRITELINE are for writing special

formatted text files. XWRITE always appendsto a file

unless the file is RESET. Note that anytime a WRITE or 

WRITELINE writes to a file, the file will automatically be a

text file. No end of file marker isappended to files written

onlywith XWRITE. In subsequent replications, additional

items are appended to the end of the fileunless thefile is

RESET. ProModeldoes not format the string expression,

although you can use the FORMAT statement to manually

formatdata. To add an end of file marker to a user-for-

matted file, use XWRITE CHAR(26).

Valid In

 Any logic.

Components

<file ID>

The name of the file aspreviously defined in the External

Files Editor.

<string or numeric expression>

The string expression to be written to thefile.

Example

The following example uses XWRITE to record the time

each Box completes processing at location Ship.

Process Table

Entity... Location... Operation (min)...

Box Ship WAIT N(7.3,.4)

XWRITE Rpt, “BoxShipped at:” $

FORMAT(CLOCK(min),3,2)

Routing Table

Blk Output... Destination... Rule... Move Logic...

1 Dock Doc FIRST 1 MOVE FOR 5

See Also

WRITE, WRITELINE, and RESET. Also see GeneralWrite

File on page 352.

©ProModelCorporation

Xwrite 656

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 670/715

Appendix

ProModelevaluates various fields and logic at different timesduring a simulation run. Some evaluate only once when themodel prepares to run a simulation, called the translation time. ProModelevaluates others as necessary throughout the

simulation. Below isa list of all expressions and statements by category, and a table telling which fields evaluate at trans-

lation and which fields ProModelevaluates continuously during a simulation. The table also tellswhere you may use an

expression or statement.

Expression and Statement Groups

1. General Expression

Numbers, Variables, Math Functions, Functions Table, Distribution Functions, XSUB(), and Name Functions( i.e., RES(),

ENT(), LOC()).

2. Arrays Arrays of any dimension.

3. Location Attributes

Referencing a location attribute in anyexpression or assigning to a location attribute.

4. Entity-Specific System Functions and Attributes

Entity(), GroupQty(), ResQty().

5. General System Functions

Cap(), CalDay(), CalDom(), CalHour(), CalMin(),CalMonth(), CalYear(), Clock(), Contents(), DownQty(), Entries(),

FreeCap(), FreeUnits(), OwnedResource(), TimesUsed(), Units(), and Variable().

6. Location-Specific System Function

Location().

7. Resource-Specific System Function

Resource().

8. Node Logic-Specific System Functions

Last(), Next(). (The Last function is validonly inNode EntryLogic and the Next function is valid onlyin Node ExitLogic.)

9. Downtime-Specific System FunctionDTDelay().

10. Shift-Specific System Functions

ForLocation(), ForResource().

©ProModelCorporation

Appendix 657

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 671/715

658 ProModel 2011 User Guide

11. Preemption Logic-Specific System Functions

Preemptor(), TimeLeft().

12. Off-Shift & Break Logic-Specific System Functions & Statements

DTLeft(), Priority, and Skip.

13. Cost Functions & Statements

GetCost(), GetResRate(), IncEntCost, IncLocCost, and IncResCost.

14. General Statements: (Run-Time Only)

 Activate, Animate, Assignment, Begin End, Break, BreakBLK, Close, Comment(#,

//, /*...*/), Debug, Dec, Display, Do...Until, Do...While, Goto, If...Then/If...Then...Else, Inc, Int, Local Variable, Log,

MapArr, Order, Pause, Prompt, Read, Real, Reset, Reset Stats, Return, Report, Send, SetRate, Stop, String Expres-

sions, Sound, Trace, View, WarmUp, While...Do, and Write/Writeline/XWrite. (You maynot use the Log statement in

Initialization or Termination Logic.)

15. Operation Statements (Group 1)

 Accum, Combine, Create, Group, Join, Load, Match, Move, Rename, Route, Split As, Ungroup, and Unload.

16. Operation Statements (Group 2)

Free, Get, Jointly Get, and Use.

17. Operation Statements (Group 3)

Wait.

18. Move Logic-Specific Statements

Move For, Move On, and Move With.

19. External Spreadsheet File

Entity Location Expression File.

20. Graphic Statement 

Graphic.

21. Wait Until Statement 

Wait until.

Macros and Subroutines

 A macro may be used in any expression field, but the macro may only contain expressions which return a value (e.g.,

Entries(LOC1), U(5,1)). When a macro is used in a logic field, themacro mayincludeany logic element that is valid in that

logic field. A subroutine may alsobe used in an expression field providedthat the Return statement isused to return a

value to the expression field. When a subroutine isused in a logic field, the subroutine may include anylogic element that

isvalid in that logic field.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 672/715

Valid Expression and Statement Groups by Field 

When running a simulation, expressions and statementsare either evaluated 1) once at translation (before initialization

logic and before any eventsare created) or 2) continuouslyduring the simulation run. The following chart categorizes the

edit fields in this manner and shows the expression and statement groups that can be used in each field. Fields are clas-sified as either expression fields or logic fields. Fields not listed on this chart are either menu fields or expression fields that

accept onlynumbers.

©ProModelCorporation

Appendix 659

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 673/715

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 674/715

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 675/715

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 676/715

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 677/715

664 ProModel 2011 User Guide

Default Values

Build Menu

Graphic library promod.glb

Locations

Conveyor/queue style roller 

Conveyor/queue width (feet) 3

Conveyor speed ( fpm) 60

Conveyor accumulating accum

Conveyor entity orientation lengthwise

Location statistics time ser ies

Entities

Entity speed 150 fpm (50 mpm)

Entity statistics time series

Path Networks

Time/speed Speed

Path color blue/yellow

Resources

Speed 150 fpm (50 mpm)

Entity search Longest Waiting

Resource search Closest r esource

Resource statistics By unit

Processing

Snap to border off  

Var iable s tatistics time ser ies

Tools Menu

Long build menu on

Confirm record delete on

Recalculate path lengths when adjusted on

View Menu

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 678/715

Snap to grid off  

Show grid off  

Grid size (VGA full layout) 90grid units

Scale - distance 1 ft/grid unit

Scale - time .01 min/grid unit

Background color lt. gray

Edit table font Arial 8 Regular  

Edit table color Gray

Directories

Models c:\ProModel\models

Glib c:\ProModel\glib

Output c:\ProModel\output

INI Defaults

Graphic Editor 

Text alignment center  

Text frame type transparent

Text frame shape rectangle

Text font Arial 8 Bold

Text color blackText frame border color black

Text frame fill color white

Variables

Digit font Arial 8 Bold

Digit color yellow

Digit frame type recessed

Digit frame shape rectangle

Digit frame border color black

Digit frame fill color royal blue

Conveyors/Queues

Queue border color black

Queue fill color dark gray

©ProModelCorporation

Appendix 665

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 679/715

666 ProModel 2011 User Guide

Gauges/Tanks

Gauge/tank fill color maroon

Gauge/tank border color black

Gauge/tank empty color white

Gauge/tank - no border checked

Gauge/tank - show scale checked

Other 

 Autosave (in minutes) 10

Print layout - print options dialog - bkgrnd color unchecked

ActiveX Objects

ProModel’sActiveX Automation capability allows you to externally create, view, and edit model elements such as loca-tions, entities, and variables. Using Visual Basic (or any other ActiveX-enabled language), you can add capabilities to Pro-

Model including:

l Customized user interface with table inputs

l Custom-designed parameter screens

l Automaticmodel creation from external data sources (e.g., Excel spreadsheets, databases, or ASCII text files)

l Software execution from another application

You can also use ProModel’sActiveX capability to accessany of the following actionsand tables (any table not mentioned

in the following list isnot currently ActiveX enabled).More information on ActiveX Automation can be found in the ActiveX User Guide, which islocated in the documentation

folder within the ProModeldirectory.

More on ActiveX

For detailed information regarding ActiveX objectsand methods, contact:

ProModelSales and Support Team

Phone (888) PRO-MODEL

Fax (801) 226-6046

Suggested readings

To expand your knowledge and understanding of simulation, itspractices, and itsapplications, consider the following

texts.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 680/715

Harrell, Charles; Ghosh, Biman; Bowden, Royce. 2003. Simulation Using ProModel. 2nd Edition; McGraw-Hill,

Inc.

Law, A.M. and David W. Kelton. 1991. Simulation Modeling and Analysis. 2nd Edition, Chapter 4; McGraw-Hill,

Inc.

Lewis, P. and E. Orav. 1989. Simulation Methodology for Statisticians, Operations Analysts, and Engineers. Vol-

ume I; Wadsworth & Brooks.

Harrell, Charles R. and Kerim Tumay. 1995. Simulation Made Easy. Industrial Engineering Press.

Banks, Jerry and John S. Carson, II. 1984. Discrete Event System Simulation. Prentice-Hall Inc.

Heizer, Jay and Barry Render. 1988. Production and OperationsManagement. Allyn and Bacon.

Carrie, Allan. 1988. Simulation of Manufacturing Systems. John Wiley & Sons.

IndustrialEngineering & Management Press. 1987. Simulation: Modeling Manufacturing & Service Systems. Insti-

tute of Industrial Engineers.

Harrell, Charles R., Robert E. Bateman, ThomasJ. Gogg, JackR.A. Mott. 1993. System Improvement UsingSimulation. JMI Consulting Group and PROMODEL Corporation.

Glossary

Cost Statistics

Statistics collected on a cost basis(e.g., total cost and average, non-use cost). You have controlof how ProModelcollects

these statistics. You may collect information through statements, base them on the system clock, or use a combination of 

both.

Counter 

 A counter is a location or variable graphic used to display the contents of a location or the current value of a variable duringanimation. A counter consists of a frame, a specification of the digit color, and the font. If the number being displayed

requires more digits than the maximum specified, the counter simply expands to the left. ProModeldisplays real values

showing only 2 decimal places. For example, a variable equal to 4.8936 would display 4.89 on the screen.

Dialog Box 

 A dialog box is a pop-up window used to enter information or select options. Movement from field to field in a dialog box is

accomplished byclicking inthe field with theleft mouse button or byusing the Tab key. To accept input made to a dialog

box press Enter or click on the OK button. To cancel any changes made to the dialog press Esc or click on the Cancel but-

ton. For help on thedialog, pressF1 or clickon the Help button. If no Help button isshown, you mayselect Help fromthe

main menu.

Edit Tables An edit table is a powerful editing window used to add, delete and edit modeling and language elements such as entitiesor 

locations. It issimilar to a spread sheet editor in that it provides maximum visibility of element lists while still allowing each

field of a particular element to be directlyedited.

©ProModelCorporation

Glossary 667

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 681/715

668 ProModel 2011 User Guide

File Name

 A file name is any name used to identifya file. File names may include a path (e.g., C:\REPORTS\DATA) as well as a ter-

minating period with up to three additionalcharacters as an extension (e.g., DATA.TXT). File names are case insen-

sitive.

Font 

 A font is a collection of characters sharing the same attributes such as height, width, and typeface. A font determines the

appearance of text. Select fonts using the font dialog which shows how the font will appear.

Frame

 A frame is a graphical border or background for placing text or displaying values. Frames have a type (raised, recessed,

transparent), shape, color and size. Frames are optional andyou mayuse them onlyto enhance the appearance of the

graphic layout. If you do not desire a frame,select Transparent asthe type.

Gauge

 A gauge is a graphic bar that extends and retracts to represent the current contents of a location. You define a gauge by

the fillcolor, the empty color, and the gauge border color. You also specify the filldirection (up, down, left or right).

Integer Number 

 An integer number is a whole number ranging from -2,147,483,648 to 2,147,483,647. Integer values may not include

commas, so enter the number 5,380 as 5380.

Library Graphic 

 A library graphic is a graphic defined and edited using the Library GraphicsEditor. Use library graphics to represent loca-

tions, resources or entities, or as part of the layout background with no association to anymodel entity.When used to represent a processing location, library graphics may have entity spotsdefined for them so entities that

enter the location will appear graphically on the entity spot.You mayr eference a Library graphicmultiple times and each reference mayhave a unique size, horizontalor vertical

inversion, rotation, and color.

Main Entity 

The originalor input entity used in routing logic. You may create new entities from the main entity using the CREATE

statement or through multiple routing blocks.

Main Menus

The main menusare listed along the main menu bar at the topof the application window andprovide access to all of the

dialogs and commands necessary to build, run, and analyze simulation models.

Name Index 

During simulation run time, ProModel converts the name of each location, entity, and resource to a list indexnumber for 

efficient accessand flexibility in assigning names to variables, attributes, etc. The indexnumber correspondsto the order 

in which the elements appear in the edit table list. If five locations were defined, theywill be identified by the index

numbers 1 through 5 at run time. A name index maybe assigned to a variable or attribute byreferencing the name itself 

(e.g., Attr1 = EntityA). You mayalso testfor a name indexby referencing the name (e.g., if Var5 = Loc3).

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 682/715

Note

 A note is any comment or other information typed by the user that is for information only and disregarded by ProModel.

Numeric Type

 A numeric type specifies whether a numeric expression is of type real or integer. If, for example, a variable is of type “real,”

then the variable can only represent some real number.

Numeric Value

 A numeric value is any real or integer number such as 3.68 or 52.

Parameter 

Parameters are variables used in a subroutine which are local to or have scope only within the subroutine. Arguments or 

numericexpressions passed to a subroutine are assigned to the parametersfor use inside the subroutine.

Park Search

 A park search defines the sequence where a resource looksfor nodes at which to park after completing a task assuming

no other tasksare waiting.

Paths

Paths define the course of travel for entities and resources between locations. You maydefine a path for a specificentity

androuting,or a network of pathsshared byseveralresourcesand entities. Define movement along a path in unitsof 

time, or speed and distance.Path networksconsist of nodes connected by path segments. Anynode may have multiple input and output segments.

Positioning Spot 

 An entity spot is simply a graphic position relative to a location or resource and displays any entitiesoccupying the location

or resource.For any given location you mayplace one or more entity spotson the graphics layout. Entities to enter a location appear on

the first available entityspotin theorder they are placed.If an entityenters a location and all theentityspotsare filled,the

entity will appear on the last entity spot.For resources, place the entity spot where it appears when a resource carriesthe entity.

Preemption

Preemption isthe act of bumping or replacing an activity currently using a location with an activity of a higher preemptive

priority. ProModelhandles preempted activitiesdifferently depending on the location preempted.For locations, ProModelputs the preempted activity (any current entity or downtime) in a preemption list for that particular 

location until it can resume its activity at that specificlocation unit.

Real Number  A real number is a number ranging from 1.7 X 10 -308 to 1.7 X 10 +308. Real valuesmay not include commas, so enter 

the number 5,380.5 as 5380.5.Examples: -2.87563, 844.2, 65.0

©ProModelCorporation

Glossary 669

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 683/715

670 ProModel 2011 User Guide

Reference

 A reference is a name entry in an edit field that references a defined model element. If you change the name of the model

element, all references to the element automatically change to reflect the change in name.

Region

 A region is a rectangular area on the graphic layout that represents a location. Defining a region is useful when you

import a layout from a CAD drawing and you want to designate a portion of the layout to represent a particular proc-

essing location. A region should have one or more entity spots associated with it in order to be meaningful.

Resource

 A resource is a person or item used to perform an operation or activity. Common resources include human operators,

inspectors, forklifts, and other vehicles. Use resources used to perform operations on entities at a location, transport enti-

ties between locations, or perform activities on a location during a downtime.

Resource Point 

 A resource point is a screen position where a resource will appear when it arrivesto park or perform a task at a particular 

node.When a resource arrives at a node, itwill appear on that node unlessyou define a resource point for that resource

at that node. Resource pointsprovide a way to have several resources positioned at the same node without all appearing

on top of each other.

Routing Priority 

 A routing priority is the priority given to a routing for accessing a destination when capacity becomes available. ProModel

defines therouting priorityas part of the Destination field in the Routing Edit Table. A routing priorityapplies where two or 

more entities wait at a location for a routing destination to become available. The routing priority breaks a tie when decid-

ing which entity has accessto the destination location first when it becomesavailable. (See Selecting Incoming Entities in

the Location RulesDialog.)

Scroll Arrow 

You can use the scrollarrowson either end of a scroll bar to move the contents of a window or list box.Clicking once on a

scroll arrow moves the contents one line. Holding down a scrollarrow scrollscontinuously.

Scroll Bar 

 A scrollbar is a Windows control for scrolling the contents of a window. Scrollbars operate in three different ways:

1. Clickon the scroll arrows at either end of the scrollbar for incremental scrolling.

2. Click on either side of the scroll boxfor scrolling one window at a time.

3. Drag the scrollboxwith the mouse to scrollto a specific position.

Scroll Box 

 A scrollbox is a smallbox in a scrollbar that shows the position of what is currently in the window or list box relative to the

contents of the entire window.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 684/715

Shell 

The temporary entity (representing grouped entities) to which ProModel assigns all costs and statistics until you ungroup

the entities. Once ungrouped, ProModeldivides all costs among the entities.

Status Lights

 A status light is a circle that lights up with different colors depending on the status of the location. You can place a status

light anywhere relative to a location for showing the status or current state of the location. At run time, you can display a

window showing what status each color represents.

String 

 A string is a series of characters enclosed in double quotes (e.g., “Station A”). You may use strings to write text to a file or 

to display a message on the screen.

System Menu 

The system menu appearsas a dashmark at the upper left corner of most windows. The main function of the system

menu is to closethe window. To do this,by either double-clickon the menu button or clickon the button once andselect

Close from the menu optionsthat appear.ALT + <space bar> also pulls up thesystemmenu.

Text 

Text refers to words that you wish to display on the graphiclayout. Each specification of text has an associated font, color,

frame, and orientation (up, down, left or right). You can rotate only true-type fonts.

Time Statistics

Statistics collected on a time basis(e.g., time in system, average minutes per entry, and average contents). You cannot

controlhow ProModelcollects these statistics since ProModelbasesthem solelyon the system clock.

Work Search A work search defines the sequence in which a resource looksfor wor k at locations where work may wait to be performed.

©ProModelCorporation

Glossary 671

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 685/715

672 ProModel 2011 User Guide

Bibliography

Carson, J. S. “Convincing Users of Model's Validity isChallenging Aspect of Modeler's Job,” Industrial Engi-

neering,June1986, p. 77.

Conway, Richard, William L. Maxwell, and Steven L. Worona, User's guide to XCELL Factory Modeling System,

The Scientific Press, 1986, pp 65-66.

Gordon, Geoffrey, System Simulation, 2nd ed., Prentice-Hall, 1978.

Harrell, Charles; Ghosh, Biman; Bowden, Royce. 2003. Simulation Using ProModel. 2nd Edition; McGraw-Hill,

Inc.

Harrell, Charles R. and Kerim Tumay, Simulation Made Easy, Industrial Engineering Press, 1995.

Hoover, Stewart V. and Ronald F. Perry, Simulation: A Problem Solving Approach, Addison-Wesley, Reading

Massachusetts, 1990.

Knepell, Peter L. and Deborah C. Arangno, Simulation Validation, IEEE Computer Society Press, 1993.

Law, AverillM. and David W. Kelton, Simulation Modeling and Analysis, McGraw-Hill, 1991.

Law, AverillM. “Designing and Analyzing Simulation Experiments,” IndustrialEngineering, March 1991, pp. 20-

23

Neelamkavil, FrancisComputer Simulation and Modeling, John Wiley& Sons, 1987.

Pritsker, Alan B. and Claude Dennis Pegden, Introduction to Simulation and SLAM, John Wiley & Sons, 1979.

Schlesinger, S. “Terminologyfor ModelCredibility,” Simulation, 32(3), 1979, pp.103-104.

Shannon, Robert E., Systems Simulation: The Art and Science, Prentice-Hall, 1975.

Thesen, Arne and Laurel E. Travis, Simulation For Decision Making, West Publishing Company, 1992.

Tumay, Kerim, Business Process Reengineering Using Simulation, Autofact Workshop, 1993.

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 686/715

©ProModelCorporation

Index

-

- 494-496, 499

#

# 544

$

$ 495, 498-499

(

( ) 495, 499

*

* 206,494-496,499** 494-496, 499

 /

/ 494-496, 499/*...*/ 544// 544

;

;Not equal to 494

@

@ 456@ or Mod 494-496, 499

 \

\ 495-496, 499

+

+ 494-496, 499

=

= 494-496, 499>

> 494-496, 499>= 494-496, 499

A

 Acceleration rate 187, 365

 ACCUM 136-137, 149, 383, 388, 524, 658 Accumulate

see ACCUM 383 Accumulating

conveyor 138 Accumulating conveyor 136 Accumulating conveyors 370 Accuracy, degree of 43 ACTIVATE 250, 326, 328-329, 525, 647, 658 Active operation zone 368 ActiveX objects 666 Activity

grouping 48time and condition dependent 44

 Add joint 161

mode 130resource points 192resources & var iability 62, 68routing mode 209view 109

 Addition 494-496, 499 Additional operations 62, 72 AGV 158 AGVS

see Automated, guided vehicle systems 374 Alignment

graphics 293text 133

 ALL 198-199, 204, 208, 400, 524, 546, 559,565, 592, 628entity type 200

 ALTERNATE 502-503, 508, 513, 518 Alternative systems 56 Analysis

capability 40capacity 40constraint 40decision/response 40graphical 14output 59performance 40

sensitivity 40 AND 494-495, 497, 499, 578 ANIMATE 478, 526, 658 Animation

char ts 60conveyor 137disable 469

673

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 687/715

off 78on/off during run time 461options 469panning during run time 477screen 76user pause 470views 469zoom 469

 Appendappending a record to a table 96record to a table 96

 Arcdraw 430

 Arrange icons 118 Arrays 124, 310, 495, 594,657

accessing 311

assigning cell values 310definition 310dimensions 312disable 313displaying information during runtime 121,

470edit table 312examples 311export file 312import file 312initializing 313notes 319persist 313

referencing 310statistics 319type (real or integer) 312usage 319

 Arrivals 61, 210, 217accessing 211cycles 333accessing 334assigning arrivals 336cumulative 335, 337cycle tables 337defining 335edit table 334

examples 335percent 335quantity 335, 338table 335define 66, 213graphically 214manually 214

definition 210destroyed 213disable 213edit table 212editor 211entity field 212external arrival file 213files 353example 353first time 213frequency 213independent 214location field 212logic 213new 73occurrences 213

quantity each field 212rates 124 AS 617 AS/RS

see Automated storage/retrievalsystems 376 ASCII 540

characters 493, 540files 613text editor 663

 Assembliesmaking 387

 Assembly lines 6 Assignment 529, 658

 Attributes 62, 124, 294accessing 295cloning 296example 297COMBINE statementwithattributes 302define 73, 294edit table 297entity attr ibutes 295example 298GROUP statement with attributes 300JOIN statement with attributes 299LOAD statement with attributes 301location 657

location attributes 296memory allocationfor attributes 296see Entity attr ibutes 377, 495, 657types 295UNGROUP statement with attr ibutes 300UNLO AD statement w ith a ttributes 301

 Automated guided vehicle systems 374

674 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 688/715

©ProModelCorporation

 Automated guided vehiclesmodeling 374on-board vehicle sensing 374simulation benefits 375zone blocking 374

 Automated storage/retr ievalsystems 376modeling 376simulation benefits 377vertical bridge crane 376

 AutoSavedirectory 441files 441time between saves 440-441

 AUTOSAVE.MOD file 458 Axis shift 521

B

Background color 123edit table 117layout window 113

Background graphics 102, 284, 379accessing 285alignment 293behind grid 292mode 286BMP 380CAD 379copyobject 101

to clipboard 101

create 285deleting an object 101edit 100, 123, 285menu 289editor 287modes 285exporting a graphic 102, 291fillcolor 293patterns 293flip

horizontal 292vertical 292front of grid 292mode 286graphics menu 291group 292importing 63, 101, 290

layout window 288library graphics window 288linecolor 293styles 293lock 292movebehind grid 293imported background graphic 291in front of grid 293pasteBMP 101object 101WMF 101removing an ob ject 101rotate 292

selecting allgraphics 101sizing an importedbackground graphic 291toolsbutton bar 288ungroup 292unlock 293WMF 380

BACKUP 502-503, 513, 518Backup file 85Basic model elements 62Batch means technique 55Batching 380Batching, interval 55

BEGIN 322, 530, 557, 658Behind grid 380Behind grid mode 286Beta distribution 521Binomial distribution 521Block

number * 206routing block 203

Blocked time 369Boolean

expressions 495-496operators 495

Border change line or border style 419tank 249

Bottleneck 375Bottlenecks, identifying 59BREAK 531, 624, 658Break logic-specific system functions& statements 65

DTLEFT() 658

675

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 689/715

PRIORITY 658SKIP 658

BREAKBLK 532, 624, 658Breaks 186

colorscustomize 218logic 230see Shift & break logic 404

Bridgeand hoist trajectory 367following 365leading 365motion after queue-up 365multiple bridges 366separation 360separation distance 361

speed 359Budget for simulation project 43Build

expression buttonlogic builder 392menu 124description 81models 7, 49, 60

Bump-away 368BY TURN 205

C

CALDAY() 533-534, 657

CALDOM() 657CALHOUR() 535, 657CALMIN() 536-538, 657CALMONTH() 657CALYEAR() 657CAP() 539, 592, 657Capability analysis 40Capacity

analysis 40location 127, 138maximum location capacity 127

Capacity, load rate 370Cascade 118

Cause-and-effect relationshipsidentify 44

CHAR() 493, 498, 540,656Character strings 490, 493, 498Characters

 ASCII 493, 540

Chordcircular 433draw 433

Circledraw 432

Claimattempt rejection 362priority 360zone 362

Clearing text in a notes window 98Clock

clock-based downtime 180display during run time 478selection 77

Clock precision 372CLOCK() 499, 541, 593, 657

CLOSE 542, 658Collisions 375Colon notation 497Color 

background 111, 113, 123create custom 114custom 114edit table 117fill 421, 437gr idlines 112line 421, 437routing path 111, 115, 123shift & break

customize 218text 133COMBINE 137, 149, 246, 381, 388, 543, 575,

588, 631, 640, 642, 658Commands 105, 117Comments 544, 658Common mode 102Communication effectiveness 40Comparison

study 40with similar oper ations 47

Comparison oper ators AND, OR, NOT 494

Compiling within a logic window 99Concatenation operators 495, 498-499Conducting experiments 51Confidence intervals (CI) 51Confirm recor d deletion 440Constraints

analysis 40

676 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 690/715

©ProModelCorporation

identify 39-40CONT, see CONTINUE 504CONTENTS() 545, 657Context 119CONTINUE 205, 502, 504, 506

dynamic priority changing 504continuous modeling 248Continuous trace 77Control statements 520Convert

data to useful form 47Convert between numeric types 492Conveyors 131, 134, 136, 370

accumulating 136, 138animation 137capacity 136

conveyor networks 372conveyors in ProModel 372creating bends graphically 137definecolor 135graphically 137definition 136display graphics 137draw to scale 372entity orientation 138examples 373-374intermittent 371length 137-138

load delivery time 370load overlap 372load rate capacity 370load spacing 372modeling conveyor systems 372networks 372non--accumulating 136operational limitations 137options 138queuing 370run-time visibility 135setstyle 134

width 134simulation benefits 370single section 372speed 138, 370types 370accumulating 370non-accumulating 370

Copy 435graphic editor 416informationbetween records 98from another record 98record in a table 97text in a notes window 98

Cost 241building a model with costing 245COMBINE/GROUP 246cost dialog box 242cost per use 244initial cost 244object type 242operation rate 243per 243-244

regular rate 244disable costing 248enable costing 248entities 244, 247initial cost 244

 join/load 246locations 243, 247operation rate 243per 243output 247preemption/downtime 245resources 243, 247cost per use 244

per 244regular rate 244specialcost handling 246statistics 247, 667

Cost-related functions & statements 658GETCOST() 570GETRESRATE() 572INCENTCOST 580INCLOCCOST 581INCRESCOST 582

Counter 130, 132see Glossary 667

Cranes 359

bridge and hoist speeds 359bridge separ ation 360crane envelope 360crane move priorities 360claim priority 360effective claim priority 360task move pr iority 360crane operations 361

677

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 691/715

envelope 359horizontal speed 376idle 366, 368immovable 367modeling multiple cranes 360move priority 360multi-crane envelopesclaim attempt rejection 362extended movement zone 361queue-up situations 365zone claims 361node searches 368operation rules 367operations notes 368other rules 367park searches 368

queue-up situationsbridge motion after queue-up 365no queue-up 365reclaim trigger events 367resource requestpriorities 360response 366resource statistics 369blocked time 369gross move time 369in use 369special case, blocked time 369travel to use 369

searches 368vertical bridge 376vertical speed 376work searches 368zone claimsexamples 362speed and mobility 364

Createmodel package 93run-time models 12

CREATE 135-137, 246, 296, 543, 546, 575,

580, 588, 631, 640, 642,658CSV files 355

Cumulative d istribution f unction 348Custom

colors 114reporting 456zoom 110

Customize 406, 441

Customizing graphicsbackground graphics 379

Cut 435cutting text in a notes window 98

Cycle period 57

D

Dataapproving 49converting to a useful form 47documenting 49gathering 45protectionmodel data 94model packaging 93read 349

requirementsdetermine 45sources 46write 349

DAY 497, 499, 541, 554Deadlocks 375Debug 461

check condition 464debug button 464debug dialog 464advanced 465context 464end simulation 464

er ror display box 464into subroutine 465logic displaybox 464next statement 464next thread 464options 465run 464disable debugger 463examples 462, 466global change 464example 466logic 462disable 465

enable 466exclusive 465new 465next 465options dialog 463processdisable 465

678 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 692/715

©ProModelCorporation

exclusive 465new 465next 465process thread 462statement 462user condition 464example 466

DEBUG 463, 466, 547, 635, 658example 466

DEC 548, 658Deceleration

infinite 365rate 365

Deceleration rate 187Decision

response analysis 40

rulesfor locations 149Default graphics library 440Defaults

default values table 664program 663

Definearrivals 66attributes 73distribution 73entities 65, 154location downtimes 73locations 64

multiple entity graphics 156objectives 39path networks 68processing 66resources 69system 44

Degree of accuracy 41, 43Delete

deleting a record from a table 96 joint 161location 129graphic 129process 208

routing record 208DEPENDENT 502, 506Deposit time 187Design of experiments (DOE) 56Destination, choosing 384Developing a budget and schedule 39Dialog box 9

see Glossary 667

Dimensionsentity graphic 155graphic 421

Directories 440Disable costing 248DISPLAY 237, 493, 499, 549, 658Displaystatistics on screen

see Statistics 385Distance 163

per grid unit 113change 424units 237

Distribution functions 495, 521axis shift, optional 521beta 521binomial 521

Erlang 521exponential 521gamma 521general components 521geometric 521inverse Gaussian 521lognormal 521normal 521Pearson5 521Pearson6 521Poisson 521stream, optional 521triangular 521

uniform 521user-defined 521Weibull 521

Distributionscontinuous 348define 73discretecumulative distr ibution function 348probabilitymass function 347empirical 48fitting 47frequencyexample 48

user-defined 48Division 494, 496, 499DO...UNTIL 531, 550, 583, 658DO...WHILE 530-531, 551, 557, 583, 658Documentation symbols

#, //, /*...*/ 544DOWN 552DOWNQTY() 553, 657

679

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 693/715

Downtimes 124, 127, 375, 385clock 180define location downtimes 73define resource downtimes 179downtime-specificsystem functions 519, 552,

554, 657location 141called 145clock 141entry 142setup 144special notes 149usage 143overlapping shift downtimes 234preemption 245resource 179

clock 180usage 180-181Draw

arc 430chord 433circle 432circular chord 433ellipse 432lines 429polygon 433rectangle 431square 431triangle 431

DTDELAY() 231, 405, 554,657DTLEFT() 231, 405, 555,658DTLENGTH() 230Dynamic Plots 470-471, 476Dynamic priority changing 504Dynamic resources 177, 368

E

Editarrivals 211background graphics 100, 123editing preferencesconfirm record deletion 440

long build menu 441recalculating adjusted paths 440existing graphic 131graphics 102logic windows 99menu 95background graphics 289

description 81notes windows 98preferences 116process 71table 8, 96, 116color 117edit table font 116see Glossary 667table font 116tank or gauge 249

Edit Tables 9Ellipse

draw 432ELSE 396Empiricaldistribution 48EMPTY 507

Enable costing 248END 530-532, 557, 658Engineers 47ENT() 152, 492-493,498, 549, 558, 603, 616,

627, 657Entity 61, 152

accessing 153actionsimplicit 546, 616, 631

 ALL as type 200attributes 495assigning values 379entity characteristics 379

operation time 378processing time 377user condition routing 378using 377batching 380

 ACCUM 383COMBINE 381GROUP/UNGROUP 380LOAD/UNLO AD 382characteristics 379cost 244, 247defining 65, 154graphically 154

multiple entity gr aphics 156entitieseditor  153entity-related move logic statementsMOVE FOR 598MOVE ON 599MOVE WITH 600

680 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 694/715

©ProModelCorporation

entity-relatedoperationstatements 520 ACCUM 524COMBINE 543CREATE 546GRAPHIC 574GROUP 575JOIN 584LOAD 588MATCH 595MOVE 596RENAME 616ROUTE 626SPLIT AS 631UNGROUP 640UNLOAD 642WAIT 648

WAIT...UNTIL 649entity-specific attributes 657entity-specificsystem functions 519, 657ENTITY() 559GROUPQTY() 577RESQTY() 623graphics 434dimensions 155icon 154location file 352name 154new 73new entity check box 206

notes 154orientationon conveyor 138preemptive 157example 158processingdefine 195selectby turn 151fewest entries 151first available 151highest attribute value 150last selected location 150

least available capacity 150longest empty 151lowest attribute value 150most available capacity 151oldest by priority 150random 150-151showcurrent 210

speed 154spot 130stats 154types 124unbatching 380

ENTITY() 559, 657ENTRIES() 560, 657Envelope

crane 359-360multi-bridge 368multi-crane 361, 365

Equal to 494, 496Equalities 495Equipment manufacturers 47Erlang distribution 521Errors, run-time

alreadyrouted 207no routing defined 207Exclude graphic libr ary 94Exclusive work search 368EXP() 561Expansion, incremental 50Experiments

conducting 51types 43types of 43

Exponentialdistr ibution 521Exponentiation 494-496, 499Exporting

background graphics 291graphic editor 416Expression search 406-407

definition 407find 407-408important notes 410performing 407replace 407, 409search next 408

ExpressionsBoolean 495-496expression and statement groups 657numeric 495

string 493, 495, 498CHAR() 498ENT() 498FORMAT() 498LOC() 498numeric 498RES() 498

681

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 695/715

time 495, 497colon notation 497types of 495

Extended movement zone 361External files 349

accessing 350define 350editor 350open files 355types 351arrivals file 353DLL file 354entity-location file 352Excel file 354general read file 351general write file 352

other 354shift file 354usage 349

External spreadsheet file 658External subroutine calls

XSUB() 654

F

Face validity 50Facility 47

layouts 47walk-throughs 47

Factorial design 56

fractional-factorial 57full-factorial 56two-level 56

Factors 56impact 44

FIFO 640see Locations, rules 151

Figuresadd to gauge or tank 250

Fileexclude graphic library file 94extensions 354external 349

define 350editor 350open 355other 354types 351graphic library 240management 82-83

menu 82description 81during run-time 460during run time 460namesee Glossary 668open external 355typesarrivals file 353entity-location 352general read 351general write 352shift file 354

Files ASCII 613external spreadsheet 658

Fill color 421background graphics 293define 437tank 249patternbackground graphics 293change 421

Find and replace, local 411Find process mode 209Finite move priority 367FIRST AVAILABLE 508First in, first out 151

Flexible manufacturing systems 6Flip object 435horizontal 417vertical 417

Flowcharts 47rate of flow 251time steptanks 250

Focus of simulation 44Following bridge 365Font 133

edit table 116

see Glossary 668FOR 596, 600FORLOCATION() 230-231, 405, 562, 657Form of results 41, 43FORMAT() 498, 563, 656FORRESOURCE() 230-231, 405, 564, 657Fractional factorial design 57

682 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 696/715

©ProModelCorporation

Framesee Glossary 668text 133

FREE 367, 565, 568, 585, 658FREECAP() 566, 657FREEUNITS() 567, 657Frequency distributions

example 48Front of grid 380Front of grid mode 286FULL 517Full-factorial design 56Functions 519

cost-related 570, 572general 519math 519

system 657type conversion 519name 492nested 395new 475system 519downtime-specific 519entity-specific 519general 519resource-specific 519shift & break 519

G

Gamma distribution 521Gauge 130, 132

add labels and figures 250change to tank 249edit 249see Glossary 668

General action statements 520 ACTIVATE 525 ANIMATE 526DEBUG 547DISPLAY 549LOG 593MAPARR 594

ORDER 602-603PAUSE 605READ 613REPORT 617RESET 619RESET STATS 620RETURN 624

SEND 627SOUND 630TRACE 638VIEW 647WARMUP 650

General control statementsBEGIN 530BREAK 531BREAKBLK 532DO...UNTIL 550DO...WHILE 551END 557GOTO 573IF...THEN...ELSE 578WHILE...DO 651

General expressions 657

General functions 519math 519type conversion 519

General information 236accessing 236dialog 62dialog box 237distance units 237graphicfile library 237, 240selection 240initialization logic 237-238logicexecution time 239model notes 237

termination logic 238time units 237title 237usage 236, 284

General operation statements 658CLOSE 542DEC 548GRAPHIC 574INC 579PROMPT 610SETRATE 628STOP 634WRITE 652

WRITELINE 653XWRITE 656General read file 351General system f unctions 519, 657

CALDAY() 533-534, 657CALDOM() 657CALHOUR() 535, 657CALMIN() 536-538, 657

683

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 697/715

CALMONTH() 657CALYEAR() 657CAP() 539, 657CLOCK() 541, 657CONTENTS() 545, 657DOWNQTY() 553, 657ENTRIES() 560, 657FREECAP() 566, 657FREEUNITS() 567, 657OWNEDRESOURCE() 657percentop() 606percentutil() 607THREADNUM() 635TIMESUSED() 637, 657UNITS() 641, 657VARIABLE() 646, 657

General write file 352Geometric distribution 521GET 157, 182, 207, 360, 369, 403, 568,658GETCOST() 570, 658GETRESRATE() 572, 658GLB files 355GOTO 573, 658Graphic

new 426GRAPHIC 156, 175, 178-179, 189, 574,658Graphic editor 406, 411, 413

accessing 411arc tool 430

background color 423-424changing a graphic’s size 426changing the order of thegraphics inthe library 426chord tool 432circle tool 432clear button 426closing a graphics library 414combining two graphics 426copybutton 435graphic 416cut button 435delete button 426

dimensions 418, 421editbutton 425library graphic 437menu 412, 415ellipse tool 432exporting a graphic 416file menu 412-413

fillcolor 418color button 437patterns 418, 420flipbuttons 435horizontal 417vertical 417graphic tools button bar 427graphics menu 412, 416gridshow 423-424size & scale 423snap to grid 423-424grouping graphics 417-418importing graphics 416

library edit buttons 425linecolor 418

button 437

styles 417-418tool 429manipulating graphics 426moveto back 417to front 417naming a graphic 427opening a graphics library 414

options menu 412, 422order of graphics in the librarychange 426overview 412pastebutton 435graphics 415pie tool 432polygon tool 433positioning spot 434printgraphic 413-414graphics library 413-414

rectangle tool 431rotatebutton 435graphic 417savebutton 425graphic 413

684 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 698/715

©ProModelCorporation

graphics library 414selector 428sizechange 426square tool 431status light 434step back & front buttons 436text tool 428triangle tool 430ungrouping graphics 417-418usage 411window menu 413, 425zoom 423, 425

Graphic librarycreate new 426

Graphical analysis 14

Graphicsbackground 379alignment 293behind grid 292delete an object 101edit 123export 102, 291fill

color 293

patterns 293

flip

horizontal 292

vertical 292

front of grid 292group 292import 63, 101, 290line

color 293

styles 293

lock 292move

behind grid 293

imported graphic 291

in front of grid 293

paste

BMP 101

WMF 101

removing an object 101right-click editing 102

rotate 292size an imported graphic 291ungroup 292unlock 293customizing 379behind grid 380front of grid 380importing 379define multiple entity 156dimensions 421editing & moving 102entity 434graphicdimensions 155

library 131file 237, 240

exclude 94

selection 240

graphic 134location 130, 434graphics window 128

edit button 128

erase button 128

view button 128

move 103multipleassign to resource 178resource 434multiple 178

Graphsutilization 15

Greater than 494, 496or equal to 494, 496

Gridlines

change color 112change r esolution 112scale 113settings 123grid scale 113show 106, 120, 424size 112snap to 106

685

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 699/715

unitdefault time 113distance per unit 113

change 424

Groupactivity 48graphics 292, 418objects 418resource 321

GROUP 137, 149, 246, 380, 388, 543, 546,

575, 588, 631, 640, 642, 658GROUPQTY() 577, 657

H

Hardware requirements 18

Helpindex 119menu 118description 82on-line 11accessing 100

Hidden networ ksshow 123

Hideconveyors and queues 135networks 106, 120

Hoistand bridge trajectory 367

lower 368speed 359

Homereturn if idle 186

Horizontal speed 376Hours 497, 541, 554HR 497, 541, 554Hypothesis testing 56

I

Iconadd to location 130locations 127

Idlereturn home if 186

Idle cranes 368moving 366

IF EMPTY 205IF ...T HEN 322, 3 95, 397, 466, 530-531, 545,

557, 559, 578, 592, 626, 635,658

IF...THEN...ELSE 66, 395, 573, 578, 658Immovable cranes 367Impact factors 44Import

background graphics 63, 290graphic editor 416tank submodel 248

Importingbackground graphics 379

INC 579, 658INCENTCOST 580, 658INCLOCCOST 581, 658Incremental expansion 50INCRESCOST 582, 658Independent arrivals 214Industrial vehicles 375

deployment strategies 376modeling 376multiple load transporters 376simulation benefits 376

Inequalities 495INF 127INFINITE 127, 212Infinite deceleration 365Information menu 78

during run time 470Initial

costCREATE 244

INCENTCOST 244ORDER 244ROUTE 244state 52warm-up period 55

Initial value 385Initialization logic 237-238

execution time 239Input variables 45Insert

recordin a table 96Install model package 93, 95Installation

see Setup and installation 18INT 304, 308, 583, 658Integer number 

see Glossary 668Integers 491Interact menu 476Interactive subroutines 332, 476

686 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 700/715

©ProModelCorporation

Interfacesedit table 165location-node 165

Intermittent conveyor 371Interval batching 55Inverse Gaussian distribution 521

J

JIT systems 6Job shops 6Join 246JOIN 72, 149, 152, 299, 387, 509, 584, 614,

658Joint

add 161delete 161

JOINTLY GET 157, 182, 360, 369, 403, 585,658

K

KANBAN systems 6KEEP 367Keyboar d 3Keywords 490

L

Labels 104add to gauge or tank 250text 130-131

Language elementscharacter strings 490, 493keywords 490names 490conventions 490numbers 490-491converting between numeric types 492integers 491name-index 492real numbers 492operators 490, 493comparison 494

mathematical 494precedence 494relational 494types of 490

Last in, first out 151LAST() 586, 657Layout

printing a layout 90

settings 111, 123background color 111, 113grid settings 111-113routing path color 111, 115window 65

Leading bridge 365Length

conveyor 138Level

of detail 41-42tank 250

Librarynew 426

Library graphic 131see Glossar y 668

Licence Manager  406

License keytransfering 36LIFO 640

see Locations, r ules 151Line

change line or border style 419color 421background graphics 293define 437draw 429styles 418background graphics 293

LN() 587

Loaddelivery time 370 jumping 372overlap 372rate capacity 370spacing 372

LOAD 149, 246, 301, 309, 382, 388, 492, 510,

543, 546, 575, 588, 631, 640, 642, 658LOC() 125, 205,492-493,498, 549, 553, 566,

590, 603, 627, 641, 657Local find andreplace 411Local var iable 658

declaration statements

INT 583REAL 614

Local variables 308Location

attributes 657location-specific system functions 657LOCATION() 592

687

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 701/715

LOCATION() 403, 405, 539, 592, 657Locations 61, 125

accessing 126add mode 130adding symboltoexisting location 130attributes 296capacity 127, 138maximum 127conveyor/queue 131cost 243, 247counter 130, 132create 126define 64, 125-126multi-unit locations 140multiple locations 129new location graphically 128

deletelocation 129location graphic 129destinationprocessing 204displayinfor mation dur ing r un t ime 121, 4 70location name 132downtimes 127, 141called 145clock 141define 73definition 141

entry 142setup 144special notes 149specifying 141usage 143edit 126edit table 65, 126editing an existing graphic 131editor 126entity spot 131gauge 130, 132graphics 130, 434window 128

edit button 128

erase button 128

view button 128

icon 127identifying location name during run-time 478

information window 13label 131library graphic 131, 134LOC() 125move 103graphic 129multiple graphics 129multi-capacity vs. multi-unit 139multiple g raphics f or a l ocation 132naming 127new 73mode 128node interface 165notes field 128preemption 145, 148priorities 145-146

queue 131region 131rules 128, 149example 151queuing for output 150selecting a unit 151selecting incoming entity 150statistics 127statuslight 131tank 131-132text 130, 133units 127, 139

view 130Lockgraphics 292

LocState() 591LOG 541, 593, 614, 658Logarithm 587Logic 3

arrivals 216break 230builder 9accessing 99, 253, 389build expression button 392building statements or expressions 390

cancel button 393clear button 392components 390editing statement parameters 394expressions, creating 397keypad button 391logic

buttons 391

688 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 702/715

©ProModelCorporation

elements 392

nested f unctions & statements 395parameter 

buttons 391

entry field 391

paste

button 392

logic/model elements only 397

return button 393select

logic elements 394

statements 392-393

using 390off-shift 230operation 397pre-break logic 230pre-off-shift 230preemption process 399example 401functions 400possible effects of delayedpreemption 400process 72, 74, 124routing 72, 74

routing move 401GET, JOINTLY GET, USE 403move-related statements 403statement processing 404shift & break 229, 404break logic 404functions &statements 405off-shift logic 404pre-break logic 404pre-off shift logic 404sequence of events 230, 404subroutines 331windows

edit 99Logicelements

distribution functions 521axis shift, optional 521general components 521stream, optional 521

functions 519downtime-specific 519entity-specific 519general 519resource-specific 519shift & break 519system 519general functions 519math 519type conversion 519priorities 522resource request logic 368statement blocks 520statements 520control 520entity-related operation 520

general action 520resource-related 520Lognormaldistribution 521Long build menu 441

view 440LONGEST UNOCCUPIED, (LU) 511Lower the hoist 368LU, see LONGEST UNOCCUPIED 511

M

Macros 124, 319, 495accessing 320and subroutines 658

create 320definition 319edit 320table 320example 321macros vs. subr outines 321scenario par ameter 321-322subroutines vs. macros 333text 321usage with BEGIN/END 322valid usage 321-322

Main entity 668errors

alreadyrouted 207no routing defined 207

Main menussee Glossary 668

Maintenance reports 47Maintenance, scheduled 375Managers 47

689

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 703/715

Manual m ater ial h andling systems 375modeling labor 375simulation benefits 375

MAPARR 594, 658Mapping

create 166edit table 165example 167

Market forecasts 47MATCH 149, 584, 595, 658Math functions 519

EXP() 561LN() 587RAND() 612ROUND() 625SQRT() 633

Mathematical operators 494-495Matrix, resource preemption 183Maximum run length 452Maximum speed 365Memory

allocationfor attributes 296

Menubar 81

Mergemodels 10, 83, 85submodel 86

MIN 497, 541, 554

Minutes 497, 554MMHSsee Manualmaterialhandling systems 375

MOD files 355Model

build 7, 49, 60create new 83dataprotect 94elements 61basic 62example of building a model 61execution 449

merge 83, 85new 83notes 237open 83-84packagecreate 93data protection 93install 93, 95

partitioning 50phased modeling approach 62results, reporting 59run 11run-time 12save 83save as 83-84textprint 87view 87validation 50verification 50

Model Collaborator 406Modeling

services 4Modeling conveyor s 372

conveyor systems 372Modeling prioritiessee Priorities 384

Modulus 494, 496, 499MOST 512Motion, bridge 365Move

along path network 187finite move priority 367graphics 102special considerations 103gross move time 369idle cr anes 366

location 103location graphic 129logic 205, 207, 401GET, JOINTLY GET, USE 403move-related statements 403statements

processing 404

logicstatements 658FREE 565GET 568JOINTLY GET 585MOVE FOR 598

MOVE ON 599MOVE WITH 600USE 644moving a record in a table 96-97multiple location graphics 129objectbehind 436

690 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 704/715

©ProModelCorporation

in front 436path networks 104, 161resource 104points 192routing paths 103to park 369

MOVE 135-136, 401, 403, 596, 658MOVE FOR 207, 401, 403, 598, 658MOVE ON 207, 401, 403, 598-599, 658MOVE W IT H 207, 360, 367, 4 02- 403, 5 68,

598-600, 658Moving Graphics, common mode 102Multi-bridge

crane systems 360, 366envelopes 368

Multi-crane envelopes 361, 365

Multi-unitlocations 139resources 179

Multiple capacitylocation 139Multiple load transpor ter s

see Industrial vehicles 376Multiple locations 129Multiple single-unit r esources 179Multiple streams 58Multiplication 494-496, 499

N

Name

indexsee Glossary 668location 127

Name-index numbers 492, 495conversion functionsLOC() 590RES() 618

Names 385, 490conventions 490functionsENT() 492LOC() 492RES() 492

Nested functions & statements 395Network

non-passing 158passing 158path 158resource path network 185show hidden 123

show networks 106, 120versioninstallation procedure 24

Newarrival 73entity 73entity check box 206block number 

* 206

location 73mode 128model 83create 83processcreate 208

New & modified features ActiveX objects 666

New & modified statementsand functions 475New graphic

create 426New graphics library

create 426NEXT() 601, 657No queue-up 365Node

add resource points to 192break 186home 186

logic 174editor 189example 190off shift 186

Node logic-specificsystem functions 657Nodes 368

serviceable 360Non-accumulating conveyor 136Non-accumulating conveyors 370Non-exclusive work search 368Non-terminating simulation 52

running 53Normal distribution 521

NOT 494-495, 497, 499Not equal to 496Notation

colon 497Notes

field 128see Glossary 669

691

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 705/715

windowsediting 98

Numbers 490-491, 495converting between numerictypes 492integers 491name-index 492numerictypesee Glossary 669randomstreams 357real numbers 492

Numeric expressions 495Numeric Type, glossary 669Numer ic t ypes, c onver ting between 492

O

ObjectID() 602Objectives, defining 39Observation-based statistics 306Off-shift

locations, preempting 233logic 230node 186

Off-shift & break logic specific system functions & statements 658On-board vehicle sensing 374On-line tracking systems 47One-dimensional array 311Open

model 83-84

Operationcrane 361, 367-368statements 658timeusing entity attributes 378zone 368

Operation logic 71processing 199

Operator precedence 494, 499addition, + 499

 AND 499concatenation, $ 499division, / 499

equalities 499examples 499exponentiation, ** 499inequalities 499modulus, @ or Mod 499multiplication, * 499NOT 499

OR 499parentheses, ( ) 499subtraction, - 499

Operators 490, 493comparison 494mathematical 494relational 494

OptimizationSimRunner 479study 40

Options 406, 439menudebug option 462during run time 461simulation 75, 449

OR 494-495, 497, 499, 578

ORDER 296, 580, 602-603, 658Outputanalyzing 59charts 60costing statistics 247output menu 81reporting options 454batch mean 454interval length 456number of replications 456periodic 455running a specific replication 456standard 454

viewing 14Output Viewer 482Overlap

load 372OWNEDRESOURCE() 604, 657

P

Pan 76Parameters

see Glossary 669subroutines 330

Parentheses 499Park and worksearch 368

Park search 174, 187edit table 188see Glossary 669

Park, travel to 369Partitioning, model 50Paste 435

recordin a table 97

692 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 706/715

©ProModelCorporation

text in a notes window 98Path

networks, see Path networks 669routingmove 103show 106, 120, 123types 116see Glossary 669segmentedit table 69

Path networks 61, 104, 124, 158accessing 159automatic time and distance calculation 164default time and distance values 164define 68color of path network 160

graphically 160editor 159example 162interfaces edit table 165location interface points 160mapping 160edit table 165example 167move 161name 160nodes 160creating additional 161edit table 170

non-passing 158passing 158paths 160creating segments 161recalculating adjusted paths 440segment edit table 162segments 161pre-translation check 170resource 185speed/distance measurement 160time measurement 160typesnon-passing 160

passing 160PAUSE 319, 605, 658Pause simulation 76Pearson5 distribution 521Pearson6 distribution 521People as resources 375PercentOp() 606PercentUtil() 607

Performance analysis 40Pickup time 187Pitfalls in simulation 60Planning the study 39PMCAL files 355PMOV files 355Points

resource 191-192Poisson distribution 521Polygon

draw 433Positioning spot

place on an icon 434see Glossary 669

Power Tools 443Pre-analysis 481

Pre-break logic 230Pre-off-shift logic 230Pre-translation check 170Precedence, see Oper ator pr ecedence 494Predetermined time standards 46Preemption

creatinga preemptionprocess record 399downtime 245entities 157locations 145off-shift locations 233processexample 401

logic 399possible ef fectsofdelayedpreemption 400

new functions 400resources 182-183see Glossary 669shift & break logic 231

Preemption logic 385and downtimes 385system functions 658PREEMPTOR() 608TIMELEFT() 636

PREEMPTOR() 401, 608, 658

Preparing a simulation specification 39Print

graphic 414librar y 414layout 88model text 87

693

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 707/715

printer setup 88, 92change the printer settings 92text 88-89

Printing t ext w ithin a logic w indow 100Priorities 522

assign 146claim 360crane move 360dynamic priority changing 504effective 364finite move 367for a destination 384locations 145-146modeling 384downtimes 385preemption 385

processing destination 384selecting resources 384resource request 360, 368resources 182-183shift 229task move 360

PRIORITY 230-231, 405, 609,658ProActiveX 445PROBABILITY 503, 513Probability mass function 347Processing 61, 193

add routing mode 209create and editprocess routings 193

define 66, 193graphically 195deleting a process or routing r ecord 208destination location 204editing 71editor 196accessing 193using 194entity 195, 198example 194find process mode 209layout window 197location 198

logic 67, 72, 74, 124move logic 205, 207new process mode 208operation logic 199output part 203process edit table 67, 71, 197processing tools 208

recordsedit 97routingadding additional blocks 209block number 203edit table 197, 202entity to exit 209path editing 208rules 205view routing button 210tools window 197using ALL entity type 200

Processing timeusing entity attributes 377

ProClare 444Product support 3

Program defaults 663default values table 664Progressive r efinement 49PROMPT 610, 658Protect model data 94Pullsystems

creating 386SEND statementpull systems 386steps to build 386types of 386

Q

Quantity 207Queue 131, 134-135

by type 151define 135color 135drawing 136entity preemption 135first in, firstout (FIFO) 151highest attribute value 151last in, last out (LIFO) 151lowest attribute value 151MOVE 135no queuing 151

run-time visibility 135style 134width 134

Queue-upbridge 365conditions 365situations 365

694 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 708/715

©ProModelCorporation

unrealistic 365Queuing 370

R

RAND() 73, 612Random

numbers 357streams 57

RANDOM 514Rate of flow 251Rate, tank flow 251, 265, 268RDB files 355RDT files 355READ 542, 613, 658Read data 349REAL 304, 308, 614, 658

Realnumber see Glossary 669

Real numbers 492REAL() 615Recharging strategies 375Reclaim trigger events 364, 367Record

appendto table 96copy 97information 98

between records 98

deletefrom a table 96insert in a table 96move in a table 97paste 97

Rectangledraw 431

Referencesee Glossary 670view 110

Refinement, progressive 49Refresh layout 118, 123Region

see Glossary 670Registration

network installation 36Rejection, claim attempt 362Relational operators 494Relationships

cause-and-effect 44

Remove view 109Rename

views 109RENAME 152, 247, 616, 658RENAME AS 203Replace, find and 411Replications 51-52

running a specific replication 456REPORT 456, 617, 620, 658Reports

view 79Requirements

hardware 18RES() 171,492-493,498, 549, 553,585, 618,

637, 641, 657RESET 613, 619, 652-653, 656, 658

RESET STATS 456, 620, 658Reset window positions 118Resolution

grid lines 112Resource-related oper ation s tatements 520

FREE 565GET 568GRAPHIC 574JOINTLY GET 585USE 644WAIT...UNTIL 649

Resource-specif ic system functions 519, 657LAST() 586

NEXT() 601OWNEDRESOURCE() 604RESOURCE() 621-622

Resource request 366logic 368priorities 360priority 360, 368

Resource statistics 369RESOURCE() 231, 405, 621-622, 657Resources 61, 124, 171

accessing 171closest 186cost 243, 247

cr eate 171new resource 175define 69definition 171downtimes 174, 179clock 180define 179

695

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 709/715

usage 181dynamic 368dynamic resources 177edit 171-172table 173entity search rules 186example 171GRAPHIC 175graphics 434window 173, 175group 321home node 185icon 174least utilized 186logic 174longest idle 186

motion 187move 104multi-unit 179vs. multiple single-unit 179multiple resource graphics 178example 178multiple, single-unit resources 179name 174node logiceditor 189example 190notes 174park search 174, 187

edit table 188path network 185people as 375pointsee Glossary 670preemption 182matrix 183priorities 182shift downtime 183RES() 171resource points 174, 191adding 192deleting 192

moving 192searchroutines 187rules 186see Glossary 670selecting 384shift & break nodes 186specifications 174, 185

static resources 176statistics 174units 174variabilityadding 62, 68work search 174, 187edit table 188

ResourceUnit() 622Response 56

variables 45Response time 376

minimize 375RESQTY() 623, 657RETURN 328-329, 624, 658Return home 369Return home ifidle 186

Right-clickediting 102menus 122simulation menu 479

Rotateobject 435text 133

ROUND() 328, 496, 625ROUTE 203, 580, 626, 631, 658Routing

block 203color 123edit table 67, 71

logic 67, 72, 74move logic 207pathcolor  111, 115edit 208move 103show 106, 120, 123types 116prioritysee Glossary 670processcreate 193edit 193

quantity 207start new routing block 206table* 206block number 206typerelated 115selected 115

696 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 710/715

©ProModelCorporation

unselected 115Routing rules 501

 ALTERNATE 502BACKUP 503CONTINUE 504dynamic priority changing 504DEPENDENT 506dialog box 501EMPTY 507FIRST AVAILABLE 508FULL 517JOIN 509LOAD 510LONGEST UNOCCUPIED, ( LU) 511PROBABILITY 513RANDOM 514

SEND 515TURN 516USER CONDITION 518

Routing, user condition 378Rule field, routing edit table 501Rules

dialog box 149location 128

Runlength 55calendar date 451time only 451weekly time 451

model 11, 75, 449non-terminating simulations 53simulation 458terminating simulations 52

Run-timecontrols 459, 477animation panning 477clock display 478identifying location name 478simulation speed 477end simulation 461errorsalready routed 207

no routing defined 207file menu 460help menu 476information menu 470arrays 121, 470locations 121, 470status light 470variables 121, 470

interact menu 476subroutines 476menus 459models, creating 12options menu 461animation off/on 461debug option 461-462trace output 462user pause 462zoom 461pause/resume simulation 461simulation menu 461window menu 476

S

Save

and run 449model 83model as 83

Scalegrid 113

scenarioparameter parameter name 323parameters 322advantages 322defining 323example 324numeric range 323

record range 323text 323

Scenarioparametersprompt 323

Scenarios 449, 457defining 457

Scheduled maintenance 375Scheduling a simulation project 43Scope 41Scroll

arrow, see Glossary 670bar, see Glossary 670

box, see Glossary 670Search

entity search rulesclosest 186longest waiting 186maximum value 186with minimum value 186

697

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 711/715

park 187resource search rulesclosest 186least utilized 186longest idle 186routines 187work 187

Search, find and replace 411SEC 497, 541, 554Seconds 497, 554SED files 355Segments 161SEND 387, 502, 515, 522, 627, 658Sensitivity analysis 40Separation distance, bridge 361Serviceable nodes 360

SETRATE 628, 658Settings 105-106layout 111printer 92

Setup and installation 18hardware requirements 18network version 24

Shell 246, 671Shift

assignments 224locations 226overlapping downtimes 234priorities 228

resources 226units 227

selecting calendar files 227shift & break

logic 229

functions & statements 230

preemption 231

sequence of events 230

usage 224

colorscustomize 218copy a shift 224definition 218accessing 218

 Adding Work to a shift or break block 222advantage of shifts 217

editing work or break time 223editor 218

menus 220

erasing work or break time 223downtimeprinciples 232

examples 232

locations 232

overlapping downtimes 234

preemption 233

resources 234

priorities 183editor 218menus 220file 354prioritiesbreak 229end shift 229off-shift 229start break 229shift & break logic 404break logic 404functions& statements 405off-shift logic 404

pre-break logic 404pre-off-shift logic 404sequence of events 404

Shift-specific system functions 657FORLOCATION() 657FORRESOURCE() 657

Shift Library 445Shifts & breaks 375

logicstatementsPRIORITY 609SKIP 629system functions 519DTLEFT() 555

FORLOCATION() 562FORRESOURCE() 564RESOURCE() 621-622

Showconveyors and queues 135grid 106, 120, 123, 424hidden networks 123networks 106, 120

698 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 712/715

©ProModelCorporation

routing paths 106, 120, 123SimRunner 479

benefits 480defineinput factors 480objective function 480stagethree simulationoptimization 481starting a new project 480

Simulatescenarios 449

Simulationanimation off 78focus 44menu 449description 81during run time 461

options 449run-time

end simulation 461

pause/resume 461

running a model 449save & run 449scenario manager 449simulate scenarios 449non-terminating 52running 53options 75, 450clock precision 452common random numbers 453customized reporting 456disable

animation 453

cost 453

time series 453

display notes 453maximum run length 452output

path 450reporting options 454

batch mean 454

interval length 456

number of replications 456

periodic 455

running a s pecific r eplication 456

standard 454pause at start 453run length

calendar date 451

time only 451

weekly time 451

pitfalls 60planningdata gathering 45steady-state 52-53, 55

steps 38analyzing the output 59building the model 49conducting experiments 51defining the system 44planning the study 39reporting the results 59terminating 52-53, 55running 52

Single-section conveyors 372Six Sigma Analysis 479Sizing 104SKIP 230, 405, 629, 658

Snaplinesto border  210to grid 104, 106, 123

Snap to gridoff 373on 373

SOUND 630, 658Spacing

load 372Speed

and distance 160bridge 359control bar 77

conveyor 138, 370crane bridge 364factor 163hoist 359horizontal 376simulationrun-time control 477

699

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 713/715

traveling empty/full 187vertical 376

SPLIT AS 135-137, 152,203, 205, 247, 296,

543, 546, 575, 588, 631, 642, 658Spreadsheetexternal file 658

SQRT() 633Square

draw 431Square root 633Stage one

pre-analysis 481Start new block 206Stat::Fit 406State

initial 52

terminating 52Statements 520and expression groups 657blocks 520control 520cost related 580-582entity-related operation 520general action 520nested 395new 475resource-related 520

Static resources 176Statistics 127

basic 127cost 667displaying on screen 385system throughput 385total system time for entities 385none 127observation-based 306resource 369time 671time-weighted 306time series 127view 79

Status

light 130-131, 470place on icon 435see Glossary 671

Steady-state 51, 54-55simulation 52-53, 55

Stepback 436

front 436trace 77

STOP 634, 658Stream, distributions 521Streams 355

accessing 356definition 355edit table 356example 358multiple 58random number 57, 357usage 357

Stringsee Glossary 671

Stringscharacter 490, 493

expressions 495, 498, 658CHAR() 498character strings 498concatenation operators 498ENT() 498FORMAT() 498LOC() 498numeric expressions 498RES() 498functionsCHAR() 540FORMAT() 563

Submodel

merge 86tank 248import 248uses 10

SubmodelstankTANK_DEC 261TANK_INC 260TANK_RISETRIGGER 262

Subroutines 124, 326, 495accessing 327and macros 658create 327

definition 326edit 327table 327, 330example 329executing interactivesubroutinesduring run time 476external 333format 328interactive 332

700 ProModel 2011 User Guide

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 714/715

©ProModelCorporation

logic 328, 331parameters 328, 330RETURN statement 329subroutines vs. macros 333tankTANK_CAP 263TANK_DOOPERATION 264TANK_DOPREP 267TANK_EMPTY 255TANK_FALLTRIGGER 263TANK_FILL 254TANK_FREECAP 264TANK_GODOWN 265TANK_GODOWNSCHED 266TANK_RATE 272TANK_SELECTINPUT 270

TANK_SELECTOUTPUT 268TANK_SETLEVEL 260TANK_SETSTATE 268TANK_TRANSFER 256TANK_TRANSFERDOWNTO 259TANK_TRANSFERUPTO 258TANK_UPDATESTATS 271type (none, real, integer or inter active) 328valid usage 329

Subtraction 494, 496, 499Supply chains & logistics 6Switches 105Symbolsand notation

keyboard 3logic 3text 3

Systemdefinition 44menu, see Glossary 671

System functions 495, 519break logic-specific 657downtime-specific 657entity-specific 657location-specific 657node logic-specific 657preemption logic specific 658

resource-specific 657shift-specific 657System throughput 385

T

Tableediting 96

functions 340accessing 341defining 340edit table 343editor 341examples 342-343

Table functions 495TAKE 546TANK_CAP 263TANK_DEC 261TANK_DOOPERATION 264TANK_DOPREP 267TANK_EMPTY 255TANK_FALLTRIGGER 263TANK_FILL 254TANK_FREECAP 264

TANK_GODOWN 265TANK_GODOWNSCHED 266TANK_INC 260TANK_RATE 272TANK_RISETRIGGER 262TANK_SELECTINPUT 270TANK_SELECTOUTPUT 268TANK_SETLEVEL 260TANK_SETSTATE 268TANK_TRANSFER 256TANK_TRANSFERDOWNTO 259TANK_TRANSFERUPTO 258TANK_UPDATEST ATS 271

Tanks 131-132, 248add labels and f igures 250basicconcepts 250border color 249capacitymaximum 127change between a tank and a gauge 249define 248edit 249fill color 249flow time step 250levels 250rate of flow 251

submodel 248import 248Tanks, time units 251, 265, 268Task move priority 360Technicalsupport 3Terminating

simulation 52-53, 55running 52

701

7/15/2019 ProModel User Guide

http://slidepdf.com/reader/full/promodel-user-guide 715/715

state 52Termination logic 238

execution time 239Testing

hypothesis 56Text 3

clear 98copy 98cut 98dialog box 133fileview 77label 130paste 98see Glossary 671

THEN 396, 578

THEN FREE 403, 600THREADNUM() 635Throughput 385Tile 118Time 160, 163

between autosaves 441blocked 369default grid time 113expressions 495, 497colon notation 497load delivery 370move 369statistics 671

studies 46time-weighted statistics 306time and condition dependent activities 44units 237

Time units, tank 251, 265, 268TIMELEFT() 401, 636, 658TIMESUSED() 637, 657Title of model 237Toolbar 119Tools

button bar 288menudescription 82

settings

directories 440

processing 208Trace 462continuous 77, 467filtered 467off 467options 467output to file 469step 77, 467window 12

TRACE 638, 658Trajectory, hoist and bridge 367Transfer lines 6Transfering a license key 36

Translation status window 458Travel to park 369TRC files 355Triangle

draw 431Triangular distribution 521Trigger events, reclaim 367TRUNC() 639TURN 516Two-dimensional arr ay 312Two-level design 56Type 385

conversion functions 519

ENT() 558REAL() 615TRUNC() 639numeric 492

Type of experimentation 41, 43

U

Unbatching 380Ungroup

graphics 292, 418objects 418

UNGROUP 135-137,246,380,388, 543,546,

575, 588, 631, 640, 642, 658

702 ProModel 2011 User Guide