100% found this document useful (1 vote)
578 views656 pages

ProModel User Guide PDF

Uploaded by

david
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
578 views656 pages

ProModel User Guide PDF

Uploaded by

david
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

user guide

Disclaimer Copyright Information


The information in this guide is provided by Pro- © 1/06 ProModel Corporation
Model Corporation to document ProModel. The
All rights reserved
contents of this manual are subject to change
without notice and does not represent a commit- Printed in the United States of America
ment on the part of ProModel Corporation. The
software described in this guide is applied under
a license agreement and may be copied only
under the terms of the license agreement. No part
ProModel and SimRunner are registered trade-
of this guide may be reproduced, transmitted, or
marks of ProModel Corporation.
distributed by any means, electronic or mechani-
cal, for purposes other than the owner’s personal Text indicator graphics Copyright New Vision
use without express written permission from Pro- Technologies Inc.
Model Corporation.
Microsoft is a registered trademark and Win-
dows, Excel, and ActiveX are trademarks of
Microsoft Corporation.
Stat::Fit is a trademark of Geer Mountain Corpo-
ration.
IBM is a registered trademark of International
Business Machines Corporation.
Netware and Novell are a registered trademarks
of Novell, Inc.
AutoCAD is a registered trademark of Autodesk,
Inc.

1/06
ProModel iii
User Guide

Table of Contents

Introduction ...................................................................... 1

About the User Guide ........................................................... 1


Symbols and Notation .......................................................... 3
Keyboard ........................................................................ 3
Text ................................................................................ 3
Logic .............................................................................. 3
Product Support .................................................................... 4
Modeling Services ................................................................ 5
Reporting Suggestions .......................................................... 5

Chapter 1: Getting Started ................................................................. 7

Welcome to ProModel .......................................................... 7


Where to Go from here .................................................. 7
Using ProModel .................................................................... 9
Building Models ............................................................. 9
Running Models ........................................................... 11
Creating Run-Time Models ......................................... 11
Trace Window .............................................................. 11
Location Information Windows ................................... 12
Viewing Output ............................................................ 12

Chapter 2: Installation and Registration ........................................... 15


iv

General Setup Information ................................................. 15


Hardware Requirements ............................................... 15
Installation Procedure for a Stand-alone PC ...................... 15
Installation Procedure for Network Version ....................... 17
Overview ...................................................................... 17
Installation Types ......................................................... 17
Local Machine Install ................................................... 18
File Server Install ......................................................... 19
Set Up License Server .................................................. 21
Registering ProModel ......................................................... 24
Checking for ProModel Updates .................................. 28
Software License Key FAQ ......................................... 28

Chapter 3: Planning the Model ........................................................ 31

Steps for Doing Simulation ................................................ 31


Introduction .................................................................. 31
General Procedure ........................................................ 31
Step 1: Planning the Study ........................................... 32
Step 2: Defining the System ......................................... 36
Step 3: Building the Model .......................................... 41
Step 4: Conducting Experiments .................................. 43
Step 5: Analyzing the Output ....................................... 51
Step 6: Reporting the Results ....................................... 51
Pitfalls in Simulation .................................................... 52
Summary ...................................................................... 52
Building a Model ................................................................ 53
Modeling Scenario ....................................................... 53
Phased Modeling Approach ......................................... 54
Phase 1: Basic Model Elements ................................... 55
Phase 2: Adding Resources & Variability ................... 58
Phase 3: Additional Operations .................................... 61
Running a Model ................................................................ 62
Simulation Options ...................................................... 63
Animation Screen ......................................................... 63
Options Menu ............................................................... 64
Information Menu ........................................................ 64
ProModel v
User Guide

Viewing Model Statistics & Reports .................................. 65

Chapter 4: Modeling Environment .................................................... 67

Menu Bar ............................................................................ 67


File Menu ............................................................................ 68
File Management .......................................................... 68
Model Merging ............................................................ 70
View/Print Model Text ................................................ 72
Model Packaging/Data Protection ............................... 74
Edit Menu ........................................................................... 76
Editing Tables .............................................................. 76
Editing Process Records ............................................... 77
Editing Notes Windows ............................................... 78
Editing Logic Windows ............................................... 78
Editing Background Graphics ...................................... 80
Editing & Moving Graphics ........................................ 81
View Menu ......................................................................... 83
Switches ....................................................................... 83
Toolbars ....................................................................... 83
Settings ......................................................................... 83
Views ........................................................................... 84
Zoom Feature ............................................................... 86
Layout Settings ............................................................ 86
Edit Tables ................................................................... 90
Commands ................................................................... 90
Window Menu .................................................................... 91
Help Menu .......................................................................... 91
Toolbars .............................................................................. 92
Right-Click Menu ............................................................... 94

Chapter 5: Building the Model: General Elements ............................ 95

Build Menu .................................................................. 95


Locations ............................................................................ 96
vi

Locations Editor ........................................................... 96


Location Edit Table ...................................................... 97
Location Graphics Window ......................................... 98
Location Graphics ...................................................... 100
Capacities and Units ................................................... 106
Location Downtimes .................................................. 107
Rules Dialog Box ....................................................... 115
Entities .............................................................................. 118
Entities Editor ............................................................ 118
Defining Entities ........................................................ 119
Entity Graphic Dimensions ........................................ 119
Defining Multiple Entity Graphics ............................ 120
Preemptive Entities .................................................... 121
Path Networks .................................................................. 123
Path Networks Editor ................................................. 123
A Typical Path Network ............................................ 125
Path Segment Edit Table ............................................ 126
Automatic Time and Distance Calculation ................ 127
Interfaces Edit Table .................................................. 127
Mapping Edit Table ................................................... 128
Nodes Edit Table ........................................................ 130
Pre-translation check for Path Networks ................... 131
Resources .......................................................................... 132
Typical Use of Resources .......................................... 132
Resources Editor ........................................................ 133
Static Resources ......................................................... 135
Dynamic Resources .................................................... 136
Multiple Resource Graphics ....................................... 136
Multi-Unit Resources vs.
Multiple Single-Unit Resources ................................. 137
Resource Downtimes ................................................. 138
Resource Priorities and Preemption ........................... 140
Resource Shift Downtime Priorities .......................... 141
Resource Preemption Matrix ..................................... 141
Resource Specifications Dialog Box .......................... 143
Resource Search Routines .......................................... 145
Node Logic Editor ...................................................... 146
Resource Points .......................................................... 147
Processing ......................................................................... 149
ProModel vii
User Guide

Using the Processing Editor ....................................... 149


Defining Entity Processing ........................................ 150
Processing Editor ....................................................... 151
Process Edit Table ...................................................... 151
Routing Edit Table ..................................................... 155
Processing Tools ........................................................ 159
Arrivals ............................................................................. 163
Arrivals Editor ............................................................ 163
Arrivals Edit Table ..................................................... 163
Defining Arrivals ....................................................... 164
Independent Arrivals .................................................. 165
Arrival Logic .............................................................. 167
Shifts & Breaks ................................................................. 168
Shift Assignments ...................................................... 171
Shift Downtime Principles ......................................... 175
General Information ......................................................... 179
General Information Dialog Box ............................... 179
Cost ................................................................................... 183
Cost Dialog Box ......................................................... 183
Building a Model with Costing .................................. 184
Preemption/Downtime ............................................... 185
Join/Load .................................................................... 185
Combine/Group .......................................................... 185
Special Cost Handling ................................................ 186
Costing Output Statistics ............................................ 186
Enable or Disable Costing .......................................... 187
Tanks ................................................................................ 188
Basic Concepts ........................................................... 189
Tank Logic Builder .................................................... 191
Pre-defined Tank Subroutines .......................................... 193
Tank_Fill .................................................................... 193
Tank_Empty ............................................................... 194
Tank_Transfer ............................................................ 195
Tank_TransferUpTo ................................................... 195
Tank_TransferDownTo .............................................. 196
Tank_SetLevel ........................................................... 197
Tank_Inc .................................................................... 198
Tank_Dec ................................................................... 198
viii

Tank_RiseTrigger ...................................................... 199


Tank_FallTrigger ....................................................... 200
Tank_Cap ................................................................... 200
Tank_FreeCap ............................................................ 200
Tank_DoOperation ..................................................... 201
Tank_GoDown ........................................................... 201
Tank_GoDownSched ................................................. 202
Tank_DoPrep ............................................................. 203
Tank_SetState ............................................................ 204
Tank_SelectOutput ..................................................... 204
Tank_SelectInput ....................................................... 206
Tank_UpdateStats ...................................................... 206
Tank_Rate .................................................................. 207
Pre-defined Data Elements ......................................... 207
Defining Tank Control Subroutines ........................... 209
Examples of Tank Control Logic ............................... 209
Background Graphics ....................................................... 218
Background Graphics Editor Modes .......................... 218
Background Graphics Editor ...................................... 219

Chapter 6: Building the Model: Advanced Elements ...................... 225

Attributes .......................................................................... 225


Attribute Types .......................................................... 225
Memory Allocation for Attributes ............................. 226
Attributes vs. Local Variables .................................... 226
Cloning Attributes ...................................................... 226
Attribute Edit Table ................................................... 227
Example of Attributes in Logic .................................. 227
Attributes and the JOIN Statement ............................ 228
Attributes and the GROUP/UNGROUP Statements . 228
Attributes and the LOAD/UNLOAD Statements ...... 229
Attributes and the COMBINE Statement ................... 230
Variables ........................................................................... 231
Variable Edit Table .................................................... 231
Variable Layout .......................................................... 232
Editing a Variable’s Icon ........................................... 233
Local Variables .......................................................... 233
ProModel ix
User Guide

Arrays ............................................................................... 235


Arrays Edit Table ....................................................... 236
Initializing Arrays ...................................................... 237
Import Data into Arrays ............................................. 237
Export Arrays to Spreadsheets ................................... 239
Using Arrays .............................................................. 240
Notes on Arrays ......................................................... 240
Macros .............................................................................. 241
Macro Editor .............................................................. 241
Run-Time Interface .................................................... 242
Resource Grouping .................................................... 244
Subroutines ....................................................................... 246
Subroutine Editor ....................................................... 246
Subroutine Format ...................................................... 247
Subroutine Example ................................................... 248
Interactive Subroutines .............................................. 249
External Subroutines .................................................. 250
Subroutines vs. Macros .............................................. 250
Arrival Cycles ................................................................... 252
Arrival Cycles Edit Table .......................................... 252
Arrival Cycles Example ............................................. 252
Cumulative Cycle Tables ........................................... 254
Arrival Cycles by Quantity ........................................ 254
Table Functions ................................................................ 256
Table Functions Editor ............................................... 256
Table Function Edit Table .......................................... 257
User Defined Distributions ............................................... 259
User Distribution Edit Table ...................................... 259
Discrete Distributions ................................................ 259
Continuous Distributions ........................................... 261
External Files .................................................................... 262
External Files Editor .................................................. 262
File Types ................................................................... 262
Streams ............................................................................. 266
Streams Edit Table ..................................................... 266
Using Random Number Streams ................................ 266
Stream Example ......................................................... 267
x

Material Handling Systems .............................................. 269


Crane Systems ............................................................ 269
Conveyors .................................................................. 277
Automated Guided Vehicle Systems ......................... 281
Manual Material Handling Systems ........................... 282
Industrial Vehicles ..................................................... 282
Automated Storage/Retrieval Systems ....................... 283
Modeling Tips .................................................................. 284
Using Entity Attributes .............................................. 284
Customizing Graphics ................................................ 285
Batching & Unbatching Entities ................................ 286
Modeling Priorities .................................................... 288
Displaying Statistics On Screen ................................. 289
Creating Pull Systems ................................................ 290
Making Assemblies .................................................... 291

Chapter 7: Building the Logic ......................................................... 293

Logic Builder .................................................................... 293


Using the Logic Builder ............................................. 293
Operation Logic ................................................................ 299
Preemption Process Logic ................................................ 300
Routing Move Logic ......................................................... 302
Move-Related Statements .......................................... 303
Related Logic Statements ........................................... 304
Statement Processing ................................................. 304
Shift & Break Logic ......................................................... 305

Chapter 8: Using Auxiliary Tools ...................................................... 307

Tools Menu ................................................................ 307


Expression Search ............................................................ 308
Expression Search Sub-Menu Choices ...................... 308
Find Expression .......................................................... 309
Replace Expression .................................................... 309
Important Notes Regarding Expression Searches ...... 310
ProModel xi
User Guide

Local Find and Replace .............................................. 311


Graphic Editor .................................................................. 312
Overview .................................................................... 312
File Menu ................................................................... 313
Edit Menu ................................................................... 314
Graphics Menu ........................................................... 316
Options Menu ............................................................. 319
Window Menu ............................................................ 321
Library Edit Buttons ................................................... 321
Manipulating Graphics ............................................... 321
Create New Graphics and Libraries ........................... 322
Naming a Graphic ...................................................... 322
Graphic Tools Button Bar .......................................... 323
Editing a Library Graphic .......................................... 331
Options ............................................................................. 334
Customize ......................................................................... 336
Power Tools ...................................................................... 337
ProClare ..................................................................... 338
ProSetter ..................................................................... 339
Shift Library ............................................................... 340
ProActiveX ................................................................. 340
Promodel Player ......................................................... 343

Chapter 9: Running the Model ....................................................... 347

Simulation Menu ........................................................ 347


Simulation Options ........................................................... 348
General Options & Settings ....................................... 348
Output Reporting Options .......................................... 350
Running a Specific Replication .................................. 351
Customized Reporting ................................................ 352
Model Parameters & Scenarios ........................................ 352
Model Parameters ...................................................... 352
Scenarios .................................................................... 353
Running the Simulation .................................................... 355
Run-Time Menus & Controls ........................................... 355
Run-Time File Menu .................................................. 355
xii

Run-Time Simulation Menu ...................................... 356


Run-Time Options Menu ........................................... 356
Debug Option ............................................................. 357
Trace Options ............................................................. 361
Animation Options ..................................................... 363
Run-Time Information Menu ..................................... 363
Dynamic Plots ............................................................ 364
Run-Time Window Menu .......................................... 368
Run-Time Interact Menu ............................................ 368
Run-Time Help Menu ................................................ 368
Run-Time Controls .................................................... 369
Run-Time Right-Click Menu ..................................... 370
SimRunner ................................................................. 370

Chapter 10: Reports and Graphs ................................................... 373

Output Viewer 3DR .......................................................... 374


Menu Bar .................................................................... 374
Toolbar ....................................................................... 379
Right-click Menu ....................................................... 379
Creating Reports ............................................................... 382
Creating Charts ................................................................. 389
Chart Window ............................................................ 389
Category Chart ........................................................... 391
State Chart .................................................................. 392
Histogram ................................................................... 394
Time Plot .................................................................... 397

Chapter 11: Language Elements and Expressions .......................... 403

Language Elements .................................................... 403


Names ............................................................................... 404
Keywords .......................................................................... 405
Numbers ........................................................................... 406
Character Strings .............................................................. 407
Operators .......................................................................... 408
ProModel xiii
User Guide

Mathematical Operators ............................................. 408


Relational Operators .................................................. 408
Comparison Operators ............................................... 408
Operator Precedence .................................................. 408
Expressions ................................................................ 408
Numeric Expressions ....................................................... 409
Boolean Expressions ........................................................ 410
Time Expressions ............................................................. 411
String Expressions ............................................................ 412
Operator Precedence ......................................................... 413

Chapter 12: Routing Rules .............................................................. 415

Routing Rules ............................................................. 415


Alternate ........................................................................... 416
Backup .............................................................................. 417
Continue ........................................................................... 418
Dependent ......................................................................... 420
Empty ............................................................................... 421
First Available .................................................................. 422
Join ................................................................................... 423
Load .................................................................................. 424
Longest Unoccupied ......................................................... 425
Most Available ................................................................. 426
Probability ........................................................................ 427
Random ............................................................................. 428
Send .................................................................................. 429
Turn .................................................................................. 430
Until Full .......................................................................... 431
User Condition .................................................................. 432

Chapter 13: Logic Elements ............................................................ 435

Functions .......................................................................... 435


xiv

System Functions ....................................................... 435


General Functions ...................................................... 435
Statements ......................................................................... 436
Distribution Functions ...................................................... 437
Priorities ........................................................................... 438

Chapter 14: Statements and Functions .......................................... 439

Accum ............................................................................... 439


Activate ............................................................................. 441
Animate ............................................................................ 442
ArrayDims() ..................................................................... 443
ArrayDimSize() ................................................................ 444
Assignment Statement ...................................................... 445
Begin ................................................................................. 446
Break ................................................................................. 447
BreakBlk ........................................................................... 448
CalDay() ........................................................................... 449
CalDOM() ......................................................................... 450
CalHour() .......................................................................... 451
CalMin() ........................................................................... 452
CalMonth() ....................................................................... 453
CalYear() .......................................................................... 454
Cap() ................................................................................. 455
Char() ................................................................................ 456
Clock() .............................................................................. 457
Close ................................................................................. 458
Combine ........................................................................... 459
Comments ......................................................................... 461
Contents() ......................................................................... 462
Create ................................................................................ 463
Debug ............................................................................... 465
Dec .................................................................................... 466
Display .............................................................................. 467
ProModel xv
User Guide

Do...Until .......................................................................... 468


Do...While ........................................................................ 469
Down ................................................................................ 470
DownQty() ........................................................................ 471
DTDelay() ......................................................................... 472
DTLeft() ........................................................................... 473
DynPlot() .......................................................................... 474
End .................................................................................... 475
Ent() .................................................................................. 476
Entity() .............................................................................. 477
Entries() ............................................................................ 478
Exp() ................................................................................. 479
ForLocation() .................................................................... 480
Format() ............................................................................ 481
ForResource() ................................................................... 482
Free ................................................................................... 483
FreeCap() .......................................................................... 484
FreeUnits() ........................................................................ 485
Get .................................................................................... 486
GetCost() .......................................................................... 488
GetReplicationNum() ....................................................... 489
GetResRate() .................................................................... 490
Goto .................................................................................. 491
Graphic ............................................................................. 492
Group ................................................................................ 493
GroupQty() ....................................................................... 495
If...Then...Else .................................................................. 496
Inc ..................................................................................... 498
IncEntCost ........................................................................ 499
IncLocCost ....................................................................... 500
IncResCost ........................................................................ 501
Int ...................................................................................... 502
Join ................................................................................... 504
Jointly Get ........................................................................ 506
Last() ................................................................................. 507
xvi

Ln() ................................................................................... 508


Load .................................................................................. 509
Loc() ................................................................................. 511
LocState() ......................................................................... 512
Location() ......................................................................... 513
Log .................................................................................... 514
MapArr ............................................................................. 516
Match ................................................................................ 518
Move ................................................................................. 520
Move For .......................................................................... 522
Move On ........................................................................... 523
Move With ........................................................................ 524
Next() ................................................................................ 526
Order ................................................................................. 527
OwnedResource() ............................................................. 528
Pause ................................................................................. 529
PercentOp() ....................................................................... 530
PercentUtil() ..................................................................... 531
Preemptor() ....................................................................... 532
Priority .............................................................................. 533
Prompt .............................................................................. 534
Rand() ............................................................................... 536
Read .................................................................................. 537
Real ................................................................................... 539
Real() ................................................................................ 540
Rename ............................................................................. 541
Report ............................................................................... 542
Res() ................................................................................. 543
Reset ................................................................................. 544
Reset Stats ........................................................................ 545
Resource() ......................................................................... 546
ResourceUnit() ................................................................. 547
ResQty() ........................................................................... 548
Return ............................................................................... 549
Round() ............................................................................. 551
ProModel xvii
User Guide

Route ................................................................................. 552


Send .................................................................................. 554
SetRate .............................................................................. 556
Sound ................................................................................ 558
Split As ............................................................................. 559
Sqrt() ................................................................................. 561
Stop ................................................................................... 562
ThreadNum() .................................................................... 563
TimeLeft() ........................................................................ 564
TimesUsed() ..................................................................... 565
Trace ................................................................................. 566
Trunc() .............................................................................. 567
Ungroup ............................................................................ 568
Units() ............................................................................... 570
Unload .............................................................................. 571
Use .................................................................................... 573
Variable() .......................................................................... 575
View ................................................................................. 576
Wait .................................................................................. 577
Wait Until ......................................................................... 578
Warmup ............................................................................ 579
While...Do ........................................................................ 580
Write ................................................................................. 581
WriteLine .......................................................................... 582
Xsub() ............................................................................... 583
Xwrite ............................................................................... 585

Appendix A ................................................................... 587

Glossary ........................................................................ 601

Bibliography ................................................................. 606


xviii

Index ............................................................................. 607


ProModel 1
User Guide

Introduction

This chapter will introduce you to the user guide, and provide information regarding assumptions this
guide makes. You may also find information on support and consulting services in this chapter.

About the User Guide model. It then provides an example scenario,


which designs a model from start to finish.
The ProModel User Guide is designed as a refer-
ence to guide you through the process of build- Chapter 4
ing, running, and viewing the results of
Modeling Environment
simulation models. The guide contains detailed
information on the use of features and capabili- Familiarizes your with the ProModel modeling
ties found within ProModel and serves as a com- environment. You will learn how to use many of
pliment to the product training. the menus and windows found in ProModel.

Chapter 1 Chapter 5
Getting Started Building the Model: general ele-
Welcomes you to ProModel and provides infor- ments
mation on getting started with the model building Brings you face to face with basic modeling com-
process. ponents. Discussion revolves around the nuances
of creating and working with locations, entities,
Chapter 2 path networks, resources, processing records,
Installation and Registration arrivals, shifts, costs, background graphics, and
more.
Provides step-by-step instructions on how to
install ProModel.
Chapter 6
Building the Model: advanced
Chapter 3 elements
Planning the Model
Advanced elements ensure that the models you
Introduces you to the theory behind simulation create reflect the exact behavior of your system.
modeling and gives an overview of model build- Contributing elements include attributes, vari-
ing procedure. This chapter outlines six steps to ables, arrays, spreadsheets, macros, run-time
help you plan and create a successful, valid interfaces, subroutines, arrival cycles, table func-
2
About the User Guide

tions, user-defined distributions, external files, Chapter 11


and streams. Language Elements and Expres-
sions
Chapter 7
Describes the basics of the language used to
Building the Logic define model objects and logic, as well as expres-
Applying intelligence and decision-making capa- sions and the role they play in creating models.
bilities to your models makes them true to life. Discussion focuses on names, reserved words,
The logic builder helps you create and implement numbers, strings, operators, and basic syntactical
logic for operations, routings, shifts, breaks, and structure, as well as operator precedence and
more. numeric, Boolean, time, and string expressions.

Chapter 8 Chapter 12
Using Auxiliary Tools Routing Rules
Auxiliary tools allow you to work with many Provides syntax and examples for the rules you
aspects of your model. You may create and mod- will use to route between locations in the model.
ify graphics, search for expressions, or examine
which statistical distributions best suit your mod- Chapter 13
eling needs.
Logic Elements
Chapter 9 Introduces the different types of functions and
statements available to use in building logic for
Running the Model your model and identifies where you may use
Running the model is the most exciting part of them.
the modeling process. This chapter discusses the
various conditions under which you may run a Chapter 14
model and how to ensure that the model contains
Statements and Functions
no logical errors.
Provides syntax and examples for the statements
Chapter 10 and functions you will use to apply intelligence
and decision-making capabilities to your model.
Reports and Graphs
With the simulation complete, you are ready to Appendix A
examine the results from the model. Options
available include reports, graphs, spreadsheets, Presents a categorized list of all expressions,
and customized output templates. statements, and functions with a table identifying
which fields evaluate at translation and which
evaluate continuously.

Appendix B
Gives instructions for the Classic Output Viewer
ProModel 3
User Guide

Glossary Symbols and Notation


Contains definitions and descriptions for many of To better help you navigate this text, please
the terms and concepts common to simulation review the following symbols and conventions.
and modeling.

Bibliography Keyboard
Referenced materials and suggested readings. The names of keys are displayed in capital letters.
For example, ESC refers to the Escape key and
CTRL refers to the Control key.
Keys are frequently specified in combinations or
in a sequence of keystrokes. For example,
CTRL + L means to hold down the CTRL key
while pressing L. When key commands are set
off by commas (e.g., ALT + N, R), press and
release each of these keys (or key combinations)
in the order listed. The term “arrow keys” refers
collectively to the ×, Ø, Õ, and Ö cursor keys.

Text
Specific text you are asked to type is shown in
bold type. For example, if you are directed to
type cd pmod, you would type the lowercase
letters “cd” followed by a space and the letters
“pmod.”
Place holders for things such as file names and
directories are shown in italics. For example, if
you are directed to type filename.mod, enter the
name of the file you wish to use (e.g.,
model_1.mod).

Logic
All ProModel reserved keywords are in upper-
case.

Syntax example:

IF Start_Time = 10 THEN INC Var1


4
Product Support

Product Support Telephone (888) PROMODEL


Speak to a technical support engineer and resolve
Technical support is available to all licensed Pro- the problem over the phone. Our support lines are
Model users with current maintenance and sup- open Monday through Friday from 6:00 AM to
port agreements. Support representatives are glad 6:00 PM MST. The technical support number is
to answer specific questions you may have and
(888) PROMODEL.
offer direction in solving specific modeling chal-
lenges you encounter.
After Hours Support (801) 362-8324
In our ongoing effort to serve you better, techni-
Technical support
cal support is also available after hours. Please
have ready your user profile and a description of
Technical support is available via: telephone, fax, the problem you encountered.
ftp, and email. When you contact technical sup-
port, please be prepared to provide your user pro- Fax (801) 226-6046
file and a description of any problems you
experience. Send a fax of the listing created when you select
Print Text from the File menu along with your
User Profile user profile and a description of the problem you
encountered.
•Your name and company.
•The license # found on your security key or FTP ftp.promodel.com
ProModel CD.
•Hardware make and configuration. For file transfers to and from ProModel Corpora-
•Network information (if applicable).
tion via file transfer protocol, contact the ftp
server at “ftp.promodel.com”. ProModel Corpo-
•Version number of Windows and ProModel.
ration allows user access via anonymous login
(your e-mail address is your password).
Problem Description
•Brief description of the problem you are Email [email protected]
experiencing.
When you contact technical support via email,
•What you were doing when the problem
send your user profile and a description of the
occurred.
problem you encountered.
•The exact wording of any messages that
appeared on your screen.
ProModel 5
User Guide

Modeling Services Reporting Suggestions


If you find yourself in need of extra help or spe- It is our goal to make ProModel the ultimate
cific expertise to complete your simulation manufacturing simulation tool. To do this, we
project, let us help you. ProModel Corporation rely on your input. Please feel free to submit
Modeling Services will meet all of your needs comments and ideas on how we may improve the
with fast, accurate results at competitive rates. ProModel software and documentation.
Whether simple or complex, partial or complete,
ProModel Corporation Modeling Services can Send us your comments
create any model you require. With our vast
experience in producing simulation models for ProModel Product Team
many diverse applications, we are in a unique ProModel Corporation
position to evaluate your system and isolate spe- 556 E. Technology Way
cific improvements. We work closely with you Orem, UT 84097
during the development process to ensure that the
model we create is complete and precise. Phone (801) 223-4600
Fax (801) 226-6046
With each simulation ProModel Corporation pro- Email [email protected]
vides a complete, comprehensive analysis of your
system. We document conclusions and results
derived from the project and present you with sta-
tistics suitable for company presentations and
briefings. You may even present a limited ver-
sion of the model which allows repeated execu-
tions and minor revision capabilities.

For more information on modeling


services, please contact:

Phone (801) 223-4600


Fax (801) 226-6046
6
Reporting Suggestions
ProModel 7
User Guide

Chapter 1: Getting Started

Welcome to ProModel •Transfer lines• JIT and KANBAN systems


•Flexible Manufacturing systems• Supply
ProModel is a powerful, Windows-based simula- chains & logistics
tion tool for simulating and analyzing production
systems of all types and sizes. ProModel provides
the perfect combination of ease-of-use and com- Use of ProModel requires only a brief orientation
plete flexibility and power for modeling nearly and virtually no programming skills. With Pro-
any situation, and its realistic animation capabili- Model's convenient modeling constructs and
ties makes simulation come to life. graphical user interface, model building is quick
and easy. All you do is define how your particu-
ProModel provides engineers and managers the
lar system operates, mostly through part flow and
opportunity to test new ideas for system design or
operation logic. Automatic error and consistency
improvement before committing the time and
checking help ensure that each model is complete
resources necessary to build or alter the actual
prior to simulation. During simulation, an ani-
system. ProModel focuses on issues such as
mated representation of the system appears on the
resource utilization, production capacity, produc-
screen. After the simulation, performance mea-
tivity, and inventory levels. By modeling the
sures such as resource utilization, productivity
important elements of a production system such
and inventory levels are tabulated and may be
as resource utilization, system capacity, and pro-
graphed for evaluation
duction schedules, you can experiment with dif-
ferent operating strategies and designs to achieve
the best results. Where to Go from Here
As a discrete event simulator, ProModel is 1. In order to use ProModel effectively, you
intended primarily for modeling discrete part must understand the basics of the Microsoft
manufacturing systems, although process indus- Windows operating environment. If you are
tries can be modeled by converting bulk material unfamiliar with Windows you should begin
into discrete units such as gallons or barrels. In by reviewing the help information. To do
addition, ProModel is designed to model systems this, select Help from the Start menu. If you
where system events occur mainly at definite are an accomplished Windows user, you can
points in time. Time resolution is controllable proceed to the next step.
and ranges from .01 hours to .00001 seconds. 2. To begin using ProModel you must install
•Typical applications for using ProModel the software. This is described in Chapter 2:
include: Installation and Registration.
•Assembly lines• Job Shops 3. You will want to become familiar with the
basic theory of model building, and review
8 Chapter 1:
Welcome to ProModel

the model building scenario, which is cov- office at (801) 223-4600 and ask for the Pro-
ered in chapter 3: Planning the Model. If you Model Product Team.
are already familiar with modeling theory, or
just want to jump into model building, skip
to the next step.
4. ProModel incorporates an easy-to-use as
well as intuitive user interface. Chapter 4:
Modeling Environment will introduce you to
the menus and options you will use to build
your model.
5. Build your model. Chapters 5 and 6: Build-
ing the Model propel you into model build-
ing by describing the Build menu, which
gives you access to most of the tools needed
to build your model.
6. Refer to Chapter 7: Building the Logic dur-
ing the model building process to learn the
logical elements that will control your model
during simulation.
7. Run your model. See you model come to life
as its animation runs. Chapter 9: Running the
Model outlines the process of running a
model.
8. View, analyze, and display the data your
model collected during simulation. With this
information in hand you are ready to make
real-world decisions to achieve your model-
ing goals. Chapter 10: Reports and Graphs
describes the Output Viewer, which presents
you with your simulation’s data.

Training
Although the tutorial and documentation are both
self contained, first-time users are strongly
encouraged to seek formal training at some point
before embarking on a complex modeling
project. PROMODEL Corporation holds training
courses on a regular basis for beginning and
advanced users of PROMODEL simulation prod-
ucts. For details on course dates and times, or to
register for the course nearest you, call our main
ProModel 9
User Guide

Using ProModel graphical tools for placing locations, path net-


works and other modeling elements.
ProModel views a production system as an
arrangement of processing locations, such as
machines or work stations, through which parts
(or entities) are processed according to some pro-
cessing logic. A system may also include paths,
such as aisle-ways for movement, as well as sup-
porting resources, such as operators and material
handling equipment used in the processing and
movement of parts.
The example below depicts a typical manufactur-
ing workcell with six processing locations
(Receiving, NC_301L, NC_302L, Degrease,
Inspect, Rework), two entity types (Pallets and
Blanks), two operators, and one transporting
device (forklift). Models such as this are devel-
oped rapidly and easily using ProModel's graphi-
cal user interface and point-and-click approach to
modeling. Modules may be completed in any order and with
any amount of switching back and forth between
modules. However, with certain exceptions, it is
recommended that modules be completed in the
general order in which they appear in the menu.
For example, it is usually best to identify and
place locations in a model, and define the entities
to be processed at those locations, before actually
defining processing logic. This is generally
accepted since processing logic describes the
flow of entities from location to location and the
operations performed on, for, or in behalf entities
at each location.
Building Models
Edit Tables
Models are created by completing the necessary
modules selected from the Build menu shown Edit tables, such as the Locations edit table, are
below. Each module consists of various edit used extensively throughout ProModel for defin-
tables and dialog boxes used to supply model ing model elements. Edit tables provide direct
information. A layout window also appears with access to model data without wading though sev-
eral levels of dialog boxes. Each table consists of
records, which consist of fields describing some
aspect of the element. Many of these fields have
heading buttons you can click (or select and press
10 Chapter 1:
Using ProModel

F2) to open a dialog box for further definition of every statement and function, allowing you to
the particular element. define logic by simply filling in the blanks.

Dialog Boxes
Dialog boxes are used throughout ProModel for
selecting options. The Decision Rules dialog
shown below contains additional information
regarding a location.

To access the Logic Builder, click the right


mouse button in any edit box which accepts an
expression or anywhere inside an open logic win-
dow. You may also click the Build button on the
logic window's toolbar.

Model Merging and Submodels


Logic Builder Another extremely useful feature in ProModel is
The Logic Builder in ProModel provides a quick the ability to merge two or more models into one
and powerful way to create and insert valid state- larger model. This supports the concept of modu-
ments and expressions in logic windows or fields. lar model building, where models are created and
It takes you through the process of creating state- tested in modules, and then joined together to
ments or expressions, as well as providing point- produce a final model.
and-click access to every element defined in your The use of sub-models further allows you to build
model. The Logic Builder handles the syntax for 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
ProModel 11
User Guide

or suffix to differentiate them from the same ele- more information on running models, see “Run-
ments of another sub-model. ning the Model” on page 347.

For more information on merging models, see


“Model Merging” on page 70.
Creating Run-Time Models
On-Line Help
One of the most powerful features in ProModel is
Regardless of where you are in the model build- the ability to create models that may be run by
ing process, the on-line help system is available others who do not own the full software. PRO-
to provide context specific definitions and MODEL allows you to install the software on any
instructions. The help system can even run in the machine to run a model. However, without the
background, allowing instant access to help security key, the user has limited ability to build
whenever you need it. or make changes to a model.
Like all Windows applications, you can locate You may wish to develop run-time models to
the help you need quickly using the standard help allow the user to perform "what-if" analyses with
tools. the models. PROMODEL encourages you to
develop demonstration models, and allows you to
Running Models distribute them freely. These models can be run
by installing ProModel from the CD-Rom onto a
Completed models are run using the Simulation computer without a security key.
menu. Model data is automatically checked for
consistency and completeness before each simu-
lation begins. Trace Window
As shown in the dialog below, ProModel allows Several tools are available to help you verify and
you to specify a run length, warm-up period, validate your models. During model execution
number of replications, and other special options you may trace the activity of the simulation
before running a simulation. In addition, you may events to see exactly what is happening in the
run the models with or without animation. For
12 Chapter 1:
Using ProModel

model. The example below shows a brief portion simulation, see “Reports and Graphs” on
of a trace window. page 373.
Simulation results may be presented in either tab-
ular or graphic format, including histograms, pie
charts, plots and bar graphs. Multiple output
results can even be compared on the same chart.
The example below shows a portion of a general
report for a model.

Location Information Windows


In addition to trace files, you may track the activ-
ity at any location through a Location Informa-
tion window. This feature gives up-to-the-minute
information about a selected location, such as Graphical Analysis
current contents, total entries, and operational
In addition to the general report shown above,
state (i.e., idle, blocked, or in operation).
almost all report elements of a model may be dis-
played graphically. Below is an example of a
Category Chart.

Viewing Output
The output generator gathers statistics on each
location, entity, resource, path network, and vari-
able in the system. You may, however, turn off
reporting capability for any element you do not
wish to include. The default level of statistics is
at the summary level (i.e., average values, % val-
ues, and final values), although detailed history
plots can be gathered on such things as utiliza-
tion, queue fluctuations, and variable values. For
more information about viewing the results of a
ProModel 13
User Guide

Utilization Graphs
Quickly generate utilization graphs of various
types such as the State Chart shown below.

Timeplots
In addition to Category and State Charts, Time-
plot Charts, which show variable values as they
change over time, can be created.
14 Chapter 1:
Using ProModel
ProModel 15
User Guide

Chapter 2: Installation and


Registration

General Setup Information Installation Procedure for a


This section describes how to install and register Stand-alone PC
ProModel.
The installation program will decompress and
copy files from the CD-ROM into user-specified
Hardware Requirements directories.

Minimum Technical Support


Pentium 3 - 800 or better
512MB RAM If you encounter problems during installation,
200 MB Free Disk Space please call the Product Team at (888) PRO-
SVGA Monitor (1024 x 768) MODEL between 6:00 AM and 6:00 PM MST,
CD ROM Monday through Friday. We will be glad to help
Mouse you get up and running.
Windows 98 SE or higher

Recommended
How to install ProModel:
Pentium 4 or better
1 GB RAM
1. Start Windows.
1 GB Free Disk Space
SVGA Monitor (1280 x 1024 x 32 bit color) 2. Insert the CD-ROM.
CD ROM
Sound card
Internet access
Mouse
Windows 2000 or Windows XP
16 Chapter 2:
Installation Procedure for a Stand-alone PC

3. The ProModel Setup program will open and choose a new directory. When you have
automatically, and display the following win- chosen the destination directory, click Next.
dow.
9. The next dialog allows you to have the
Setup program create backups of any files
that might be replaced during the installa-
tion. This is helpful if you are installing this ver-
sion of the ProModel software on a computer
that already has ProModel installed on it. If
hard drive space permits, it is recommended
that you allow the Setup program to backup
previous files. When you are ready to con-
tinue with the installation, click Next.
10. The Setup program will add a new Win-
dows Program group containing ProModel
program icons to the Program Manager.
When you have selected where you want the
Program icons to appear, click Next.
Please note 11. The Setup program is now ready to install
ProModel on your computer. If you wish to
If the Setup Program did not open automatically, make changes to the options you have previ-
select Run... from the Windows Start menu. Type ously selected, click the Back button to return
to any point in the installation you wish. Other-
x:\install.exe (where x is the CD-ROM drive let-
wise, click Next to allow the Setup program to
ter) and press ENTER. The proper dialog will the install ProModel.
appear

The Setup program may require you to reboot


4. Click Next to proceed with the installation your computer during the setup. If you do so, the
5. Review the License Agreement. If you wish Setup program will automatically launch after the
to accept the agreement and continue with reboot, and the installation will continue.
the installation, , select the button to accept
the agreement, and then click Next. When you have completed the installation, you
can run ProModel from the Windows Start menu.
6. Select Standard Package and click Next.
Upon running ProModel for the first time, you
7. From the dialog that appears, choose the
will be prompted to register ProModel. For
components that you would like the Setup
program to install. It is recommended that instruction on doing so, see the section at the end
you allow the Setup program to install all of this chapter on registering ProModel.
components, hard drive space permitting.
When you have finished selecting your com-
ponents, click Next.
8. Choose the destination directory for the
install. If you wish to change the destination
from the default, select the Browse button
ProModel 17
User Guide

Installation Procedure for sub-nets, see “Find a License Key Server on a


Routed Network” on page 23.
Network Version
In a multi-user environment, license tracking
with multiple keys is difficult. To combat this,
PROMODEL Corporation offers a network ver-
Installation Types
sion of ProModel that allows a single machine to
control license usage (via a network connection) Local Machine Install
for several users. To use this method of license
This procedure allows you to install to and exe-
tracking, you must install a network version of
cute ProModel from the local hard drive of a
ProModel. The network version of ProModel
workstation, yet still require the workstation to
includes a hardware security key and the license
make a license request from the license server.
manager software you will use to control license
usage at your site.
Pros
•Locally stored files minimize start-up time.
Overview •One-step installation as opposed to a file
server install.
When you install and run the network version of
•Limits network usage to short license
ProModel from a workstation’s local hard drive
or a file server share, the workstation searches requests only and allows users to connect
your network for a license key server rather than remotely due to lower network traffic needs.
check its own printer port for a security key.
Once it locates the license key server, the work- Cons
station asks the license manager software (run- •You must install ProModel from the CD at
ning on the key server) if a license is available. If each workstation.
a license is available, the license manager soft- •Install occupies more hard drive space on
ware will assign a license to the workstation. each workstation than when you install it on
When you exit ProModel, the license you used a file server share.
becomes available to another user.
Check the support web page for periodic updates File Server Install
to the installation information, software configu- This procedure allows you to install ProModel to
ration, and the license server software for Pro- a share on a file server. From each workstation
Model. that will run ProModel, run the workstation setup
program, pmwsetp.exe (this will create a program
http://www.promodel.com/support group, icons, and copy several files to the win-
dows directory).
Please note
Pros
If you are running a network version of Pro- •Saves hard drive space on the workstation by
Model on a routed network and your license key running ProModel from the file server.
server and workstations are located on different
18 Chapter 2:
Installation Procedure for Network Version

•End-user can run workstation setup program Please note


without administrative help.
If the Setup Program did not open automatically,
Cons select Run... from the Windows Start menu. Type
•File server must always be available. x:\install.exe (where x is the CD-ROM drive let-
ter) and press ENTER. The proper dialog will the
Set Up Network License Server appear
Whether you choose to do a file server share or
local hard drive install of the network version of
ProModel, you must set up a license server. The 4. Click Next to proceed with the installation
license server consists of the security key that
5. Review the License Agreement. If you wish
plugs into the license server’s printer port, and
to accept the agreement and continue with
the license manager software. When installed, the
the installation, , select the button to accept
license server responds to ProModel license the agreement, and then click Next.
requests and allows workstations to run either a
full version (if sufficient licenses are available) or 6. From the dialog that appears, select Net-
work Package. The dialog will then appear as
a limited run-time version.
below:

Local Machine Install

Install Program Files on Local


Machine:

1. Start Windows.
2. Insert the CD-ROM.
3. The ProModel Setup program will open
automatically, and display the following win-
dow.

7. Select Install program files on local machine,


and click Next.
ProModel 19
User Guide

8. Select the type of hardware key you are When you have selected where you want the
using on the network server, and click Next. Program icons to appear, click Next.
13. The Setup program is now ready to install
ProModel on your computer. If you wish to
make changes to the options you have previ-
ously selected, click the Back button to return
to any point in the installation you wish. Other-
wise, click Next to allow the Setup program to
install ProModel.

The Setup program may require you to reboot


your computer during the setup. If you do so, the
Setup program will automatically launch after the
reboot, and the installation will continue.
9. From the dialog that appears, choose the
components that you would like the Setup When you have completed the installation, you
program to install. It is recommended that must set up a license server. See “Set Up License
you allow the Setup program to install all Server” on page 21, for information on how to do
components, hard drive space permitting. so.
When you have finished selecting your com-
ponents, click Next.
Please note
10. Choose the destination directory for the
install. If you wish to change the destination
from the default, select the Browse button If you are running a network version of Pro-
and choose a new directory. When you have Model on a routed network and your license key
chosen the destination directory, click Next. server and workstations are located on different
11. The next dialog allows you to have the
sub-nets, see “Find a License Key Server on a
Setup program create backups of any files Routed Network” on page 23.
that might be replaced during the installa-
tion. This is helpful if you are installing this ver-
sion of the ProModel software on a computer
that already has ProModel installed on it. File Server Install
Later, if you choose, you can have the instal-
lation rolled back and the original files
restored. If hard drive space permits, it is rec- Install Programs & Grant Rights/
ommended that you allow the Setup pro- Permissions
gram to backup previous files. When you are
ready to continue with the installation, click From a PC on the network, install the software on
Next. the file server and grant appropriate rights. Users
will need at least the equivalent rights of read and
12. The Setup program will add a new Win-
dows Program group containing ProModel file scan for the PROMODEL directory.
program icons to the Program Manager.
20 Chapter 2:
Installation Procedure for Network Version

Install Program Files on File Server: 6. From the dialog that appears, select Net-
work Package. The dialog will then appear as
below:
1. Start Windows.
2. Insert the CD-ROM.
3. The ProModel Setup program will open
automatically, and display the following win-
dow.

7. Select Install program files on file server, and


click Next.
8. Select the type of hardware key you are
using on the network server, and click Next.

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 let-
ter) and press ENTER. The proper dialog will the
appear

4. Click Next to proceed with the installation


5. Review the License Agreement. If you wish 9. From the dialog that appears, choose the
to accept the agreement and continue with components that you would like the Setup
the installation, , select the button to accept program to install. It is recommended that
the agreement, and then click Next. you allow the Setup program to install all
components, hard drive space permitting.
When you have finished selecting your com-
ponents, click Next.
10. Choose the destination directory for the
install. If you wish to change the destination
from the default, select the Browse button
ProModel 21
User Guide

and choose a new directory. When you have Workstation Set up


chosen the destination directory, click Next.
11. The next dialog allows you to have the Set up a Workstation:
Setup program create backups of any files
that might be replaced during the installa-
tion. This is helpful if you are installing this ver- 1. Run ProModel Workstation Setup.exeS
sion of the ProModel software on a computer (located in the directory to which you
that already has ProModel installed on it. installed ProModel on the file server) from the
Later, if you choose, you can have the instal- workstation you will use to run ProModel.
lation rolled back and the original files 2. Click Next.
restored. If hard drive space permits, it is rec-
3. Select the components you wish to install
ommended that you allow the Setup pro-
and click Next.
gram to backup previous files. When you are
ready to continue with the installation, click 4. Select the folder to which you will to install
Next. ProModel and click Next.
12. The Setup program will add a new Win- 5. Select the program group you wish to use
dows Program group containing ProModel and click Next. (By default, ProModel creates
program icons to the Program Manager. its own program group).
When you have selected where you want the
6. Click Next to finish installing ProModel.
Program icons to appear, click Next.
13. The Setup program is now ready to install
ProModel on your server. If you wish to make
changes to the options you have previously Please note
selected, click the Back button to return to
any point in the installation you wish. Other-
wise, click Next to allow the Setup program to
If you are running a network version of Pro-
install ProModel. Model on a routed network and your license key
server and workstations are located on different
sub-nets, see “Find a License Key Server on a
Routed Network” on page 23.
The Setup program may require you to reboot
your computer during the setup. If you do so, the
Setup program will automatically launch after the
reboot, and the installation will continue. Set Up License Server
When you have completed the installation, you PROMODEL software monitors licensed user
can setup each workstation you will use to run activity through a security key attached to the
ProModel. See "Workstation Set up," which is parallel port (for the network version of Pro-
the next section, for information on setting up Model, you must have the red key supplied by
multiple workstations. PROMODEL Corporation). The machine to
When you have completed setting up worksta- which you attach the key becomes the license
tions, you must set up a license server. See “Set manager—whether it is a dedicated file server or
Up License Server” on page 21, for information a workstation. The security server can run on
on how to do so. Windows 95, 98, 2000, or NT 4.0 and listen for
incoming license requests over any of the follow-
22 Chapter 2:
Installation Procedure for Network Version

ing network protocols: IPX, TCP/IP, and Net- ter) and press ENTER. The proper dialog will the
BEUI. If the security server is not functioning, appear
ProModel will start as a limited run-time version.

Please note
4. Click Next to proceed with the installation

If you are running a network version of Pro- 5. Review the License Agreement. If you wish
Model on a routed network and your license key to accept the agreement and continue with
the installation, click Next.
server and workstations are located on different
sub-nets, see “Find a License Key Server on a 6. From the dialog that appears, select Net-
Routed Network” on page 23. work Package. The dialog will then appear as
below:

Set Up License Server:

1. Start Windows.
2. Insert the CD-ROM.
3. The ProModel Setup program will open
automatically, and display the following win-
dow.

7. Select Set up a network license server, and


click Next.
8. Select the type of hardware key you are
using on the network server, and click Next.

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 let-
ProModel 23
User Guide

9. The Install Wizard for the NetHASP License Start the License Manager Soft-
Manager will appear. Click Yes, and follow
ware:
the on-screen directions to install the man-
ager. If you click No, you will have to set up
the license server manually, which is 1. From the directory to which you installed
described in the next section. the license server, run NHSRVW32.EXE. A win-
dow will appear and show the network proto-
cols to which the license manager will listen
for license requests.
The Setup program may require you to reboot
your computer during the setup. If you do so, the
Setup program will automatically launch after the
reboot, and the installation will continue.
You need to install the device driver only once. You need to install the device driver only once.
However, you must launch the license manager However, you must launch the license manager
program each time you reboot the key server program each time you reboot the key server. To
machine. To automatically start the license man- automatically start the license manager each
ager each time you reboot the system, create and time you reboot the system, create and place an
place an icon for NHSRVW32.EXE in the work- icon for NHSRVW32.EXE in the workstation’s
station’s startup folder. startup folder.
When you have completed installing either you
local machine or server setup, and finished
installing the License Server, you are ready to run
ProModel. Find a License Key Server on a
Routed Network
Set Up License Server Manually In order for a workstation to run the network ver-
After successfully running the setup for the sion of ProModel properly, the workstation must
license server, if you chose to manually install check out a license from a license server. To
the device driver for the security key and launch make a license request, the workstation sends a
the license manager software, follow the steps broadcast message out on the network and awaits
below. a response from the license server. If the license
server and the workstation running ProModel are
on the same sub net of a routed network (or on
Install the Device Driver:
the same network of a non-routed network), the
license server receives the request and responds.
1. Open a DOS box and run HINSTALL -i from
Due to the nature of routed networks, if the
the directory to which you installed the
license server and workstation running ProModel
license server.
are not on the same sub net of a routed network,
2. After you receive a confirmation that the the key server will not receive the license request
driver installed successfully, reboot the work- broadcast.
station
To resolve this problem, the workstation must
send a license request directly to the computer on
24 Chapter 2:
Registering ProModel

the network set up as the license server. To iden-


tify which computer on the network is the license
Registering ProModel
server, you must create and store a text file called Your ProModel product must be registered. If
NETHASP.INI in the directory to which you you do not register ProModel, you will only have
installed ProModel on the workstation or file access to a limited, evaluation version of Pro-
server. Model. This version will not allow expansive
model building.
For TCPIP-based network the NETHASP.INI
file must contain the following lines The registration process for ProModel depends
on the type of installation you chose.
[NH_COMMON]
NH_TCPIP=Enabled;
Registration for a Stand-alone PC
Installation
[NH_TCPIP]
When you run ProModel for the first time after
NH_TCPIP_METHOD=TCP installing it on a Stand-alone PC, you will be
NH_SERVER_ADDR=<Enter the license prompted to register ProModel. The following
server’s IP address here> screen will appear.
ProModel 25
User Guide

When you have entered your information and See “How to Register without a Serial Num-
clicked next, you will be prompted to enter your ber” on page 25.
Serial Number. 3. When the serial number has been success-
fully sent to the ProModel Corporation server,
you will be given a ProModel username and
password. Record this information, since you
will use it to obtain updates to ProModel in
the future.
4. Check the “I have recorded this informa-
tion for future use” box, and then click Exit to
finish the registration.

How to Register without a Serial


Number

1. If you do not have a serial number, or your


serial number cannot be used due to Internet
connectivity issues, choose the “I do not have
Depending on your organization’s software a Serial Number (or registering with the serial
licensing arrangement, a Serial Number may be number failed)” option, and click Next.
included with your CD or possibly obtained by
contacting the ProModel Corporation licensing
representative for your organization.
If you do not have a Serial Number, you may still
register using the instructions “How to Register
without a Serial Number” on page 25.

How to Register with a Serial Num-


ber

1. When you have obtained a valid Serial


Number, enter it into the registration dialog,
and then click the Next button.
2. If a connection cannot be made to the
ProModel Corporation server, an Internet
2. You may choose to email (this step) or
connectivity issue (firewall, etc.) may exist. If
phone (next step) ProModel Support to regis-
this is the case, you will be prompted that the
ter your product. If you would like to email
registration was not successful, in which case
ProModel Support, follow the “Click to send
you may still register without a serial number.
registration request” link that is next to the
Email option.
26 Chapter 2:
Registering ProModel

An email message will be composed using another. Since you may only have one installa-
your computer’s default email application, tion of ProModel for every software key, or
and you can then choose to send it. license, you have purchase, PROMODEL pro-
While waiting for a response from ProModel vides you with a utility program, LicenseMan-
Support, you may leave the Registration dia- ager, to move your license, while keeping your
log open, or close it until you receive your software key valid.
response.
The LicenseManager is a stand alone program,
The reply you receive from ProModel Support which can be accessed through the Windows
will contain a License Key code. If you have
Start menu.
closed ProModel, relaunch it, and return to
the Phone or Email Registration window. In
the “Step 2: Enter License Key” area, enter Moving a License
the License Key code that is in the email reply A license may be moved from one computer to
from ProModel Support. another by moving its software key. When a soft-
You may then click “Register” to complete ware key is moved using the LicenseManager,
the registration process. the original computer will no longer run the full
3. If you would like to register over the phone, version of ProModel.
call ProModel Support at (888) PROMODEL. A In preparation of moving a license to another
ProModel Support representative will guide computer, be sure to install ProModel on the
you through the rest of registration process.
computer to which you want to move the license.

How to move a license


You will now have access to the full version of
ProModel. 1. Launch the LicenseManager from the Win-
dows Start menu.
If you choose not to register ProModel at this
time, click Cancel without entering registration 2. The following dialog will appear, showing
information. You will then have access to the you the licenses you currently have on your
limited, evaluation version of ProModel. machine.

Registration for a Network


Installation
If you purchased a network version of ProModel,
you will have received a hardware key with your
ProModel software. To register your network
version of ProModel, simply attach the hardware
key to your computer’s LPT1 port.

Transferring Your Software Key


As you use ProModel it may become necessary to
transfer your software key from one PC to
ProModel 27
User Guide

3. If you have multiple licenses, click on the When you terminate a license, the LicenseMan-
name of the license you want to move. Click ager will give you a termination code, which is
Move. The following dialog will appear. your proof to PROMODEL that you have perma-
nently removed the software key from you com-
puter. Only then can PROMODEL issue you a
new software key for any current license you may
have.

How to terminate a license

1. Launch the LicenseManager from the Win-


4. Enter the reference code. This will be the dows Start menu.
code generated by the computer you are 2. The following dialog will appear, showing
moving a license to. The reference code will you the licenses you currently have on your
be displayed when you attempt to register machine.
ProModel on the machine you are moving
the license to.
5. WARNING: Proceeding with the next step
will permanently remove your software key
from the computer; however, it is necessary
to complete the next step to move the soft-
ware key to the new machine.
6. After entering the reference code, click
Generate. A new license key will be dis-
played. You software key on the original
computer has now been removed.
7. Copy the new license key into the license
key field of the registration dialog on the
machine you are moving the license to in
order to complete its registration. 3. If you have multiple licenses, click on the
name of the license you want to terminate.
8. The full version of ProModel will now run on
Click Terminate. The following dialog will
new machine. The original computer will no
appear.
longer run the full version of ProModel, but the
evaluation version instead.

Terminating a License
Terminating a license permanently removes the
valid software key from a machine running Pro-
4. Click Yes.
Model. Terminating a license may be necessary
to receive a new software key from PRO-
MODEL.
28 Chapter 2:
Registering ProModel

5. WARNING: Completing the next step will •Upon completion of the main ProModel 6.0
permanently remove your software key from professional install, you will have the option
your computer. to check for updates by selecting the "Check
6. You will once again be prompted to con- for updates to ProModel" option on the final
tinue with the termination. Click OK. Your soft- installation screen.
ware key will be terminated, and the •Or, you may launch the Update client by
following dialog will appear. selecting "Check for ProModel Update"
from the Start Menu’s PROMODEL Icon
group.
It is recommend that you check regularly for
updates to ProModel.

Software License Key FAQ


1. I need to move my software license key to
another computer, can I do this?
Yes. Using the License Manager, which can
7. Write down and save your termination be found in the Start menu within the Pro-
code. This is your proof that your have termi- Model 6.0/PowerTools group, you may
nated your software key. Click the HERE link to move a license. It is recommended you use
E-mail the code to PROMODEL the Move option in the License Manager to
8. Click OK to complete the termination pro- move a license between computers. A
cess. Your installed version of ProModel will description of the License Manager and its
now run in evaluation mode. functionality can be found in chapter 2 of the
User Guide.
2. I want to upgrade my computer’s operat-
ing system, or make a major change to my
Checking for ProModel computer’s configuration, should I be
Updates concerned?
The software license key is sensitive to
The Check for ProModel Update feature checks changes to your computer’s configuration.
the PROMODEL Web server for an update to This is to prevent the key’s unauthorized
ProModel, downloads any available update, and duplication to multiple computers. If you
then installs the update. In order to have access to plan on making major changes to your com-
updates, you will need a PROMODEL Solutions puter’s configuration, you must take one of
Cafe username and password, and a current the following steps to protect your software
Maintenance and Support agreement. If you have license key:
questions regards your M&S agreement, or user- •Move your key to another computer, using
name and password, please contact PROMODEL the License Manager. When you have com-
Technical Support at [email protected]. pleted the changes to the original computer,
There are two ways to launch the Check for you may then move the license key back.
Update client:
ProModel 29
User Guide

•Or, if moving the key to another computer is


not an option, you may terminate your soft-
ware license key using the License Manager.
Doing so will create a Termination Code,
which you will use as proof of the key’s
removal when you contact PROMODEL
Support (1-888-PROMODEL) for a new
license key after you have completed the
changes to your computer.
3. 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 PRO-
MODEL Support (1-888-PROMODEL).
30 Chapter 2:
Registering ProModel
ProModel 31
User Guide

Chapter 3: Planning the


Model

Steps for Doing Simulation General Procedure


A decision to do a simulation usually results from
Introduction a perception that simulation can help resolve one
or more issues associated with the design of a
Doing simulation requires more than just know- new system or the modification of an existing
ing how to use a simulation product. A simula- system. Before launching into a simulation
tion study is, by its very nature, a project. Like project, one or more individuals should have
any project, there are tasks to be completed and been assigned to the study who have at least a
resources required to complete them. To be suc- basic knowledge of the system to be studied and
cessful, a simulation project should be planned the issues of concern. Enough background infor-
with an understanding of the requirements of mation should have been obtained about the
each of the tasks involved. Many failures result nature of the problem to determine whether simu-
from hastily jumping into a simulation without lation is a suitable solution. If the simulation is
first taking time to consider the steps involved being conducted by individuals inside the com-
and developing a plan for proceeding. pany, there may already be a basic knowledge of
the operation. For outsiders or those unfamiliar
Simulation modeling requires good analytical,
with the operation, a brief description of the sys-
statistical, communication, organizational, and
tem and explanation of key issues should be pro-
engineering skills. The modeler must understand
vided. For an existing system, a facility walk-
the system being investigated and be able to sort
through is an excellent way of getting familiar
through complex cause-and-effect relationships
with the operation.
that determine system performance. At least a
basic foundation in statistics is needed to prop- Once a suitable application or project has been
erly design experiments and correctly analyze identified as a candidate for simulation, decisions
and interpret input and output data. Ongoing must be made about how to conduct the study.
communication with owners, stakeholders, and There are no strict rules on how to perform a sim-
customers during a simulation study is also vital ulation study, however, the following steps are
to ensure that a purposeful model is built and that generally recommended as a guideline (Shannon,
everyone understands the objectives, assump- 1975; Gordon, 1978; Law, 1991):
tions, and results of the study.
1. Plan the study
2. Define the system
3. Build the model
32 Chapter 3:
Steps for Doing Simulation

4. Run experiments Procedure for Conducting a Simulation


5. Analyze the output Study
6. Report results While the requirements for each step vary from
Each step need not be completed in its entirety simulation to simulation, the basic procedure is
before moving on to the next step. The procedure essentially the same. The primary value of adopt-
for doing a simulation is an iterative one in which ing this systematic procedure, or one like it, is to
activities are refined and sometimes redefined ensure that the project is conducted in an orga-
with each iteration. Describing this iterative pro- nized, timely fashion with minimal waste of time
cess, Pritsker and Pegden (1979) observe the fol- and resources and maximum effectiveness in
lowing. achieving the objectives.
The iterative nature of this process is shown next:
Step 1: Planning the Study
Many simulation projects are doomed to failure
from the outset due to poor planning. Undefined
objectives, unrealistic expectations and a general
lack of understanding of requirements frequently
result in frustration and disappointment. If a sim-
ulation project is to be successful, a plan must be
developed which is realistic, clearly communi-
cated and closely followed. Planning a simulation
study involves the following sub tasks:
•Defining Objectives
•Identifying Constraints
•Preparing a Simulation Specification
•Developing a Budget and Schedule
Each of these tasks is discussed in the following.

Defining Objectives
With a basic understanding of the system opera-
tion 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 deter-
mined that simulation is the most suitable tool for
achieving the objective. Defining an objective
does not necessarily mean that there needs to be a
problem to solve. A perfectly valid objective may
be to see if there are, in fact, any unforeseen
problems. Common types of objectives for a sim-
ulation study include the following:
ProModel 33
User Guide

•Performance Analysis How well does the models need only provide a quantitative answer.
system perform under a given set of circum- Others require realistic animation to convince a
stances in all measures of significance (utili- skeptical customer. Some models are intended
zation, throughput, waiting times, etc.)? for use by only the analyst. Other models are
•Capacity Analysis What is the maximum intended for use by managers with little simula-
processing or production capacity of the sys- tion background and must be easy to use. Some
tem? models are used to make decisions of minor con-
•Capability Analysis Is the system capable sequence. Other models are relied upon to make
of meeting specific performance require- major financial decisions.
ments (throughput, waiting times, etc.), and, Realizing the objectives of a simulation should
if not, what changes (added resources or consider both the purpose as well as the intended
improved methods) are recommended for use of the model, the following questions should
making it capable? be asked when defining the objectives of the
•Comparison Study How well does one study:
system configuration or design variation per-
form compared to another? •Why is the simulation being performed?
•Sensitivity Analysis Which decision vari- •Who will be using the model?
ables are the most influential on one or more •To whom will the results of the simulation
performance measures, and how influential be presented?
are they? •What information is expected from the
•Optimization Study What combination of model?
feasible values for a given set of decision •Is this a “throw-away” model?
variables best achieves desired performance •How important is the decision being made?
objectives?
•Decision/Response Analysis What are the Identifying Constraints
relationships between the values of one or
more decision variables and the system Equally as important as defining objectives is
response to those changes? identifying the constraints under which the study
must be conducted. It does little good if simula-
•Constraint Analysis Where are the con-
straints or bottlenecks in the system and tion solves a problem if the time to do the simula-
what are workable solutions for either reduc- tion extends beyond the deadline for applying the
solution, or if the cost to find the solution exceeds
ing or eliminating those constraints?
the benefit derived. Objectives need to be tem-
•Communication Effectiveness What vari-
pered by the constraints under which the project
ables and graphic representations can be
must be performed such as the budget, deadlines,
used to most effectively depict the dynamic
resource availability, etc. It is not uncommon to
behavior or operation of the system?
begin a simulation project with aspirations of
Defining the objective should take into account developing an impressively detailed model or of
what the ultimate intended use of the model will creating a stunningly realistic animation only to
be. Some models are built as “throw-away” mod- scramble at the last minute, throwing together a
els to be used only once and then discarded. crude model that barely meets the deadline.
Other models are built to be used on an ongoing
basis for continued “what-if” analyses. Some Constraints should not always be viewed as an
impediment. If no deadlines or other constraints
34 Chapter 3:
Steps for Doing Simulation

are established, there is a danger of getting too Scope The scope refers to the breadth of the
involved and detailed in the simulation study and model or how much of the system the model will
run the risk of “paralysis from analysis.” The encompass. Determining the scope of the model
scope of any project has a tendency to shrink or should be based on how much bearing or impact
expand to fill the time allotted. a particular activity has on achieving the objec-
tives of the simulation. A common tendency is to
In identifying constraints, anything that could
model the entire system, even when the problem
have a limiting effect on achieving the desired
area and all relevant variables are actually iso-
objectives should be considered. Specific ques-
lated within a smaller subsystem. If, for example,
tions to ask when identifying constraints for a
the objective is to find the number of operators
simulation study include the following:
required to meet a required production level for a
•What is the budget for doing the study? machining cell, it is probably not necessary to
•What is the deadline for making the deci- model what happens to parts after leaving the
sion? cell.
•What are the skills of those doing the study? The following figure illustrates how the scope of
•How accessible is the input data? the model should be confined to only those activ-
•What computer(s) will be used for the study? ities whose interactions have a direct bearing on
the problem being studied. Upstream and down-
Preparing a Simulation stream activities that do not impact the perfor-
Specification mance measure of interest should be omitted
from the model. In the following figure, since the
With clearly defined objectives and constraints, output rate from activity A is predictable, it can
the simulation requirements can be specified. be modeled as simply an arrival rate to activity B.
Defining a specification for the simulation is Since activity E never constrains output from
essential to projecting the time and cost needed to activity D, it can also be ignored.
complete the study. It also guides the study and
helps set expectations by clarifying to others
exactly what the simulation will include or
exclude. A specification is especially important if
the simulation is being performed by an outside
consultant so that you will know exactly what
you are getting for your money. Aspects of the Confining the Scope to Impacting Activities
simulation project to be contained in the specifi-
cation include the following:
Level of Detail Project the level of detail defines
•Scope the depth or resolution of the model. At one
•Level of detail extreme, an entire factory can be modeled as a
•Degree of accuracy single “black box” operation with a random
•Type of experimentation activity time. At the other extreme, every detailed
•Form of results motion of a machine could be modeled with a
one-to-one correspondence depicting the entire
Each of these specification criteria will be dis-
machine operation.
cussed in the following pages.
ProModel 35
User Guide

Unlike the model scope which affects only the sometimes has to be sacrificed if reliable infor-
size of the model, the level of detail affects model mation is simply unavailable such as when mod-
complexity as well as model size. Determining eling a completely new system.
the appropriate level of detail is an important
The required degree of accuracy can have a sig-
decision. Too much detail makes it difficult and
nificant impact on the time and effort required to
time consuming to develop a valid model. Too
gather data. It often has little impact, however, on
little detail may make the model too unrealistic
the model building time since a model can be
by excluding critical variables. The following
built with estimated values that can later be
figure illustrates how the time to develop a model
replaced with more accurate values. Output pre-
is affected by the level of detail. It also highlights
cision is often governed by the degree of accu-
the importance of including only enough detail to
racy of the model.
meet the objectives of the study.
Type of Experimentation The number and
One to One
Correspondence nature of the alternative solutions to be evaluated
should be planned from the outset in order to
Minimum
Required
ensure that adequate time is allotted. This deci-
sion is often influenced by the deadline con-
Level of straints of the study. Where alternatives with only
Detail
slight differences are to be evaluated, a base
model can be developed requiring only minor
modifications to model each alternative. If alter-
Model Development Time
native configurations are significantly different,
Effect of Level of Detail on Model Develop- it may require nearly as much effort modeling
ment Time each configuration as it does developing the ini-
tial model.
For studies in which improvements to an existing
The level of detail is determined largely by the system are being considered, it is often helpful
degree of precision required in the output. If only and effective to model the current system as well
a rough estimate is being sought, it may be suffi- as the proposed system. The basic premise is that
cient to model each activity by its time, rather you are not ready to make improvements to a sys-
than specific details making up the activity. If, on tem until you understand how the current system
the other hand, details such as downtimes or operates. Information on the current system is
move times have an appreciable effect on the out- easier to obtain than information on areas of
come of the model, they should be included. change. Once a model of the current system is
built, it is often easier to visualize what changes
Degree of Accuracy The degree of accuracy need to be made for the modified system. Both
pertains to the correctness of the data being used. systems may even be modeled together in the
For some models or activities, the information same simulation and made to run side by side.
need not be as accurate or exact as it does for oth- During the final presentation of the results, being
ers. The required degree of accuracy is deter- able to show both “as is” and “to be” versions of
mined by the objectives of the study. If the the system effectively demonstrates the impact
decision is important or a comparison is close, changes can have on system performance.
greater accuracy may be required. Accuracy
36 Chapter 3:
Steps for Doing Simulation

Form of Results The form in which the results the cost of doing the project outweighs the antici-
are to be presented can significantly affect the pated benefits, either an alternative solution may
time and effort involved in the simulation study. need to be explored or the objectives may need to
If detailed animation or an extensive report is be modified to cut down on the level of effort
expected, the project can easily stretch on for required.
several weeks after the experimental phase has
been completed. Many times the only result
required is a simple verification of whether a sys- Step 2: Defining the System
tem is capable of meeting a production require- With clearly defined objectives and a well orga-
ment. In such cases, a simple answer will suffice. nized plan for the study, the system that will be
simulated can begin to be defined in detail. This
Developing a Budget and can be viewed as the development of a concep-
Schedule tual model on which the simulation model will be
based. The process of gathering and validating
With objectives and constraints clearly defined system information can be overwhelming when
and a specification prepared identifying the work faced with the stacks of uncorrelated data to sort
to be performed, a budget and schedule should be through. Data is seldom available in a form that
developed projecting the expected cost and time defines exactly how the system works. Many data
for completing the simulation project. Obviously, gathering efforts end up with lots of data but very
the time to perform a simulation project will vary little useful information.
depending on the size and difficulty of the
project. If data is not readily available, it may be Data gathering should never be performed with-
necessary to add several additional weeks to the out a purpose. Rather than being haphazard, data
project. A small project can take two to four gathering should be goal oriented with a focus on
weeks while large projects can take two to four information that will achieve the objectives of the
months. A simulation schedule should be based study. There are several guidelines to keep in
on realistic projections of the time requirements mind when gathering data.
keeping in mind the following: •Identify cause-and-effect relationships
•Defining the system to be modeled can take It is important to correctly identify the
up to 50% of the project time. causes or conditions under which activities
•Model building usually takes the least are performed. In gathering downtime data,
amount of time (10 to 20%). for example, it is helpful to distinguish
•Once a base model is built, it can take sev- between downtimes due to equipment failure
eral weeks to conduct all of the desired or personal emergencies and planned down-
experiments, especially if alternative designs times for break. Once the causes have been
are being compared. established and analyzed, activities can be
properly categorized.
While it may have initially been determined that
simulation is a suitable tool for achieving the •Look for key impact factors Discrimina-
objective, the decision to use simulation may tion should be used when gathering data to
need to be reconsidered in light of projected cost avoid wasting time examining factors that
and time estimates. Simulation may be a good have little or no impact on system perfor-
solution to the problem at hand, but if the time or mance. If, for example, an operator is dedi-
ProModel 37
User Guide

cated to a particular task and, therefore, is about the nature of the activity being per-
never a cause of delays in service, there is no formed, but only the impact that the activity
need to include the operator in the model. has on the use of resources and the delay of
Likewise, extremely rare downtimes, negli- entity flow. For example, the actual opera-
gible move times and other insignificant or tion performed on a machine is not impor-
irrelevant activities that have no appreciable tant, but only how long the operation takes
effect on routine system performance may be and what resources, if any, are tied up during
safely ignored. the operation. It is important for the modeler
to be constantly thinking abstractly about the
•Distinguish between time and condition system operation in order to avoid getting
dependent activities Time-dependent too caught up in the incidental details.
activities are those that take a predictable
amount of time to complete, such as cus- •Separate input variables from response
tomer service. Condition-dependent activi- variables Input variables in a model define
ties can only be completed when certain how the system works (e.g., activity times,
defined conditions within the system are sat- routing sequences, etc.). Response variables
isfied. Because condition-dependent activi- describe how the system responds to a given
ties are uncontrollable, they are set of input variables (e.g., work-in-process,
unpredictable. An example of a condition- idle times, resource utilization, etc.). Input
dependent activity might be the approval of a variables should be the focus of data gather-
loan application contingent upon a favorable ing since they are used to define the model.
credit check. Response variables, on the other hand, are
the output of a simulation. Consequently,
Many activities are partially time-dependent response variables should only be gathered
and partially condition-dependent. When later to help validate the model once it is
gathering data on these activities, it is impor- built and run.
tant to distinguish between the time actually
These guidelines should help ensure that the sys-
required to perform the activity and the time
tem is thought of in the proper light for simula-
spent waiting for resources to become avail-
tion purposes.
able or other conditions to be met before the
activity can be performed. If, for example, To help organize the process of gathering data for
historical data is used to determine repair defining the system, the following steps are rec-
times, the time spent doing the actual repair ommended:
work should be used without including the
•Determine data requirements.
time spent waiting for a repair person to
•Use appropriate data sources.
become available.
•Make assumptions where necessary.
•Focus on essence rather than sub- •Convert data into a useful form.
stance A system definition for modeling •Document and approve the data.
purposes should capture the key cause-and- Each of these steps is explained on the following
effect relationships and ignore incidental pages.
details. Using this “black box” approach to
system definition, we are not concerned
38 Chapter 3:
Steps for Doing Simulation

Determining Data Requirements guish the way in which entities of the same
type are processed or routed?
The first step in gathering system data is to deter- 2. What are the route locations in the system
mine what data is required for building the (include all places where processing or queu-
model. This should be dictated primarily by the
ing occurs, or where routing decisions are
scope and level of detail required to achieve the
made) and what are their capacities (i.e., how
model objectives as described earlier. It is best to
many entities can each location accommo-
go from general to specific in gathering system
date or hold at one time)?
data. The initial focus should be on defining the
3. Besides route locations, what types of
overall process flow to provide a skeletal frame-
resources (personnel, vehicles, equipment)
work for attaching more detailed information. are used in the system and how many units
Detailed information can then be added gradually are there of each type (resources used inter-
as it becomes available (e.g., resource require-
changeably may be considered the same
ments, processing times, etc.). Starting with the type)?
overall process flow not only provides an orderly
4. What is the routing sequence for each entity
approach to data gathering, but also enables the
type in the system?
model building process to get started which
5. What activity, if any, takes place for each
reduces the amount of time to build and debug
entity at each route location (define in terms
the model later. Often, missing data becomes
of time required, resources used, number of
more apparent as the model is being built.
entities involved and any other decision
In defining the basic flow of entities through the logic that takes place)?
system, a flow diagram can be useful as a way of 6. Where, when and in what quantities do enti-
documenting and visualizing the physical flow of ties enter the system (define the schedule,
entities from location to location. Once a flow interarrival time, cyclic arrival pattern, or
diagram is made, a structured walk-through can condition which initiates each arrival)?
be conducted with those familiar with the opera- 7. In what order do multiple entities depart
tion to ensure that the flow is correct and that from each location (First in, First out; Last
nothing has been overlooked. The next step in, First out)?
might be to define the detail of how entities move 8. In situations where an output entity could be
between locations and what resources are used routed to one of several alternative locations,
for performing operations at each location. At how is the routing decision made (e.g., most
this point it is appropriate to identify location available capacity, first available location,
capacities, move times, processing times, etc. probabilistic selection)?
9. How do entities move from one location to
To direct data gathering efforts and ensure that the next (define in terms of time and
meetings with others, on whom you depend for resources required)?
model information, are productive, it may be use-
10. What triggers the movement of entities from
ful to prepare a specific list of questions that one location to another (i.e., available capac-
identify the data needed. A list of pertinent ques-
ity at the next location, a request from the
tions to be answered might include the following: downstream location, an external condition)?
1. What types of entities are processed in the 11. How do resources move from location to
system and what attributes, if any, distin- location to perform tasks (define either in
terms of speed and distance, or time)?
ProModel 39
User Guide

12. What do resources do when they finish per- •Time Studies


forming a task and there are no other tasks •Predetermined Time Standards
waiting (e.g., stay put, move somewhere •Flow Charts
else)? •Facility Layouts
13. In situations where multiple entities could be •Market Forecasts
waiting for the same location or resource
•Maintenance Reports
when it becomes available, what method is
•On-line tracking systems
used for making an entity selection (e.g.,
•Equipment Manufacturers
longest waiting entity, closest entity, highest
priority, preemption)? •Managers
14. What is the schedule of availability for •Engineers
resources and locations (define in terms of •Facility Walk-throughs
shift and break schedules)? •Comparisons with Similar Operations
15. What planned interruptions do resources and In deciding whether to use a particular source of
locations have (scheduled maintenance, data, it is important to consider the relevancy,
setup, changeover)? reliability and accessibility of the source. If the
16. What random failures do resources and loca- information that a particular source can provide is
tions experience (define in terms of distribu- irrelevant for the model being defined, then that
tions describing time to failure and time to source should not be consulted. What good is a
repair)? maintenance report if it has already been decided
Depending on the purpose of the simulation and that downtimes are not going to be included in
level of detail needed, some of these questions the model? Reliability of the source will deter-
may not be applicable. For very detailed models mine the validity of the model. A managers per-
additional questions may need to be asked. ception, for example, may not be as reliable as
Answers to these questions should provide nearly actual production logs. Finally, if the source is
all of the information necessary to build a model. difficult to access, such as a visit to a similar
facility in a remote site, it may have to be omit-
Using Appropriate Data Sources ted.

Having a specific set of questions for defining the


Making Assumptions
system, we are now ready to search for the
answers. Information seldom comes from a sin- Not long after data gathering has started, you
gle source. It is usually the result of reviewing may realize certain information is unavailable or
reports, conducting personal interviews, personal perhaps unreliable. Complete, accurate, and up-
observation and making lots of assumptions. “It to-date data for all the information needed is
has been my experience,” notes Carson (1986), rarely obtainable, especially when modeling a
“that for large-scale real systems, there is seldom new system about which very little is known. For
any one individual who understands how the sys- system elements about which little is known,
tem works in sufficient detail to build an accurate assumptions must be made. There is nothing
simulation model. The modeler must be willing wrong with assumptions as long as they can be
to be a bit of a detective to ferret out the neces- agreed upon, and it is recognized that they are
sary knowledge.” Good sources of system data only assumptions. Any design effort must utilize
includes the following:
40 Chapter 3:
Steps for Doing Simulation

assumptions where complete or accurate infor- dard theoretical distribution is to summarize the
mation is lacking. data in the form of a frequency distribution that
can be used directly in the model. A frequency
Many assumptions are only temporary until cor-
distribution is sometimes referred to as an empir-
rect information can be obtained or it is deter-
ical or user-defined distribution.
mined that more accurate information is
necessary. Often, sensitivity analysis, in which a Whether fitting data to a theoretical distribution,
range of values is tested for potential impact, can or using an empirical distribution, it is often use-
give an indication of just how accurate the data ful to organize the data into a frequency distribu-
really needs to be. A decision can then be made tion table. Defining a frequency distribution is
to firm up the assumptions or to leave them done by grouping the data into intervals and stat-
alone. If, for example, the degree of variation in a ing the frequency of occurrence for each particu-
particular activity time has little or no impact on lar interval. To illustrate how this is done, the
system performance, then a constant activity time following frequency table tabulates the number
may be used. Otherwise, it may be important to and frequency of observations for a particular
define the exact distribution for the activity time. activity requiring a certain range of time to per-
form.
Another approach in dealing with assumptions is
to run three different scenarios showing a “best-
Frequency Distributions of Delivery Times
case” using the most optimistic value, a “worst-
case” using the most pessimistic value, and a Delivery
Time Number of Cumulative
“most-likely-case” using a best-estimate value. (days) Observations Percentage Percentage
This will help determine the amount of risk you 0-1 25 16.5 16.5
want to take in assuming a particular value.
1-2 33 21.7 38.2
2-3 30 19.7 57.9
Converting Data to a Useful Form
3-4 22 14.5 72.4
Data is seldom in a form ready for use in a simu- 4-5 14 9.2 81.6
lation model. Usually, some analysis and conver-
5-6 10 6.6 88.2
sion needs to be performed for data to be useful
6-7 7 4.6 92.8
as an input parameter to the simulation. Random
phenomena must be fitted to some standard, theo- 7-8 5 3.3 96.1
retical distribution such as a normal or exponen- 8-9 4 2.6 98.7
tial distribution (Law and Kelton, 1991), or be 9 - 10 2 1.3 100.0
input as a frequency distribution. Activities may
need to be grouped together to simplify the Total Number of Observations = 152
description of the system operation.
While there are rules that have been proposed for
Distribution Fitting To define a distribution using determining the interval or cell size, the best
a theoretical distribution requires that the data, if approach is to make sure that enough cells are
available, be fit to an appropriate distribution that defined to show a gradual transition in values, yet
best describes the variable. ProModel includes not so many cells that groupings become
the Stat::Fit distribution fitting package which obscured.
assists in fitting sample data to a suitable theoret-
ical distribution. An alternative to using a stan-
ProModel 41
User Guide

Note in the last column of the frequency table others who are in a position to evaluate the valid-
that the percentage for each interval may be ity of the data and approve the assumptions
expressed optionally as a cumulative percentage. made. This document will be helpful later if you
This helps verify that all 100% of the possibilities need to make modifications to the model or look
are included. at why the actual system ends up working differ-
ently than what was modeled.
When gathering samples from a static population,
one can apply descriptive statistics and draw rea- In addition to including those factors to be used
sonable inferences about the population. When in the model, the data document should also
gathering data from a dynamic and possibly time include those factors deliberately excluded from
varying system, however, one must be sensitive the model because they are deemed to be either
to trends, patterns, and cycles that may occur insignificant or irrelevant. If, for example, break
with time. The samples drawn may not actually times are not identified in the system description,
be homogenous samples and, therefore, unsuit- a statement of explanation should be made
able for applying simple descriptive techniques. explaining why. Stating why certain factors are
being excluded from the system description will
Activity Grouping Another consideration in
help resolve later concerns that may question
converting data to a useful form is the way in
why the factors were omitted.
which activities are grouped for modeling pur-
poses. Often it is helpful to group activities Validating system data can be a time-consuming
together so long as important detail is not sacri- and difficult task, especially when many assump-
ficed. This makes models easier to define and tions are made. In practice, data validation ends
more manageable to analyze. In grouping multi- up being more of a consensus or agreement that is
ple activities into a single activity time for simpli- obtained confirming that the information is good
fication, consideration needs to be given as to enough for the purposes of the model. While this
whether activities are performed in parallel or in approved data document provides the basis for
series. If activities are done in parallel or with building the model, it often changes as model
any overlap, the time during which overlapping building and experimentation get under way.
occurs should not be additive.
Serial activities are always additive. For example, Step 3: Building the Model
if a series of activities is performed on an entity at
a location, rather than specifying the time for Once sufficient information has been compiled to
each activity, it may be possible to sum activity define the basic system operation, the model
times and enter a single time or time distribution. building activity can begin. While starting to
build a model too early can be a wasted exercise,
waiting until all of the information is completely
Documenting and Approving the gathered and validated may unnecessarily post-
Data pone the building of the model. Getting the
When it is felt that all relevant information has model started before the data is completely gath-
been gathered and organized into a usable form, ered may even help identify missing information
it is advisable to document the information in the needed to proceed.
form of data tables, relational diagrams and The goal of model building is to provide a valid
assumption lists. Sources of data should also be representation of the defined system operation.
noted. This document should then be reviewed by
42 Chapter 3:
Steps for Doing Simulation

Additionally, the model must be able to provide model with excessive detail may be too expensive
any other statistical or graphical representation to program and to execute.
needed to satisfy the objectives of the study. A
model is neither true nor false, but rather useful Incremental Expansion
or not useful. Once validated, a model is useful
when it provides the needed information to meet In addition to adding complexity to a model in
the objectives of the simulation. stages, models that have a broad scope are some-
times easier to build in phases where additional
sections are added incrementally to the model.
Progressive Refinement This method of "eating the elephant one bite at a
One nice feature of simulation is that models do time" allows a portion of the model to be built,
not have to include all of the final detail before tested and debugged before adding new sections
they will run. This allows a progressive refine- and makes a large task more manageable.
ment strategy to be used in which detail is added
For unusually large models, it may be useful to
to the model in stages rather than all at once. Not
identify definable boundaries within a model to
only do models get built and running quicker this
permit model partitioning. Model partitioning is
way, but it also makes models easier to debug. In
the process of subdividing a model into two or
the initial stages of a model, for example, attrac-
more modules that represent physically separate
tive graphics are not very useful and, since they
sections within the system. The purpose of model
are likely to be changed anyway, should not be
partitioning is to allow model sections to be built
added until later when preparing for the final
and debugged, possibly even by separate individ-
model presentation.
uals, independently of each other. Once sections
The complexity of model building should never are finished, they can be merged together to cre-
be underestimated and it is always better to begin ate the overall model. This “divide-and-conquer”
simple and add complexity rather than create an method of model building can greatly reduce the
entire complex model at once. It is also easier to time and difficulty in building and debugging
add detail to a model than it is to remove it from a large models.
model. Building a model in stages enables bugs
to be more readily identified and corrected. Model Verification
Emphasizing the importance of applying progres-
sive refinement to model building, Law and Kel- Once a model is defined using a selected software
ton (1991) have advised: tool, the model must generally be debugged to
ensure that it works correctly. The process of
Although there are few firm rules on how one demonstrating that a model works as intended is
should go about the modeling process, one point referred to in simulation literature as model veri-
on which most authors agree is that it is always a fication. It is much easier to debug a model built
good idea to start with a simple model which can in stages and with minimal detail than to debug a
later be made more sophisticated if necessary. A large and complex model. Eliminating bugs in a
model should contain only enough detail to cap- program model can take a considerable amount
ture the essence of the system for the purposes for of time, especially if a general purpose program-
which the model is intended: it is not necessary to ming language (e.g., C++) in which frequent cod-
have a one-to-one correspondence between ele- ing errors occur is used. Most simulation
ments of the model and elements of the system. A languages provide a trace capability in the form
ProModel 43
User Guide

of audit trails, screen messages, graphic anima- results appear reasonable. If circumstances per-
tion, or a combination of all three. A trace mit, the model may even be compared to that
enables the user to look inside of the simulation actual system to see how they correspond. If
to see if the simulation is performing the way it these procedures are performed without encoun-
should. Good simulation products provide inter- tering a discrepancy between the real system and
active debugging capability which further facili- the model, the model is said to have face validity.
tates the debugging process. A thorough “walk-
through” of the model input is always advisable.
Step 4: Conducting Experi-
Model Validation ments
During the process of model building, the mod- The fourth step in a simulation study is to con-
eler must be constantly concerned with how duct simulation experiments with the model.
closely the model reflects the system definition. Simulation is basically an application of the sci-
The process of determining the degree to which entific method. In simulation, one begins with a
the model corresponds to the real system, or at theory of why certain design rules or manage-
least accurately represents the model specifica- ment strategies are better than others. Based on
tion document, is referred to as model validation. these theories the designer develops a hypothesis
Proving absolute validity is a non attainable goal. which he tests through simulation. Based on the
As Neelamkavil (1987) explains, “True valida- results of the simulation the designer draws con-
tion is a philosophical impossibility and all we clusions about the validity of his hypothesis. In a
can do is either invalidate or fail to invalidate.” simulation experiment there are input variables
For this reason, what we actually seek to estab- defining the model which are independent and
lish is a high degree of face validity. Face validity may be manipulated or varied. The effects of this
means that, from all outward indications, the manipulation on other dependent or response
model appears to be an accurate representation of variables are measured and correlated.
the system. From this standpoint, validating a
In some simulation experiments we are interested
model is the process of substantiating that the
in the steady-state behavior of the model. Steady-
model, within its domain of applicability, is suffi-
state behavior does not mean that the simulation
ciently accurate for the intended application
produces a steady outcome, but rather the distri-
(Schlesinger, 1979).
bution or statistical variation in outcome does not
There is no simple test to establish the validity of change over time. For example, a distribution
a model. Validation is an inductive process warehouse may ship between 200 and 220 parts
through which the modeler draws conclusions per hour under normal operating conditions. For
about the accuracy of the model based on the evi- many simulations we may only be interested in a
dence available. Gathering evidence to determine particular time period, such as a specific day of
model validity is largely accomplished by exam- the week. For these studies, the simulation may
ining the model structure (i.e., the algorithms and never reach a steady state.
relationships) to see how closely it corresponds to
As with any experiment involving a system with
the actual system definition. For models having
random characteristics, the results of the simula-
complex control logic, graphic animation can be
tion will also be random in nature. The results of
used effectively as a validation tool. Finally, the
a single simulation run represent only one of sev-
output results should be analyzed to see if the
eral possible outcomes. This requires that multi-
44 Chapter 3:
Steps for Doing Simulation

ple replications be run to test the reproducibility •What is an appropriate run length for the
of the results. Otherwise, a decision might be simulation?
made based on a fluke outcome, or at least an •How many replications should be made?
outcome not representative of what would nor- •How many different random streams should
mally be expected. Since simulation utilizes a be used?
pseudo-random number generator for generating •How should initial seed values be controlled
random numbers, running the simulation multiple from replication to replication?
times simply reproduces the same sample. In
order to get an independent sample, the starting Answers to these questions will be determined
seed value for each random stream must be dif- largely by the following three factors:
ferent for each replication, ensuring that the ran- 1. The nature of the simulation (terminating or
dom numbers generated from replication to nonterminating).
replication are independent. 2. The objective of the simulation (capacity
Depending on the degree of precision required in analysis, alternative comparisons, etc.).
the output, it may be desirable to determine a 3. The precision required (rough estimate ver-
confidence interval for the output. A confidence sus confidence interval estimates).
interval is a range within which we can have a
certain level of confidence that the true mean Terminating Versus
falls. For a given confidence level or probability, Non-terminating Simulations
say .90 or 90%, a confidence interval for the
average utilization of a resource might be deter- As part of setting up the simulation experiment,
one must decide what type of simulation to run.
mined to be between 75.5 and 80.8%. We would
Simulations are usually distinguished as being
then be able to say that there is a .90 probability
one of two types: terminating or non-terminating.
that the true mean utilization of the modeled
The difference between the two has to do with
resource (not of the actual resource) lies between
whether we are interested in the behavior of the
75.5 and 80.8%.
system over a particular period of time or in the
Fortunately, ProModel provides convenient facil- steady-state behavior of the system. It has noth-
ities for conducting experiments, running multi- ing to do, necessarily, with whether the system
ple replications and automatically calculating itself terminates or is ongoing. The decision to
confidence intervals. The modeler must still perform a terminating or non-terminating simula-
decide, however, what types of experimentation tion has less to do with the nature of the system
are appropriate. When conducting simulation than it does with the behavior of interest.
experiments, the following questions should be
asked: A terminating simulation is one in which the sim-
ulation starts at a defined state or time and ends
•Am I interested in the steady state behavior when it reaches some other defined state or time.
of the system or a specific period of opera- An initial state might be the number of parts in
tion? the system at the beginning of a work day. A ter-
•How can I eliminate start-up bias or getting minating state or event might be when a particu-
the right initial condition for the model? lar number of jobs have been completed.
•What is the best method for obtaining sam- Consider, for example, an aerospace manufac-
ple observations that may be used to estimate turer that receives an order to manufacture 200
the true expected behavior of the model? airplanes of a particular model. The company
ProModel 45
User Guide

might be interested in knowing how long it will before the break or end of shift. The length of the
take to produce the aircraft along with existing simulation is determined by how long it takes to
workloads. The simulation run starts with the get a representative steady-state reading of the
system empty and is terminated when the 200th model behavior.
plane is completed since that covers the period of
interest. A point in time which would bring a ter- Running Terminating Simulations
minating simulation to an end might be the clos-
ing of shop at the end of a business day, or the Experiments involving terminating simulations
completion of a weekly or monthly production are usually conducted by making several simula-
period. It may be known, for example, that a pro- tion runs, or replications, of the period of interest
duction schedule for a particular item changes using a different random seed for each run. This
weekly. At the end of each 40 hour cycle, the sys- procedure enables statistically independent and
tem is “emptied” and a new production cycle unbiased observations to be made on the system
begins. In this situation, a terminating simulation response over the period simulated. Statistics are
would be run in which the simulation run length often gathered on performance measures for suc-
would be 40 hours. cessive intervals of time during the period.

Terminating simulations are not intended to mea- For terminating simulations, we are usually inter-
sure the steady-state behavior of a system. In a ested in final production counts and changing
terminating simulation, average measures are of patterns of behavior over time rather than the
little meaning. Since a terminating simulation overall average behavior. It would be absurd, for
always contains transient periods that are part of example, to conclude that because two techni-
the analysis, utilization figures have the most cians are busy only an average of 40% during the
meaning if reported for successive time intervals day that only one technician is needed. This aver-
during the simulation. age measure reveals nothing about the utilization
of the technicians during peak periods of the day.
A non-terminating or steady-state simulation is A more detailed report of waiting times during
one in which the steady-state behavior of the sys- the entire work day may reveal that three techni-
tem is being analyzed. A non-terminating simula- cians are needed to handle peak periods, whereas
tion does not mean that the simulation never only one technician is necessary during off-peak
ends, nor does it mean that the system being sim- hours. In this regard, Hoover and Perry (1990)
ulated has no eventual termination. It only means note:
that the simulation could theoretically go on
indefinitely with no statistical change in behav- It is often suggested in the simulation literature
ior. For non-terminating simulations, the modeler that an overall performance be accumulated over
must determine a suitable length of time to run the course of each replication of the simulation,
the model. An example of a non-terminating sim- ignoring the behavior of the systems at intermedi-
ulation is a model of a manufacturing operation ate points in the simulation. We believe this is too
in which oil filters are produced on a continual simple an approach to collecting statistics when
basis at the same pace. The operation runs two simulating a terminating system. It reminds us of
shifts with an hour break during each shift in the statistician who had his head in the refrigera-
which everything momentarily stops. Break and tor and feet in the oven, commenting that on the
third shift times are excluded from the model average he was quite comfortable.
since work always continues exactly as it left off
46 Chapter 3:
Steps for Doing Simulation

For terminating simulations, the three important cessing rates, utilization, etc.) exhibit statistical
questions to answer in running the experiment regularity (i.e., the distribution of these variables
are: are approximately the same from one time period
to the next). The following figure illustrates the
1. What should be the initial state of the model?
typical behavior of a response variable, Y, as the
2. What is the terminating event or time?
simulation progresses through N periods of a
3. How many replications will you make?
simulation.
Many systems operate on a daily cycle, or, if a
pattern occurs over a weeks time, the cycle is Period Y
weekly. Some cycles may vary monthly or even
1
annually. Cycles need not be repeating to be con-
sidered a cycle. Airlines, for example, may be 2 Transient State
interested in the start-up period of production
3
during the introduction of a new airport which is
a one-time occurrence. 4
The number of replications should be determined 5
by the precision required for the output. If only a Steady State
6
rough estimate of performance is being sought,
three to five replications are sufficient. For 7
greater precision, more replications should be
made until a confidence interval with which you 8
feel comfortable is achieved. Behavior of Response Variable Y for Succes-
sive Periods During Simulation
Running Non-terminating
Simulations The time that it takes to reach steady-state is a
The issues associated with generating meaningful function of the activity times and the amount of
output statistics for terminating simulations are activity taking place. For some models, steady-
somewhat different that those associated with state might be reached in a matter of a few hours
generating statistics for non-terminating sys- of simulation time. For other models it may take
tems. In steady-state simulations, we must deal several hundred hours to reach steady-state. In
with the following issues: modeling steady-state behavior we have the prob-
lem of determining when a model reaches steady-
1. Determining the initial warm-up period. state. This start-up period is usually referred to as
2. Selecting among several alternative ways for the warm-up period. We want to wait until after
obtaining sample observations. the warm-up period before we start gathering any
3. Determining run length. statistics. This way we eliminate any bias due to
Determining the Warm-up Period In a steady- observations taken during the transient state of
state simulation, we are interested in the steady- the model.
state behavior of the model. Since a model starts
While several methods have been presented for
out empty, it usually takes some time before it
determining warm-up time (Law and Kelton,
reaches steady-state. In a steady-state condition,
1991), the easiest and most straightforward
the response variables in the system (e.g., pro-
approach, although not necessarily the most reli-
ProModel 47
User Guide

able, is to run a preliminary simulation of the sys- hours, 12 to 15 hours is probably a safe warm-up
tem, preferably with several (3 to 5) replications, period to use for the simulation.
and observe at what time the system reaches sta- End of Warm-up Period
tistical stability. The length of each replication
100
should be relatively long and allow even rarely 90
occurring events, such as infrequent downtimes, 80
to occur at least two or three times. To determine 70

a satisfactory warm-up period using this method, Output 60


(per hr)
50
one or more key response variables should be 40
monitored by period over time, like the average 30
number of entities in a queue or the average utili- 20

zation of a resource. This approach assumes that 10

the mean value of the monitored response vari- 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30


Simulation Time (hrs)
able is the primary indicator of convergence
rather than the variance, which often appears to Plot of Hourly Entity Output to Identify Start of
be the case. If possible, it is preferable to reset the Steady-State
response variable after each period rather than
track the cumulative value of the variable, since
cumulative plots tend to average out instability in Obtaining Sample Observations In a terminat-
data. Once these variables begin to exhibit ing simulation, sample observations are made by
steady-state, we can add a 20% to 30% safety simply running multiple replications. For steady-
factor and be reasonably safe in using that period state simulations, we have several options for
as the warm-up period. This approach is simple, obtaining sample observations. Two widely used
conservative and usually satisfactory. Remember, approaches are running multiple replications and
the danger is in underestimating the warm-up interval batching. The method supported in Pro-
period, not overestimating it. Relatively little Model is running multiple replications.
time and expense is needed to run the warm-up Running multiple replications for non-terminat-
period longer than actually required. The follow- ing simulations is very similar to running termi-
ing figure illustrates the average number of enti- nating simulations. The only difference is that (1)
ties processed each hour for several replications. the initial warm-up period must be determined,
Since statistical stability is reached at about 10 and (2) an appropriate run length must be deter-
mined. Once the replications are made, confi-
dence intervals can be computed as described
earlier in this chapter. One advantage of running
independent replications is that samples are inde-
pendent. On the negative side, running through
the warm-up phase for each replication slightly
extends the length of time to perform the replica-
tions. Furthermore, there is a possibility that the
length of the warm-up period is underestimated,
causing biased results.
48 Chapter 3:
Steps for Doing Simulation

Interval batching (also referred to as the batch 1000 occurrences of each type of event (Thesen
means technique) is a method in which a single, and Travis, 1992).
long run is made with statistics being reset at
specified time intervals. This allows statistics to Comparing Alternative Systems
be gathered for each time interval with a mean
calculated for each interval batch. Since each Simulations are often performed to compare two
interval is correlated to both the previous and the or more alternative designs. This comparison
next intervals (called serial correlation or auto- may be based on one or more decision variables
correlation), the batches are not completely inde- such as buffer capacity, work schedule, resource
pendent. The way to gain greater independence is availability, etc. Comparing alternative designs
to use large batch sizes and to use the mean val- requires careful analysis to ensure that differ-
ues for each batch. When using interval batching, ences being observed are attributable to actual
confidence interval calculations can be per- differences in performance and not to statistical
formed. The number of batch intervals to create variation. This is where running multiple replica-
should be at least 5 to 10 and possibly more tions may again be helpful. Suppose, for exam-
depending on the desired confidence interval. ple, that method A for deploying resources yields
a throughput of 100 entities for a given time
Determining Run Length Determining run period while method B results in 110 entities for
length for terminating simulations is quite simple the same time period. Is it valid to conclude that
since there is a natural event or time point that method B is better than method A, or might addi-
defines it for us. Determining the run length for a tional replications actually lead the opposite con-
steady-state simulation is more difficult since the clusion?
simulation can be run indefinitely. The benefit of
this, however, is that we can produce good repre- Evaluating alternative configurations or operat-
sentative samples. Obviously, running extremely ing policies can sometimes be performed by com-
long simulations is impractical, so the issue is to paring the average result of several replications.
determine an appropriate run length that ensures Where outcomes are close or where the decision
a sufficiently representative sample of the steady- requires greater precision, a method referred to as
state response of the system is taken. hypothesis testing should be used. In hypothesis
testing, first a hypothesis is formulated (e.g., that
The recommended length of the simulation run methods A and B both result in the same through-
for a steady-state simulation is dependent upon put) and then a test is made to see whether the
(1) the interval between the least frequently results of the simulation lead us to reject the
occurring event and (2) the type of sampling hypothesis. The outcome of the simulation runs
method (replication or interval batching) used. If may cause us to reject the hypothesis that meth-
running independent replications, it is usually a ods A and B both result in equal throughput capa-
good idea to run the simulation enough times to bilities and conclude that the throughput does
let every type of event (including rare ones) hap- indeed depend on which method is used.
pen at least a few times if not several hundred.
Remember, the longer the model is run, the more Sometimes there may be insufficient evidence to
confident you can become that the results repre- reject the stated hypothesis and thus the analysis
sent a steady-state behavior. If collecting batch proves to be inconclusive. This failure to obtain
mean observations, it is recommended that run sufficient evidence to reject the hypothesis may
times be as large as possible to include at least be due to the fact that there really is no difference
ProModel 49
User Guide

in performance, or it may be a result of the vari- rial design. In this type of experiment, we simply
ance in the observed outcomes being too high define a high and low level setting for each factor
given the number of replications to be conclu- and, since it is a full-factorial experiment, we try
sive. At this point, either additional (perhaps time every combination of factor settings. This means
consuming) replications may be run or one of that if there are five factors and we are testing
several variance reduction techniques might be two different levels for each factor, we would test
employed (see Law and Kelton, 1991). each of the 25 = 32 possible combinations of high
and low factor levels. For factors that have no
Factorial Design range of values from which a high and low can be
chosen, the high and low levels are arbitrarily
In simulation experiments we are often interested
selected. For example, if one of the factors being
in finding out how different input variable set-
investigated is an operating policy for doing work
tings impact the response of the system. Rather
(e.g., first come, first served; or last come, last
than run hundreds of experiments for every possi-
served), we arbitrarily select one of the alterna-
ble variable setting, experimental design tech-
tive policies as the high level setting and a differ-
niques can be used as a “short-cut” to finding
ent one as the low level setting.
those input variables of greatest significance.
Using experimental-design terminology, input For experiments in which a large number of fac-
variables are referred to as factors, and the output tors are being considered, a two-level full-facto-
measures are referred to as responses. Once the rial design would result in an extremely large
response of interest has been identified and the number of combinations to test. In this type of
factors that are suspected of having an influence situation, a fractional-factorial design is used to
on this response defined, we can use a factorial strategically select a subset of combinations to
design method which prescribes how many runs test in order to “screen out” factors with little or
to make and what level or value to be used for no impact on system performance. With the
each factor. As in all simulation experiments, it is remaining reduced number of factors, more
still desirable to run multiple replications for each detailed experimentation such as a full-factorial
factor level and use confidence intervals to assess experiment can be conducted in a more manage-
the statistical significance of the results. able fashion.
One's natural inclination when experimenting After fractional-factorial experiments and even
with multiple factors is to test the impact that two-level full-factorial experiments have been
each individual factor has on system response. performed to identify the most significant factor
This is a simple and straightforward approach, level combinations, it is often desirable to con-
but it gives the experimenter no knowledge of duct more detailed experiments, perhaps over the
how factors interact with each other. It should be entire range of values, for those factors that have
obvious that experimenting with two or more fac- been identified as being the most significant. This
tors together can affect system response differ- provides more precise information for making
ently than experimenting with only one factor at a decisions regarding the best factor values or vari-
time and keeping all other factors the same. able settings for the system. For a more concise
explanation of the use of factorial design in simu-
One type of experiment that looks at the com-
lation experimentation see Law and Kelton
bined effect of multiple factors on system
(1991).
response is referred to as a two-level, full-facto-
50 Chapter 3:
Steps for Doing Simulation

Use of Random Streams used in a simulation has its own independent seed
and tracks its own values for subsequent input to
One of the most valuable characteristics of simu- the generator. Where the sequence begins in the
lation is the ability to reproduce and randomize cycle depends on the initial seed value used by
replications of a particular model. Simulation the generator.
allows probabilistic phenomena within a system
to be controlled or randomized as desired for con- Any time a particular number seeds a stream, the
ducting controlled experiments. This control is same sequence of values will be repeated every
made available through the use of random time the same seed is used to initialize the stream.
streams. This means that various elements within a model
can be held constant with respect to their perfor-
A stream is a sequence of independently cycling, mance while other elements vary freely. Simply
unique random numbers uniformly distributed specify one random number stream for one set of
between 0 and 1 (see the figure on next page). activities and another random number stream for
Random number streams are used to generate all other activities.
additional random numbers from other probabil-
ity distributions (Normal, Beta, Gamma). After Because the same seed produces the same
sequencing through all of the random numbers in sequence of values every time it is used, com-
the cycle, the cycle starts over again with the pletely independent functions within a model
same sequence. The length of the cycle before it must have their own streams from the start. For
repeats is called the cycle period and is usually example, arrival distributions should generally
very long. have a random number stream used nowhere else
in the entire model. That way, activities added to
.52 a model that sample from a random number
stream will not inadvertently alter the arrival pat-
.80 .31
tern because they do not affect the sample values
generated from the arrival distribution.
To show an example of how multiple streams can
.07 .95 be useful, consider two copy machines, Copy1
and Copy2, which go down approximately every
4 hours for servicing. To model this, the fre-
quency or time between failures is defined by a
.60
.25 normal distribution with a mean value of 240
minutes and a standard deviation of 15 minutes,
.66 N(240,15). The time to repair is 10 minutes. If no
stream is specified in the normal distribution, the
Example of a Random Stream Cycle with a
same stream will be used to generate sample val-
Very Short Period
ues for both machines. So, if the next two num-
bers in the stream number are .21837 and .86469,
A random stream is generated using a random Copy1 will get a sample value from the normal
number generator or equation. The random num- distribution that is different from Copy2. There-
ber generator begins with an initial seed value fore, the two machines will go down at different
after which, each successive value uses the previ- times.
ous value as input to the generator. Each stream
ProModel 51
User Guide

Suppose, however, that the resource servicing the about getting too pedantic about the precision of
machines must service them both at the same simulation output. With more than 60 combined
time, so we would like to have the machines go years of experience in doing simulation model-
down at the same time. Using the same stream to ing, Conway, Maxwell and Worona (1986) cau-
determine both downtimes will not bring them tion that attaching a statistical significance to
down at the same time, because a different ran- simulation output can create a delusion that the
dom number will be returned from the stream output results are either more or less significant
with each call to generate a random normal vari- than they really are. They emphasize the practi-
ate. Using two different streams, each dedicated cal, intuitive reading of simulation results. Their
to a machine's downtime and each having the guideline is "If you can't see it with the naked
same initial seed, will ensure that both machines eye, forget it."
go down at the same time every time. The two
The goal of conducting experiments is not just to
streams have the same starting seed value so they
find out how well a particular system operates,
will produce exactly the same sequence of ran-
but hopefully to gain enough insight to be able to
dom numbers.
improve the system. Unfortunately, simulation
output rarely identifies causes of problems, but
Step 5: Analyzing the Output only reports the symptomatic behavior of prob-
lems. Bottleneck activities, for example, are usu-
Output analysis deals with drawing inferences ally identified by looking for locations or queues
about the actual system based on the simulation that are nearly always full which feed into one or
output. When conducting simulation experi- more locations that are sometimes empty. Detect-
ments, extreme caution should be used when ing the source of the bottleneck is sometimes a
interpreting the simulation results. Since the bit trickier than identifying the bottleneck itself.
results of a simulation experiment are random Bottlenecks may be caused by excessive opera-
(given the probabilistic nature of the inputs), an tion times, prolonged delays due to the unavail-
accurate measurement of the statistical signifi- ability of resources, or an inordinate amount of
cance of the output is necessary. downtime. The ability to draw correct inferences
People doing simulation in academia are often from the results is essential to making system
accused of working with contrived and often improvements.
oversimplified assumptions, yet are extremely
careful about ensuring the statistical significance Step 6: Reporting the Results
of the model results. Simulation practitioners in
industry, on the other hand, are usually careful to The last step in the simulation procedure is to
obtain valid model data, only to ignore the statis- make recommendations for improvement in the
tical issues associated with simulation output. actual system based on the results of the simu-
Maintaining a proper balance between establish- lated model. These recommendations should be
ing model validation and establishing the statisti- supported and clearly presented so that an
cal significance of simulation output is an informed decision can be made. Documentation
important part of achieving useful results. of the data used, the model(s) developed and the
experiments performed should all be included as
The most valuable benefit from simulation is to
part of a final simulation report.
gain insight, not necessarily to find absolute
answers. With this in mind, one should be careful
52 Chapter 3:
Steps for Doing Simulation

A simulation has failed if it produces evidence to for trying this or that with the model), the model
support a particular change which is not imple- recommendations, if approved, are ready to be
mented; especially if it is economically justified. implemented. If the simulation has been ade-
The process of selling simulation results is quately documented, it should provide a good
largely a process of establishing the credibility of functional specification for the implementation
the model. It is not enough for the model to be team.
valid, the client or management must also be con-
vinced of its validity if it is to be used as an aid in
decision making. Finally, the results must be pre- Pitfalls in Simulation
sented in terms that are easy to understand and If the steps that have been outlined are followed,
evaluate. Reducing the results to economic fac- the chances of performing a successful simula-
tors always produces a compelling case for mak- tion project are very good. Typical reasons why
ing changes to a system. simulation projects fail include the following:
In presenting results it is important to be sensitive •Failure to state clear objectives at the outset.
to the way in which recommendations are made. •Failure to involve individuals affected by
It helps to find out whether recommendations are outcome.
being sought or whether a simple summary of the
•Overrunning budget and time constraints.
results is wanted. It is generally wise to present
•Failure to document and get a consensus on
alternative solutions and their implications for
input data.
system performance without suggesting one
•Including more detail than is needed.
alternative over another, particularly when per-
sonnel changes or cuts are involved. In fact, •Including variables that have little or no
where there may be careers on the line, it is best impact on system behavior.
to caution the decision maker that your simula- •Failure to verify and validate the model.
tion study looks only at the logistical aspects of •Basing decisions on a single run observa-
the system and that it does not take into account tion.
the potential reactions or potential difficulties •Basing decisions on average statistics when
employees may have in accepting a particular the output is actually cyclical.
solution. •Being too technical and detailed in present-
ing the results to management.
Animation and output charts have become an
extremely useful aid in communicating the
results of a simulation study. This usually Summary
requires that some touch-up work be done to cre-
ate the right effect in visualizing the model being A simulation project has distinct phases that must
simulated. In preparing the results, it is often nec- be understood and followed in order to be suc-
essary to add a few touch-ups to the model (like a cessful. Simulation requires careful planning
full dress-rehearsal) so the presentation effec- with realistic goals and expectations. Steps to
tively and convincingly presents the results of the performing a simulation study include planning
simulation study. the study, defining the system, building the
model, conducting experiments, analyzing the
After the presentation is finished and there is no output, and presenting the results. Systematically
further analysis to be conducted (the final presen- following these steps will help avoid the pitfalls
tation always seems to elicit further suggestions
ProModel 53
User Guide

that frequently occur when conducting a simula-


tion study.
Building a Model
ProModel gives you the flexibility to create a
model in several ways—the easiest is to use the
graphical point-and-click approach. To build a
model, you should first define any locations in
the system. With locations defined, you are ready
to create entities (parts, customers, calls, etc.) and
schedule their arrivals to the locations you cre-
ated. Next, specify the process logic for entities at
each location (this will establish the entity flow
throughout the model). Finally, define any
optional model elements such as attributes, vari-
ables, or arrays that you will use in processing
entities.

Modeling Scenario
Before we actually begin building a model, let's
look at a fictitious scenario for our model build-
ing session.
Cogswell Cogs has just secured a contract to pro-
duce a new cog for production of the X-95C
Family Space Cruiser. The current capacity of the
Cogswell facility is not adequate to handle any
additional work load while continuing to fill
existing orders. Therefore, Mr. Cogswell has
ordered the I.E. department to simulate the design
of a new workcell dedicated to the production of
the new cog.
The process consists of loading a cast blank onto
an NC mill for 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 by a single operator.

Model Elements
In building this model we must define all of the
basic modeling elements and a few of the
optional elements.
54 Chapter 3:
Building a Model

Locations Resources
We need some type of receiving location to hold A single operator, CellOp, performs all manual
incoming entities. We also need processing loca- operations.
tions where entities have value added to them.
For the given production rate, Cogswell's engi- Path Networks
neers have determined that the workcell will
In order to make CellOp a mobile resource, we
require two NC_300 series numerically con-
must define a path network. We'll call it CellNet.
trolled mills, a degreasing machine, and an
inspection/assembly station.
Attributes
Entities (Parts) An attribute is simply a “numeric tag” attached to
either an entity (entity attribute) or a location
The entity types in this system include Pallets, (location attribute). Since each Cog is inspected
each carrying six cast Blanks. Blanks become for proper spline depth, we attach an attribute
Cogs after processing, and Bearings are loaded at called Test to each Cog, specifying the Pass/Fail
the Inspect station. If a Cog fails the inspection it status of the Cog.
will be called a Reject.
User Distributions
Arrivals
We will sample from a user defined distribution
Cogswell's engineers have determined that Pal- and set the Test attribute to either 1 (for pass) or 0
lets should arrive at the rate of 1 Pallet every 45 (for fail). Ninety six percent of the Cogs pass
minutes. inspection and have their Test attribute set to one.
Four percent fail the inspection and have their
Processing Test attribute set to zero.
The operation at each mill requires an operator to
load the Blank, which takes a normally distrib-
uted amount of time with a mean of 3 minutes Phased Modeling Approach
and standard deviation of .2 minutes (i.e., Instead of trying to build a model all at once, you
N(3,.2)). After a blank has been loaded, the may want to implement a phased modeling
machining time is a constant 5.7 minutes. approach where you build the model in stages.
Cogs are then removed from the mill and placed This will help you understand the basic modeling
in the degreasing machine. The degreasing elements before moving on to more complex
machine has capacity for 2 Cogs, and has a cycle ones like attributes and IF-THEN logic. The fol-
time of 5 minutes. lowing elements are those components normally
entered during each phase of the model building
Once the Cogs have been degreased, they are process.
inspected for proper spline depth, and a bearing is
installed in the center hole. This process requires Phase 1: Basic Model Elements
the cell operator, and takes U(3.2,.3) minutes for
the inspection and U(1.5,.2) minutes for the Bear- In the first phase you input all of the basic model
ing to be installed. If the Cog fails inspection, no elements: General Information, Locations, Enti-
Bearing is installed. ties, Arrivals, and Processing. You also import a
background graphic to help in placing the loca-
ProModel 55
User Guide

tions in the layout window. Upon completion of name of the graphics library to use. By default it
this phase you have a fully working model, ready will be PROMOD5.GLB.
to animate and collect output.

Phase 2: Adding Resources & Variability


The second phase normally consists of expanding
the model by adding resources and the corre-
sponding path network needed to move entities,
using resources, from location to location.

Phase 3: Additional Operations


The final phase usually consists of adding addi-
tional reality to the model—that is, adding those
nuances that make the model an accurate repre- Importing a Background Graphic
sentation of a real system. These include:
Simple background graphics are imported easily
•Adding Quantity and Time_in_system through the Background Graphics Editor. Pro-
attributes. Model also allows you to import complex graph-
•Changing operational times from simple ics files such as AutoCAD drawings to use as the
time constants to distributions. background for your simulations. For more infor-
•Adding features that ensure accurate entity mation on how to import a background graphic,
processing. see “Graphic Editor” on page 312.
•Adding variables for on-screen display.
•Defining appropriate downtimes.

Phase 1: Basic Model Elements


The first step in building the model is to define
the model's basic elements.

General Information
The General Information 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 Often, importing a background graphic makes the
process of placing locations easier, or altogether
eliminates the need to create graphic icons for
locations.
56 Chapter 3:
Building a Model

Defining Locations For more information on how to define entities,


see “Entities” on page 118.
Locations are defined easily by selecting the
desired icon and placing it in the layout window.
Each time a location is placed in the layout win-
dow, a corresponding record is entered in the
Location edit table. This table lists each location
along with location parameters such as the capac-
ity, number of units, and downtime information. In this model the Speed (fpm) column is irrele-
For more information on how to define a loca- vant since all entities move according to the defi-
tion, see “Locations” on page 96. nition of the mobile resource CellOp. Also, the
Stats column shows that we desire detailed statis-
Layout Window (maximized) tics for all entity types. “Time series” statistics
include throughput history of the entity. “Basic”
statistics include only the total exits of each entity
type from the system and the final quantity of
each entity type in the system.

Defining Arrivals
Of the four entity types, only one needs to be
scheduled to arrive in the system. Every 45 min-
utes one Pallet arrives at the Receiving location.
The word “INFINITE” in the Occurrences col-
umn means that one pallet continues to arrive
every 30 minutes as long as the simulation runs.
For more information on defining arrivals, see
Location Edit Table “Arrivals” on page 163.

Defining Entities Defining Process Logic


Once all locations have been defined, we define The last step in defining Phase 1 of our model is
entities in a similar way by selecting an icon for to define the processing of entities at each loca-
each entity type. As we do this, a record is cre- tion. ProModel simplifies this task by allowing
ated in the Entity edit table for each entity type. you to select an entity type and then use the
mouse to click on the locations in the order in
which they will process the entity. Each time you
click on a location, a new processing record is
added to the Process edit table, defining the pro-
cess for that entity type at that location. For more
ProModel 57
User Guide

information on defining process logic, see “Pro- Process and Routing Logic
cessing” on page 149, and “Operation Logic” on The entire process and routing tables for the
page 299. Phase 1 model are shown next. The table reads as
Once the basic entity flow has been defined using follows:
the point and click method, operation statements
1.When an entity called Pallet arrives at location
are added to the processing logic. The processing
Receive there is no operation time or processing
logic can be as simple as a constant operation
logic (it's just a storage location). The resulting
time or as complex as a nested IF...THEN...ELSE
output is six entities called Blank that are routed
statement.
to the FIRST available destination of either
Process editing actually involves two edit tables NC_301L or NC_302L.
that normally appear side by side. The Process
2.When Blanks arrive at NC_301L or NC_302L,
edit table specifies what happens to an entity
the processing time is a normal distribution with
when it arrives at a location, and the Routing edit
a mean of 3 and a standard deviation of .2 min-
table specifies where an entity is to be sent once
utes. The name of the entity is now changed to
processing is complete.
Cog, and the Cog is sent to the Degrease location
(FIRST is the default routing rule).
Process Edit Table
3.Two Cogs are accumulated at Degrease and
processed for 5 minutes. When the degrease
cycle is complete, Cogs are routed to location
Inspect.
4.The inspection time is a uniform distribution
with a mean of 3.2 and a half range of .3 minutes.
Ninety six percent of the Cogs pass inspection
and exit the system, while four percent of the
Cogs fail inspection and become Rejects.
Routing Edit Table

 Process Table Routing Table


Entity Location Operation (min) Blk Output Destination Rule Move Logic
Pallet Receive 1 Blank NC_301L FIRST 6 MOVE FOR .5
Blank NC_302L FIRST MOVE FOR .5
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 1 Cog Inspect FIRST 1 MOVE FOR .5
WAIT 5
Cog Inspect WAIT U(3.2,.3) 1 Cog EXIT 0.960 1
Reject EXIT 0.040
58 Chapter 3:
Building a Model

Phase 2: Adding Resources & Path Segment Edit Table


Variability
In this phase we wish to add the operator, CellOp,
to move entities from location to location, and to
perform the loading, unloading, and inspection
operations. ProModel requires 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 seg- Defining Resources
ments which connect nodes to other nodes. Each Resources are defined in much the same way as
location where a resource may stop to pick up, entities. When in the Resource module we simply
drop off, or process entities must interface with a select an icon to represent the resource and then
path node. specify the characteristics of the resource in the
We define path networks through the Path Net- Resource edit table. For more information about
work edit table similar to the previous edit tables. defining resources, see “Resources” on page 132.
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 Seg-
ment Edit table shown below. For more informa-
tion on defining path networks, see “Path
Networks” on page 123.

Path Network Edit Table


ProModel 59
User Guide

The Resource edit table shown below contains Process Edit Table and corresponding
fields for specifying the name and number of operation logic
units of a resource. It also has fields for specify-
ing resource downtimes (DTs...), the level of sta-
tistics 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 this data.

Process Editing
Now that we have defined a resource, we must
specify how and when that resource is used in the
processing logic.
In the Phase 1 model we used only constant pro-
cessing times. Now, due to variability associated
with the operator, we must represent the loading
and inspection times as distributions.
Routing Edit Table
In the example below, CellOp loads the blank at
mill NC_302L and is then FREEd to perform
other operations. When the Blank has finished
processing, the entity is moved with the CellOp
to the degreasing machine.

Process and Routing Logic


The complete process and routing logic is shown
below, with CellOp used to perform the loading
operations at each mill and inspect the Cogs at
the Inspect location. CellOp is also used to trans-
port entities from location to location. All addi-
tions or changes to the Phase 1 model are shown
in bold type.
60 Chapter 3:
Building a Model

 Process Table Routing Table

Entity Location Operation (min) Blk Output Destination Rule Move Logic
Pallet Receive 1 Blank NC_301L FIRST 6 MOVE WITH CellOp
Blank NC_302L FIRST MOVE WITH CellOp
Blank NC_301L WAIT N(3,.2) 1 Cog Degrease FIRST 1 MOVE WITH CellOp
FREE CellOp
WAIT 5.7
Blank NC_302L WAIT N(3,.2) 1 Cog Degrease FIRST 1 MOVE WITH CellOp
FREE CellOp THEN FREE
WAIT 5.7
Cog Degrease ACCUM 2 1 Cog Inspect FIRST 1 MOVE WITH CellOp
WAIT 5
Cog Inspect WAIT U(3.2,.3) 1 Cog EXIT 0.960 1
FREE CellOp Reject EXIT 0.040
With the new processing now defined, we have
specified all of the necessary modeling elements.
We are now ready for the model execution phase.
Once again, we shall defer discussion of model
execution until we have finished the final phase
of the model.
ProModel 61
User Guide

Phase 3: Additional Operations case, 96% of the entities pass inspection and 4%
fail.
In the final phase 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 distribu-
tion table, we must return to the Locations, Enti-
ties and Arrivals modules 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 New Location, Entity, and Arrival
from the Location module.
Before we can assemble the Cog at the Inspect
The final step in completing this phase of the location we must first define the new entity type
model is to edit the processing logic to include called Bearing in the Entities module. We must
the assembly. We will use the built-in JOIN con- also define a new location, Bearing_Que, to hold
struct to accomplish the assembly. the Bearings, and an arrival schedule for the
Bearings. To do this we simply open the appro-
Defining Attributes priate module as in Phase 1 and supply the infor-
mation. For simplicity we'll skip the details and
The Attribute module allows you to enter the
move on to downtime specification.
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, Defining Location Downtimes
or zero if it fails the inspection. For more infor- In order to represent machine failure times for the
mation about defining attributes, see “Attributes” two mills, NC_301L and NC_302L, we click on
on page 225. the DT... button in the Location edit table shown
below. This brings up another edit table for spec-
ifying a downtime based on machine usage. For
more information about defining location down-
times, see “Location Downtimes” on page 107.

Defining a Distribution
In order to determine if an entity passes or fails
the inspection, you sample from a user-defined
distribution called Dist1 (alternately, you could
use the RAND() function). To define the distribu-
tion, simply click the mouse on the Table... but-
ton and fill in the distribution parameters. In this
62 Chapter 3:
Running a Model

In the example above, we have defined failures to Process and Routing Logic
occur according to an exponential distribution
with a mean of 30 minutes. When a machine The process and routing table below shows all of
fails, resource CellOp is required to service the the changes and additions to the Phase 2 model in
machine. bold text.

 Process Table Routing Table


Entity Location Operation (min) Blk Output Destination Rule Move Logic
Pallet Receive 1 Blank NC_301L FIRST 6 MOVE WITH CellOp
Blank NC_302L FIRST MOVE WITH CellOp
Blank NC_301L WAIT N(3,.2) 1 Cog Degrease FIRST 1 MOVE WITH CellOp
FREE CellOp
WAIT 5.7
Blank NC_302L WAIT N(3,.2) 1 Cog Degrease FIRST 1 MOVE WITH CellOp
FREE CellOp THEN FREE
WAIT 5.7
Cog Degrease ACCUM 2 1 Cog Inspect FIRST 1 MOVE WITH CellOp
WAIT 5 THEN FREE
Cog Inspect WAIT U(3.2,.3) 1 Cog EXIT FIRST 1
Test = Dist1() 2 Reject EXIT FIRST 1
IF Test = 1 THEN
BEGIN
JOIN 1 Bearing
WAIT U(1.2,.2)
FREE CellOp
ROUTE 1
END
ELSE
BEGIN
FREE CellOp
ROUTE 2
END
Bearing Bearing_Que 1 Bearing Inspect JOIN 1 MOVE FOR .05
This concludes the final phase of our model Running a Model
building session. We now turn our focus to run-
ning the model. Running a model is a fun and easy process. Mod-
els are compiled automatically at runtime, keep-
ing you apart from any complex compilation
process. If your model contains any errors, a
detailed message explains the nature of the error
and points to the module and line number where
the error occurred. In most cases you are permit-
ted to make changes on the fly.
ProModel uses concurrent animation, which
means that the animation occurs while the simu-
ProModel 63
User Guide

lation is running. Concurrent animation has many


advantages over post-simulation animation. By
CLOCK PRECISION
eliminating the two-step process of running the Time Unit .01 .001 .0001 .00001
simulation and then animating it, you save valu- Seconds 11,930 hrs 1,193 hrs 119 hrs 11 hrs
able time. Concurrent animation immediately (sec)
allows you to see if a model is working properly. Minutes 715,827 hrs 71,582 hrs 7,158 hrs 715 hrs
(min)
Hours (hr) 42,949,672 4, 294,967 429,496 42,949
Simulation Options hrs hrs hrs hrs
Days (day) 1,030,792,1 103,079,2 10,307,90 1,030,77
When you select Options from the Simulation 28 hrs 08 hrs 4 hrs 6 hrs
menu, ProModel displays the Simulation Options
dialog. This dialog contains several options for also control the animation through panning,
controlling the simulation, such as the run length, zooming, and pausing.
warm-up period, clock precision, and the name of
the output file. You can also set the number of
replications and the level of detail to be collected
for the statistics. For more information about
Simulation options, see “Simulation Menu” on
page 347.

Speed Control Bar


Clock Selection Button

The screen above shows the speed control bar,


along with the clock selection button for control-
ling the format of the clock readout.
The File menu includes an option for viewing a
The maximum run length depends on the clock text file of the model as the model is running.
precision and the time unit selected as shown in This is an excellent way of checking to make sure
the model is doing what it is supposed to do!
the following table.
Next we'll take a look at two of the other menu
items: Options and Information.
Animation Screen
The ProModel animation screen has a menu of its
own, with selections for controlling many simu-
lation parameters (such as run speed). You can
64 Chapter 3:
Running a Model

Options Menu Other options include: Animation Off, which


makes the simulation run considerably faster;
The Options menu contains several options that Zoom, which allows you to zoom in or out to any
allow you to track events in the system as they degree on the animation; Views, which allows
occur. The Debugger is a convenient and effi- you to quickly and easily access specific areas of
cient way to test or follow the processing of any the model Layout window (see “Layout Settings”
logic defined in your model. The debugger is on page 86); and User Pause, which allows you to
used to step through logic one statement at a time specify the time of the next simulation pause.
and examine variables and attributes while a
model is running. A Step Trace allows you to
step through the system events one at a time by Information Menu
clicking on the left mouse button. A Continuous
The Information menu contains selections for
Trace allows you to step through system events
obtaining system information during the run. For
continuously without clicking the mouse.
up-to-the-minute location information, such as
current location contents and total number of
entries, select Locations from the Information
menu.

The following Trace window shows system


events as they occur in the animation. The num-
ber in the left hand column represents the simula-
tion time when the event occurred, while the text
describes the event. Stepping through the events
is an excellent way to verify and debug a model.
ProModel 65
User Guide

Viewing Model Statistics & Graphs” on page 373 for detailed examples of the
output generated by the Output Viewer 3DR.
Reports
The purpose of any simulation model is to gain a
deeper understanding of the system under study.
ProModel's Output Viewer 3DR 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-pro-
cess levels.
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 con-
tinue with some other task. Selecting yes opens
the Output Viewer 3DR and automatically loads
the output of the most recent model run.

The Output Viewer 3DR can be run directly from


within ProModel, or as an independent applica-
tion separate from ProModel. You can load a sin-
gle results file or several results files from
different models for comparison of selected sta-
tistics.
Model output is written to several output files
according to the type of data being collected. The
main output file contains information of a sum-
mary nature 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.
In order to see the power and flexibility of the
ProModel output generator, see “Reports and
66 Chapter 3:
Viewing Model Statistics & Reports
ProModel 67
User Guide

Chapter 4: Modeling Envi-


ronment

The Modeling Environment is everything con- Menu Bar


tained within the ProModel window.
All of the tools necessary to build and run a
When you open a model or select New from the
model and view the corresponding output are
File menu, your screen appears with a menu bar
accessed through the menu bar. The menu bar is
across the top of the screen and a layout window.
located just beneath the ProModel caption bar
You will also be given access to the ProModel
and contains the selections listed on the following
Shortcut Panel. For now, let's look briefly at the
page. These selections access other menus with
Shortcut Panel and then the menus accessible
selections related to the menu heading.
from the menu bar.
•File The File menu allows you to open new
From the ProModel shortcut panel seen above,
models, save current models, and merge two
you may quickly access some of ProModel’s
or more models into one. It also allows you
commonly used features:
to view a text version of the model and print
•Open a model Opens an existing model. either the model text file or the graphic lay-
•Install model package Loads an existing out of the model. For more information, see
model package. “File Menu” on page 68.
•Run demo model Allows you to run a •Edit The Edit menu contains selections for
demonstration model. editing the contents of edit tables and logic
•www.promodel.com Immediately con- windows. The selections available from this
nects you with the ProModel support page menu will change according to the module
on the PROMODEL Web site. from which the Edit menu is selected. They
•SimRunner Launches SimRunner. also vary according to the currently selected
•Stat::Fit Launches Stat::Fit. window. For more information, see “Edit
Menu” on page 76.
To simply begin working on a new model, close •View The View menu lets you control Pro-
the Shortcut Panel and select New from the File Model’s appearance. From this menu you
menu. The Shortcut Panel can be opened again can control layout settings, hide or view hid-
from the View menu. den paths, operate the zoom controls, and
more. For more information, see “View
Menu” on page 83.
•Build The Build menu contains all of the
modules for creating and editing a model.
68 Chapter 4:
File Menu

This includes the basic modules such as


Locations, Entities, Arrivals and Processing,
File Menu
and the optional modeling elements such as The File menu is the first selection on the menu
Variables, Attributes, Arrays, and Subrou- bar and consists of five major sections divided by
tines. For more information, see “Build horizontal lines. The file management section
Menu” on page 95. contains functions related to model files such as
•Simulation The Simulation menu controls saving and retrieving. The view/print section
the execution of a simulation and contains allows the user to view a text listing of the current
options for running a model, defining model model and print that listing or model layout. The
parameters, and defining and running scenar- model packaging section allows the user to create
ios. For more information, see “Simulation and install model packages consisting of models
Menu” on page 347. with associated files. Exit quits ProModel, and
•Output The Output selection starts the Pro- the model history section lists the five most
Model Output Viewer 3DR for viewing recently opened models for quick retrieval.
model output. It also allows you to view the Choosing any model in the model history will
trace generated during run-time. For more open and retrieve that model.
information, see “Reports and Graphs” on
page 373.
•Tools The Tools menu contains various
utilities including the Graphics Editor for File management

creating and modifying graphic icons and a


search and replace feature for finding or View/Print
replacing expressions throughout a model.
For more information, see “Tools Menu” on
Model packaging
page 307.
•Window The Window menu allows you to
arrange the windows (or iconized windows)
that are currently displayed on the screen
such that all windows are visible at once. It
also allows you to bring any individual win-
dow to the forefront of the display. For more
information, see “Window Menu” on
page 91. File Management
•Help The Help menu accesses the Pro-
The File menu provides five functions related to
Model Online Help system. For more infor-
model files such as saving and retrieving. Files
mation, see “Help Menu” on page 91.
in the ProModel format use the MOD extension.
The following table defines each of the selections
ProModel 69
User Guide

available from the file management section •version 5.0 to run with versions 5.0, 5.1, 5.2
shown previously. or 5.3.
•version 4.5 to run with version 4.5.
•version 4.0 to run with versions 4.0 or 4.2.

Please note

New Closes any currently opened model so a There is also an Autosave feature that saves the
new model can be built. This command is unnec- model file every n minutes as specified in the .INI
essary if no other model is open. If the currently file. This feature can be disabled. See the discus-
opened model has changed, ProModel will ask if sion later in this section.
you want to save the model before closing it.
Open Opens a user-specified model and clears
previous model data.
File Management Procedures
Merge Merges a selected ProModel model or
submodel into the current model. The same sub-
How to create a new model:
model can be merged multiple times into the
same model. See “Merge Model” on page 70.
1. Select New from the File menu.
Save Saves an open model under the current file
2. Define model elements using their corre-
name. If no file name has been given, the user is sponding modules.
prompted for a file name.
Save As Saves an open model under a new file
name specified by the user. The old file name still
exists. How to open an existing model:
Models saved in current versions of ProModel 1. Select Open from the File menu.
are not always compatible with previous versions
of ProModel. 2. Enter the necessary information in the
Load Model dialog box.

However, models may be saved as previous ver-


sions in order to allow those models created in
recent versions of ProModel to be shared with
others who may be running a previous version of
ProModel.
Models created in version 5.4 or higher must be
saved as:
70 Chapter 4:
File Menu

How to save a model: ment. After all segments are ready, they can be
merged together to form a single model.
• Select Save from the File menu. If the The Merge feature consists of two options:
model does not already have a name, the Merge Model and Merge Submodel.
Save As dialog box will appear.

How to save a model with a new


name:

1. Select Save As from the File menu. Merge Model


2. Enter the new file name in the Save As dia- The Merge Model option allows two or more
log box as shown in the following dialog box. independent (complete or incomplete) models to
3. Select OK.
be merged into a single model. Duplicate ele-
ments found in the base model and the merging
model are treated differently according to the ele-
ment type.
1. Entity and attribute names common to both
models are considered common elements in
the merged model. For example, if both
models contain the entity type In-Box, the
merged model will contain only the record
from the base model in the Entities table for
In-Box.
2. Duplicate locations, resources or path net-
works must first be renamed or deleted from
the merging model. Otherwise, an error
Backup File message occurs and the merge will termi-
nate.
ProModel also creates a backup file every time a 3. If the two models use different graphic
model is saved. The backup file is named the libraries, ProModel will give the user the
same as the model file, only with a .BAK exten- choice to append the merging model's
sion. graphic library to the base model's graphic
library.
Model Merging 4. All other duplicate model elements cause a
prompt to appear with the choice to delete
Model merging is a powerful feature that allows the duplicate element from the merging
large or complex models to be built in smaller model or cancel the merge process.
segments. A model segment may be as small as a
single workstation or as large as an entire depart-
ProModel 71
User Guide

Merge Submodel tag “3C_” is invalid and would produce an error


message.
The Merge Submodel option allows commonly
used submodels to be merged into an existing
model in one or more places. Submodels are cre-
ated just like any other model and may be com-
How to merge a model or sub-
plete or incomplete models.
model into an existing model:
When specifying a submodel, you are prompted
for a “tag” to be attached to each element of the 1. Open the initial (base) model.
submodel as either a prefix or suffix. For exam-
2. From the File menu select Merge.
ple, you may be developing a model with four
workstations. Instead of creating workstations 3. Select Model or Submodel from the sub-
individually, you could create a submodel with menu.
only the common elements (e.g., in-box, out-box, 4. Specify the name of the model to be
telephone, variables, arrays, etc.) and merge the merged in the following dialog box.
submodel into the main model four times. In the
resulting model, you would then fill in the unique
portions of each workstation. Entity and attribute
names will not be tagged.
In the following example, the tag “A_” is
attached as a prefix to every element of the sub-
model. A location called Queue1 in the submodel
becomes A_Queue1 in the main model and so on.
Likewise, a variable called Rejects becomes
A_Rejects in the merged model.

5. If you select Submodel, specify a prefix or


suffix to be attached to each element of the
submodel.
6. Click on the layout where you want the
model or submodel to appear. A bracket
appears on the screen, representing the
upper left corner of the merging model’s lay-
out. This bracket moves as you move the
mouse, allowing you to correctly position the
layout to be merged.
7. Next, you will be asked if you would like to
Please note append the graphic library file from the
model or submodel to the current graphic
library file. Select yes or no depending on
Tags used as prefixes must begin with a letter, A your preference.
through Z, or an underscore. For example, the
8. When the model is merged in, the graphi-
cal elements remain selected so that you
72 Chapter 4:
File Menu

can position the merged model exactly View Text


where you want it.
The View Text option displays the text of the cur-
rent model data in a window. This window may
be sized or shrunk to an icon for later viewing.
Please note
How to view the text of a model:
When merging models, if the zoom factors and
grid scales are not the same, ProModel will • Select View Text from the File menu. The
adjust the sizes of graphical elements in the model's text is displayed in a window as
merging model to the scale of the original model. shown in the following example.

View/Print Model Text


The modular nature of ProModel makes it easy to
focus on the individual elements of a model.
However, it can still be useful to see an entire
model with all of the model elements in view at
one time. ProModel provides two ways to accom-
plish this. The first is 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 con-
tains the following options.
Only the first 30 characters of names will appear
in the names column.

Please note
Each menu selection is covered in detail in the
You may leave the View Text window open for
following pages.
reference while editing the model. However, any
•View Text Displays the text of the current updates will not appear until you close the win-
model data in a window. dow and select View Text again.
•Print Text Prints the text of the current
model to either a file or the printer.
•Print Layout Prints the model layout to a
printer. Print Text
•Printer Setup Opens a dialog box to allow The Print and Print Layout options allow you to
printers to be selected and controlled. print a model to any printer configured for use
ProModel 73
User Guide

with Windows. You may also save a text copy of Please note
the file to disk.
The entire layout may also be copied to the clip-
How to save a text copy of the board for editing and printing in another appli-
current model: cation.

1. Select Print Text... from the File menu.


2. Select To Text File from the submenu.
Print Layout
3. Supply a name for the file in the Print to
Text File dialog box. The default file extension You may print the layout of any model including
is TXT. all locations, path networks, resources, variables
and background graphics to any printer config-
ured for use with Windows. Regardless of the
size of the model layout, the layout will be pro-
How to print the current text to a portioned automatically to print on one standard
printer: size sheet of paper.

1. Select Print Text... from the File menu. How to print a model layout:
2. Select To Printer from the submenu.
1. Select Print Layout from the File menu.
3. Select the desired options from the Print
dialog box and click OK. 2. Select the desired options from the Print
dialog box and click OK.
74 Chapter 4:
File Menu

3. Choose the elements to be included in the Model Packaging/Data Pro-


layout.
tection
Model packaging and Data Protection are power-
ful tools that allow you to distribute copies of
your model for others to examine and review, yet
maintain the integrity of the model. When you
create a model package, ProModel builds an
archive of files necessary to run the model and
allows you to distribute a copy of the model’s
graphics library. When you apply Data Protec-
tion, you can prevent others from viewing or
altering logic contained in your model.

Printer Setup
ProModel allows you to print to any printer con- Create Model Package Copies the current
figured for use with Windows. At times you may model and its associated files to a specific direc-
need to switch from the default printer to another tory or disk as <model name>.pkg.
printer or plotter. This can be done easily Install Model Package Copies the files in a
through the Setup option on the print dialog box. *.pkg file to the destination directory you wish to
use.
How to change the printer set-
tings: Creating a Model Package
The Create Model Package option allows you to
1. Select Printer Setup... from the File menu to
copy the current model and its associated files to
access the Print Setup dialog box.
a specific directory as a single file entitled
2. Select the desired options and click OK. <model name>.PKG. This file includes the model
file (*.MOD), the graphic library (unless you
check the Exclude Graphic Library option), and
any external 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:
•Exclude Graphic Library Excludes the
graphics library file from the model pack-
age—if not required—and creates a smaller
package file.
ProModel 75
User Guide

•Protect Model Data Prevents those who 4. Check the Protect Model Data box if you
install the model package from viewing or want to protect your model data and pre-
editing the model data. When you load a vent other users from changing or viewing the
model package, ProModel disables the View model data.
Text, Print Text, and Expression Search fea- 5. Click OK.
tures, plus the Build menu and portions of
the run-time Options and Information
menus.
Installing a Model Package
Please note Install Model Package copies all files in a model
package to a specified destination directory and
You may NOT use dynamic plots with protected gives you the option to load the model.
models.
How to install a model package:

1. Select Install Model Package... from the


How to create a model package: File Menu.

1. Select Create Model Package from the


File menu.

2. Select the model package (*.pkg) from


the Install Model Package dialog.
3. In the Destination field, type the name of
the directory to which you want to copy the
model package.
4. Select OK. After you install the model
2. Enter the name you wish to use for the package, a dialog will appear and allow you
model package (by default, ProModel uses to load the model.
the name of the current model with a *.pkg
extension). You may also use the Browse...
button to select the model name and direc-
tory.
3. Check the Exclude Graphics Library box if
you want to package the model without the
graphics library.
76 Chapter 4:
Edit Menu

Edit Menu multiple edit tables and windows may appear on


the screen at the same time, the Edit menu com-
The Edit menu is the second selection on the mands pertain only to the currently active win-
menu bar. It changes forms depending on which dow. (To activate a window, click anywhere
window is currently active when choosing Edit. inside it.)
•If the active window is an edit table such as
the Locations edit table, the Edit menu con-
tains options for inserting, deleting and mov-
ing records. Editing Tables
•If the active window is the Processing edit When creating or modifying records in an edit
table, the Edit menu contains two additional table such as a Locations or Entities table, the
options for copying and pasting completed Edit menu appears as follows.
process and routing records.
•If the active window is a Notes window, the
Edit menu contains selections for cutting,
copying, and pasting text within the current
window or transferring it to another window.
•If the active window is a logic window, such
as the one for the operation column of the
processing module, the Edit menu contains The following table briefly lists the function of
an additional selection, Compile, which each selection of the Table Edit menu.
checks the syntax of the logic in the logic
Delete Deletes a record from the table.
window. This option is additional to the cut
and paste functions normally available in a Insert Inserts a record in the table above the cur-
notes window. rent record.
•Finally, if the active window is either the
Append Appends a record to the end of the
Graphic or Background Editor, the Edit
table.
menu contains three sections. The first sec-
tion has choices for cutting, copying, and Move Marks a record for moving to a new posi-
pasting graphic objects to and from Pro- tion in the table. Only one record may be marked
Model's internal clipboard. The second has at a time.
options to cut and paste items to and from
Move to Moves the previously marked record
the Windows Clipboard. The third has
in the table above the current record.
options to import and export graphics from
other applications.
How to delete a record from a
Please note table:

1. Select the desired record by clicking in any


The Edit menu is accessible only while working
field of the record.
inside a module such as a processing edit table or
a Notes edit window. If no module is currently 2. Select Delete from the Table Edit menu.
open, the Edit selection is not available. Because
ProModel 77
User Guide

How to insert a record in a table: pasting entire process and routing records appear
in the Edit menu.
1. Position the cursor in the record below
where you wish the new record to be
inserted.
2. Select Insert from the Table Edit menu.

How to append a record to the


end of a table: The Processing Edit menu's first five selections
are identical to the Table Edit menu. The two
1. Position the cursor in any record of the additional menu items are as follows:
table.
Copy Record Copies all fields of the current
2. Select Append from the Table Edit menu. record for subsequent pasting.
A new record will appear below the last
record of the table. Paste Record Places a copy of the most
recently copied record above the current record.

Please note
How to move a record to a new
position in a table:
Notes on editing process records:
1. Select the record to be moved by placing 1. A process record consists of all fields in the
the cursor in any field of the desired record. Process edit table, as well as all corresponding
2. Select Move from the Table Edit menu. routing records defined in the Routing edit table
for the given process.
3. Position the cursor in the record that is
below the final destination of the selected 2. From a Routing edit table, you may only use
record and select Move to from the Table Edit the Copy Record and Paste Record options to
menu. copy routing information to another routing
record.
3. These options cannot be used to copy process-
Editing Process Records ing or routing records from one model to
another.
When editing the records in the Processing edit
table, two additional options for copying and
78 Chapter 4:
Edit Menu

How to copy information from 2. Click on the Notes button at the right of
the table.
another record:

1. Select the information to copy from field of


the desired 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 informa-
tion, select Paste Record from the Edit menu
(or press CTRL + V).

Please note

Alternately, you may copy information between The selections available from the Notes Edit
records using the right-click menu. menu are defined as follows.
Cut Removes the selected text and places it in
the clipboard.

Editing Notes Windows Copy Copies the current text and places it in the
clipboard.
You may annotate individual records of the loca-
Paste Inserts the contents of the clipboard at the
tions, resources and entities tables through Notes
windows. When editing the text of a notes win- cursor.
dow, the Edit menu changes to the following Clear Deletes the selected text without placing a
form. copy in the clipboard.
In addition to the options in the edit menu, the
How to annotate a record: notes window itself contains four buttons. There
are three edit buttons, Cut, Copy, and Paste
1. Click inside the record to be annotated. which work exactly the same as the correspond-
ing options in the Edit menu, and a Print button.
The print button prints the text in the notes win-
dow. A status bar appearing at the bottom of the
Notes edit window shows the current line posi-
tion of the cursor (e.g., Line: 2).

Editing Logic Windows


All multi-line logic windows, such as the opera-
tion logic window of the Process edit table,
include the editing function buttons shown in the
ProModel 79
User Guide

following example. These buttons include cut, is a result of the incorrectly spelled statement
copy, paste, undo, local find and replace, build, “Acum 2.”
compile, print, and help. Using the Cut, Copy, or
Paste button works exactly the same as using the
corresponding option from the Edit menu.

Print Prints text, such as 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
Build The Logic Builder, which may also be work with particularly complex logic at certain
accessed by clicking the right mouse in the logic locations.
window button, is a tool that allows you to build
logic without typing a single keystroke. Primarily Help Provides context-sensitive help. ProModel
for building logic in the logic windows, it may will provide help with select words or any word
also be used for building expressions in expres- with the cursor next to it.
sion fields.
Compile The Compile menu item checks the
Please note
logic in the edit window to see if it is complete
and syntactically correct. If an error is found, an A status bar is displayed at the bottom of a Logic
information box with details regarding the edit window, and shows the current line position
error(s) appears. For example, the following error of the cursor (e.g., Line: 2).
80 Chapter 4:
Edit Menu

Editing Background Graphics Copy to Clipboard Copies the entire contents


of the workspace to the Windows clipboard.
When working with graphic objects in the Back- Objects cannot be copied individually to the clip-
ground Graphics module, the Edit menu appears board. ProModel copies the workspace as a bit-
as follows. map or windows metafile for easy transfer to
other graphics packages that use the Windows
clipboard.
Paste WMF Pastes a Windows metafile (WMF)
from the Windows clipboard into the Edit win-
dow. You must have previously copied a Win-
dows metafile to the Windows clipboard.
Paste BMP Pastes a bitmap file (BMP) from the
Windows clipboard into the Edit window. You
must have previously copied a bitmap to the Win-
dows clipboard.
Import Graphic Imports a WMF, BMP, PCX
Cut Removes the selected object(s) and makes a
temporary copy that may be pasted back into the or GIF file into the layout window.
layout window. Export Graphic Exports the graphic in the lay-
Copy Makes a temporary copy of the selected
out window to a WMF or BMP file.
object(s) for pasting later.
How to edit background graphics:
Paste Adds the most recently cut or copied
object(s) to the layout window.
1. Right click on the background graphic you
wish to edit.
Please note
2. Select Edit Background Graphic from the
right-click menu.
While in the Background Graphics module, CUT,
COPY, and PASTE all use ProModel's internal
clipboard. Any objects copied to this clipboard
cannot be pasted into other Windows applica-
tions. To copy objects to other applications, use
COPY TO CLIPBOARD.

Delete Deletes the selected objects from the


layout window.
Select All Selects all of the objects in the layout
window. 3. Edit the graphic as desired.
ProModel 81
User Guide

Editing & Moving Graphics dow. You may also scroll the layout first and then
move the selected graphics.
ProModel allows easy adjustment and fine tuning
of the graphics in one window rather than open-
Please note
ing individual modules to move each object. This
makes it possible to move or rearrange a whole
submodel or model after it has been merged. To Multiple graphics can also be selected by drag-
move any or all graphics in a model, ProModel ging a bounding box around the graphics. Hold-
must be in common mode (all modules must be ing the left mouse button down, drag the mouse
closed, leaving only the layout window open). from one corner of the graphics to the opposite
corner. The bounding box must completely
While in common mode, graphics that can be enclose the graphics you wish to select.
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 Special Considerations for Moving
moved simultaneously. When graphics are Graphics
selected, the layout can be scrolled and the graph-
ics will remain selected. Locations When you click on a location with
multiple graphics defined for it (i.e., counter, sta-
tus light, label) in common mode, it is selected as
How to move graphics:
one graphic. Multiple units of a location can be
moved individually. Adjusting the position of an
1. Close all build modules leaving only the
individual graphic in a multiple graphic location
layout window open.
must be done in the locations module.
2. Left click and drag the selected graphic to
the desired position. Routing Paths Routing paths defined in the Pro-
cessing module cannot be selected for movement
3. To move multiple graphics, hold down the
but will move when a location to which they are
Shift key while left clicking the desired graph-
connected is moved. If a routing path has multi-
ics to select them and then drag them to the
desired position. Using the shift key with a left ple segments, only the segment connected to the
click deselects a selected graphic. location being moved gets readjusted. However,
when both locations on the routing path are
4. Fine tune the position of the selected
graphic(s) by using the arrow keys on the key-
board to move one pixel at a time.

When a submodel or model is merged 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 win-
82 Chapter 4:
Edit Menu

moved simultaneously, the whole routing path is Sizing Graphics cannot be sized in common
moved. mode.
Snap-to-Grid Graphics will not snap to the grid
in common mode, but their position can be fine-
tuned using the arrow keys on the keyboard to
move the selected graphic(s) one pixel at a time.
Labels To view the label or edit a location, path
network, resource, or variable graphic, right click
on the item. If you double left click on an item,
ProModel opens the build module and highlights
the record where you defined the element.

In the examples above, the machine on the right


is moved. The routing paths remain connected to
each graphic while the path segment connected to
the moved graphic is adjusted accordingly.
Path Networks Path networks are not resized
when moved. Any resource points defined for a
dynamic resource are moved when the path net-
work is moved. The resource points remain rela-
tive to the node for which they were defined.
Resources When a dynamic resource is moved,
the resource point associated with it moves but
not the entire path network.
ProModel 83
User Guide

View Menu options you can check or uncheck to turn on or


off.
The View menu provides options for modifying
the model editing environment. These options are
defaults, used each time the program is started
and are not specific to any particular model. The
View menu consists of three categories:
Switches, Settings, and Commands. Each of
these categories is explained in the following sec- Snap to Grid Check this switch to cause any
tions. object subsequently drawn or placed on the lay-
out to be positioned on the nearest grid line. Snap
to grid snaps the upper left corner of a graphic.
Show Grid Check this switch to show the grid in
the layout window.
Show Layout Coordinates 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 networks during editing.
A path network can be made to be invisible by
selecting the “invisible” option for the particular
network while in the Path Networks editor.
Show Routing Paths Causes routing paths to be
visible during run time as well as edit time. If the
option is not checked, the routing paths are visi-
How to access the View menu: ble only while in the processing editor.

• Select View from the menu bar. Toolbars


Allows you to toggle the various ProModel tool-
bars on and off. See “Toolbars” on page 92 for
Switches more infomation on each toolbar.

The following selections are available from the


switches section of the View menu. Switches are Settings
The following table defines each of the selections
available from the settings section of the View
84 Chapter 4:
View Menu

menu. These selections and their submenus are the submenu shown here. If the Views dialog
discussed in more detail on the following pages. appears, skip step 3.

3. Click Define from the extended menu and


the Views dialog appears.
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.
Zoom to Fit Layout Shrinks or enlarges the lay-
out to include the entire model.
Zoom Allows you to shrink or enlarge the lay-
out by the percentage selected.

Views
The Views feature allows you to define, then
quickly and easily access specific areas of the
model layout. Selecting a view scrolls the layout
window and adjusts the zoom so you see a spe- 4. With the Views dialog open, select the
cific region of the layout regardless of the layout area in the layout window you want to define
as a view using the scroll bars and zoom fea-
window’s size. Once a view is defined, you can
ture in the View menu. Or size the layout win-
select it while editing or running the simulation
dow to the desired view.
by selecting the view from the View menu or by
using the keyboard shortcut. 5. With the layout window set, type a name
for your view in the View Name field at the
bottom of the Views dialog, and then click
Defining & Selecting Views the Add button to define the view you have
selected in the current layout window.
How to define a view: 6. The name you have entered will appear in
your list of views.
1. At edit time, select the View menu.
2. Select the Views item. If no defined views
exist, the Views dialog is displayed and not
Please note

Views cannot be defined at run time.


ProModel 85
User Guide

How to select a view from the Move Up Moves the currently highlighted
menu: view up one position in the list creating a corre-
sponding change to the menu and CTRL+ n
order.
1. At edit time or run time, select the View
menu. Move Down Moves the currently highlighted
2. Select the Views menu item to display the view down one position in the list creating a cor-
submenu list. responding change to the menu and CTRL+ n
order.
Rename Renames the currently selected view
to the name you have typed into the View Name
field.
Set View Sets the highlighted name in the View
3. Click on the desired view from the sub- list to the portion of the model currently visible in
menu. the Layout window.
View Name This is the field where you type
the name of the view you wish to add.
How to select a view with shortcut Show View Checking this box will cause your
key CTRL + n: views to be displayed in the Layout window as
you select them in the list.
• Press CTRL + n to select the desired view
where n is the number (1-9) of its position in Using Views at Run-time
the view list (e.g., pressing CTRL + 1 would
access Single Screen Zoom from the view list When the simulation is running, you may choose
above and CTRL + 3 would access the Wait- the active view by picking its name from the
ing Time Zoom view). Views beyond nine will Views menu or the Views Panel.
not have a CTRL + n shortcut key.
The Views menu is accessible during run-time
from either the Menu Bar’s Option menu or the
Right-Click menu.
Managing Your Views The Views menu will display a list of your
When you click on Define from the Views menu, defined views. There is also an option to open the
the Views dialog is displayed. It lists the defined Views Panel.
views in the Views List and provides buttons for
adding views, removing views, and managing the
list. The function of each button is described
next.
Add Adds the view, which you have named in
the View Name field, to the list of views.
Remove Deletes the currently highlighted
view from the View List.
86 Chapter 4:
View Menu

The Views Panel is a dialog window with a list of 2. Choose any preset zoom level, or the Cus-
your defined views. tom Zoom option.

Preset Zoom Levels

The Views Panel may be moved or resized, and


will remain on top of the simulation window until
the Panel is closed. Please note
Simply click on the name of a view in the Panel
to switch to that view. The minimum and maximum zoom levels are cal-
culated automatically depending on the total size
of the layout at 100% zoom.
Referencing a View in Model
Logic
Once a view has been defined, it may be refer-
enced in the model using the VIEW statement Layout Settings
(e.g., VIEW “Service Office”). This is useful for
The following selections are available from the
illustrating certain parts of the model at specific
Settings section of the View menu.
times during run-time. For syntax and examples,
see “View” on page 576.

Zoom Feature
The Layout Settings submenu contains selections
The Zoom feature allows you to shrink or enlarge for changing the grid characteristics, color of the
the layout by the percentage selected. layout window background, and the routing
arrow colors. These, as well as default setting
How to zoom in or out on the lay- changes, apply to any currently loaded model. To
out: change any of these items for the current model
only, use the options provided in the General
1. Select Zoom from the View menu. Information dialog. The routing path color can be
changed for the current model only by selecting
the Path Options button in the Processing mod-
ule.
ProModel 87
User Guide

The following table defines each of the selections Please note


available from the Layout Settings submenu.
You may save the grid settings for the model by
checking the Save as default grid settings check
box.

Grid Settings Provides options to control the


amount of space between grid lines. It also pro-
vides the option to define the grid units in terms
of 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.

Please note

Changes to these settings are saved as the default


settings.

Grid Size
By using the grid dialog box, you may set the res-
olution of the grid lines to your preference.

How to change the colors and


resolution of the grid lines:

1. Select Layout Settings from the View menu.


2. Select Grid Settings from the Layout Set-
tings submenu.
3. Select the Ones or Tens option button.
4. Select the desired color.
5. Use the scroll bar to adjust the resolution.
88 Chapter 4:
View Menu

Please note Please note

To change the color of the grid lines, select the The “Recalculate path lengths when adjusted”
Ones button and choose a color. To change the option applies to path networks, conveyors, and
color of every tenth grid line, select the Tens but- queues. For details regarding recalculation of
ton and choose a color. times and distances when editing path segments,
see “Path Networks” on page 123.

Grid Scale
In addition to setting the resolution of the grid
Background Color
lines, you may also associate a time and distance The Background Color option allows the user to
value to each grid unit. This is extremely useful change the background color in the layout win-
when you are creating conveyors, queues, or path dow.
networks to scale and you want the time or dis-
tance between nodes to be based on the number How to set the background color
of grid units between the nodes.
of the layout:

1. Select Layout Settings from the View menu.


2. Select Background Color from the Layout
Settings submenu.
3. Select the desired color.
4. Click OK.

How to set the default time and


distance per grid unit:

1. Select Layout Settings from the View menu.


2. Select Grid Settings from the Layout Set-
tings submenu.
3. Select the Scale button from the Grid Dia-
log.
4. Enter the desired time and distance per
grid unit. Custom Colors
ProModel allows you to create up to 16 custom
colors for use anywhere a color selection is avail-
able. Entity, location, and resource icons, as well
ProModel 89
User Guide

as background graphics, can use any custom How to specify the routing colors:
color defined in the colors menu.
When creating a custom color, the nearest solid 1. Select Routing Path Color from the View
color is shown next to the dithered color for refer- menu.
ence.

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.
2. Click on the desired routing type, Unse-
3. Move the cursor to the area on the multi-
lected, Selected, or Related from the menu.
color chart closest to the custom color you
desire and click the left mouse button. 3. Select the desired color.
4. Adjust the color by moving the custom
color adjustment slider up or down until the
desired shade is obtained. Alternately, you
can manually adjust any of the color defini-
tion fields (Hue, Sat, Lum, Red, Green, Blue).
5. Select Add to Custom Colors. The color
now appears in one of the 16 custom color
boxes.
4. Click OK.

Routing Path Color


ProModel allows you to select which colors to Routing Path Types
use when showing selected, unselected and Unselected All routing lines not for currently
related routings in the Processing module. This highlighted process record.
helps in visually identifying the origin and desti-
nation of a process routing. Selected Routing line for currently highlighted
routing record.
Related Routing lines for highlighted process
record, except highlighted routing record.
90 Chapter 4:
View Menu

Edit Tables How to change the edit table


background color:
Edit Table Fonts
1. Select Edit Tables from the View menu.
Edit tables are used extensively in ProModel for
2. Select Color from the Edit Tables submenu.
data entry. ProModel allows you to specify the
font used in these tables. 3. Choose the desired color.
4. Click OK.
How to change the edit table font:

1. Select Edit Tables from the View menu.


2. Select Font from the Edit Tables submenu.

Please note

For information on creating custom colors, see


“Background Color” on page 88.

3. Choose the desired font by scrolling


through the Font selection list box.
4. Choose the Font Style. Commands
5. Choose the Font Size. The Commands section of the View menu con-
6. Click OK.
tains various selections for controlling the model-
ing environment.

Edit Table Color


ProModel allows you to specify the table color Refresh Layout Clears and redraws the graphics
used in edit tables. in the layout window.
Reset Window Positions Causes all edit tables
to return to their original positions and sizes.
ProModel 91
User Guide

Window Menu Help Menu


The Window menu allows you to rearrange win- The ProModel Help menu is a convenient, quick
dows and icons and select the active window. way to look up information about a task you are
These functions are standard to all Windows™ performing, a feature you would like to know
applications. more about, or a command you want to use. Pro-
Model Help is available whenever you see a Help
command button, or Help as an item on a menu
bar.

Tile Causes all open windows to fit in the avail-


able screen space. Windows that may be hidden
behind other windows become visible.
The selections from the Help Menu are as fol-
Cascade Causes all open windows to overlap lows:
such that the title bar of each window is visible.
Index Brings up the Main Help Index.
Arrange Icons Causes all icons representing
iconized applications to be arranged neatly along Context Opens the help system to the topic
the bottom of the screen. related to the currently active window.
ProModel Support on the Web When you
Please note select this option from the help menu, ProModel
automatically connects you with the ProModel
Below Arrange Icons is a list of the open win- customer service page on the PROMODEL web
dows. The window with the check next to it is the site.
active window. About ProModel Displays a message contain-
ing information about the product.

How to reset the windows to their


default positions:

• Choose Reset Window Positions from the


View menu.
92 Chapter 4:
Toolbars

Toolbars selecting the “invisible” option for the particular


network while in the Path Networks editor.
The ProModel toolbars provides quick access to
Show Routing Paths Causes routing paths to be
many of the options found in the menu bar.
visible during run time as well as edit time. If the
The toolbar space may contain up to nine tool- option is not checked, the routing paths are visi-
bars, which can be be toggled on or off in the ble only while in the processing editor.
View menu. These toolbars are described below.
View
File

Views Allows you to define, then quickly and


New Closes any currently opened model so a easily access specific areas of the model layout.
new model can be built. This command is unnec- Once the view is defined, you can select it while
essary if no other model is open. If the currently editing or running the simulation. See “Views”
opened model has changed, ProModel will ask if on page 84 for more information.
you want to save the model before closing it.
Zoom to Fit Shrinks or enlarges the layout to
Open Opens a user-specified model and clears include the entire model.
previous model data.
Zoom Allows you to shrink or enlarge the lay-
Save Saves an open model under the current out by the percentage selected.
file name. If no file name has been given, you
will be prompted for a file name. Build Basic
Create Package Bundles all files used for a
model into one package. See “Creating a Model
Package” on page 74 for more information.
The options in this toolbar open the respective
Install Package Copies all files in a model build modules. Mouse over a toolbar button to
package to a specified destination directory and see its function and then refer to Chapter 5 for
gives you the option to load the model. See information of that build module.
“Installing a Model Package” on page 75 for
more information. Build Advanced

Layout
The options in this toolbar open the respective
build modules. Mouse over a toolbar button to
Show Grid Check this switch to show the grid see its function and then refer to Chapter 6 for
in the layout window. information of that build module.
Show Hidden Networks Check this switch to
show the invisible path networks during editing.
A path network can be made to be invisible by
ProModel 93
User Guide

Simulation View Dynamic Plots Allows you to view previ-


ously defined Dynamic Plots. See “Dynamic
Plots” on page 364 for more information.

Simulation Options Opens the simulation


Debug
options dialog. See “Simulation Options” on
page 348 for more information.
Scenarios Opens the scenarios dialog. See
“Scenarios” on page 353 for more information. User Pause by Time Allows you to specify by
clock time when the simulation should pause
Play Begins the simulation next.
Pause Pauses and unpauses the simulation User Pause by Date Allows you to specify by
when it is running. calander date when the simulation should pause
Stop Ends the simulation and prompts you next. This option is not available when you are
whether to collect and view statistics up to the not running the simulation by calandar date.
point where the simulation was stopped. Trace Step Select this option to step through
Animation On/Off Toggles the animation on the trace listing one event at a time. Each time
and off you click the left mouse button, the trace will
advance one event. Clicking and holding the right
View Statistics Opens Output Viewer 3DR. mouse button while in this mode generates a con-
tinuous trace.
Simulation Information Filtered Trace Opens the Filtered Trace dialog.
See “Trace Mode” on page 361 for more infor-
mation.
Location Information Select this option and Debug Opens the Debug dialog. See “Debug
choose a location to view an information box Option” on page 357 for more information.
with real time information about the location.
Information for all locations may also be dis-
Tools
played.
Variable Information Select this option to show
the current state of all real and integer global
variables. Graphic Editor Opens the Graphic Editor. See
“Graphic Editor” on page 312 for more informa-
Array Information Select this option to show tion.
the current value of all cells for arrays of up to
three dimensions. Simrunner Opens Simrunner.

Define Dynamic Plots Allows you to define Stat::Fit Opens Stat::Fit.


Dynamic Plots. See “Dynamic Plots” on 3D Animator Opens 3D Animator.
page 364 for more information.
94 Chapter 4:
Right-Click Menu

Right-Click Menu Views From this option, you may select from
the views defined in the model.
To simplify many of the steps required to per-
Zoom to Fit Layout This option resizes the
form common modeling operations, ProModel
model to fit the entire image in the layout win-
includes a variety of right-click menus. From
dow.
these menus, you can access context-sensitive
options and settings for variables, locations, pro- Zoom Allows you to select the zoom percent-
cessing, path networks, resources, and other com- age.
ponents. The following menu appears when you
Layout Settings From here, you may select and
right-click on the layout.
define the grid settings, background color, and
routing color.
Refresh Layout This option refreshes the image
to reflect recent changes.

Please note

For information about the right-click menus for


model elements (e.g., locations, variables, rout-
ings, resources, path networks, queues, and con-
veyors), see “Building the Model: Advanced
Elements” on page 225.
The right-click layout menu includes the follow-
ing options:
Edit Background Graphic Only when you
have a background graphic defined, 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, Pro-
Model displays the background grid.
Show Layout Coordinates 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.
ProModel 95
User Guide

Chapter 5: Building the


Model: General Elements

Build Menu How to access the Build menu:


The Build Menu is the gateway to all modeling
• Select Build from the menu options bar.
elements used to define a model. Through this
menu you specify the locations, entity types,
arrival rates, resources, path networks, down-
times, processing logic, variables, attributes, Each selection from the Build Menu is covered in
arrays, macros, and subroutines that provide the detail in the following sections of this chapter.
flexibility needed to model your system.

Any element represented by a graphic in the lay-


out window can be edited by holding the CTRL
key while clicking on the graphic representing
that element.
96 Chapter 5:
Locations

Locations or...

Locations represent places in the system where


entities are routed for processing, storage, or • Right click on the existing location and
some other activity or decision making. Loca- select Edit.
tions should be used to model elements such as
delivery locations, warehouse locations, network
servers, and transaction processing centers.
Locations Editor
Every location has a name and a name-index
number. The name-index number is the loca- The Locations Editor consists of three windows:
tion’s numerical position in the list of locations. the Location Graphics window in the lower left
Logic which refers to a location, such as routing portion of the screen, the Location edit table
logic, can use either the location's name, or the along the top of the screen, and the Layout win-
LOC() function to refer to the location. The dow in the lower-right portion of the screen.
LOC() function allows a location whose index These windows can be moved and resized using
number has been stored in an attribute or variable the mouse.
to be referenced. See “Loc()” on page 511.
Locations are defined in the Locations Editor,
which is accessed through the Build menu.

Layout Window

Location Graphics Location Edit Table


Window

The Location edit table contains information


about every location in the model, including
characteristics such as capacity and number of
units. The Location Graphics window is a tool
How to create and edit locations box used for creating, editing, and deleting loca-
tions graphically. Locations are positioned in the
• Select Locations from the Build menu. The Layout window.
Locations Editor appears.
ProModel 97
User Guide

Location Edit Table Please note


A location's characteristics can be modified with
Individual units of a multi-unit location may dif-
the Location edit table. The Location edit table
fer in capacity only if every unit's capacity is
contains fields for displaying the graphic icon,
greater than 1. For example, in a location with
specifying the location name, and defining other
two units, one may have a capacity of 5 and the
characteristics of each location. Each of these
other a capacity of 10. However, one unit may
fields is explained below. You can edit the
not have a capacity of one and the other a capac-
desired field directly in some cases, or by select-
ity of five. (See “Multi-Capacity, Multi-Unit, and
ing a record and clicking the column heading but-
Multiple Locations” on page 106.)
ton of the desired field.

Units The number of units of a location, up to


999. A multi-unit location works like several
locations with common characteristics. (See
“Multi-Capacity, Multi-Unit, and Multiple Loca-
Icon The graphic icon used to represent the tions” on page 106.)
location. Changing location graphics is done
DTs Click on this heading button to define loca-
using the tools in the Location Graphics window.
tion downtimes, including any setup times. (See
If multiple graphics have been used to define a
“Location Downtimes” on page 107.)
location, the first graphic used is shown here.
Clicking on the Icon button brings the graphic for Stats Click on this heading button to specify the
the current location into view if it is not currently level of statistical detail to be gathered for the
showing in the layout window. location. (To view a location's statistics after a
simulation run, choose View statistics from the
Name The name of each location. Names can
Output menu.) Three levels of data collection are
be up to 80 characters in length and must begin
available:
with a letter (for more information on naming
items, see “Names” on page 404). A location's •None No statistics will be collected.
name can be changed by editing this field. The •Basic Only utilization and average time in
Search and Replace is automatically called when location will be collected.
the name is changed. •Time Series Collects basic statistics and
Cap. The capacity of the location refers to the time series tracking the contents of the
number of entities the location can hold or pro- location over time.
cess at any one time. A location's maximum Rules This field defines (1) how a location
capacity is 999999. Entering INF or INFINITE selects the next incoming entity from several that
will set the capacity to the maximum allowable are waiting to enter this location, (2) how multi-
value. If this field contains an expression, it will ple entities at a location queue for output, and (3)
be evaluated at the start of the simulation before which unit of a multi-unit location is selected by
any initialization logic. Accordingly, a location's an incoming entity. (See “Rules Dialog Box” on
capacity will not vary during the simulation run. page 115.) To edit any of this information at a
98 Chapter 5:
Locations

location, click on the heading button to open the Edit Button Displays the Library Graphic Dialog
Location Rules dialog box. Box used to change the color, dimensions, and
orientation of the location graphic.
Notes Enter any optional notes about a location
in this field or click on the heading button to open Erase Button Erases the selected location
a larger Notes window. graphic in the Layout window without deleting
the corresponding record in the Location edit
table.
Location Graphics Window
View Button Brings the selected location in the
The Location Graphics window provides a graph- edit table into view on the Layout window.
ical means for creating locations and changing
their icons.
How to define a new location
graphically:
New Box
1. Check the New Box in the Location Graph-
Counter
ics window.
Gauge/Tank
2. Select a location symbol or icon from the
Conveyor/Queue
Location Graphics window.
Text Label
Status Light 3. Click on the Layout window where you
want the location to appear.
Entity Spot
Region 4. A new record is added automatically to
the Location edit table. You may now
change the default name to the desired
location name.

How to define multiple locations,


Icons added to the layout will either represent a
new location or be added to an existing location's each having the same graphic:
icon depending on whether the New box at the
top left of the window is checked or unchecked. 1. Check the New box inside the Location
Graphic window.

New Mode 2. Select the desired graphic.


3. While holding down the SHIFT key, click on
Allows you to create a new location record each
the Layout window where each location
time you place any location graphic on the lay-
should appear.
out. The new location is given a default name
which may be changed if desired. New mode is
selected by checking the New box [X] at the top
of the Graphic Tools window.
ProModel 99
User Guide

How to move a location graphic 2. Select Delete [location name].


on the layout:

• Drag the graphic to the desired spot on the How to erase a location graphic:
layout.

1. Select the location graphic to erase.


2. Select the Erase button in the Location
How to move all graphics defined Graphics window or press the <Delete> key.
for a single location: The location graphic disappears, but the
location record still exists in the Location edit
table.
• Drag inside the dashed box surrounding
the graphic (do not drag on an individual or...
graphic inside the box). 1. Right-click on the location graphic in the
layout window.

How to move multiple graphics for


two or more locations at once:

1. Click outside of any graphic and drag to 2. Select Delete Graphic. The location
create a rectangle encompassing all of the graphic disappears, but the location record
graphics to be moved. still exists in the Location edit table.
2. Drag the rectangle to the desired position
on the layout.
How to bring a location graphic
into view that is off the layout:
How to delete a location:
1. Highlight the record of the desired location
1. Select the location record to be deleted in in the Location edit table.
the Location edit table. 2. Select the View button in the Location
2. Select Delete from the Edit menu. Graphics window or click on the icon head-
ing button.
or...
1. Right-click on the location graphic in the
layout window.
100 Chapter 5:
Locations

Add Mode bined with discrete-event simulation to model the


exchange between continuous material and dis-
Allows you to add additional graphics to an exist- crete entities such as when a liquid is placed in
ing location, such as a text label, an entity spot, or containers.
a status light. A location with multiple graphics
will be enclosed by a dashed box. Add mode is Conveyor/Queue A symbol representing a
selected by unchecking the New box [] at the top conveyor or a queue. To create joints in a con-
of the Graphic Tools window. veyor or queue, click on the conveyor or queue
with the right mouse button. Drag the joints to
How to add an icon or symbol to achieve the desired shape. Right click on a joint
to delete it. The options available with conveyors
an existing location: and queues are described next.

1. Uncheck the New Box in the Location Label Any text used to describe a location. The
Graphics window. label is initially synchronized with the name of
the location and changes whenever the location
2. Select a location symbol or icon from the
Location Graphics window. name is changed. The name, size, and color of the
text may be edited by double clicking on the label
3. Click on the Layout window where you or selecting it and clicking on the edit button (see
want the additional icon to appear.
“Text Tool” on page 324). Once the name on a
4. The graphic or symbol is added to the label is edited, it will no longer be automatically
location. changed when the location name is changed.
Status Light A circle that changes color during
the simulation to show the location’s status. For a
Location Graphics single capacity location, the states displayed are
idle/empty, in operation, blocked, down, and in
A location may have any one or more of the fol- setup. For multi-capacity locations, the displayed
lowing graphics selected from the Location states are up (operational) and down (off-shift, on
Graphics window. break, disabled).
Counter A counter representing the current Entity Spot An assignable spot on the layout
number of entities at a location. The options where the entity or entities will appear while at
available with counters are explained next. the location. While an entity is at a location, the
entity’s alignment spot (defined in the Graphic
Gauge A vertical or horizontal sliding bar
editor) will appear exactly on top of the location's
showing the location's current contents during the
entity spot, allowing the two graphics to align
simulation (shown as a percentage of the capac-
exactly as desired. A multi-capacity location will
ity). This graph will be updated constantly as a
use as many entity spots as defined (in the order
simulation runs. The options available with
defined) up to the capacity of the location. Enti-
gauges are explained below.
ties in excess of entity spots will continue to pile
Tank A vertical or horizontal sliding bar show- up on the last entity spot defined.
ing the continuous flow of liquids and other sub-
Region A boundary used to represent a loca-
stances into and out of tanks or similar vessels.
tion's area. A region may be placed in the layout
This continuous modeling capability can be com-
over an imported background such as an
ProModel 101
User Guide

AutoCAD drawing to represent a machine or


other location. This technique allows elements in 2. A location may include any of the above
the imported background to work as locations. graphics and symbols. However, a location can
have no more than one counter, one gauge, one
Library graphic Any of the graphics appearing
tank, one queue, one status light, or one region.
in the library graphic menu. Use the scroll bar to
view all available graphics. Library graphics may
3. Clicking on a layout graphic with no edit
be created or modified through the Graphic Edi-
table on the screen displays the name of the ele-
tor. The name for the graphic, the default name of
ment (location, etc.) represented by the graphic.
any location created with that graphic, can be
With any edit table showing, hold down the CTRL
saved in the Graphic Editor (see “Naming a
key while clicking on the graphic to display the
Graphic” on page 322).
location name.

How to edit a graphic already on


the layout:
Counter Dialog Box
• Double click on the graphic.
To edit the appearance of a counter, double click
on the counter on the layout, select the counter
or... and click on the Edit button, or right click on the
counter and select edit. The counter dialog box
allows you to choose the appearance of a graphic
1. Select the graphic.
counter that is used to display the contents of a
location. To change the digit color of the counter,
2. Click on the Edit button inside the Location click on the Digit Color button. To change the
Graphics window. counter's background and border, click on the
Frame button. The digit's font size and style may
or... be changed by clicking on the Font button.

1. Right-click on the graphic in the layout.


2. Select Edit Graphic from the menu.

Please note

Location graphics notes:

1. Location graphics are painted on the layout Gauge/Tank Dialog Box


in the order of the location list and, for any given When you create a gauge or tank, ProModel will
location having multiple graphics, in the order prompt you to specify which type you wish to use
that the graphic was added to the layout. before you paste it in the layout. To edit a gauge
102 Chapter 5:
Locations

or tank on the layout, double click on the gauge currently chosen options is shown in the lower-
or tank to display the gauge/tank dialog box, left corner.
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 tank and define its appear-
ance, orientation, and fill direction. You may also
access this dialog by selecting the gauge or tank
and clicking on the Edit button.

Library Graphic Dialog Box


To change or edit a library graphic that represents
a location, you may double click on the library
graphic on the layout, select the graphic and click
on the Edit button, or right click on the graphic
and select edit.

Text Dialog Box


To edit the appearance of a location label, you
may double-click on the text once it is on the lay-
out, select the text and click on the Edit button, or
right click on the text and select edit. The text is
typed in an edit window with several edit features
available via buttons above the window. The
font, color, alignment, rotation and frame may be
changed from this dialog box. A sample of the

This gives the option to change the icon, orienta-


tion, color, or graphic dimensions of the graphic.
The default dimensions for the graphic, which are
ProModel 103
User Guide

created in the Graphic Editor, are displayed Queues


above the graphic. To change the dimensions of
the graphic, click on the Dimensions button. This A queue is a location that imitates the progressive
gives you the ability to specify horizontal or ver- movement and queuing of waiting lines. When an
entity enters a queue, ProModel executes any
tical and feet or meters to change the graphic
operation logic for the entity and then moves it to
dimensions.
the end of the queue. To have processing logic
execute after an entity arrives at the end of a
Queue/Conveyor Dialog Box queue, use a MOVE statement in the operation
To control the look and operation of a conveyor logic. A MOVE statement causes the entity to
or a queue, you may double click on the con- move to the end of the queue where any addi-
veyor/queue in the Layout window, select the tional operation logic defined will be processed.
graphic and click on the Edit button, or right click Operation logic following a MOVE statement
on the conveyor/queue and choose edit graphic. actually gets processed after the elapsed time that
The Queue/Conveyor dialog box appears. It also the entity would have reached the very end of the
allows you to specify whether you wish to define queue if no other entities were ahead of it. Fol-
the location as a conveyor or queue. Use the lowing a MOVE statement, any operation state-
scroll bar to set the width of the queue or con- ment is valid except for CREATE, SPLIT AS,
veyor. Select the style by clicking on solid, roller UNGROUP, UNLOAD, or another MOVE state-
(i.e., roller conveyor) or line. Click on the border ment.
color or fill color to change the color of the If a MOVE statement is specified that includes a
queue. If you want the queue to be visible during move time (e.g., MOVE for 5.2 sec), the entity
edit time and invisible during run time, click on speed and length of the queue are ignored. If a
the Invisible During Simulation option. See the move time is not included with the MOVE state-
discussion on conveyors and queues later in this ment, the move time is based on the entity speed
section for more information. and length of the queue (if no queue length or
entity speed is defined, the move time is zero).
Entities in a queue may not be preempted by
other entities and, once entities begin movement
in a queue, are not allowed 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 any
order after completing their move time.
Queues are drawn from the 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 enter-
ing a different length. When a queue is modified
graphically, the length will automatically be
recalculated based on the graphic scale unless
104 Chapter 5:
Locations

you checked the “Recalculate path lengths when entity on a conveyor is calculated using the fol-
adjusted” option. You can access this option from lowing formula:
the Tools menu under Options.
Time = (Conveyor Length - Entity Length or
Width)/Conveyor Speed
Conveyors And the percentage utilization is calculated using
A conveyor is a location that simulates the move- this formula:
ment of entities on either an accumulating or non-
accumulating conveyor and appears with a con- ∑ tc
veyor graphic. Entities can only enter a conveyor all Cc
entities
at the beginning and leave at the end. For accu- Util % =
mulating conveyors, if the lead entity is unable to T
exit the conveyor, trailing entities queue up
Where:
behind it. For non-accumulating conveyors, if the
lead entity comes to a stop, the conveyor and all tc = the time the entity spent on the conveyor
other entities stop. Entities on a conveyor may whether moving or not
not be preempted by other entities.
Cc = the conveyor capacity for that entity
The capacity assigned to a conveyor limits the
number of entities that can access a conveyor. T= the total simulation time
However, the cumulative total length or width of
the entities on the conveyor cannot exceed the Please note
conveyor length. In fact, the utilization statistics
for a conveyor reflect the amount of space uti- Unlike queues, MOVE statements for conveyors
lized on the conveyor throughout the simulation, may not include a move time. Processing logic
not the number of entities occupying the con- executed at the end of the conveyor may contain
veyor. Unlike other locations, an entity is not any operation statement except for CREATE,
routed to the conveyor until there is room at the SPLIT AS, UNGROUP, or UNLOAD. Addition-
beginning for the entity to fit, even if the con- ally, the ACCUM, COMBINE, and GROUP
veyor has capacity to hold it. statements are not allowed at the end of non-
ProModel executes operation logic for entities accumulating conveyors.
entering a conveyor as soon as they enter unless
the logic follows a MOVE statement. If no
MOVE statement is encountered, entities begin
their move on the conveyor after processing any Due to the space limitations of a conveyor, cer-
logic. If a MOVE statement is encountered, entity tain operation statements at the beginning of a
movement is initiated. Any logic defined after a conveyor are invalid including ACCUM, COM-
MOVE statement is processed when the entity BINE, CREATE, GROUP, SPLIT AS,
reaches the very end of the conveyor. UNGROUP, and UNLOAD.

Move time on a conveyor is based on the length The default conveyor length is determined by the
and speed of the conveyor, as well as the length graphic scale, although this may be overridden by
or width of the entity. The move time for an entering a different length. When a conveyor is
modified graphically, the length will automati-
ProModel 105
User Guide

cally be recalculated based on the graphic scale 4. Move the mouse in the desired direction
unless you uncheck the “Recalculate path lengths and click on the right mouse button to end
when adjusted” option. You can access this the conveyor.
option from the Tools menu under Options.

Conveyor Graphics Display


How to create bends in an
When you use conveyors and want the graphics existing conveyor:
to display properly on the conveyor with no over-
lapping and little space between entities, use the
1. Click on the conveyor with the right mouse
following:
button. From the menu that appears, select
Entity Add Joint. A small black square appears on
Orientation the conveyor.
on Conveyor Requirements 2. Using the left mouse button, drag the
Width-wise 1. Entity width on conveyor square in the direction you desire to bend.
should equal horizontal dimen-
sion.
2. Entity length on conveyor
should equal vertical dimension. Conveyor Options Dialog Box
Length-wise 1. Entity width on conveyor The conveyor options dialog box is used to define
should equal vertical dimension.
the specifications for a conveyor. To access the
2. Entity length on conveyor conveyor options dialog box, you may double
should equal horizontal dimen-
sion. click on a conveyor, select the conveyor and click
on the Edit button from the Location Graphics
window, or right-click on the conveyor and select
Conveyor Animation
edit. This opens the Conveyor/Queue dialog box
The animation of entities traveling along convey- from which the Conveyor Options dialog box can
ors is displayed according to the logical length or be opened by clicking on the Conveyor Options
width of the entity, not the scaled length or width button. The Conveyor Options dialog box pre-
of the entity graphic. sents the following options:

How to define a conveyor graphi-


cally:

1. Select the conveyor/queue symbol from


the Location Graphics window.
2. Click on the Layout window with the left
mouse button where the conveyor should
start. Accumulating Select or deselect this option
3. Add bends to the conveyor by moving the depending on whether the conveyor is to be accu-
mouse and clicking the left mouse button. mulating or non-accumulating.
106 Chapter 5:
Locations

Entity Orientation Select Lengthwise or Width- Multi-Capacity, Multi-Unit, and


wise depending on whether the entity is traveling Multiple Locations
on the conveyor in the direction of the entity
length or in the direction of the width. Sometimes it can be unclear whether to use
multi-capacity, multi-unit, or multiple locations
Length The length of the conveyor expressed in when defining parallel workstations. Suppose, for
either feet or meters depending on the default example, we have three parallel stations, each
specified in the General Information dialog. performing the same operation as shown below.
Speed The speed of the conveyor in feet or There are three possibilities for defining the
meters per minute. The distance units can be set machines: (1) as a multi-capacity location, (2) as
in the General Information dialog box. a multi-unit location, or (3) as multiple locations.
The method you choose to define the locations
depends on your application.
Capacities and Units

Capacities
A location capacity is the maximum number of
entities it can hold at any one time. In general,
multi-capacity locations are used to model loca-
tions such as queues, waiting areas, or any other
type of location where multiple entities may be
held or processed concurrently. Consider the fol-
lowing multi-capacity location:

For many situations modeling parallel stations as


a multi-capacity location works fine. By placing
an additional graphic for each station, both the
Units logic and visual effects of having parallel stations
can be achieved. However, you should use a
A location unit is defined as an independently multi-unit location instead of a multi-capacity
operating station. When multiple, independently location when any of the following situations
operating stations all perform the same operation exist:
and are interchangeable, they form a multi-unit
location. Consider the following multi-unit loca- •Individual units have independent down-
tion: times.
•It is important to collect individual statistics
on each unit.
•It is important, for visual effect, to see enti-
ties select individual units by a routing
rule other than First Available (e.g., By
ProModel 107
User Guide

Turn, Fewest Entries, Longest Empty, including the icon, can be changed as if the unit
etc.). were an independent location.
•It is important, for visual effect, to have a
status light assigned to each unit.
In some situations, it may even be desirable to
model multi-unit locations as totally separate
locations. Multiple locations should be used
instead of multi-unit locations when: If the number of units is changed, the individual
unit location records are automatically created or
•A path network is defined but each location destroyed accordingly.
must interface with a different node on the
network. Individual units of a multi-unit location can be
•Different units have different processing selected to process an entity according to the
times. Selecting Incoming Entities option in the Rules
•The input for each unit comes from different dialog box. (See the discussion regarding the
sources. Rules dialog box later in this section.)
•The routing is different for each unit. In the output report, scheduled hours for the par-
ent location will be the sum of the scheduled
Defining a Multi-Unit Location hours for the individual units.
To create a multi-unit location, enter a number
greater than one as the number of units for a loca- Please note
tion. A corresponding number of locations will
be copied below the multi-unit location record in Multi-Unit notes:
the Location edit table, each with a numeric
extension designating the unit number of that 1. It is not possible to create a path network to
location. Successive graphics, representing indi- interface with each unit of a multi-unit location.
vidual units will be drawn to the right of the orig- You must define the locations individually and
inal location, but may be moved normally. use multiple locations as discussed above.

The original location record becomes the proto- 2. It is not possible to route an entity to a spe-
type for the unit records. Each unit will have the cific unit of a multi-unit location. For example,
prototype's characteristics unless the individual typing Loc2.3 in the destination field of the Rout-
unit's characteristics are changed. In the table ing edit table is not allowed.
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 has an additional entry-based Location Downtimes
downtime and Loc2.2 has an additional usage-
A downtime stops a location or resource from
based downtime. Any other characteristic,
operating. A down resource or location no longer
functions and is not available for use. Downtimes
may represent scheduled interruptions such as
shifts, breaks, or scheduled maintenance. Or, they
108 Chapter 5:
Locations

may represent unscheduled, random interruptions the advantage of allowing a downtime to be


such as equipment failures. Downtimes may also defined for an entire group of locations.
be given preemptive or non-preemptive priority
and may require one or more resources for repair
times.
For single capacity locations, downtimes may be
Clock Downtime Editor
based on clock time, usage time, number of enti- Clock downtimes are used to model downtimes
ties processed,a change in entity type, or called that occur depending on the elapsed simulation
using the DOWN statement. Multi-capacity loca- time, such as when a downtime occurs every few
tions have only clock and called downtimes. If a hours, no matter how many entities a location has
downtime is occurring at a location and any other processed.
downtime starts (except a setup downtime), the
The Clock Downtime Editor consists of the edit
two downtimes are processed together, not
table shown below. To access the Clock Down-
sequentially (i.e., downtimes overlap).
time Editor, select Clock from the menu that
appears after clicking the DT... heading button.
How to specify a location down- Most expressions, including distributions, can be
time: included in the Frequency, First Time, and Prior-
ity fields. (See the “Appendix A” on page 587 to
1. Select the desired location in the edit see if the specific statement or function is valid in
table. a particular field.)
2. Click on the DTs... button. This brings up the
downtime selection menu shown here for sin-
gle-capactiy locaitons. (Multi-capacity loca-
tions will only have the Clock and Called
options.)
Frequency The time between successive down-
time occurrences. This option may be an expres-
sion. This field is evaluated as the simulation
progresses, so the time between downtimes can
vary.

3. Each selection opens an edit table for First Time The time of the first downtime occur-
specifying the required elements of the rence. If this field is left blank, the first clock
downtime. downtime will occur according to the frequency
field. This time is evaluated after any initializa-
tion logic.
Please note
Priority The priority (0-999) of the downtime
An alternative and more straightforward method occurrence. The default priority is 99, the highest
for defining downtimes due to breaks or shifts is non-preemptive priority.
to use the Shift Editor. The Shift Editor also has Scheduled... Select YES if the downtime is to
be counted as a scheduled downtime. Select NO
ProModel 109
User Guide

if the downtime is to be counted as a non-sched- included in the Frequency and First Occurrence
uled downtime. fields. (See the “Appendix A” on page 587 to see
if the specific statement or function is valid in a
All scheduled downtimes will be deducted from
particular field.)
the total scheduled hours reported in the output
statistics and, therefore, will not be considered in
computing utilization, percent down, and so on.
Logic Enter any logic statements to be pro-
cessed when the downtime occurs. When the
logic has completed, the location becomes avail- Frequency The number of entities to be pro-
able. In the most simple case, the logic is simply cessed between downtime occurrences. This may
a WAIT statement with a time value or expres- be a constant value or a numeric expression and
sion which represents the duration of the down- is evaluated as the simulation progresses.
time. Click on the heading button to open a larger First Occurrence The number of entities to be
edit window. processed before the first downtime. This may be
Disable Select YES to temporarily disable the a value or a numeric expression. If left blank, the
downtime without deleting it from the table. first downtime will be based on the frequency
entered.
The example above shows a simple clock-based
downtime where the location is down for 10 min- Logic Any logic statements to execute when the
utes every 2 hours (120 min). Because this time downtime occurs. Normally, this logic is simply a
should not be included in the total scheduled or time expression representing the length of the
available hours, YES is selected in the “Sched- downtime. Click on the heading button to open a
uled” column. larger edit window.
Disable Select YES to temporarily disable the
Entry Downtime Editor downtime without deleting it from the table.
Entry downtimes are used to model downtimes In the example above, Robot1 will go down
when a location needs to be serviced after pro- every 100 entries, with the first downtime occur-
cessing a certain number of entities. For example, ring after only 50 entries. When the downtime
if a printer needs a new cartridge after printing occurs, it will require a resource (M1) to service
2000 shipping orders, an entity downtime should the machine for some amount of time between
be defined. The downtime occurs after the entity 3.8 and 4.2 minutes. If resource M1 is unavail-
that triggered the downtime leaves the location. able when requested, the robot will remain down
until M1 becomes available.
The Entry Downtime Editor consists of the edit
table shown below. To access the Entry Down-
time editor, select Entry from the menu that Please note
appears after clicking the DT... heading button.
Entry downtimes are only available for single Entry-based downtimes do not accumulate. For
capacity locations. The Downtime Editor con- example, if a downtime cannot occur because the
tains fields for defining downtimes based on the priorities of the entities being processed are at
number of entries processed at a location. Most least 2 levels higher than the priority of the
functions, including distributions, can be
110 Chapter 5:
Locations

downtime, only the first downtime resumes after Logic Any logic statements to be processed
processing the entities. All others are ignored. when the downtime occurs. Typically, this field
contains a time expression representing the
length of the downtime. Click on the heading but-
ton to open a larger edit window.
Usage Downtime Editor Disable Select YES to temporarily disable the
Usage downtimes are used to model downtimes downtime without deleting it from the table.
that occur after a location has been operating for
In this example, Robot2 will experience break-
a certain amount of time, such as if a machine
downs according to a Gamma distribution with
fails due to wear after so many hours of opera-
shape and scale parameters 1.7 and 2.3. Mainte-
tion. Usage downtimes are different from clock
nance resource M1 will be used to service the
downtimes because usage downtimes are based
robot. The repair time is normally distributed
on location operation time, which does not
with a mean of 2.4 minutes and a standard devia-
include blocked time. Clock downtimes are based
tion of .3 minutes.
on total elapsed simulation time (operation time,
blocked time, idle time). Usage downtimes are
available only for single-capacity locations. Please note
The Usage Downtime Editor consists of the edit
Usage-based downtimes do not accumulate. For
table shown below. It contains fields for defining
example, if a downtime cannot occur because the
location downtimes based on the actual time in
priorities of the entities being processed are at
use. Most functions, including distributions can
least 2 levels higher than the priority of the
be included in the Frequency, First Time, and Pri-
downtime, only the first downtime resumes after
ority fields. (See the “Appendix A” on page 587
processing the entities. All others are ignored.
to see if a specific function is valid in a particular
field.)

Setup Downtime Editor


Setup downtimes should be used to model situa-
tions where a location can process different types
Frequency The usage time between down- of entities, but needs to be setup to do so. Setup
times. downtimes will not overlap but will preempt
First Time The time in use before the first down- other downtimes in a manner similar to that of an
time occurrence. Leave blank if the first time is to entity. Setup downtimes are only available for
be based upon the frequency entered. single capacity locations.

Priority The priority, between 0 and 999 of the Note that a setup downtime is assumed to occur
downtime. The default priority is 99, which is the only when an entity arrives at a location and is
highest non-preemptive priority. Generally, different from the previous entity to arrive at the
usage downtimes tend to be preemptive and location. Consequently, the word ALL in the
should have priority values greater than 100. prior entity field means all except the same entity
type.
ProModel 111
User Guide

The Setup Downtime Editor consists of the edit statement, the called downtime will execute its
table shown below. It contains fields for defining logic.
location downtimes based on the arrival of a new
entity type.

Name The name of the called downtime. This


is the name that will be referenced by the DOWN
Entity The incoming entity for which the setup statement.
occurs. If the setup time for all entity types is
Priority The priority (0-999) of the downtime
identical when shifting from the same prior
occurrence. The default priority is 99, the highest
entity, the reserved word ALL may be entered.
non-preemptive priority.
Prior Entity The entity preceding the entity for
Scheduled... Select YES if the downtime is to
which the setup occurs. If the setup is the same
be counted as a scheduled downtime. Select NO
regardless of the preceding entity, you may enter
if the downtime is to be counted as a non-sched-
the reserved word ALL.
uled downtime.
Logic Enter any logic statements to be pro-
All scheduled downtimes will be deducted from
cessed when the downtime occurs. Click on the
the total scheduled hours reported in the output
heading button to open a larger edit window.
statistics and, therefore, will not be considered in
Disable Select YES to temporarily disable the computing utilization, percent down, and so on.
downtime without deleting it from the table.
Logic Enter any logic statements to be pro-
This example shows that the time to setup Robot3 cessed when the downtime occurs. When the
depends on the arriving entity and the prior logic has completed, the location becomes avail-
entity. If a GearB follows a GearC, the setup time able. In the most simple case, the logic is simply
for the machine will be based on a Lognormal a WAIT statement with a time value or expres-
distribution with a mean of 4.5 minutes and a sion which represents the duration of the down-
standard deviation of .95 min. But if a GearC fol- time. Click on the heading button to open a larger
lows a GearA, the setup time will be based on a edit window.
Lognormal distribution with a mean of 2.3 min
For more information on the DOWN statement,
and a standard deviation of .2 min.
see “Down” on page 470.

Called Downtime Editor


Location Priorities and Preemption
Called downtimes are used in conjunction with
Priorities determine which entity or downtime
the DOWN statement to make a location go
uses a location when more than one entity or
down. When the name of the called downtime is
downtime is contending for it. Priorities may be
referenced during simulation by the DOWN
any value or expression between 0 and 999, with
higher values having higher priority. For simple
prioritizing, you should use priorities from 0 to
112 Chapter 5:
Locations

99. Priorities greater than 99 are used for pre- Assigning Priorities
empting (bumping or displacing) entities or An entity or downtime accesses a location based
downtimes currently occupying a location. on its priority. An entity is assigned a priority for
Priority values are divided into ten levels (0 to accessing a location in the Destination column of
99, 100 to 199, ..., 900 to 999), with values the Routing edit table. A downtime is assigned a
beyond 99 used for preempting entities or down- priority in the appropriate Downtime edit table.
times of a lower priority level. Multiple preemp- The first of the following examples shows a pri-
tive levels make it possible to preempt entities or ority of 100 assigned to EntA as it tries to claim
downtimes that are themselves preemptive. This Loc2. This priority is high enough to preempt any
means that an entity, EntA, with a priority of 99 entity at the location having a priority less than
can be preempted by another entity, EntB, with a 100. It is not high enough, however, to preempt
higher priority level of 199. In turn, another any downtimes at the location.
entity, EntC, with a priority of 299 can preempt
EntB at the same location. Process Table
To preempt an entity currently using a location, a Entity Location Operation (min)
preempting entity or downtime must have a prior- EntA Loc1 USE Res1 FOR N(3,.1)
ity at least ONE level higher than the entity cur-
rently at the location. To preempt a downtime in Routing Table
effect at a location, a preempting entity must
Blk Output Destination Rule Move Logic
have a priority at least TWO levels higher than
1 EntA Loc2, 100 First 1 MOVE FOR 1
the current downtime. Since all overlapping loca-
tion downtimes are processed concurrently This example shows a priority of 200 assigned to
(except setup downtimes), a downtime cannot, in a usage-based downtime at Loc4. This priority
effect, preempt another downtime. can preempt any entity at the location with a pri-
ority less than 200.
A preempted entity will resume processing where
it left off unless the 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.
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.
ProModel 113
User Guide

Minimum Required Priority Levels for Example 1


Preempting at a Location The following example demonstrates what hap-
pens when Ent 1 with a priority of 99 is pre-
To preempt To preempt the
the Current empted by Ent 2 which has a priority of 100 or
Current Entity downtime greater.
Incoming 1 priority level 2 priority levels
higher higher
Entity Preempting an Entity
Entity
Upcoming 1 priority level Downtimes over-
Downtime higher lap Ent 1

•The upper left quadrant shows that for an


entity to gain access to a location already
processing another entity, the incoming
entity must have a priority at least one Ent 2
level higher than the current entity's prior- Time
ity.
•The upper right quadrant shows that for an T2 T3 T4
T1
incoming entity to gain access to a loca-
tion where a downtime is currently in Ent 1 processing resumes upon
effect, the entity must have a priority at completion of Ent 2 processing
least two levels higher than the downtime's
priority.
•The lower left quadrant shows that a for a Example 2
downtime to preempt an entity currently This example demonstrates what happens when a
processing, the downtime must have a pri- downtime having a priority of 99 is preempted by
ority one level higher than the currently an entity having a priority of 200 or greater.
processing entity.
•The lower right quadrant shows that all loca- Entity Preempting a Downtime
tion downtimes (except setup) are concur-
rent or overlapping. Setup downtimes
DT
preempt as if they were entities.
The following examples demonstrate the expla-
nations above in greater detail.

Entity
Time

T2 T3 T4
T1

Downtime resumes immediately upon


completion of entity processing
114 Chapter 5:
Locations

Example 3 Example 5
This example demonstrates the behavior when an This example demonstrates what happens when a
entity with a priority of 99 is preempted by a setup downtime with a priority of 99 is pre-
downtime with a priority value of 100 or greater. empted by a normal downtime having a priority
of 100 or greater.
Downtime Preempting an Entity
Downtime Preempting Entity in Setup
Entity

Entity setup

DT Time

DT
Time
T2 T3 T4
T1
T1 T2 T3 T4
Remaining entity processing time
resumes upon completion of downtime
Remaining setup time resumes upon
completion of downtime
Example 4
This example illustrates how, regardless of the Example 6
downtime priority values, downtimes will over- This example demonstrates what happens when
lap. The exception is setup downtimes, which Ent 1 setup downtime with a priority of 99 is pre-
preempt downtimes exactly like entities (see empted by Ent 2 having a priority of 100 or
Example 5). greater.
Overlapped/Concurrent Downtimes Entity Preempting Entity in Setup
DT 1 Ent 1 setup Ent 1 setup

DT 2

Overlap Ent 2

Time
Time

T1 T2 T3 T4
T1 T2 T3 T4
Total Downtime Ent 1 setup must start over upon completion
of Ent 2 processing
ProModel 115
User Guide

Special Notes Regarding Location Downtime inhibiting statements


Downtimes
1. When an entity preempts another entity WAIT UNTIL
(Example 1), or when an entity preempts a ACCUM
downtime (Example 2), or when a downtime COMBINE
preempts an entity (Example 3), any
resources owned by the preempted entity or MATCH
downtime will be freed temporarily until the GROUP
preempting entity or downtime finishes at JOIN
the location. At that time, the original entity
or downtime will seek to claim the exact LOAD
units of the resource or resources it owned
before the preemption occurred.
2. As shown in examples 5 and 6, an entity that 5. In cases where a downtime or other entity
requires a location setup will be treated dif- attempts to preempt an entity’s use of a loca-
ferently depending on the preempting activ- tion, a preemption process may be defined to
ity. If the preempting activity is another override the default way of handling the pre-
entity, the current setup in process will have
emption. See “Preemption Process Logic” on
to start over from the beginning. However, if
page 300.
the preempting activity is a downtime, the
remaining setup time will finish upon com-
pletion of the preempting downtime. Rules Dialog Box
3. Locations will not go down if they are in a
blocked state. A location is blocked if it has The Rules dialog box, selected by clicking on the
an entity that cannot be routed because of the Rules button in the Locations edit table, is used to
unavailability of the next location. This may choose the rule for ProModel to follow when
also include the time an entity waits to enter making the following decisions:
a location based on a routing condition, such •Selecting incoming entities
as LOAD. •Queuing for output
4. Locations will not go down if any of the •Selecting a unit
occupying entities are waiting for a resource
or are waiting at any downtime inhibiting
statement.
116 Chapter 5:
Locations

Selecting Incoming Entities Queuing For Output


When a location becomes available and there is When an entity finishes its operation at a loca-
more than one entity waiting to enter, a decision tion, other entities to finish ahead of it may not
must be made regarding which one to admit. The have departed. A decision must be made to allow
primary determining factor is the priority of the the entity to leave or to wait according to some
input routing. The entity with the highest routing queuing rule. If one of the following queuing
priority will be admitted regardless of the incom- rules is not specified, “No Queuing” will be used.
ing selection rule. However, if two or more enti-
No Queuing Entities that have completed their
ties have the same priority for claiming the
operations at the current location are free to route
location, then the location selects an incoming
to other locations independent of other entities
entity based on the incoming selection rules listed
that have finished their operations. If this option
below.
is selected it is not displayed in the Rules Box.
Oldest by Priority Selects the entity waiting the
First In, First Out (FIFO) The first entity complet-
longest among those having the highest routing
ing operation must leave for its next location
priority.
before the second entity completing its operation
Random Selects randomly with equal probabil- can leave, and so on.
ity among all waiting entities.
Last In, First Out (LIFO) Entities that have fin-
Least Available Capacity Selects the entity ished operations queue for output LIFO so the
coming from the location having the least avail- last one finished is the first to leave.
able capacity. Ties are broken by the entity wait-
By Type Entities that have finished operations
ing the longest.
queue for output FIFO by entity type so the rout-
Last Selected Location Selects the entity com- ing for each entity type is processed indepen-
ing from the location that was selected last. Ties dently of routings for all other types.
are broken by the entity waiting the longest. If no
Highest Attribute Value Entities that have
entities are waiting at the last selected location,
completed operations queue for output according
the Oldest by Priority rule takes effect.
to the highest value of a specified attribute.
Highest Attribute Value Selects the entity with
Lowest Attribute Value Entities that have com-
the highest attribute value for a specified
pleted operations queue for output according to
attribute. Ties are broken by the entity that has
the lowest value of a specified attribute.
been waiting the longest. Location attributes are
also valid entries.
Selecting a Unit
Lowest Attribute Value Selects the entity
which has the lowest attribute value for a speci- If the location has multiple units, then incoming
fied attribute. Ties are broken by the entity wait- entities must select which available unit to use.
ing the longest. Location attributes are also valid One of the following rules may be selected.
entries. These decision rules apply to multi-unit locations
only.
First Available Selects the first available unit.
ProModel 117
User Guide

By Turn Rotates the selection among the avail- which has an “Oldest by Priority” rule for select-
able units. ing incoming entities.
Most Available Capacity Selects the unit hav-
ing the most available capacity. This rule has no
effect with single capacity units.
Fewest Entries Selects an available unit with the
fewest entries.
Random Selects an available unit randomly.

Longest Empty Selects the unit that has been


empty the longest.
When specifying the decision rules for selecting
incoming entities at a location, it is important to
remember that the routing of an entity is also
dependent on the queuing for output decision
rules at the previous location. The following
example will clarify this principle.

Rules Dialog Box Example


Two parts are queued for output at Loc1. The part
Consider a location, Loc1, which has a “Last In, waiting the longest, EntA, at Loc1 has been wait-
First Out (LIFO)” as the queuing for output rule. ing 10 minutes. The other part, EntB, which
Suppose that two other locations, Loc2 and Loc3, queued for output after EntA, has been waiting 5
have “No Queuing” for the output rule. The three minutes. At Loc2, the part queued for output,
locations, Loc1, Loc2, and Loc3 feed into Loc4 EntC, has been waiting 7 minutes. At Loc3, the
part queued for output that has been waiting the
longest, EntD, has waited 3 minutes.
The part to enter Loc4 first is EntC at Loc2 which
waited 7 minutes. Even though EntA has been
waiting ten minutes, it must wait until EntB has
been routed, because EntB is ahead of it in the
output queue according to the LIFO queuing rule.
Once Loc4 finishes processing EntC, EntB at
Loc1 enters Loc4. EntB enters before EntA
because entities must be output before a destina-
tion selects incoming entities. Next, EntA at Loc1
enters Loc4 after which EntD at Loc3 enters
Loc4.
118 Chapter 5:
Entities

Entities Entities may also have user-assigned attributes to


represent such things as dimensions, weights,
Anything that a model processes is called an pass/fail status, and group identifiers.
“Entity.” Documents, people, or phone calls
should be modeled as entities. Entities may be
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 as when a box is opened and the contents
removed (through the SPLIT AS statement); or
converted to one or more new entities (through
the RENAME or CREATE statement or by defin-
ing multiple outputs in the routing).
Each entity type has a name and a name index
number. In logic and expressions, an entity can
be referred to by name or by its name-index num-
ber using the ENT() function. The ENT() func-
tion allows a statement requiring an entity name
to use an expression that may change to reference
different entity names as a simulation progresses. How to access the entities editor:
See “Ent()” on page 476 for more information.
• Select Entities from the Build menu.

or...

• Right click on the existing entity and select


Edit.

Entities Editor
Entity types are created and edited with the Enti-
ties Editor. The Entities Editor consists of (1) an
edit table to define the name and specifications of
each entity type in the system, and (2) the Entity
Graphics window for selecting one or more icons
ProModel 119
User Guide

to represent each entity. The fields of the edit How to define entities graphically:
table are explained below.
1. Select Entities from the Build menu.
2. Check the New box in the Entity Graphics
window.
3. Select an icon for the entity. (Use the
Icon This is the graphic icon used to represent Graphic Editor to create new icons.)
the entity during the animation. Entity graphics 4. Edit the name and other default entries for
are defined or modified using the Entity Graphics the entity in the Entity edit table.
window. This icon can vary during the simula-
tion. See “Defining Multiple Entity Graphics” on
page 120.
Name The entity name. See “Names” on
page 404 for more information on naming.
Speed This entry is optional and applies to self-
moving entities such as humans. It defines the
speed in feet or meters (depending on the dis-
tance units chosen in the General Information
Dialog box) per minute to be used for any of the
entity's movement along a path network. When
creating a new entity, a default value of 150 fpm
(or 50 mpm for metric systems) is automatically
entered. This is roughly the speed of a human
walking.
Stats The level of statistical detail to collect for
each entity type: None, Basic, or Time Series.
Time series statistics must be selected if you wish
to view a time series plot in the output module.
Notes Any information you wish to enter about
the entity, such as material, supplier name.

Defining Entities
Entity Graphic Dimensions
Entities are typically defined graphically by
clicking on a desired library graphic in the Entity An entity has two sets of dimensions, a logical
Graphics window. Alternatively, you may define (length and width) dimension, and a graphical
entities by simply entering their names and char- (horizontal and vertical) dimension. An entity's
acteristics in the Entity edit table. Entity graphics length and width are used to determine the num-
are optional. ber of entities that can fit on a conveyor, and do
not affect the size of the graphic on the screen
120 Chapter 5:
Entities

during a simulation. They are changed in the changes automatically to maintain proportional-
fields labeled Length and Width in the Entity ity.
Graphics window. If multiple graphics are
defined for an entity, each graphic can have a dif-
ferent length and width. Which side a user
chooses to call the length or width is unimportant Defining Multiple Entity Graph-
as long as the proper side is referenced when
defining a conveyor. If no conveyors are defined
ics
in the model, no specifications of a length and Entity types can be assigned more than one
width are necessary. graphic to represent the entity at various stages of
An entity's horizontal and vertical dimensions are production or traveling in different directions. An
used to determine the size of the graphic on the entity representing a loan application could be
screen. These dimensions can be changed in two assigned three graphics: the first representing the
ways. The scroll bar to the right of the graphic application before a credit check has been
will scale the graphic. In addition, the horizontal received, the second representing the application
and vertical dimensions can be changed by click- after receiving the credit check but before the
ing on the Edit button, then clicking on the loan is approved, and the third representing the
Dimensions... button from the resulting dialog application after the loan is approved. During the
box. The default dimensions are determined simulation, the application’s status could be
when an icon is created to scale in the Graphic shown by adding additional graphics to represent
Editor. If the size is changed using the scroll bar, each state of the loan process using the
the change will be reflected in the dimensions GRAPHIC statement (see “Graphic” on page 492
listed. If you change either the horizontal or verti- for information).
cal dimension from the dialog box, the size of the
icon will change accordingly.

Please note

Since the horizontal and vertical dimensions must


remain proportional, only one of the dimensions
needs to be changed. The other dimension
ProModel 121
User Guide

How to define multiple graphics preemptive priorities. An entity with a high


for an entity type: enough priority can take over a location process-
ing an entity or a location that is down. An entity
with high enough priority can also take over a
1. Uncheck the New box on the Entity Graph-
ics window. Numbered graphic cells appear resource when it is being used by another entity
in the Entity Graphics window. or when it is off shift. When an entity takes over a
location that was down or in use by another
entity, the entity has preempted the downtime or
the other entity.
In a multi-capacity location, the occupying entity
will be preempted only if there is no more capac-
ity at the location and the occupying entity is
undergoing an operation time. Further, the occu-
pying entity cannot be one that has been split,
created, grouped, combined, ungrouped, or
Multiple unloaded at the location.
graphic
An entity must have a priority one level higher
cells
than an occupying entity to preempt the occupy-
ing entity. An entity must have a priority that is
two levels higher than a downtime to preempt the
downtime. If an entity does not have a high
enough priority to preempt another entity or
2. Click on the desired cell. downtime at a location, it waits in line (oldest by
3. Select a library graphic from the graphics priority) to access the location (see “Location Pri-
menu. orities and Preemption” on page 111).
4. Repeat steps two and three until all the Note that the priority of an entity is not defined
desired graphics have been assigned to the for the entity itself. For claiming a location, it is
entity type.
defined in the destination field of the routing. For
capturing a resource it is defined as part of the
GET, JOINTLY GET, or USE statement. A pri-
The graphic that represents an entity during a ority may, however, be assigned to an attribute of
simulation will be the first in this series until an a referenced entity when it attempts to access a
entity's graphic is changed with the GRAPHIC resource or location.
statement.
Example of Preemptive Entities
Preemptive Entities In this example entity (EntA) arrives at location
Loc1. Immediately upon arrival it requests to use
Often during a simulation, it is desirable to have resource Res1 for a normally distributed amount
an entity preempt an activity at a location or of time. The priority for obtaining the resource is
resource in order to gain access to that location or 99, which means that it is a non-preemptive
resource. These situations can be modeled using request. When Res1 becomes available, EntA
122 Chapter 5:
Entities

will be first in line because it has the highest non-


preemptive priority possible. When processing is
complete for this entity, it is routed to Loc2 with
priority 200. This means that it can preempt
another entity or a downtime that may already be
in process at Loc2. (See “Location Downtimes”
on page 107 and “Resource Downtimes” on
page 138 for more details on entity preemption.)

Process Table
Entity Location Operation (min)
EntA Loc1 Use Res1,99 For N(3,.1)

Routing Table
Blk Output Destination Rule Move Logic
1 EntA Loc2,200 First 1 MOVE FOR
2.5
ProModel 123
User Guide

Path Networks Path Networks are defined in the Path Networks


Editor, which is accessed from the Build menu.
When resources are modeled as dynamic
resources which travel between locations, they
follow path networks. Entities moving by them-
selves between locations may also move on path
networks if referenced in the move logic of the
routing. Otherwise, they follow the routing path.
Multiple entities and resources may share a com-
mon path network. Movement along a path net-
work may be defined in terms of speed and
distance, or simply by time. See discussion on
Automatic Time and Distance Calculation, later
in this section, for more information about move-
ment according to speed and distance or by time.
There are three types of path networks: passing,
non-passing, and crane. A passing network is
used for open path movement where entities and
resources are free to overtake one another. Non-
passing networks consist of single-file tracks or
guide paths such as those used for AGVs where How to create or edit a path net-
vehicles are not able to pass. Crane path networks work:
are described in more detail in the section “Crane
Systems” on page 269. • Select Path Networks from the Build menu.
Passing and non-passing networks consist of
nodes, which are connected by path segments.
or...
Path segments are defined by a beginning and an
ending node and may be uni-directional or bi-
directional. Multiple path segments, which may
• Right click on the existing path network
be straight or jointed, may be connected at path
and select Edit.
nodes. For all path networks, path nodes define
the points where the resources using the network
interface with processing locations.
Path Networks Editor
The Path Networks Editor consists of an edit
table with fields for defining basic information
about each network, such as the network name,
the type of network (Non-Passing or Passing),
and the basis for movement along the network
(Speed and Distance or Time). Clicking on the
124 Chapter 5:
Path Networks

appropriate heading button will bring up a table The Path Segment edit table is covered in more
for defining nodes, path segments, and location detail later in this section.
node interfaces.
Interfaces The number of location-node inter-
faces in the path network. If an entity will 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
The following explains each field of the Path on the heading button opens the Interfaces edit
Networks edit table. table where the user may define nodes that con-
nect to processing locations. The Interfaces edit
Graphic For passing or non-passing path net-
table is covered in more detail later in this sec-
works, this button displays the Path Color dialog,
tion.
which allows you to define the color of the path
network. Click on the heading button or double Mapping The number of entries in the Mapping
click in this field to bring up the graphic dialog. edit table. Clicking on the heading button opens
Both dialogs allow you to specify whether or not the Mapping edit table where the user may map
the network will be visible at run time. destinations to particular branches of the net-
work. (The Mapping edit table is covered in more
Name A name that identifies the path network.
detail later in this section.)
For more information about valid names, see
“Names” on page 404. Nodes The number of nodes defined in the
Nodes edit table. Nodes are created automatically
Type Set this field to Non-Passing if you want
when graphically defining path segments. Click
entities and resources to queue behind one
on this heading button to open the Node edit
another on the path network. If a path is Non-
table, which may be used to define nodes manu-
Passing, entities may not pass each other, even if
ally or set Node Limits on one or more nodes.
an entity is traveling at a faster speed than the one
Nodes may also be used to control a resource's
in front of it. Set this field to Passing if you want
behavior through node logic or search routines
entities or resources to pass each other on the
such as work and park searches (see “Resources”
path network.
on page 132). The Nodes edit table is covered in
A "Crane" option is also available, which is more detail later in this section.
described in more detail in the section “Crane
Systems” on page 269. How to create a path network
T/S Set to either Time or Speed and Distance graphically:
as the basis for measuring movement along the
network. See the discussion on Automatic Time 1. Set the default time and distance values
and Distance Calculation later in this section for per grid unit from the Grid dialog box.
more information. 2. Choose Path Networks... from the Build
Paths The number of path segments in the net- menu.
work. Clicking on the heading button opens the 3. Enter the name of the network in the Path
Path Segment edit table where the user may Networks edit table.
define the network's node to node connections.
ProModel 125
User Guide

4. Select either Passing or Non-passing as the Please note


network type.
5. Select either Speed and Distance or Time If you hold down the CTRL key and move the cur-
as the travel basis. sor over a path segment or joint, the Add/Delete
6. Click on the Paths... heading button to joint cursor will appear. From here, left click to
open the Path Segment edit table. add or delete a joint.
7. Lay out the network using the mouse but-
tons as described below.

To highlight a path on the layout and in


the Path Segment edit table
How to create path segments: • Left click on that path.

1. Left click to create a node and begin a


path segment.
How to create additional nodes or
2. Additional left clicks produce path joints.
move existing nodes:
3. A right click ends the segment and creates
a new node.
1. Click on the Nodes heading button in the
Path Networks edit table.
2. Click the left mouse button to create a
How to modify path segments: node both on the layout and in the Nodes
edit table.
3. Drag an existing node to move that node.
To create a new path from an existing
node
• Left click on that node.
How to move a path network:

To delete a joint 1. Click on the Paths heading button in the


• Right click on an existing joint. Path Networks edit table.
2. Left click on any path segment and drag
to the desired position. The entire network will
To add a joint move.
1. Right-click anywhere on a path segment.
2. Select Add Node from the menu.
3. Drag the joint to the desired position.
A Typical Path Network
The following diagram shows a path network
consisting of seven nodes (N1 to N7) connected
by path segments. Path segments may be straight
lines from one node to another, as in the segment
126 Chapter 5:
Path Networks

from node N7 to node N6, or they can have any Time If travel along the network is to be mea-
number of joints, such as the segment from node sured in time rather than in speed and distance,
N2 to node N5. then enter the time required for a resource or
entity to traverse the path segment. This value
may be any numeric expression except for
resource and downtime system functions. When
travel along a path is measured in time, all
resources and entities traveling along the path
take the same amount of time to travel it, regard-
less of their speed. This field's title changes to
“Distance” if the T/S field in the Path Networks
edit table is set to Speed and Distance.
Distance If travel along the network is to be
measured in terms of speed and distance, enter
the length of the segment which determines the
travel time along the path in conjunction with the
speed of the resource or entity.
Path Segment Edit Table
The value entered may be any numeric expres-
This table is used to define the Path Segments sion except for attributes, arrays, and system
that make up a path network. When specifying functions. This expression is evaluated only
travel according to time between nodes, the head- when the simulation begins.
ing “Distance” changes automatically to “Time.”
The distance may be followed by a comma and a
speed factor between .01 and 99. This speed fac-
tor may be used to model any circumstance
affecting the speed of items traveling the path.
For example, a resource may normally travel at
150 fpm, but may slow down as it goes around a
corner to 80% of the original speed, 120 fpm.
This would be entered as 100, .8 for a path seg-
ment 100 feet long which traversed the corner.
This field's title changes to “Time” if the T/S
field in the Path Networks edit table is set to
Time.
The following defines the fields of the Path Seg-
ment edit table. Please note
From The beginning node of the path segment.
Path segment editing notes:
To The ending node of the path segment.
1. If no path segments have been defined for a
BI Set to Uni-directional or Bi-directional network, resources and entities will move from
depending on whether traffic can travel in only node to node in zero time. See “Processing” on
one or either direction.
ProModel 127
User Guide

page 149 for more information about the Routing 4. Enter the time and distance values as
Move dialog box. shown below.

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 Please note
two successive nodes is calculated according to
the number of grid units between the nodes and To set these values as defaults, you must check
the default time and distance values per grid unit. the Save as Default Grid Settings option on the
ProModel automatically enters this time or dis- grid dialog box.
tance 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 Interfaces Edit Table
allows path networks to be built to scale and
saves time when defining path networks graphi- If an entity will be picked up or dropped off at a
cally. The time or distance for a path is automati- particular location by a resource, that location
cally recalculated whenever the path is edited must connect to a node through a location-node
(lengthened or shortened) unless you unchecked interface. The Interfaces edit table is used to
the “Recalculate path lengths when adjusted” box define location-node interfaces. The graphic
under Options in the Tools menu. below shows how to set node N1 to interface with
location Loc1, node N3 to interface with Loca-
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 dia-
log box.
128 Chapter 5:
Path Networks

tion Loc2, and so on, as in the example at the Mapping Edit Table
beginning of this section.
If there are multiple paths emanating 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 defaults can be
overridden by explicitly mapping some destina-
tion nodes to specific branches that entities and
resources will take when traveling out of a
“from” node.

The fields of the Interfaces edit table are


described as follows.
Node The node name.

Location The name of any locations which


interface with the node. Nodes can interface with
several locations, but a location may interface
with only one node on the same path network.

How to create location-node


interfaces The fields of the Mapping edit table are described
as follows.
1. Left click on the desired node to begin From Entities and resources traveling out of this
rubber-banding a link or interface. node will use this mapping record to decide
2. Left click on the desired location to com- which of the alternate branches will be taken
plete the interface. next.
To The “from” node and the “to” node together
define the branch to be taken next. This might
also be interpreted as the node which entities and
Please note resources will go through, to reach one of the
destination nodes.
A node on a path network may not interface with
a particular unit of a multi-unit location (i.e., Dest. Entities and resources whose ultimate des-
Loc1.2). A node may interface only with the tination is one of these nodes will be forced to
“parent” location (i.e., Loc1) of a multi-unit take the branch that directly connects the “from”
location. node to the “to” node.
ProModel 129
User Guide

Please note 4. Click on the destination node(s) in the Lay-


out Window. This places the selected node(s)
in the Destination field.
When your simulation is compiled and run, Pro-
Model will automatically define destinations for
your network mapping, if you have not defined
them yourself. These computer-generated map- Please note
pings will not appear in the Dest. column of the
Mappings table, but the From and To columns
ProModel automatically calculates and uses the
will contain information on these mappings. Do
shortest paths on unmapped portions of networks
not delete the information in these collumns.
(if the network is time based, the path having the
least number of nodes is used). Explicitly indicat-
ing shortest paths using mapping constraints will
speed up the translation process, especially for
How to create mappings using the models with complex networks.
mapping edit table:

1. Click on the Mapping... heading button in


the Path Network edit table. This will open the An example of mapping two branches of a net-
Mapping edit table. work is given on the following pages.
2. Click on the From heading button and
select the node to be mapped. Mapping Example
3. Click on the To heading button and select
The following example uses a path network dia-
the terminating node for the branch to be
mapped.
gram to demonstrate mapping.

4. Click on the Destination heading button In this example, we wish to force resources and
and select the desired node(s). entities enroute from Loc1 to Loc4, Loc5, or
Loc6 to take the branch directly connecting node
N2 and node N5 to avoid traffic congestion at the
intersection of the two main branches at node N3.
How to create mappings graphi- Since there are multiple ways to go from N2 to
cally: N5, a decision as to which alternative will be
used has to be made at N2.
1. Click on the Mapping... heading button in In addition, we want resources and entities to fol-
the Path Network edit table. This will open the low the same path in the opposite direction when
Mapping edit table. enroute from Loc4, Loc5, or Loc6 to Loc1. In
2. Click on the from node in the Layout Win- this case, the decision must be made at N5.
dow. This places the selected node in the
From field. Because the combined length of segments con-
necting N2 to N3 and N3 to N5 is shorter than the
3. Click on the to node in the Layout Win- length of the single segment from N2 to N5,
dow. Note that the to node must be directly
resources and entities based on speed and dis-
connected to the from node with a single
branch.
tance will normally take the former path to travel.
130 Chapter 5:
Path Networks

To force them to take the longer path, we must path network extended up to include many other
specify mapping constraints. nodes N8, N9, ..., and locations Loc7, Loc8, ...,
then we would change the Mapping edit table as
follows:
1. Delete line 1 in the Mapping edit table.
2. Make sure that line 3 is there (it is not
optional any more).
3. Include a line which reads: “From: N2, To:
N5, Dest:<BLANK>”.

This case requires two explicit mapping con-


straints to override the selection of default paths
in each direction: The first table entry forces enti-
ties and resources en-route from Loc1 to Loc4,
Loc5, or Loc6 to override the default path and
take the direct branch from N2 to N5. The second
table entry forces entities and resources traveling The empty destination column will be interpreted
from N5 (originally from Loc6, Loc5 or Loc4) to as “all other destination nodes” by ProModel.
Loc1 to take the direct branch from N5 to N2.
Entries 3 and 4 are optional, and might be useful
Please note
to speed up translation, since the restrictions they
impose allow the shortest path calculations to be
bypassed. For a “from” node (unless there is a branch map
with a blank destination column), any nodes not
explicitly listed in the destination columns of
existing mapping records will be reached via the
default path selections.

Nodes Edit Table


The Nodes edit table lists the nodes that make up
a path network and is used to limit the number of
resources and entities that may occupy a node at
any given time. In addition to controlling traffic
There is a shortcut to force the same non-default
on a path network, nodes also define where
path selection constraint to a number of destina-
resources interface with locations or where enti-
tion nodes: For instance, if the vertical arm of the
ties enter and leave the path network. Nodes may
ProModel 131
User Guide

also be used solely to control a resource or errors. This saves compilation time on large mod-
entity's behavior through node logic or search els.
routines such as work and park searches (see
However, if you edit one or more of your path
“Resources” on page 132).
networks, ProModel will once again check the
modified path networks for errors during compi-
lation. ProModel will consider a path network to
have been modified if its name was at any time,
since the last compile, highlighted in the Path
Network dialog window.

The following defines the fields of the Nodes edit


table.
Name The node name.

Limit The maximum number of resources and


entities that may occupy a node at any given
moment. A blank entry means there is no limit.

Pre-translation check for Path


Networks
When you run your simulation, ProModel will
compile your model and check your path net-
works for errors. If your model has large, com-
plex path networks, this could cause your
model’s compilation time to run quite long.
To combat this, ProModel will perform a pre-
translation check for path networks. This means
that the first time your model compiles, it will
check your path networks for errors. It will then
save this information.
Every subsequent time your model compiles, it
will read the saved information about your path
networks and not check the path networks for
132 Chapter 5:
Resources

Resources How to create and edit resources:


A resource is a person, piece of equipment, or • Select Resources... from the Build menu.
some other device used for one or more of the
following functions: transporting entities, assist- or...
ing in performing operations on entities at loca-
tions, performing maintenance on locations, or • Right click on the existing location and
performing maintenance on other resources. select Edit.
Resources consist of one or more units with com-
mon characteristics, such as a pool of service
technicians or a fleet of lift trucks. Resources
may be dynamic, meaning that they move along a
Typical Use of Resources
path network, or static, in which no movement The diagram below shows two types of
occurs. Resources may also have downtimes. resources: forklifts and an operator. Forklifts are
used as resources to transport entities from Loc1
Every resource has a name and a name-index
to any of the processing locations, Loc2 through
number. Logic referring to a resource, such as the
Loc6. The forklifts are dynamic resources and
GET statement, can use either the resource's
travel along the path network, Net1, explained
name, or the RES() function to refer to the
previously in “Path Networks” on page 123. The
resource. The RES() function allows a statement
using a resource name to refer to different operator inspects all parts at Loc7 and never
resources as a simulation progresses. See “Name- moves from that location. Therefore, the operator
is a static resource and does not need a path net-
Index Numbers” on page 406 and “Res()” on
work.
page 543 for more information.
Resources are defined in the Resources Editor,
accessed through the Build menu.

The remainder of this section defines the ele-


ments and the procedures necessary for specify-
ing static and dynamic resources.
ProModel 133
User Guide

Resources Editor Resources Edit Table


The Resources Editor consists of the Resources The Resources edit table defines the characteris-
edit table and the Resource Graphics window. tics of each resource in the system. The fields of
These windows are used together to specify the this table are defined below.
characteristics of a resource.

Icon The icon selected for this resource. Icons


are selected using the Resource Graphics Win-
dow. If more than one icon is selected for the
resource, the first icon is shown here.
Name The name of the resource.

Units The number of units represented by this


resource name between 0 and 999 (or a macro). If
the entry is a numeric expression, the expression
will be evaluated at the start of the simulation
run. Consequently, the number of resource units
Resources edit table Appears along the top of
cannot be changed during the simulation run. If
the workspace with fields for specifying the name
you would like to vary the number of units of a
of each resource, the number of identical units of
resource during runtime, use downtimes to vary
a resource, the downtime characteristics of each
the number of resources available at a given time.
resource, and other important information, such
(See also “Resource Downtimes” on page 138.)
as the path network the resource uses for move-
ment.
Please note
Resource Graphics window Contains graphic
icons that may be selected to represent a resource
When you use a macro with a value of zero in the
during simulation. A resource may have more
units field, you can use SimRunner to find the
than one icon to represent different views of the
optimal number of resources needed for your
resource, or its status. This window also allows
model.
you to define multi-unit resources graphically on
the layout. Defining a resource is as simple as
selecting an icon from the Resource Graphics
window, giving the resource a name, and specify- DTs... Select this field to define any optional
ing the characteristics of the resource. downtimes for this resource. Only clock and
usage based downtimes are permitted for
resources.
Stats... The desired statistics, if any, to gather
for this resource. Statistics can be collected as a
summary report over all units of a resource, or
134 Chapter 5:
Resources

individually for each unit of a resource. The box is checked in the window, selecting a graphic
options are as follows: creates a new resource. Multiple graphics are
defined for a given resource by selecting the
•None: No statistics are gathered.
desired resource and unchecking New. This pro-
•Summary: Average utilization and activity
cedure causes a scrollable row of graphic cells to
times are recorded collectively for all units appear which are automatically and sequentially
of the resource. numbered beginning with 1. Graphics may be
•By Unit: Statistics are gathered for each added or replaced for a given resource by click-
unit individually as well as collectively. ing on the desired cell and selecting a library
Specs... Select this field to open the Resource graphic from the graphics menu.
Specifications dialog box. From here you can
By using the GRAPHIC statement in resource
assign a path network, set the resource speed, and
downtime logic, or in the case of a dynamic
define pickup and deposit times. For more infor-
resource, node logic, any of the multiple graphics
mation on the Specification dialog, see assigned to a resource may be activated during
“Resource Specifications Dialog Box” on simulation. For static resources, you may define a
page 143. second or third graphic to be used automatically
Search... If a path network has been assigned, when the resource is busy or down, respectively.
select this field to access the Work Search and
Resource graphics may be sized using the scroll
Park Search edit tables, used to define optional
bar or edited by clicking the edit button. Edit
work and park searches.
options include rotating, flipping horizontally or
Logic... If a path network has been assigned, vertically, and changing the color of the graphic.
select this field to define any optional logic to be In addition, you can specify the dimensions of the
executed whenever a resource enters or leaves a
particular path node. If you have defined a node
entry and exit logic, the logic field will show the
number of nodes where node entry and exit logic
has been defined.
Pts... If a path network has been assigned, select
this field to define resource points. Resource
points are auxiliary points where multiple
resources may appear graphically when parked or
in use at a multi-capacity node.
Notes... Enter any notes in this field, or click on
the heading button to open a larger Notes window
for entering notes.

Resource Graphics Window


The Resource Graphics Window appears when
the Resources module is opened and is used to
assign graphic symbols to resources. If the New
ProModel 135
User Guide

resource graphic. For more information, see it may be used at more than one location or to
“Dimension” on page 318. move entities between locations.

How to define a static resource:

1. Select Resources from the Build menu. This


automatically brings up the Resources edit
table and the Resource Graphics window,
used together to define all resources in the
model.
2. Choose a graphic icon for the resource
from the Resource Graphics window.
3. Select the Add button in the Resource
Graphics window.
4. Click on the layout at the desired position
of the resource graphic.
5. Add additional resource graphics for the
same resource if desired. Every time a
resource graphic is placed on the layout for
the same resource in the edit table, a new
resource point is created.
6. Supply any optional information about the
resource, such as downtimes.
The Layout Position allows you to add or delete
resource graphics on the layout. When adding a
resource graphic to the layout, ProModel auto-
matically adds a unit and a resource point. When
Please note
deleting a resource graphic from the layout, Pro-
Model deletes the resource point but leaves the
number of units in the units field unchanged. Static resources notes:
1. When defining the static resource specifica-
tions, the default for Resource Search is Least
Static Resources Utilized. The default for Entity Search is Longest
Static resources are resources not assigned to a Waiting. You may only specify Pick-up and
path network and therefore do not visibly move. Deposit Time in the Motion box.
A static resource may be needed to perform an 2. There is not a status light for a static resource;
operation at only one location, such as an inspec- however, a second and third graphic may be
tion operator, and will appear during the entire defined for use when the resource is busy or
simulation in the same place it was defined down, respectively. If no second and third
graphically. Although a static resource is station- graphic are defined, the resource graphic
ary and does not visibly move between locations,
136 Chapter 5:
Resources

changes color to green when in use and red when 7. Supply any optional information about the
down. resource including number of units, down-
times, work and/or park searches, and node
logic in the Resources edit table.

Dynamic Resources
Dynamic resources are resources that move along Please note
an assigned path network and may transport enti-
ties between locations as a forklift would. They Dynamic resources notes:
may also need to process entities at several loca-
tions, such as an operator performing tasks at 1. When defining the resource specifications, the
more than one location. For these reasons, it is default Resource Search for dynamic resources is
usually preferable to model the resource's move- Closest Resource. The default for Entity Search is
ment using a path network. Defined properly, the Closest Entity.
resource will travel along the path network dur- 2. More than one resource can use the same path
ing the simulation run. network.

How to create a dynamic


resource:
Multiple Resource Graphics
1. Create a path network using the Path Net- ProModel allows you to define several different
work Editor.
graphic icons for the same resource. For example,
2. Select Resources from the Build menu. This you may wish to change the color of a resource
automatically brings up the Resources edit whenever it becomes unavailable due to an
table and the Resource Graphics window, unscheduled downtime. Resource graphics for
which are used together to define all dynamic resources may be changed during a sim-
resources in the model.
ulation by using the GRAPHIC statement (see
3. Choose a graphic icon for the resource “Graphic” on page 492) in either the node or
from the Resource Graphics window. downtime logic. The GRAPHIC statement for
4. Click the Specs... button to open the Spec- static resources can only be used in downtime
ifications Dialog. logic, however, any second and third graphics are
automatically used when static resources are busy
5. Assign a path network to the resource.
or down, respectively. If no second and third
6. If desired, place units of the resource on graphics are defined, the resource graphic turns
the layout by selecting the Add button in the green when in use and red when down.
Resource Graphics window and clicking on
the layout. Every time you create and place
a resource graphic on the layout for the How to assign multiple graphics to
same resource in the edit table, ProModel a resource:
creates a new resource point. See “Resource
Points” on page 147 for more information.
1. Select Resources from the Build menu.
ProModel 137
User Guide

2. Highlight the desired resource in the Please note


Resources edit table.
3. Uncheck the New box in the Resource When changing the graphic for a resource in
Graphics window. downtime logic, or in the case of dynamic
4. Click on the next blank resource graphic resources, node logic, the number after the word
cell in the Resource Graphics window. GRAPHIC refers to the cell number in the
5. Select the desired resource icon.
Resource Graphics window as shown above. For
example the statement GRAPHIC 2 would
6. Change the color, rotation, or other change the forklift to the icon in cell number 2.
aspect of the new graphic by clicking on the The default graphic is the graphic in cell number
Edit button.
1 if none is specified. See “Graphic” on page 492
for more information.

An example of a single resource with multiple


graphics is given on the following page.
Multi-Unit Resources vs.
Multiple Resource Graphics Multiple Single-Unit Resources
Example
Multi-Unit Resources
Uncheck the
When a resource is defined as having more than
New Box
one unit, each resource unit is given a numeric
suffix by which it is identified in the output
report. For example, a resource (Res1) which has
Select the next
five units will display output statistics for
blank resource resources called Res1.1, Res1.2, . . . . Individual
graphic cell units 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 locations
and each resource unit can only interface with
one location. For example, Technician.5 can only
work at Loc5. Since “USE Technician.5” is
invalid, you would need to use multiple single-
Select an icon for the resource unit resources instead (e.g., Technician1,
Technician2, Technician3).
This example shows a forklift with two different Multi-unit resources are intended for use when
orientations. You may define as many graphics as several resources are defined with the exact same
needed for each resource. specifications and any resource can be used at a
number of locations. For example, a computer
can be operated by one of three technicians. If
138 Chapter 5:
Resources

you did not use multi-unit resources, you would 2. Select the resource for which the down-
need to specify “USE Technician1 OR time is to be defined.
Technician2 OR Technician3,” although this can 3. Click the DTs... button from the Resources
easily be abbreviated by using a macro to repre- edit table.
sent the resource expression. When you define
4. Select the downtime basis: Clock or
three units for a single resource, Res1, you can Usage.
simply state “USE Res1” and one resource unit
will be used based on its availability. 5. Enter the required information in either the
Clock Downtime or Usage Downtime edit
table. Each of these tables is described in the
Multiple Single-Unit Resources following pages.
Multiple single-unit resources are useful when
resources have different specifications, follow
different path networks, or are used at specific
locations. If several resources have the same
Please note
specifications and travel the same path network
but can only do work or interface with specific Unlike location downtimes, multiple resource
locations, they must be defined as multiple sin- downtimes occurring within the same time frame
gle-unit resources. This is because a unit of a are processed sequentially, not concurrently.
multi-unit resource must be able to interface with However, through the use of the DTDelay func-
all locations where it is called to work. tion, concurrent downtimes can be achieved for
resources.

Resource Downtimes
Resource downtimes refer to the times when a
resource is unavailable due to scheduled events
Clock-Based Downtime
like breaks and shift changes, or unscheduled Clock-based downtimes for resources are speci-
events like illness and random failures. For fied through the Clock Downtimes edit table
scheduled events, it is much easier and more shown below. The fields of this table are defined
straightforward to define these downtimes using as follows:
the shift editor (see “Shifts & Breaks” on
page 168). Unscheduled downtimes, 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 but-
ton. Frequency The time between downtimes. This
may be a constant time as shown above, a distri-
How to define resource down- bution, or an expression.
times: First Time The time of the first downtime occur-
rence. Leave this field blank if the first occur-
1. Select Resources from the Build menu. rence is to be determined from the frequency
field.
ProModel 139
User Guide

Priority The priority of the downtime (0-999). Disable Select YES to disable a downtime
The default priority is 99, which is the highest without removing it from the table.
non-preemptive priority.
Scheduled... Select YES if the downtime is to Usage-Based Downtime
be counted as a scheduled downtime. Select NO A usage-based downtime is a downtime based on
if the downtime is to be counted as a non-sched- how long a resources has been used, such as how
uled downtime. (All scheduled downtimes are often a forklift needs to be refueled. Usage-based
deducted from the total hours scheduled in the downtimes for resources are specified through
statistical calculations.) the Usage Downtimes edit table shown below.
List A list of the individual units of the resource Actual time in use includes any time that a
to be affected by the downtime. You may list resource is moving with an entity or is being used
individual units of the resource, specify ALL, or by an entity at a location. It also includes any
leave blank to affect all units. time a resource is being used in downtime logic
as a maintenance resource. The fields of this table
•1,2 Units 1 and 2 only are defined as follows:
•1-3,5 Units 1 through 3 and 5 only
•none You may use none to indicate that no
unit will adopt this downtime. This is use-
ful in creating a run-time interface. By
using a macro to represent the number of
Frequency The time between downtimes,
units, the user may select none as an
based on the usage time of a resource. This may
option.
be a time distribution as shown above, or an
•Macro The name of a run-time interface
expression.
macro that allows the user to define the
units to be affected by the downtime. First Time The time of the first downtime occur-
rence. Leave this field blank if the first occur-
Node This field applies only to dynamic
rence is to be determined from the frequency
resources and defines the node to which the
field.
resource will travel to go down. If no node is
entered, the resource stays at the current node. Priority The priority of the downtime (0-999).
The actual downtime will not begin until the The default priority is 99, the highest non-pre-
resource arrives at this node. Traveling to the emptive priority.
downtime node is counted statistically as time
List A list of the individual units of the resource
traveling to park.
to be affected by the downtime. You may list
Logic... Specific logic to be performed when the individual units of the resource, specify ALL, or
downtime begins, typically a WAIT statement. leave blank to affect all units.
Resources may be used to service resources that
•1,2 Units 1 and 2 only
are down if the servicing resource is static, or if
•1-3,5 Units 1 through 3 and 5 only
the servicing resource is dynamic and uses the
same network. (See the “Appendix A” on •none You may use none to indicate that no
page 587 for a list of statements valid in unit will adopt this downtime. This is use-
Resource Downtime logic.) ful in creating a run-time interface. By
using a macro to represent the number of
140 Chapter 5:
Resources

units, the user may select none as an logic (or the subroutines called from these log-
option. ics). Priorities for resource downtimes are
•Macro The name of a run-time interface assigned in the Priority field of the Clock and
macro that allows the user to define the Usage downtime edit tables. The following
units to be affected by the downtime. examples illustrate these points.
Node This field applies only to dynamic
Process Table
resources and defines the node to which the
resource will travel to go down. If no node is Entity Location Operation (min)
entered, the resource stays at the current node. EntA Loc1 Use Res 1,200 For N(3,.1)
The actual downtime does not begin until the
resource arrives at this node. Traveling to the Routing Table
downtime node is counted statistically as time
traveling to park. Blk Output Destination Rule Move Logic
1 EntA Loc2 First 1 MOVE FOR 5
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 is static, or if
the servicing resource is dynamic and uses the
same network. (For a list of statements valid in When an entity using a resource is preempted by
Resource downtime logic, see the “Appendix A” either a downtime or another entity, any process-
on page 587). ing time for the preempted entity due to a WAIT
or USE statement is interrupted until the pre-
Disable Select YES to disable a downtime
empting entity or downtime releases the resource.
without removing it from the table.
If an entity is using other resources in addition to
the one preempted, the other resources remain in
Please note possession of the entity.
In the case of a resource downtime preempting
Usage-based downtimes do not accumulate. For
another resource downtime, any remaining time
example, if a downtime is preempted by an entity
delay, as well as any other downtime logic
and another downtime is scheduled to occur
remaining to be processed by the preempted
while processing the entity, only the first down-
downtime, is immediately discontinued without
time resumes after processing the entity. All oth-
resuming and the preempting downtime takes
ers are ignored.
over.

Please note
Resource Priorities and Pre-
Resource priorities and preemption notes:
emption
1. If a resource is transporting an entity, it can-
Priorities for resource requests may be assigned not be preempted by another entity or by a down-
through a GET, JOINTLY GET, or USE state- time until it drops off the current entity at the
ment in operation logic, downtime logic, or move destination location. Therefore, the resource will
ProModel 141
User Guide

deliver the current entity and then immediately the resource when the requesting entity or down-
come under control of the preempting entity or time attempts to capture it. Downtimes below
downtime. refer to clock and usage-based downtimes only.
2. If a resource is moving but does not possess Priority values are divided into ten levels (0 to
an entity, the resource can be preempted by a 99, 100 to 199,..., 900-999), with values beyond
downtime or entity. The resource will stop at the 99 used for preempting entities or downtimes of a
next node in the path network and travel to the lower priority level.
downtime node after which the resource will go
down. To Preempt To Preempt
The Current The Current
Owner Downtime
Requesting
1 priority level 2 priority levels
Resource Shift Downtime Priori- Entity or
Another higher higher
ties Resource or
Location’s
In ProModel, you define the shift downtime pri- Downtime
orities in the Shift Assignments module. The pri-
ority for a resource to start a shift downtime and Requesting 1 priority level 1 priority level
the priority required for some other task to pre- Downtime higher higher
empt the downtime must be set in the Shift
Assignments module.
•The upper-left quadrant shows that if an
Although a resource may be in use during a shift entity tries to seize a resource currently
downtime, the scheduled hours in the statistics owned by another entity (or another
will still reflect the hours scheduled to be on resource’s or a location’s downtime), the
shift. For example, a resource goes off shift after entity must have a priority at least one
eight hours. Due to an emergency, the resource is level higher than the current entity to pre-
called back two hours later to work on a machine empt the resource.
that has gone down. The statistics will still indi- •The lower-left quadrant shows that a down-
cate that the scheduled hours for the resource are time must have a priority at least one level
eight when the resource actually spent more than higher than the entity currently owning a
eight hours in use, because the resource was resource if the resource is to be preempted.
scheduled to work only eight hours. The
•The upper-right quadrant shows that an
resource's total usage time, however, will still
entity must have a priority at least 2 levels
indicate the additional time spent working on the
higher than the current downtime priority
downed machine.
to preempt a downed resource.
•The lower-right quadrant shows that a pre-
Resource Preemption Matrix empting downtime must have a priority at
least one level higher than the current
The following Preemption Matrix shows the pos- downtime to preempt it.
sibilities of entities and downtimes preempting
each other in the use of a resource. “Current” The following graphics demonstrate basic pre-
refers to the entity or downtime in possession of emption concepts.
142 Chapter 5:
Resources

Preemptive DT vs DT Total
Non-preemptive DT vs. Entity
Downtime:
T1 to T3
DT 1 Entity

Discontinue
Scheduled DT
DT 2
Actual

Time
Time
T1 T2 T3 T4
T1 T2 T3 T4

DT 2 priority at least 1 level higher DT 2 priority NOT at least 1 level


than DT 1 priority higher than entity 1 priority

Non-preemptive DT vs. DT
Preemptive DT vs. Entity
DT 1

Entity
Scheduled DT 2

Actual DT 2

DT
Time
Time
T1 T2 T3 T4
T1 T2 T3 T4
DT 2 priority NOT at least 1 level higher than
DT 1 priority
DT priority at least 1 level higher than
entity priority
ProModel 143
User Guide

each resource in the system. Many of the items


Preemptive Entity vs. Entity pertain only to dynamic resources (i.e., resources
with path networks). If the resource is static (i.e.,
not assigned to a path network) many of the
options will be disabled. The Resource Specifica-
Ent 1
tions dialog box includes the following fields:

Ent 2
Time

T1 T2 T3 T4

Ent 2 priority at least 1 level higher


than Ent 1 priority
Path Network The name of the path network
along which the resource travels. This should be
“none” for a static resource.
Preemptive Entity vs. DT Home If a path network has been assigned, this
is the name of the home node where the resource
is positioned at the beginning of the simulation.
DT

Please note

To have resources start at other nodes in the net-


work, define a Park Search from the home node
Entity which causes the resource unit or units to be
Time
positioned at the nodes identified in the park
search.
T1 T2 T3 T4

Entity priority at least 2 levels higher


than DT priority Return Home If Idle If a path network has been
assigned, check this box to return the resource to
the home node when no other tasks are waiting to
Resource Specifications Dialog be performed and no park searches are defined.
Box Off Shift If the resource is assigned to a path net-
The Specifications dialog box contains informa- work and shift, this is the node to which the
tion for defining the operating characteristics of resource travels to go off shift.
144 Chapter 5:
Resources

Break If the resource is assigned to a path net- Please note


work and shift, this is the node to which the
resource travels to go on break. Entities look for resources to move them after
Resource Search When an entity that needs a they capture a location. If several entities are
resource must select between several available waiting to be transported to one location by a
resource units, it follows this rule. This only resource and you want the entity with the mini-
applies to multi-unit resources. The following mum attribute value to arrive next at the location,
rules may be specified: you must use the Locations edit table to define the
rule at the location for incoming entities as mini-
•Closest Resource mum attribute value. The Closest entity rule
•Least Utilized Resource
applies to dynamic resources only.
•Longest Idle Resource

If the path network that the dynamic resource is


Please note using is time-based, the closest entity is the entity
with the least number of nodes from the resource.
For a non-passing path network, only the Closest If the path network is defined by speed and dis-
Resource rule is allowed since the other rules tance, the closest entity is the entity the shortest
could cause the network to jam. Static resources distance from the resource.
only allow Least Utilized and Longest Idle rules
since there is no traveling to be done.

Motion If a path network has been assigned, the


motion fields define the speeds and times
Entity Search When two or more entities of required for basic resource movement and con-
equal priority request a resource at the same time, tain the following information:
the resource follows this rule to choose the one to
•Speed traveling empty/full*
service. The resource first checks for any entities
•Acceleration rate*
waiting at locations listed in a work search before •Deceleration rate*
defaulting to this rule and, if an exclusive work •Pickup time
search has been defined, the default entity search •Deposit time
rule is not used. The following rules may be spec-
ified:
Please note
•Longest waiting entity (with highest prior-
ity)
Resource specification notes:
•Closest entity (with highest priority)
•Entity with the minimum value of a speci- 1. The units to the side of these fields change
fied attribute automatically from feet to meters (and vice-
•Entity with the maximum value of a spec- versa) depending on the default distance units
ified attribute selected in the General Information dialog box.
2. Pickup and deposit times for resources are
included as transit time in the output statistics.
ProModel 145
User Guide

Resource Search Routines Please note


Search routines refer to the instructions a
A lockup can occur in the model if you define a
dynamic resource will follow after being freed at
park search at the home node and specify Return
a path node where a search routine was defined.
Home If Idle in the Resource Specifications.
Two types of search routines may be specified.
Work Search A list of locations where entities
may be waiting for the resource. Work searches
may be either exclusive or non-exclusive. Work Search Edit Table
•Use exclusive work searches to limit the Work searches are defined for dynamic resources
locations a resource may search for work. through the Work Search edit table shown below.
An exclusive work search will cause the If several resources share the same path network,
resource to search only the locations in the each resource must have its own work search
list. If no work is found at any of the listed defined (i.e., resources cannot share work
locations, the resource will either park at a searches).
node listed in its park search, go to its
home node, or simply become idle until
work is available at one of the locations in
the exclusive work search list.
•Use non-exclusive work searches to have a
resource check for work at certain loca-
tions first, and then move on to others. A
non-exclusive work search will cause the
resource to search the listed locations first The fields of the Work Search edit table are
and then resort to the default search rule defined as follows:
listed in the Resource Search section of the
Specifications dialog box (e.g., oldest Node The node for which the work search is
waiting entity, closest waiting entity). defined.
Park Search Park searches are typically used to Type Exclusive or non-exclusive work search.
get a resource off a main path segment, or send See “Resource Search Routines” on page 145 for
the resource to the next most likely place work an explanation of exclusive and non-exclusive
will become available. A park search is a list of work searches.
nodes to which a resource may be sent to park if
Location List A list of locations to be searched
no work is waiting at either the work or default
for waiting entities when the resource becomes
search locations.
available.
In the edit table above, work searches have been
defined at each location where the forklift deliv-
ers entities. The purpose of the work search in
this example is to force the forklifts to give prior-
ity to entities waiting to be delivered to process-
ing locations before taking an entity to a non-
146 Chapter 5:
Resources

processing location. This helps to keep the pro- Node Logic Editor
cessing locations busy at all times.
The Node Logic edit table is used to define spe-
cial logic for a dynamic resource to perform upon
Park Search Edit Table
entering or exiting a node. Node logic may be
Park searches are defined for dynamic resources defined for any dynamic resource at any node.
through the Park Search edit table shown next. If Typical uses of node logic are:
several resources share the same path network,
•Changing a resource graphic using the
each resource must have its own park search
defined (i.e., resources cannot share park GRAPHIC statement
searches). •Controlling traffic using WAIT UNTIL
statements
•Gathering special statistics on resource
movement

The fields of the Park Search edit table are


defined as follows: The fields of the Node Logic edit table are
defined as follows:
Node The node for which the park search is
defined. Node The entry or departure node where the
resource will process the logic.
Parking Node List A list of nodes to which a
resource may be sent to park. The resource will Entry Logic Logic to be executed when a
look for available capacity at the first node in the resource enters the node.
list (Node capacity is defined in the Path Net-
Exit Logic Logic to be executed when a resource
works edit table in the Nodes window). If there is
leaves the node.
no capacity at that node, the resource will look to
the second node in the list and so on until a node The table above was taken from the example con-
with capacity is found. If no capacity is found at tained on the following pages.
any node in the list, the resource will remain
where it is until capacity becomes available at
one of the nodes in the list.
In the table above, a park search has been defined
for each of the internal path nodes where a fork-
lift might deliver an entity and then be in the way
if it has nothing else to do. Specifically, if a fork-
lift makes a delivery and then becomes available
at node N3, it will park at node N4. From node
N5 it will park at node N1, and from node N6 it
will park at node N7.
ProModel 147
User Guide

Node Logic Example zone. The node logic for node N5 is identical to
that for node N2.

Please note

Suppose that for safety considerations we desire This example follows the rule that allows the
to keep track of the number of times both forklifts LAST() function to be used only in Node Entry
simultaneously enter a particular zone of the net- Logic, while the NEXT() function may be used
work consisting of branches N2 to N3, N3 to N4, only in Node Exit Logic. (See “Resource-Specific
and N3 to N5. (It is thought that this zone may be System Functions” on page 435).
particularly susceptible to accidents due to heavy
traffic.) We could accomplish this using node
logic at the entry and exit points of the zone.
Resource Points
The only way to enter or exit the zone is through
nodes N2 and N5. To track the number of fork- For a static resource, resource points are the lay-
lifts currently in the zone, we increment and dec- out coordinates of the resource graphics. For
rement a variable called Current. Each time a dynamic resources, resource points are auxiliary
forklift leaves node N2 or N5 en-route to node points where multiple resources may appear
N3 we increment variable Current. Each time a graphically when in use or parked at a multi-
forklift enters node N2 or N5 enroute from N3 we capacity node. When a resource arrives at a node,
decrement variable Current. Finally, each time it will appear on that node unless a resource point
we increment the variable Current, we check to is defined for that resource at that node. The
see if Current > 1. If so, we increment a second resource will appear on the resource point when it
variable called Total to record an occurrence of arrives to park or perform a task at a particular
both forklifts in the zone at the same time. node. Resource points prevent resources from
appearing on top of each other. In the case of
The following windows show the entry and exit
dynamic resources, resource points are defined in
logic for node N2, representing one entry to the
terms of an offset from the node to which they are
connected. Resource points are defined in terms
of an offset from the upper left corner of the lay-
out for static resources.
The following Resource Points edit table shows
that node N8 has two resource points attached to
148 Chapter 5:
Resources

it. The horizontal offset is 0 units for each point. Please note
The vertical offset is 13 units both up and down
from the node position. (For resource points posi- Resource points are automatically added to the
tive distances are up and to the right.) home node for each resource graphic placed on
the layout.

How to delete resource points:

1. Bring up the Resource Points edit table by


clicking on the Pts... heading button in the
Resources edit table.
2. Select the point to be deleted by highlight-
Whenever a forklift arrives or parks at node N8, ing the edit table record or clicking on the
resource point in the layout. (If you click on
it will automatically go to one of the two resource
the point to select it, you must then reacti-
points. This prevents the forklifts from graphi- vate the Resource Points window by clicking
cally appearing on top of each other if they are on the title bar of the table.)
both at node N8 simultaneously.
3. Select Delete from the Edit menu.

How to add resource points to a


node:
How to move resource points:
1. Select Resources from the Build menu.
2. Click on the resource points heading but- 1. Bring up the Resource Points edit table by
ton, Pts.... clicking on the Pts... heading button from the
Resources edit table.
3. Click on the node for which a resource
point is to be added. 2. Drag the resource point to a new location
with the mouse.
4. Click on the layout where the resource
point is to appear.
5. Repeat steps 3 and 4 for each resource
point to be added.
ProModel 149
User Guide

Processing Using the Processing Editor


Processing defines the routing of entities through This discussion covers the procedures used to
the system and the operations that take place at define operations and routings using the Process-
each location they enter. Once entities have ing Editor. As with most other procedures in Pro-
entered the system, as defined in the Arrivals Model, they may be performed graphically using
table, processing specifies everything that hap- the mouse, or manually by typing the information
pens to them until they exit the system. directly in the edit tables.

Processing is defined in the Processing Editor, Before you begin to specify the processing logic,
which is accessed through the Build menu. This define all locations and entities to be referenced
section first describes how to create simple pro- in the processing. This is done through the Loca-
cesses, then explains each feature of the Process- tion and Entity Editors. If you reference a loca-
ing Editor. tion or an entity that has not yet been defined in a
location or entity field, you will be prompted to
add that location or entity to the respective loca-
tion or entity list. However, no graphic gets auto-
matically assigned to the location or entity.
The easiest way to define the processing logic is
to 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 enti-
ties through the system. It is also a good idea to
define the routing rule for each routing as it is
created. Once you have defined the from-to rela-
tionships between locations for each entity, fill in
the details of the operation and move logic for
each location. This is typically done by typing the
logic in the operation or move logic column man-
ually or by using the Logic Builder, documented
How to create and edit process at the end of this section.
routings: Defining processes graphically in ProModel
requires interaction with all four process editing
• Select Processing from the Build menu. windows.
•Process Edit Table
or... •Routing Edit Table
•Tools Window
• Right click on the existing process routing •Layout Window
and select Edit.
150 Chapter 5:
Processing

Before discussing the procedures for using these in the edit field at the top of the list—this entity
windows interactively, let us look briefly at a will come into the location, it is not the entity
process flowchart of a simple model. that results from the process.
2. Select the desired editing mode: New Pro-
Example Model cess or Add Routing.
3. Click on the first location where the entity
Two entity types, EntA and EntB, arrive at Loca-
will process. A rubber-banding routing line
tions 1A and 1B, respectively, according to some
appears. If you select Add Routing, the rub-
specified arrival logic. After a short preparation ber-banding routing arrow automatically
time, both entities are routed to Location 2 where appears from the current location.
1 EntB is joined to 1 EntA. At this point the
4. To choose a different entity as the output
resulting entity, EntC, is sent to Location 3 for
entity, select the desired output entity in the
consolidation. Twelve EntC's are accumulated at
tools window.
Location 3 and processed together for 3.0 min-
utes. Then they exit the system. 5. Click the destination location.

Process Flow Chart


Please note
EntA @ Loc1A
EntA 1.0 min 1
EntA
In the example below, we first clicked on Loc1A
EntA @ Loc2 EntC @ Loc3
and then on Loc2. The records in the Process and
Join 1
N(3.4,.2)
1
EntC
Accum 12 1
3.0 min
Routing edit tables were entered automatically.

EntB @ Loc1B
EntB
EntB 1.0 min 1 Exit

Arrival Processing
Logic Logic

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 opera-
tion(s) performed on the entity at the location.
The lower right portion of the block represents
the number of entities output to the next location.

Defining Entity Processing

How to define entity processing


graphically:
6. Repeat this process until the flow of entities
has been completely defined except for exit-
1. Select an entity from the entity list in the ing the system.
Tools window. The selected entity will appear
ProModel 151
User Guide

7. From the final processing location route an shown in their default arrangement, you may
entity to Exit by clicking on the “Route to Exit” arrange them as desired.
button in the Tools window.
8. Once all routings have been defined,
enter the processing logic in the operation
field of the Process edit table.

Process Edit Table Appears in the upper left


corner of the workspace and defines the opera-
tions performed for all entities at all locations.
Routing Edit Table Appears in the upper right
corner of the workspace and controls the destina-
tion of entities that have finished at the location.
The figure above shows the completed routings
for the example model. Note that the operations Tools Window Appears in the lower left corner
(for example, Join 1 EntB) have been entered of the workspace and is used for graphically
manually in the operation column. These opera- defining operations and routings.
tions could also have been entered by way of the Layout Window Appears in the lower right cor-
Logic Builder, documented at the end of this sec- ner of the workspace and shows each location
tion. with all from-to routings.

Processing Editor Process Edit Table


The Processing Editor consists of four windows The Process edit table is used to create operation
that appear simultaneously, as shown in the fol- logic for each entity type at each location in the
lowing diagram. Although the windows are system. Processes for entities at locations may be
in any order in the edit table, but for the sake of
organization you should group them by entity
type or location. The only time the order of pro-
cesses is significant is when the same entity is
routed multiple times through the same location,
in which case, later processes must appear some-
152 Chapter 5:
Processing

where after earlier processes. When searching for can also click on an entity name and select OK to
the next process, ProModel always searches for- place it in the table.
ward in the process list first, and then starts from
the beginning of the list.

Heading
Buttons

Current Entity, Location, and Operation


are highlighted. The entity list box defaults to the current field
entity, the last entity selected, or the first entity
An explanation of each field of the Process edit defined.
table is contained on the following pages. Location The location where the process
Entity The entity type for which the process is occurs.
defined. If all entities at the same location Click on the heading button to bring up the Loca-
undergo the same operation or have the same tions selection box from which you may choose a
routing, the reserved word ALL may be entered location.
in this field. (See discussion on ALL later in this
section.) If an entity not previously defined is
entered in this field, ProModel will ask if it
should create the new entity type.
Click on the heading button to bring up the Enti-
ties selection box. If this is a preemption process
record, check the box (see “Preemption Process
Logic” on page 300) and double click on an
entity to automatically place it in the table. You

The location list box defaults to the current loca-


tion, the last location selected, or the first location
defined.
Specifying ALL in the Location field and omit-
ting any routing defines a process for an entity at
all locations previously specified as routing desti-
ProModel 153
User Guide

nations for the entity. Because there is no routing, operations performed on other entities at the
after the entity finishes that process, ProModel same location.
will search ahead in the Process edit table for a
process for the entity specific to the actual loca-
tion. The keyword ALL in the Location field is
particularly useful when entities route to different
locations having the same operations and then
route to a common destination. In most other
instances, it is recommended that a subroutine or
macro be used to define identical operations.
Operation Operation logic is optional, but typ-
ically 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 enti- For more information see “Operation Logic” on
ties, that would be specified here as well. In fact, page 299.
anything that needs to happen to the entity at the
location should be specified here, except for any Using the “ALL” Entity Type
information specified in the entity's routing.
The reserved word ALL may be entered as the
Statements can be typed directly into the opera- processing entity if all entity types at that location
tion field, or inside a larger logic window after have the same operation. ALL may also be used
double clicking in the field or clicking on the in the output field of the routing if all entity types
Operation button. Alternatively, the Logic at that location have the same routing. If a pro-
Builder can help build logic and is accessed by cess record for a location using ALL as the entity
clicking the right mouse button inside the opera- follows several process records for the same loca-
tion field or logic window. All of the statements, tion using specific entity names, and each process
functions, and distributions available in the oper- record has a defined routing, the ALL process is
ation field are discussed in detail, including interpreted to mean ALL of the rest of the enti-
examples, in “Statements and Functions” on ties. The following examples show how ALL
page 439. may be used in different situations.
Each entity performs the operation steps defined
1.All entities have a common operation
for it at a particular location, independent of other
and a common routing.
To define a common operation and routing for all
entity types at a location, simply enter ALL for
both the process entity name and the output entity
name.
In the following example three entity types,
EntA, EntB, and EntC, are all sent to a packing
station for packaging. The packing time is .5 min-
utes and the entities move on to a shipping sta-
154 Chapter 5:
Processing

tion. Though this is a simple example, it shows Process Table


how one process and routing record is used for all
Entity Location Operation (min)
entity types. In contrast, the previous operations
ALL Packaging WAIT .5
at Loc1, Loc2, and Loc3 require separate process
EntA Packaging
and routing records for EntA, EntB, and EntC.
EntB Packaging
EntC Packaging
Process Table
Entity Location Operation (min) Routing Table
EntA Loc1 WAIT N(5,.3)
Blk Output Destination Rule Move Logic
EntB Loc2 WAIT U(3,.2)
EntC Loc3 WAIT T(3,5,9)
1 EntA Ship1 FIRST 1 MOVE FOR 1
ALL Packaging WAIT .5
1 EntB Ship2 FIRST 1 MOVE FOR 1
1 EntC Ship3 FIRST 1 MOVE FOR 1
Routing Table
If only the destination is different, but move
Blk Output Destination Rule Move Logic times and output quantities are identical, an alter-
1 EntA Packaging FIRST 1 MOVE FOR 1
native method is to assign each entity an attribute
1 EntB Packaging FIRST 1 MOVE FOR 1
that corresponds to the destination's name-index
1 EntC Packaging FIRST 1 MOVE FOR 1
number and then route with the LOC() function
1 ALL Shipping FIRST 1 MOVE FOR 1
as shown in the following example.
2.All entities have common operations
Process Table
but individual routings.
To define common operations but individual Entity Location Operation (min)
routings, use ALL as the process entity and ALL Packaging WAIT .5
define the common process, but do not define any
routings. Then define individual processes for Routing Table
each entity type at the common location, with a Blk Output Destination Rule Move Logic
blank operation field and the desired routing. 1 ALL Loc(Att1) FIRST 1 MOVE FOR 1

3.All entities have a common routing but


individual operations.
To define individual operations along with a
common routing for all entity types at a location,
define operations for each entity, but do not
define any routings. Then define a process record
for ALL at this location and define the common
routing for all entity types.
ProModel 155
User Guide

Process Table table to the Process edit table (i.e., all routings
that appear in the routing edit table apply to the
Entity Location Operation (min)
currently highlighted process), though the two
EntA Loc1 WAIT .4
tables appear side by side. Not all process
EntB Loc1 WAIT .5
records need to have a corresponding routing. If
EntC Loc1 WAIT .6
the routing is omitted, ProModel will search for-
ALL Loc1
ward in the Process edit table for another process
for that entity at that location. So an entity's com-
Routing Table
plete processing at a location could be broken
Blk Output Destination Rule Move Logic into several records. In that case, only the last
process would have a routing. If no routing is
defined for at least one of the process records for
a given entity and location, an error occurs.
1 ALL Packaging FIRST 1 MOVE FOR 1
Another situation that does not require routing is
Alternatively, you can assign an attribute to each when an entity changes its name at a location
entity which represents the processing time or after a RENAME AS or SPLIT AS statement.
some other entity-specific parameter. Then use Any time during processing logic that an entity
the attribute as the processing time, or call a sub- changes its name, ProModel searches forward in
routine and pass the attribute as a parameter for the Processing edit table until it finds a process
entity-specific processing. for the new name at the same location. For exam-
ple, if the identity of an entity is changed through
In the following example, the test time for each
a RENAME AS statement in the operation logic,
entity type is different. This time is stored in an
then no routing block will apply to the old entity.
attribute, Oper_Time. The attribute is then listed
Instead, the newly named entity will be routed by
on a line in the operation logic (with a WAIT
the process for the new name. (See “Rename” on
statement) to signify an operation time. Once the
test time for each entity is completed, the entities page 541).
are all routed to a packaging location.

Process Table
Entity Location Operation (min)
ALL Test WAIT Oper_Time
The fields of the Routing edit table are as fol-
Routing Table lows:
Blk Output Destination Rule Move Logic Blk This field contains the block number for the
1 ALL Packaging FIRST 1 MOVE FOR 1 current routing block. A routing block consists of
one or more alternative routings from which one
is selected based on the block rule (e.g., a list of
Routing Edit Table routings where one is selected based on the most
The Routing edit table defines the outputs for available capacity). Since all of the routings
each process record defined in the Process edit using the same rule are part of the same block,
table. The Routing edit table is really just a sub- only the first line of each routing block contains a
156 Chapter 5:
Processing

route block number. If no routing blocks have sequentially while split entities get processed
been referenced explicitly in the operation logic concurrently.
(for example “ROUTE n”), all routing blocks
If the reserved word ALL was used as the incom-
will be executed in sequence upon completion of
ing entity type for this process, it may also be
the operation logic (See “Route” on page 552).
entered here. Otherwise, every entity entering the
Multiple routing blocks are processed sequen-
location will change to the specified output
tially with the next block being processed when
entity. (See the discussion on using ALL in the
all of the entities in the previous block have
Entities section.)
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 box later in this section.
The following example shows a process record
with two separate routing blocks. Note that both
routings will execute upon completion of the
operation time because no ROUTE statement has
been specified. One EntB gets routed to Loc2 and
one EntC gets routed to Loc3.

Process Table
Entity Location Operation (min) The entity list box defaults to the current field
EntA Loc1 WAIT N(5,.3) entity, the last entity selected, or the first entity
defined.
Routing Table
To better anticipate the entity entry likely to be
Blk Output Destination Rule Move Logic made, the entity highlighted in the list box
1 EntB Loc2 FIRST 1 MOVE FOR 1 defaults first to the current field entity, then to the
2 EntC Loc3 FIRST 1 MOVE FOR 2 last entity selected, and finally to the first entity
Output If a routing is defined, the name of the defined.
entity resulting from the operation must be The example below shows how an incoming
entered here. This name may be the same as the entity, EntA, changes identity and becomes an
entity that entered, or it may be another name, or EntB upon exiting location Loc1. This is done by
even several names, each on a different line. simply specifying the new entity name as the out-
Using another name works much like a put entity.
RENAME-AS statement, except that the entity is
routed according to the routing block instead of
being processed further at the same location.
Using several names on different lines is similar
to having a SPLIT AS statement in conjunction
with a RENAME-AS statement. The difference is
that multiple routing blocks are processed
ProModel 157
User Guide

Process Table TINUE, and IF EMPTY routings. (See “Loc()”


on page 511 for more information.)
Entity Location Operation (min)
EntA Loc1 WAIT T(2,5,8) Rule This field defines the rule for selecting the
route destination. An output quantity may also be
Routing Table specified as part of the rule. This quantity works
much like the SPLIT AS statement. (See the fol-
Blk Output Destination Rule Move Logic lowing discussion on the Routing Rule dialog
1 EntB Loc2 FIRST MOVE FOR 1 box.) To open the Routing Rule Dialog box, dou-
Destination This is the location to which enti- ble click in the field or click in the field and then
ties are to move after the operation is complete. on the heading button.
Optionally, the destination may be followed by a Move Logic The Move Logic window allows
comma and a routing priority. If no priority is you to define the method of movement as well as
specified, the default is zero. any other logic to be executed between the time
The location name may be typed directly in the the next location is claimed for routing to the
field, or selected by either clicking in the field time the entity arrives, but not yet enters, the next
and then on the heading button, or double click- location. To open the Move Logic window, dou-
ing in the field. The resulting dialog box looks ble click in the field or click the heading button.
like this: This window allows you to manually edit the
logic or click on the Build button to use the Logic
Builder. It also provides other convenient buttons
for editing and printing the move logic. For sin-
gle move statements it is easiest to right click in
the move field to open the Logic Builder. If left
blank, it is assumed that no time, resources, or
path networks are needed to make the move. (See
“Routing Move Logic” on page 159.)

Routing Rule Dialog Box


The Routing Rule dialog box provides methods
for selecting an entity's destination after finishing
a process. The Rule heading button in the Rout-
Instead of entering a location name, you may use ing edit table, brings up the Routing Rule dialog
the LOC() function which returns the location
name corresponding to the index designated 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 BY TURN, UNTIL FULL, CON-
158 Chapter 5:
Processing

box. The fields of this dialog box are defined in AS statement, dividing the cost statistics between
the following example. the split members and resetting all time statistics
to zero.

Please note

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


Start new block Check this box to signal the
this routing block. The default is one. Several
beginning of a new routing block. Checking this
entities of the same name can be created from a
box will place a number in the Blk field for that
single entity, much like a split AS statement, by
record.
entering a number greater than one. Each of the
New Entity Check Box In order to let you desig- new entities then processes the routing block one
nate whether a routing block applies to the main entity at a time. For example, suppose an entity
entity or if you wish to create a new entity, Pro- called mail_bag enters a location and is separated
Model includes a New Entity check box in the into 30 individual pieces of mail, called Letters.
routing rule dialog. By default, ProModel does Enter 30 as the quantity and Letter as the output
not check the first routing block for a process entity, as in the example below. Only the first line
record but does check subsequent blocks unless in a routing block can specify a quantity.
they share the same input and output name. If you
check the New Entity box, an asterisk (*) appears Process Table
after the block number in the block column of the
routing table. Entity Location Operation (min)
mail_bag Loc1 WAIT T(2,5,8)
If you check the new entity box, the entity using
the routing block will begin routing with new Routing Table
cost and time statistics. If the new entity box
remains unchecked, ProModel assumes the entity Blk Output Destination Rule Move Logic
routing from this block is a main entity (the par- 1 Letter Loc2 FIRST 10 MOVE FOR 1
ent entity), carrying with it all cost and time sta- Routing Rules Choose the rule for selecting the
tistics. next location. Only one rule may be chosen for
If the new entity field remains unchecked and each routing line. Note that the last three routing
you enter a quantity field value greater than 1, rules, alternate, backup and dependent, may not
ProModel behaves just as it does with a SPLIT be chosen as the start of a new routing block.
ProModel 159
User Guide

Note also that no more than one of the other rules more information on “Routing Move Logic” on
can appear in a single block (e.g., you cannot mix page 159.
a First Available rule and a Most Available rule
in the same block).
Processing Tools
For exact syntax and examples of each routing
rule, see “Routing Rules” on page 415. The Tools window provides graphical aids that
may be used to define processing records and
routing records. It is also used to define the
Routing Move Logic graphical paths that entities follow when moving
The Move Logic window allows you to define without a path network between locations.
the method of movement as well as any other
The Tools window, which appears along with the
logic to be executed prior to or after the move
other Processing windows, can define processing
actually takes place.
in one of two modes, New Process or Add Rout-
Once the route condition or rule has been satis- ing. Each is explained next. Additionally, Find
fied for allowing an entity to route to a particular Process Mode is available. To select a mode,
location, the move logic is immediately executed. click on the desired button. Each of the modes is
The entity does not actually leave the current described on the next page.
location until a move related statement (MOVE
FOR, MOVE ON, MOVE WITH) is executed or
the move logic is completed, whichever happens
first. This allows the entity to get one or more Editing Mode
resources, wait additional time, or wait until a
condition is satisfied before actually leaving the
location.
Any statements encountered in the move logic Current Entity
after the move related statement are executed
after the move is complete but before the entity
actually enters the next location. This is often
useful for freeing multiple resources that may
have been used to transport the entity.
When defining exit logic, such as incrementing a Routing Options
variable used to track the number of exits from a
location, it can generally go before the move
statement unless a MOVE WITH statement is
used and the entity must capture the resource
before making the move. In this situation, a GET
statement should be specified first to get the In addition to option buttons (New Process, Add
resource. Then the exit logic may be specified Routing, or Find Process) for the process editing
followed by the MOVE WITH statement. mode, the Tools window contains a list of
defined entities as well as the reserved word ALL
Any delay occurring as a result of move logic is to represent all entity types. The entity in Pro-
reported as part of the entity’s move time. For cessing Tools applies to either the process or
160 Chapter 5:
Processing

routing entity, depending on what is currently How to delete a process or routing


being defined. record:

New Process Mode 1. Click inside the desired record in the Pro-
cess or Routing edit table.
New Process Mode is used to create a new pro-
cess record. A new process is automatically cre- 2. Select Delete from the Edit menu.
ated for the selected entity each time you click on
a location.
This mode should be used if you want to create a Editing a Routing Path
process for a particular entity at a location. You
may even create multiple processes for the same Once a routing path has been defined you may
entity and location if you want to re-route an edit the path (regardless of the current mode) by
entity through the same location more than once clicking anywhere on the routing path. This
for additional operations. Once a new process is selects the path and allows you to change the
created, the mode automatically changes to Add source or destination of the routing by dragging
Routing mode to enable a routing to be defined the beginning or end of the path to a new loca-
for the process. tion. It also allows you to move any intermediate
joint in the path to change the shape. You may
also click on a path with the right mouse button to
How to define a new process create or delete a joint.
using the Tools window:
If a process is already defined and a location is
moved while in the Location module, the con-
1. Depress the New Process button.
necting leg of any routing lines will also move.
2. Select the entity for which a new process is
to be defined from the Tools window.
Add Routing Mode
3. Click on the location where the entity will
be processed in the layout window. A new Add Routing Mode is used to create multiple
process record is created in the edit table. routings for a single process record. Suppose an
The mode is automatically switched to Add entity, EntA, can travel to one of three locations
Routing mode and a rubber banding line depending on which is available first. Selecting
appears that connects the mouse pointer to the New Process mode and then defining the
the location. entity process causes the entity to travel from one
4. If a different entity is to be output from the location to another location. Selecting Add Rout-
process, select it from the Tools window. ing mode afterwards allows you to define a dif-
ferent destination location within the same
5. Click on the destination location. A new
routing record appears in the edit table and routing block.
the mode switches back to New Process
mode. How to add additional routings to
an existing routing block:

1. Select the process record in the Process


edit table that needs an additional routing
ProModel 161
User Guide

line (you may use the Find Process button to 5. Click the Route to Exit button in the tools
locate the process record). dialog.
2. If you wish to insert the routing record
rather than simply append the record to the
current routing list, highlight the routing
record where the routing is to be inserted and Find Process Mode
choose Insert from the Edit menu. To find a previously created process for an entity
3. Select the Add Routing button from the type at a certain location, use Find Process mode.
Tools window. A rubber-banding line is cre-
ated.
How to find a process for an entity
4. Select the entity in the Tools window to be at a location:
output in this routing.
5. Click on the desired destination location. 1. Click on the Find Process button.
This creates a new routing record in the Rout-
ing edit table. 2. Click on the desired entity type.
3. Click on the desired location. The first pro-
cess found for that entity type at the location
will be highlighted in the Edit window.
Please note

To cancel a routing once a rubber-banding line


This option always searches forward in the pro-
appears, click on the New Process button or click
cess list. By clearing the entity field in the tools
on the originating location.
window, the next process for any entity at the
location selected is found. If multiple process
records exist for the same entity and location, the
edit table indexes forward to the next process
How to route a current entity to record each time you click on the location.
exit:
View Routing
1. Click the Add Routing button.
The View Routing button in the Processing Tools
2. From the Tools window, select the entity for
which you want to define a new process. window causes the process record currently high-
lighted in the edit table to become centered on the
3. Click the Locations button in the process layout.
record dialog and select the location from
which the entity will exit the system. ProModel
creates a new process record in the edit Snap Lines to Border
table and displays a rubber-banding line
When you check this option, ProModel snaps the
from the selected location.
routing lines to the location’s bounding area
4. Add joints as needed to define the exit rather than a specific position on the graphic.
path.
162 Chapter 5:
Processing

Show Only Current Entity


When you highlight an entity in the list box,
checking this option will show only those rout-
ings associated with the entity.
ProModel 163
User Guide

Arrivals edit table contains the specifications of each


arrival to the system and appears across the top of
Any time new entities are introduced into the sys- the screen. The Tools window contains tools for
tem, it is called an arrival. An arrival record is defining arrivals graphically and appears at the
defined by specifying the following information: bottom left corner of the screen. The Layout win-
dow appears in the lower right corner of the
•Number of new entities per arrival
workspace.
•Frequency of the arrivals
•Location of the arrival
•Time of the first arrival
•Total occurrences of the arrival
Any quantity of any entity type can be defined as
an arrival for a location. The frequency of arriv-
als can be defined as either a distribution or as an
arrival pattern which cyclically repeats over time.

Arrivals Edit Table


The Arrivals edit 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 the location where the


How to edit arrivals entity is to arrive.
Qty each... The number (1 to 999999) of enti-
• Select Arrivals from the Build menu.
ties to arrive at each arrival time interval. Any
valid expression may be entered here except for
attributes and non-general system functions. This
Arrivals Editor field is evaluated throughout the simulation run
and will change if the result of the expression
The Arrivals Editor consists of three windows changes.
that appear on the screen together. The Arrivals
164 Chapter 5:
Arrivals

To fill a location to capacity at every arrival time, Disable Set this field to YES or NO if you want
use the keyword INFINITE, abbreviated INF. to temporarily disable this arrival without delet-
ing it. This is useful when debugging a model and
If you have previously created an arrival cycle
for verification purposes where you want to fol-
and want to use it for this arrival, enter the name
low a single entity through the system.
of the arrival cycle followed optionally by a
quantity. You may also click on the Qty each...
heading button to select from the list of defined Arrivals edit table notes:
cycles. See the section on Arrival Cycles for
more information about defining cycles. 1. When several different entity types are sched-
First Time This option allows you to dynamically uled to arrive at a location simultaneously, they
vary the time of the first arrival to your model. will arrive in the order they are listed in the
You may define scheduled arrivals to occur at Arrivals table. To have them alternate their
given intervals (e.g., appointments) or use an arrivals, enter a 1 in the “Qty each” field and the
arrival cycle to define random arrivals over a total entry quantity in the “Occurrences” field.
period of time (this value is the start time for the 2. Arrivals defined through an external arrival
first cycle). ProModel evaluates this field only at file will be appended to the arrival list. There-
the beginning of the simulation. fore, if an external arrival file is the only source
Occurrences The number of times per simula- of arrivals, the Arrival edit table may be left
tion run that ProModel will generate arrivals (1 - blank. See the section on External Files for more
999999). Entering the reserved word INFINITE information on arrival files.
(abbreviated INF) will cause ProModel to send 3. If the capacity of the location is insufficient to
the specified number of arrivals at every arrival hold all the arriving entities, the excess entities
time without limit. This value may be any expres- are destroyed. Therefore, the arrival location
sion and is evaluated only at the beginning of the should have a capacity at least equal to the “Qty
simulation. If an arrival cycle is used, this is the each” in the Arrivals edit table. If more entities
number of times to repeat the cycle. are scheduled into the system than are exiting,
Frequency The inter-arrival time or time the arrival location may not have enough capac-
between arrivals. Any valid expression may be ity to handle all the arrivals.
entered here except for attributes and non-general
system functions. If an arrival cycle was entered
for the arrival quantity, this is the time between
the start of each cycle. This field is evaluated Defining Arrivals
throughout the simulation run and will change if
Arrivals may be defined graphically by using the
the result of the expression changes.
tools in the Tools window, or by manually enter-
Logic This field defines any optional arrival ing the arrival information directly in the Arrivals
logic, consisting of one or more general state- edit table.
ments, to be executed by each entity upon its
arrival (e.g., assigning attribute values to entities How to define arrivals graphically:
as they arrive). Double-click inside this field or
click the logic button at the top of the column to 1. Select Arrivals from the Build menu.
define logic for an arrival.
ProModel 165
User Guide

2. Select the desired entity from the Tools win- Independent Arrivals
dow.
An independent arrival is any arrival assigned 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 arriv-
als, remember that simulation can model only
predefined 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.
3. Click in the layout window at the location
where the entity is to arrive. (You may need When defining independent arrivals, you may:
to scroll through the layout to bring the
•Define them by elapsed time, day and time,
desired location into view.)
or calendar date.
4. Enter the specifications for the arrival •Assign them to occur at fixed intervals (e.g.,
record (e.g., arrival quantity and frequency). interviews scheduled every fifteen min-
utes).

How to define arrivals manually: Please note

1. Select Arrivals from the Build menu. When you define independent arrivals as inter-
vals, the next arrival time is independent of the
2. Enter the Entity, Location, and Quantity
previous arrival. For example, applicants will
through either the keyboard or by clicking on
the respective heading buttons and choos- arrive for appointments based on the clock
ing the proper information. time—not the time elapsed since the last arrival.
3. Enter the First Time, Occurrences, and Fre-
quency using either the keyboard or the
statement builder (accessed by right clicking
•Allow a positive or negative offset to adjust
inside the desired field).
the scheduled time of arrival (e.g., appli-
4. Enter the time of the first arrival by clicking cants must arrive at least ten minutes prior
on the First Time button. (See “Independent to their interviews).
Arrivals” on page 165 for more information on
•Define a distribution to allow variability
the First Time dialog.)
from the adjusted arrival time.
5. Click on the Logic or Notes heading button •Allow the possibility that an entity will not
to enter desired logic or notes.
arrive at all.
•Define specific appointment types for only
certain resources or resource types.
166 Chapter 5:
Arrivals

How to define independent arriv- and time or calendar date and click the Edit
als: Arrival Time button.

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 indepen-
dent arrival to appear.
4. Click on the Qty Each button and enter 6. In the offset field, enter any offset you wish
the number of entities to arrive at the sched- to apply to the arrival time. This will direct
uled time. To model no shows, enter the incoming appointments to arrive earlier (or
expression “Rand(1) + <probability of show- later) than scheduled. For example, if job
ing>”. For example, if only 90% of applicants applicants are to arrive 10 minutes prior to the
show up for scheduled interviews, enter time of their appointment, enter “-10”
“Rand(1) + .9”
Offset (-10)
5. Click on the First Time button to open the
{
dialog used to define the independent arrival
time for the entity. If you define a block of Arrival Appointment
identical appointments occurring at equal Time Time
intervals, this is the time of the first appoint- 9:50 AM 10:00 AM
ment in the block. (You may enter the arrival
time by elapsed time—since the start of the 7. In the variation and offset fields of the First
simulation—by a weekday and time, or by time dialog, enter any optional distribution to
calendar date.) define the variation from the adjusted arrival
time. Generally, to prevent the arrival from
Please note being unrealistically late, you should use a
doubly-bound distribution (i.e., uniform, nor-
mal, triangular, or beta). The triangular and
The arrival time must match the time units
selected for the simulation run-length. If you
defined the elapsed time by calendar date, you
must also define the simulation length by calen-
dar date. To edit arrival times, select either day
ProModel 167
User Guide

beta distributions provide the most realistic The samples have different processing times
variation. depending on the test performed. To differentiate
between the different types of samples, we assign
Variation an entity attribute called Sample_Type to the
samples. We define a discrete, non-cumulative
Arrival Appointment user distribution called Test1 with the following
Time Time information:
9:50 AM 10:00 AM The arrivals logic for the entity called Test1 is as
follows:
8. In the Occurrences field of the arrivals edit
table, enter the number of times to repeat
this appointment definition. (Enter 1 if it will
occur only once.)

9. If the number of occurrences you entered


is greater than zero, enter a time interval in
the frequency field. ProModel assumes this
interval to be fixed for each occurrence (if
you enter an expression, ProModel evaluates
it only once and applies it to each occur-
rence). The distribution defined in the First
Arrival dialog applies it to each occurrence.
10. In the Logic field of the arrivals edit table,
enter any attribute 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 helpful if
you define these attributes beforehand.

Arrival Logic
Arrival Logic allows you to perform certain logic
as an entity enters the system and is used prima-
rily for assigning initial entity attribute values.
Suppose you process three different types of sam-
ples at an inspection station and each sample
takes either 8, 10, or 12 minutes to test. Fifty per-
cent of the samples take 8 minutes to test, 35%
take 10 minutes, and 15% take 12 minutes.
168 Chapter 5:
Shifts & Breaks

Shifts & Breaks Shift Editor


Weekly shifts and breaks for locations and The Shift editor window consists of a menu bar,
resources are defined using the Shift editor and Shift and Break mode buttons, time control but-
may start and end at any minute of the day. Shifts tons, and a grid representing one week of time.
and breaks are defined by selecting blocks on a
grid divided into days and hours. Once a weekly
shift and break schedule have been defined, it
may be saved in a shift file with an SFT exten-
sion.

The remainder of this section describes the Shift


Editor menus and the following procedures:
•Drawing a Block of Time for a Shift or
Break
•Selecting a Block
•Resizing a Block
•Editing the Begin or End Time
•Deleting a Block
•Duplicating a Specific Day’s Shift
•Customizing Shift and Break Colors

Shift Editor Menus


How to define a shift: The menus used in the Shift editor are accessible
from the menu bar at the top of the editor and
1. Select Shifts from the Build menu. include the following:
2. Select Define from the submenu. File For opening and saving shift files.

Edit For deleting unwanted shift and break


blocks. You may also delete or duplicate a spe-
cific day of the shift. If you delete a shift, the shift
as well as the breaks in the shift are deleted.
Options For customizing the colors represent-
ing shifts and breaks.
ProModel 169
User Guide

Drawing a Shift or Break Block How to select an existing block:


When drawing a shift or break block, you must
be sure to follow these rules: • Click on the block. (A border appears to
show that the block has been selected.)
•Shift blocks may not overlap other shift
blocks.
•Break blocks may only be drawn on top of
shift blocks. How to deselect a block:
•Break blocks may not overlap or be adjacent
to other break blocks. • Click on the selected block or click on the
white area of the window.
How to draw a block:

1. Click on the Shift or Break button to desig- Resizing a Block


nate the type of block.
2. Click and begin dragging the mouse from How to resize a block:
the day and time on the grid the block should
begin.
1. Select the block.
3. Release the mouse button at the time the
block should end. 2. Dragging the border of the block until the
block is the desired size.
3. Release the mouse button.

If you want to define a block more precisely than


the grid allows, see Editing the Begin or End
Time below. Editing the Begin or End Time
Time blocks for a shift may be created in one
Please note minute intervals. It is difficult to graphically
define a shift this precise, so there is the option to
If the block you draw is invalid, it will not appear edit the begin or end time of a shift numerically.
on the time grid.
How to edit a block's begin or end
time:
Selecting a Block
1. Select the block.
To edit an existing block, you must first select it.
2. Adjust the begin or end time accordingly
using the buttons at the bottom of the screen.
3. Click on the Update button.
170 Chapter 5:
Shifts & Breaks

Deleting a Block block for Tuesday, the editor will display


“Duplicate Tuesday” in the Edit Menu.
There are three ways to delete a block. Use the
3. In the shift schedule, click the mouse on
one easiest for you.
the day you wish to copy the shift block to.

How to delete a block:

• Select a block and choose the Delete Customizing Shift and Break
option from the Edit menu. Colors
The colors that represent shifts and breaks can be
or... customized.

How to change the color for shifts


• Select a block and press the Delete key on or breaks:
the keyboard.

1. Choose Colors under the Options menu.


or... The colors dialog box will appear.

• Select a block and size it down until the


highlight box is gone.

Duplicating a Specific Day Shift


In many instances, the shift schedule for a spe-
cific day of the week is identical to shift sched-
ules for other days of the week. Rather than
creating the same shift block for several days of
the week, it is possible to duplicate one day's shift
block to another day of the week.

How to duplicate a shift block


from one day to another day: 2. Click on the Shift or Break button.
3. Click on the desired color.
1. Select any shift or break segment for the 4. Click OK.
day you wish to duplicate.
2. Select Duplicate from the Edit menu. The
day of the week you have selected to dupli-
cate is displayed in the Edit menu of the shift
editor. For example, if you selected the shift
ProModel 171
User Guide

Shift Assignments Assigning Shifts


The Shift Assignment module allows you to ProModel allows you to can select multiple loca-
model everyday, real-life situations involving tions and resources and assign them to a shift in
scheduling and availability issues, and you can one record. Plus, you can:
easily define logic to control the way your model •assign a location or resource to multiple shift
handles these problems. files with a start time for each shift,
If you have an employee that works a split shift, •define off-shift and break priorities, and
assign two shifts to the resource with the corre- •create off-shift and break logic.
sponding start times. If you have a processing The Shift Assignments module allows you to
location that can only be used during specifically schedule the availability of resources and loca-
scheduled hours, set up a separate shift for that tions based on shifts and work breaks defined in
location. the shift editor. When a location or resource goes
You may have an office or some other operation off shift or on break, it is off-line or off-duty and
just starting up, and you need to run a specific is reported in the output statistics as non-sched-
shift for the first week and another for two more uled time rather than downtime.
weeks before going to your full capacity shift The off-shift and break logic are optional and
schedule. Simply set up three shifts and assign allow you to control more precisely when a
them all to the office in one step, indicating the resource or location may go off shift, on break,
appropriate start times for each. and how long before it becomes available again.
If you want to establish a controlled location
gateway: Among fulfilling other duties, your
employee needs to begin doing something (pro-
cessing a certain entity at a certain location) at a
certain time, so you set up a queue location, a
gate location (with a capacity of one), and a pro-
cessing location. Assign a shift to the gate loca-
tion so it will come on line at the designated 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 many ways to use shift assignments
and shift logic to solve any number of problems
in creating a valid model. This chapter explores
the features and functionality of the Shift Assign-
ments module, including statements and func-
tions for shift and break logic. When you select Shifts from the Build menu, two
options are displayed: Define and Assign. You
must define a shift before you can assign a
resource or location to it.
172 Chapter 5:
Shifts & Breaks

How to assign locations and also selects or removes it. Click OK when fin-
ished.
resources to shifts:

1. Select Shifts from the Build menu, then


click on Assign. ProModel displays the Shift
Assignments edit window shown below.

2. Select Locations - Click on the Locations


button 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 loca- 4. Units Enter the specific units of the
tion also selects or removes it. Click OK when selected resource to be assigned to the shift.
finished. You may assign one, several, or all units of a
resource to a shift. You can also use a macro
to specify the units. If left blank, ProModel
assigns the default of All units to the shift.
1,3 Units 1 and 3 only

1-3,5 Units 1 through 3 and 5 only

All All units of the resource

None You may use none to indicate that no


unit will adopt this shift. This is useful in
creating a run-time interface. By using a
macro to represent the number of units, the
3. Select Resources - Click on the Resources user may select none as an option.
button to display the Select Resources dialog Macro The name of a run-time interface
(shown next). Click on a resource and use the
macro that allows the user to define the units
buttons to select or remove it from the Shift
Resources list. Double-clicking on a resource
to be affected by the shift.
5. Select Shift Files - Click the Shift Files button
to display the Select Shift Files dialog (shown
next). Click on the Add button to display the
ProModel 173
User Guide

File Open dialog and select the shift files you resource or location back on line. You can
want to use in the model. also use macros to specify priorities.

6. Define Start Times - Enter the start time for


each of the selected shift files. The value will
be interpreted according to the time units
specified in the General Information dialog
unless a unit label is entered after the value
(e.g., 10 hr). You can also use a macro to
specify the start times. If the Start time is left
blank, the shift will begin at the start of the These priorities follow standard ProModel prior-
simulation. All shifts specified apply to the ity level and preemption rules. (See “Locations”
locations and resources selected for these
on page 96, “Entities” on page 118, and
shifts in the Shift Assignment record.
“Resources” on page 132).
During the simulation, the shift with the earliest Priority for Ending Shift This is the priority for
start time remains in effect for the locations regularly ending the shift. An entity or downtime
and resources listed until the next start time must have a higher priority level to prevent this
encountered activates a new shift.
location or resource from going off shift at the
7. Define Priorities - Click on the Priorities but- preset time.
ton. The Priorities button allows you to enter
the priorities for going off line due to a break Off Shift Priority This is the priority for the loca-
or end-of-shift as well as the priorities of the tion or resource to stay off shift. In other words,
off-line state in the event that some other an entity or downtime must have a higher priority
activity attempts to bring a particular level to bring this location or resource back on
line before the preset time.
Priority for Starting Break This is the priority
for going on break. An entity or downtime must
have a higher priority level to prevent this loca-
tion or resource from going on break at the preset
time.
Break Priority This is the priority for staying on
break during the break period. In other words, an
entity or downtime must have a higher priority
level to bring this location or resource back on
line before the end of the preset break.
174 Chapter 5:
Shifts & Breaks

Shift & Break Logic How to determine the sequence


Shift and break logic are optional and are defined of events
in four distinct logic windows, each executed in a
specific sequence throughout the simulation run. 1. When a location or resource is scheduled
You can define logic to control how resources to go off line due to a break or the end of a
and locations go off line and what happens once shift, the pre-logic for that particular location
or resource is executed.
they are off-line.
2. After executing the pre-logic, which may
To define shift or break logic, click on the Logic contain conditional (WAIT UNTIL) or time
button to display a submenu of four events asso- (WAIT) delays, the location or resource is
ciated with shifts for which logic may be defined. taken off line, assuming it is either available or
Selecting an event from the submenu displays a the priority is high enough for preemption.
standard logic window. You can enter separate
3. At the instant the location or resource is
logic for each of these four events to be executed taken off line, the Off-Shift or Break logic is
when the event occurs. See the following discus- executed.
sion, Sequence of Events.
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
You may want to use the Logic Builder to help
you enter the logic. Just click on the Build button
in the logic window. If the off-shift and break nodes are not specified
in the Resource Specs dialog, the resource will
Pre-Off Shift or Pre-Break Logic Executed stay at the current node. If no resources or loca-
whenever the location or resource is scheduled to tions are assigned to a shift, the shift is ignored.
go off shift or on break. This occurs before the
location or resource is checked for availability, so
it is executed regardless of availability. This logic
may be used to check certain conditions before Functions and Statements
actually taking the resource or location off line.
The logic is executed for each resource and loca- ProModel uses several functions and statements
tion listed as members for this shift assignment specifically for shift and break logic: SKIP, PRI-
record. This allows some members to be taken ORITY, DTLEFT(), FORLOCATION(), and
off line while others may be forced to wait. (Pre- FORRESOURCE(). Following is a brief descrip-
off shift and pre-break logic may be referred to in tion of each. For more details, see “Statements
this manual as pre-logic when speaking of either and Functions” on page 439.
one.) SKIP If used in pre-logic, it causes the off-shift
Off Shift & Break Logic Executed at the instant or break time (including any off-shift or break
the location or resource actually goes off line. logic) to be skipped so a location or resource
never goes off line. If used in the off-shift or
break logic, it causes the off-line time defined in
ProModel 175
User Guide

the shift editor to be skipped. This allows you to Pre-off shift logic
specify a WAIT statement for the off-line time
and SKIP the off-line time defined in the shift IF FORRESOURCE() THEN
editor.
BEGIN
PRIORITY This statement provides an alternative
IF RESOURCE() = Loan_Officer THEN
way to specify off-shift or break priorities. It also
allows the priority to be changed after some time BEGIN
being off-shift or on break. If the priority is WAIT UNTIL Applications = 0
changed to a value lower than the current value,
END
the system will check to see if any preemption
may occur at that time. This statement is not END
allowed in off-shift or break pre-start logic.
DTLEFT() This function returns the remaining
off-shift time based on when the location or In addition to these functions, DTDELAY() may
resource is scheduled to go back on shift as also be called at the beginning of the off-shift or
defined in the shift file. It may be used in off-shift break logic to determine how much time has
and break logic to adjust the actual time the loca- elapsed between the time the shift downtime was
tion or resource is off-line. scheduled to start and when it actually started.
The length of the shift downtime defined in the
FORLOCATION() This function returns TRUE if
shift file would be the sum of DTDELAY() and
the member for which the shift or break logic
DTLEFT().
being executed is a location. This may be fol-
lowed by a test using the LOCATION() function
to determine the precise location. Preemptions to Off-Shift or Break
Logic
FORRESOURCE() This function returns TRUE if
the member for which the shift or break logic If off-shift or break logic is defined using WAIT
being executed is a resource. The RESOURCE() or USE statements and happens to get preempted,
function may then be used to determine the pre- the logic will resume one statement after the
cise resource if multiple resources are listed as WAIT or USE statement where it was preempted.
members.
RESOURCE() This returns the name-index num- Shift Downtime Principles
ber of the resource currently processing the off-
shift or break logic.
Locations Shift Downtime
To illustrate how FORLOCATION() and FOR- Principles
RESOURCE() might be used, consider the fol-
lowing example: Suppose you have locations and It is important to understand that when a location
resources as members in a shift file assignment or resource goes off shift, it is essentially down.
and you want to wait until variable Applications We call this type of downtime a shift downtime
is equal to zero before allowing a particular and it is treated slightly differently from other
resource called Loan_Officer to go off shift. You downtimes. Breaks, which are also part of the
would enter the following pre-off shift logic: shift schedule, are treated exactly like clock-
based downtimes. These downtimes are dis-
176 Chapter 5:
Shifts & Breaks

cussed in “Locations” on page 96 and Example 1 (b)


“Resources” on page 132.
Entity Entity
Shift Downtimes for Locations
All location shift downtimes have a default prior- Shift DT
ity of 99, the highest non-preemptive priority
possible. This means that when a location is
scheduled to go off-shift, this downtime will take
priority over all other entities with a priority less Actual DT
Time
than 99 waiting for the location. If the location is
currently in use, shift downtimes allow the cur-
rent entity to complete its process at the location. T1 T2 T3 T4 T5
After the entity is finished, the shift downtime
proceeds as if it started at its scheduled time. This
means that the location becomes available at the Please note
start of the next shift regardless of when it actu-
ally went off shift. This procedure is demon- Since the entity was preempted, the remaining
strated in the following example. time for the entity to be processed at the location
was completed after the location shift downtime
Example 1 (a) was completed.

Entity

Preempting Off-Shift Locations


Shift DT
An off-shift location may be preempted back into
service by an entity. Following the preemption,
the shift downtime will resume for any remaining
Actual DT time before the start of the next shift. The follow-
Time ing example demonstrates this principle.

Example 2
T1 T2 T3 T4
In this example an entity with priority of 200 or
Although the downtime is scheduled to last from greater preempts an off-shift location. The loca-
time T2 to T4, the actual downtime does not tion becomes available to process the entity.
begin until time T3. This is what happens for
both locations and resources currently busy when
the shift downtime is scheduled to occur.
To preempt a location in which an entity is cur-
rently processing, set the priority for going off
shift to a number one level higher than the
entity’s priority.
ProModel 177
User Guide

Once processing is complete, the location returns tion remains off-shift for the total duration of the
to its off-shift status. shift downtime.

Shift DT
Shift DT

DT
Entity

Time
Time

T1 T2 T3 T4
T1 T2 T3 T4

In order for an entity to preempt any location The example above could represent the situation
downtime (shift or otherwise), it must have a pri- where a recurring downtime, such as a lunch or
ority level that is at least 2 levels higher than the dinner break, has been defined for a single loca-
downtime's priority. In this example the location tion that is scheduled to be available for a two-
shift downtime has a priority level of 99 so the shift period. It would be simpler to specify a sin-
entity must have a priority level of 200 or greater gle downtime for lunch and dinner that occurs
to preempt the shift. once every 8 hours continuously than to define
separate downtimes for lunch and dinner. In this
Overlapping Downtimes case the preempting downtime would represent a
meal break occurring while the location was off-
If a preemptive clock downtime occurs during a
shift.
shift downtime, the downtimes simply overlap.

Example 3 Resource Downtime Principles


This example shows the effect of a preemptive Shift Downtimes for Resources
downtime occurring for a location already off-
shift due to a shift downtime. Because location Resource shift downtimes work exactly like loca-
downtimes always overlap, the effect is as if the tion shift downtimes with the exception that if the
preemptive downtime never occurred. The loca- off-shift downtime is preempted by some other
downtime, the original off-shift downtime never
resumes. The following examples show how a
resource that is off shift is affected by a preemp-
tive request by another entity (example 1) and by
downtime preemption (example 2).

Example 1
Suppose a resource, repairman, is off-shift. An
important machine goes down unexpectedly.
Because this machine is a bottleneck in the opera-
178 Chapter 5:
Shifts & Breaks

tion, it is vital to repair the machine as quickly as it would have been had the original shift down-
possible. The repairman is called in and takes 30 time been completed.
minutes to fix the machine. The logic for the
downtime to call him back is “USE Repairman,
Shift
600 FOR 30 min.” This will preempt the shift
downtime and use the repairman to repair the Discontinued
machine even though the repairman is off-shift.
Once the repairman has repaired the machine, he DT
returns to his shift downtime until he is scheduled
to go back on shift. The repairman's shift down- Time
time will end at the originally scheduled time
regardless of the fact it was preempted by a repair
activity. T1 T2 T3 T4

Although in practice, situations like the example


Shift DT
above are unlikely to occur, it is important to
Discontinued understand that the above condition is possible.
Typically, preemptive downtimes are due only to
Task
some type of location or resource failure, in
which case, the downtime occurrence would be
based on usage and not clock time. If a preemp-
Time
tive downtime is based on usage, the situation in
the example above could not occur because the
T1 T2 T3 T4
location or resource would not be in use, and
would not accumulate usage time.
Although the shift downtime is scheduled to last
from time T1 to T4, the actual downtime lasts
from T1 to T2 and then from T3 to T4.

Example 2
This example shows the effect of a preemptive
downtime occurring for a resource already off-
shift due to a shift downtime. Since resource
downtimes are not overlapping, as in the case of
location downtimes, the shift downtime in
progress is discontinued and the preemptive
downtime takes control of the resource because it
has a priority greater than or equal to five-hun-
dred (remember that a downtime priority needs to
be only one level higher than another downtime
priority to preempt it). The effect in this example
is that the total downtime is actually shorter than
ProModel 179
User Guide

General Information General Information Dialog


The General Information dialog box allows you Box
to specify basic information about a model, such
as its name, default time units, default distance
units, and graphic library. You also may specify
the model's initialization and termination logic.
Finally, a notes window is available for specify-
ing particulars of a model, such as the modeler's
name, the revision date, modeling assumptions or
anything else about it.

The fields of the General Information dialog box


are 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 any time value in the
model that does not have an explicitly specified
time unit. The smallest unit of time available in
ProModel is .00001 second and the largest is 1
day.
Distance Units The units in feet or meters for all
distances specified in the model. There is no
practical limit on the size of the model.
Model Notes... Brings up a notes window for
How to open the General Informa- specifying general notes about the model. Notes
tion dialog box: are optional and are for user reference only. An
alternative way to display notes is using a DIS-
• Choose General Information from the Build PLAY statement (see “Display” on page 467) in
menu. the initialization logic.
Graphic Library File Opens a dialog box for
selecting the graphic library file to use with the
open model. Graphics library files have the
extension GLB and are further explained later in
this section.
Initialization Logic Opens the Initialization
Logic window for specifying initialization logic.
180 Chapter 5:
General Information

An asterisk (*) next to the name of the button Termination Logic


means that some initialization logic has been
defined for the model. (See “Initialization Logic” Termination logic allows you to summarize data
or write special statistics to an output file at the
on page 180.)
end of a simulation run as shown below:
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 180.)

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 uses of termination logic include:
•Displaying messages
•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

Although Initialization and Termination logic


Other common uses of initialization logic cannot be tested with the Compile option in the
include: Edit menu, as with Processing or Arrival logic,
•Reading external files the logic can be tested by clicking on the compile
•Displaying messages button in the logic window. ProModel checks all
•Prompting for values
logic automatically upon selecting OK and, if an
error in the logic is found, an error message
•Resetting general read/write files
describing the problem will appear.
•Activating independent subroutines that pro-
cess logic based on a timer. (See “Subrou-
tines” on page 246; also see “Activate” on
page 441).
Execution Time of Initialization
For a discussion of each of the buttons in the Ini- and Termination Logic
tialization Logic window, see “Editing Logic
Windows” on page 78. It is important to understand exactly when initial-
ization and termination logic is executed. When
ProModel 181
User Guide

you select Run from the Simulation menu the fol- into the simulation module. Thus, any variable
lowing things occur in the order listed: figuring into a location's capacity and initialized
in the initialization logic will be initialized too
1. Variables are initialized to the values speci-
late to affect the location's capacity.
fied in the Variables Editor.
2. Macros with a run-time interface are set to Variables which do not figure into a location's
their user-specified value. capacity may be initialized in the Initialization
3. The model is loaded into the simulation Logic without any problem. A variable initialized
module. As the model is loaded, any numeric in the initialization logic could be used as the
expressions used to define such things as “First Time” for an arrival or downtime occur-
location capacities or number of resource rence. This is true because arrivals and downtime
units are evaluated and assigned a numeric occurrences are simulation events, and all initial-
value. ization logic occurs before the first simulation
4. Initialization logic is performed. event.
5. Simulation begins. Initial arrivals and down-
times are scheduled and simulation pro- Graphic Library File
cesses begin.
6. Simulation ends. ProModel allows you to create and store as many
7. Termination logic is performed. graphics libraries as desired. However, only one
8. Statistics are compiled. graphic library may be used for each model. To
copy a graphic from one graphic library to
Logic elements that figure into a model's struc- another model's graphic library, see “Copying a
ture are evaluated only when the model is loaded Graphic from One Library to Another” on
into the simulation module. Those logic elements page 316.
are:
•Simulation warm-up hours How to select the desired graph-
•Simulation run hours ics library:
•Node capacity
•Length of path segments 1. Select Graphic Library File from the Gen-
•Resource units eral Information dialog box.
•Location capacity
•Time and quantity cycle tables
•Queue length
•Conveyor length
•Conveyor speed
For a complete list of when each field is evalu-
ated, see the “Appendix A” on page 587.
Any variables used in an expression that change
any of these logic elements should be initialized
in the Variables Editor or run-time interface and
not in the initialization logic. The model structure 2. Enter the name of the desired graphics
cannot change after the model has been loaded library.
182 Chapter 5:
General Information

3. Select OK.

Please note

Only files with the extension GLB may be used as


graphics libraries. For more information on cre-
ating, merging and saving graphics libraries, see
“Graphic Editor” on page 312.
ProModel 183
User Guide

Cost matically generated during run time about cost


for locations, entities, and resources.
With ProModel’s costing capability, you can
Object Type Use this pull-down menu to define
make decisions about your system on a cost
costing for the components of the selected object
basis. Costing dialogs allow you to monitor costs
type. Object types include locations, resources,
associated with Locations, Entities, and
and entities as shown in the following example.
Resources during a model run and the General
All defined model components of the selected
Statistics Report includes Costing statistics, auto-
type appear in the box below the object type field
matically generated at the start of the simulation.
and ProModel allows you to assign costs to any
of these components.

Locations

Operation Rate This field specifies the cost per


unit of time to process entities at the selected
location. Cost accrues only while an entity exe-
cutes a WAIT or USE statement in operation
How to use cost logic. ProModel accepts expressions in this field
and evaluates them at translation.
• Choose Cost from the Build menu. The
Cost Dialog appears.

Cost Dialog Box


Use the Cost Dialog box to define costs for Loca-
tions, Entities, and Resources. Fields in the Cost
Dialog box vary between Object Types and Pro-
Model evaluates expressions in these fields only
during translation at run time. The General Statis-
tics Report includes statistical information auto-
184 Chapter 5:
Cost

Per With this pull-down menu, you can set the cost applies to the resource only when it returns
time units for the Operation Rate. Time units may to the entity.
be in seconds, minutes, hours, or days as shown
here.

Entities

Resources

Initial Cost This field 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. ProModel
Regular Rate This field specifies the cost per accepts expressions in this field and evaluates
unit of time for a resource used in the model. You them at translation.
can use expressions in this field (evaluated at
translation) to set the rate or change it using Set- Please note
Rate. For more information on the SetRate opera-
tion statement, see “SetRate” on page 556. When you implicitly create new entities through a
Per This pull-down menu allows you to set the
ROUTE statement, ProModel does not add an
time units for the Regular Rate. Times may be in initial cost to the entity. To add an initial cost,
seconds, minutes, hours, or days as shown here. use the INCENTCOST statement. See “IncEnt-
Cost” on page 499 for more information.

Building a Model with Costing


Cost Per Use This field allows you to define the
actual dollar cost accrued each time you use the When you build a model using the costing fea-
resource (i.e., the minimum usage cost). The cost ture, you must first define the locations,
per use updates when you obtain the resource and resources, and entities used in the model. Once
ProModel accepts expressions in this field (eval- you define these model components, you may
uated at translation). assign costing information to them through the
Cost option in the Build menu. To collect costing
Please note information about your model, uncheck the dis-
able costing box from the simulation options dia-
log of the simulation menu. By default, ProModel
Since ProModel counts a preemption as a use, if
you preempt a resource from an entity, the usage
ProModel 185
User Guide

disables costing and sets all defaults to zero. See both entities. If the preempting entity
“Enable or Disable Costing” on page 187. obtains a resource, the preempted entity
will not record the resource costs during
the preemption period.
•If an entity is at a location when a preemp-
tive downtime occurs, the entity records
the downtime as part of its operational
costs. 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.
•If an entity’s resource has a downtime which
requires the use of another resource, the
entity will not record the second
resource’s cost. However, the location will
record the extra resource’s cost.

Join/Load
•Joined entities add their costs to their base
entities, but not their time statistics.
•Loaded entities do not add their costs or time
statistics to their base entities.
Please note •When an UNLOAD occurs, ProModel
divides all costs accrued by a loaded entity
The following scenarios assume you defined costs among the unloaded entities. ProModel
for all model components. adds all other entity statistics calculated
during the loaded period to each of the
unloaded entities.
•Entities leaving the system loaded onto other
entities do NOT report their individual
Preemption/Downtime costs, but do report all other statistics. To
•If you preempt an entity’s resource, an addi- get the cost of each entity, you must
tional cost per use will apply once you re- unload the entities before they exit.
acquire the resource. While waiting for the
resource to return, the entity does not
record operation or resource costs. Combine/Group
•If an entity preempts another entity, the pre- •Combined entities add their costs to the
empted entity continues to record opera- resultant entity, but not their time statis-
tion time during the entire preemption tics. The resultant entity begins with fresh
period. While the preempting and pre- time statistics.
empted entities are simultaneously at a •Grouped entities do not add their costs or
location, the location records the cost for statistics to the group shell (a temporary
186 Chapter 5:
Cost

entity representing grouped entities that Costing Output Statistics


starts with cost and time statistics of zero).
•When an UNGROUP occurs, ProModel ProModel collects costing statistics only if you
divides all costs accrued by a grouped uncheck the Disable Cost Statistics option in the
entity among the ungrouped entities. Pro- Simulation Options menu (see “Enable or Dis-
Model copies all other entity statistics cal- able Costing” on page 187). Included in the Gen-
culated during the grouped period to each eral Statistics Report, ProModel calculates
of the ungrouped entities. costing statistics.
•Entities leaving the system grouped with
other entities do NOT report their individ- Locations
ual costs, but do report all other statistics. •Operational Cost = (Active Operation Time
To get the cost of each entity, you must * Rate) + (Any IncLocCost)
ungroup the entities before they exit. •% Operational Cost refers to the location’s
percentage of the sum of all operation
costs
Special Cost Handling •Resource Cost = (Utilization * Rate) +
•As soon as you acquire a resource, it begins (Times Used * Cost per use)
to accrue cost.
•Unless obtained in the move logic, Pro- Please note
Model charges the “Cost per use” for a
resource to the location that obtained it. For Resource Cost, Utilization and Times Used
Resources obtained in the move logic do refer to the utilization of a resource while at a
not charge a “per use” cost to any location. location. This applies only to resource use
•ProModel does not charge any resource time through operation logic.
used during move logic to any location.
•ProModel adds initial entity costs defined in
the cost module only as entity costs, not
location costs. •% Resource Cost refers to the location’s per-
•If a location uses a resource during a down- centage of the sum of all resource costs
time, the location accrues that resource’s •Total Cost = (Operation Cost + Resource
cost. Cost)
•The USE statement counts as operation and •% Total Cost refers to location’s percentage
resource cost. of the sum of all location costs
•When you CREATE a new entity, it begins
with new time statistics and an initial cost. Resources
•If you RENAME an entity, previous time •NonUse Cost = (1-% Utilization) * Sched-
statistics and costs continue with the uled Time * Rate
entity. •% NonUse Cost refers to the resource’s per-
•The SPLIT AS statement divides the cost of centage of the sum of all nonuse costs
the original entity between all entities. •Usage Cost = (% Utilization * Scheduled
Each new entity begins with new time sta- Time * Rate) + (Times Used * Cost per
tistics. use)
ProModel 187
User Guide

•% Usage Cost refers to the resource’s per- default time units specified in the General Infor-
centage of the sum of all resource usage mation dialog.
costs
In the above calculations, the rate defined (per
•Total Cost = Usage Cost + NonUse Cost
day, hour, minute, and second) converts to the
•% Total Cost refers to the resource’s per- default time units specified in the General Infor-
centage of the sum of all resource costs mation dialog.

Entities
Please note
• Explicit Exits The number of entities that
have explicitly exited. Whenever an entity
exits the system, it is an explicit exit ProModel does not allow you to generate a Cost-
except in the following cases: ing Graph. However, if you set a variable equal
- When an entity JOINS or COMBINES to GetCost (e.g., Var1=GetCost), you can gener-
with another entity, it implicitly exits the ate a time series graph to track changing entity
system, and is reported as an exit in the costs. See “GetCost()” on page 488 for more
Entity Acitvity report. However, for information.
costing purposes, the entity did not
explicitly exit, but its costing informa-
tion was added to the entity it was
JOINED or COMBINED with. Enable or Disable Costing
- When an entity LOADS or GROUPS
To enable the costing feature, be sure that the
with another entity, and the entire
Disable Cost option in the Simulation Options
LOADED or GROUPED entity exits the
dialog is not checked.
system, the original entity implicitly
exits the system, and is reported as an
exit in the Entity Acitvity report. How-
ever, for costing purposes, the original
entity did not explicitly exit, but its cost-
ing information was added to the entire
load or group.
• Total Cost Dollars Total Cost = cumula-
tive entity cost, or the sum of costs
incurred on all locations the entity passed
through + the sum of all costs incurred by
use of resource + initial cost + any IncEnt-
Cost
• % Total Cost % Total Cost refers to the
entity’s percentage of sum of all entity
costs
In the above calculations, the rate defined (per
day, hour, minute, and second) converts to the
188 Chapter 5:
Tanks

Tanks Please note


Tanks are simply locations to which ProModel When you create the first tank in your model,
associates a level instead of an entity routing. (As ProModel will display a dialog that allows you to
a result, the units and rules fields do not apply to automatically import various subroutines,
tanks.) Using tanks, you can model the continu- arrays, macros, and library graphics specific to
ous flow of liquids and other substances into and tanks. If you do not wish to include these new
out of tanks or similar vessels. Also, when com- items, you may cancel the action.
bined with discrete-event simulation, ProModel’s
continuous modeling capability makes it possible
to model the exchange between continuous mate-
rial and discrete entities (e.g., when you place liq- 3. Enter a capacity (1 to 999999) for the tank
uid into a container). Other uses include in the location capacity field.
modeling high-rate, discrete part manufacturing
4. Define and reference any necessary tank
systems. control subroutines.

The Tank Submodel


In order to function properly, all tank models
How to edit a tank or a gauge
should include the tank submodel (TANK-
SUB.MOD). The tank submodel contains impor-
1. Double click on the tank or gauge (or right
tant subroutines and data elements (arrays and
click and select Edit Graphic).
macros) used to simplify tank modeling. Each of
these subroutines and data elements has a 2. From the dialog that appears, make the
“Tank_” prefix to help identify it and to prevent appropriate changes.
any accidental name duplication. 3. Click OK.

Please note

All user-defined model elements should begin


with something other than “Tank_”.

How to define a tank

1. Select the gauge/tank symbol from the


Location Graphics window.
2. Click on the layout window where you wish
to place the tank and select Create Tank
Location from the menu that appears. Pro-
Model places the tank on the layout.
ProModel 189
User Guide

How to change between a tank the Subroutine module. To call these subroutines
and a gauge and operate them independently in the model, use
the ACTIVATE statement. For examples of how
to use these subroutines, see the discussion at the
• Double click on the tank or gauge and
check or uncheck the tank option. end of this section. To model tanks effectively,
you must understand the following concepts.

or... Tank Levels


ProModel records tank levels in a pre-defined
array called Tank_Level where each element of
• Right click on the tank or gauge and select
Change Tank to Gauge or Change Gauge to the array corresponds to each tank location in the
Tank. location list. For example, the level of TankA is
the value of Tank_Level [TankA]. If TankA were
the third location in the location list, you could
also reference the level of TankA with
In addition to defining a tank graphic, you may Tank_Level[3]. For best results, you should con-
add labels and other figures to a tank. For exam- trol all tank levels using only the pre-defined tank
ple, you can add a counter to digitally display the filling and emptying subroutines rather than
fill level of the tank (ProModel rounds the value change the Tank_Level array values directly.
displayed to the nearest integer). The following This will prevent overfilling or overdrawing and
are examples of how you can use tanks in Pro- will accurately gather statistics for each tank. For
Model. example, calling Tank_Fill (TankA, 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 excess material and, as a result, an
error message will occur if the tank reaches
capacity before the specified amount fills into the
tank.

Basic Concepts
Since tanks do not process discrete entities, you
may not define routings to or from tanks. To con-
trol a tank level, ProModel provides predefined
subroutines that fill, empty, and transfer tank
contents. To monitor tank levels and initiate
flows, you must define control subroutines using
190 Chapter 5:
Tanks

The Flow Time Step flow. The units of flow, however, may change
when you move material from one tank to
To model continuous flow, ProModel uses a another (e.g., pounds of dry material may transfer
Tank_TimeStep macro. This macro is the time into a tank containing gallons of liquid).
step used when filling/emptying tanks and is an
RTI (run-time interface) parameter. Initially, Pro- To specify a variable rate of flow that changes
Model sets this value to .2 minutes. If you wish to dynamically with each time step, pass a value of
use a different value for the time step, you may 0. This signals the subroutine to call the
change it temporarily (for a particular model) Tank_Rate subroutine with each time step. To
through the Simulation/Parameters menu option, return the desired rate value for each time step
or permanently by changing the macro itself. The when you use a variable rate, you must modify
larger the time step, the longer the interval the Tank_Rate subroutine appropriately.
between filling and emptying (which speeds up
the simulation). For example, suppose you set the Tank States
time step to .1 minutes. If a tank empties at a rate
of 60 gpm, the simulation would actually empty Like other model elements, tanks use states to
the tank by a discrete amount of 6 gallons every test and track statistics. ProModel automatically
.1 minutes. When filling or emptying a tank, if sets these states when you use the predefined tank
the remaining quantity doesn't require the full subroutines to control the tank. The following are
time step, ProModel reduces the time step using a defined states:
linear interpolation. Tank_Idle The tank is empty and not in use. Set
automatically when a tank empties and at the end
Please note of a Tank_DoPrep or Tank_GoDown subroutine.
Tank_Operation The tank is active (e.g., mix-
The only adverse effect of using a large time step ing, reacting, heating). Set automatically when
is that any WAIT UNTIL statement or other test the model calls the Tank_DoOperation subrou-
based on the Tank_Level array may be off by as tine.
much as the flow amount for the time step. For
example, if the time step is .5 minutes and the rate Tank_Setup The tank is cleaning or preparing
of flow is 60 gpm, the level will change in 30 gal- for future use. Set automatically whenever you
lon increments. This means that the tank will not call the Tank_Prep subroutine.
satisfy the statement “WAIT UNTIL Tank_Filling The tank is filling. Set automati-
Tank_Level[TankA]>=31” until the level cally whenever you fill the tank.
reaches 60.
Tank_Emptying The tank is emptying. Set auto-
matically whenever you empty the tank.
Tank_Blocked The tank is full and ready to
Rate of Flow transfer. Set automatically when the tank fills to
To use flow rates properly, you must define all capacity.
rates in terms of units (i.e., gallons, pounds) per Tank_Down The tank is down. Set automati-
time unit defined in the General Information dia- cally whenever you call Tank_GoDown.
log. Whenever you call one of the empty, fill, or
transfer subroutines, you must specify the rate of
ProModel 191
User Guide

Tank_ScheduledDown Similar to the SKIP example


Tank_Down state, except statistics are not col-
lected. Tank_GoDownSched (<TankID>, DTLeft())
While ProModel sets these states automatically, SKIP
you may change the state of the tank at any time
by calling the Tank_SetState subroutine. Pro-
Model records statistics for these states in the
ProModel temporarily suspends tank flow while
output report under Locations. Since a tank may
a tank is down or off shift.
fill and empty simultaneously, the output report
combines Tank_Filling with Tank_Emptying and
reports it all as waiting time. Tank Logic Builder
An expanded capability within ProModel, the
Over Filling/Emptying Tanks tank logic builder provides you with what you
When using the predefined subroutines to fill, need to model complex tank and fluid system
empty, or transfer from one tank to another, you operations. The logic builder contains all avail-
may accidentally attempt to over fill or over able tank subroutines and provides you with a
empty a tank. To prevent these situations, you description of the components required to use
have the option to terminate the fill/empty sub- each subroutine.
routine or suspend further filling/emptying until
the tank reaches a resume level. If you terminate
the subroutine, ProModel temporarily stores the
un-filled or un-emptied quantity for immediate
access in the global variable, Tank_QtyLeft.

Tank Downtimes
For Tanks, you must define downtimes and shifts
in a special way. First, you may define only clock
downtimes for tanks. Second, when defining a
clock downtime for a tank, use the
Tank_GoDown subroutine (page 201) in the
Downtime Logic field instead of just a WAIT
statement. This sets the state of the tank to
Tank_Down and gathers the appropriate statis-
tics. Third, when defining a shift for a tank, you
should call the Tank_GoDownSched subroutine
in the off-shift logic using the DTLeft() function
as the time parameter. A SKIP statement should
follow this function as shown next.
192 Chapter 5:
Tanks

Please note

The subroutine logic is not accessible until you


define your first tank location—when you define
the tank location, ProModel loads the tank sub-
model.

How to access the Logic Builder:

• Click the right mouse button in the logic


window or expression edit field. Or click the
Build button on the logic window’s toolbar.

For more information about the Logic Builder,


see “Logic Builder” on page 293.
ProModel 193
User Guide

Pre-defined Tank Subrou- TANK_FILL (HoldingTank, 2000, 75, 1500)

tines
Tank_Cap .............................................. page 200 Description
Tank_Dec............................................... page 198 Fills a tank using a specific quantity and rate. The
Tank_DoOperation ............................... page 201 default tank state sets to Tank_Filling, then to
Tank_Blocked if the tank becomes full.
Tank_DoPrep ......................................... page 203
Use Tank_Fill when the source of the material is
Tank_Empty ........................................... page 194 not another tank, but an arriving entity or a
Tank_FallTrigger .................................... page 200 source that is not part of the model.

Tank_Fill ................................................. page 193


Components
Tank_FreeCap ....................................... page 200
<Tank ID>
Tank_GoDown....................................... page 201
The tank name or location index number.
Tank_GoDownSched............................ page 202
<Fill Quantity>
Tank_Inc ................................................ page 198
The number of units (gallons, pounds) to fill into the
Tank_Rate .............................................. page 207 tank. To fill the tank to capacity, enter
Tank_Cap(<Tank ID>).
Tank_RiseTrigger ................................... page 199
<Fill Rate>
Tank_SelectInput .................................. page 206
The rate in units (gallons, pounds) per time unit
Tank_SelectOutput ............................... page 204 defined in the General Information dialog. To
instantly increase the level of a tank, use the Tank_Inc
Tank_SetLevel ....................................... page 197
subroutine. To initialize the level of a tank (e.g., at the
Tank_SetState ........................................ page 204 start of the simulation), use the Tank_SetLevel subrou-
tine. To use a dynamically calculated rate in the
Tank_Transfer ......................................... page 195 Tank_Rate subroutine, enter 0.
Tank_TransferDownTo ........................... page 196 <Resume level>
Tank_TransferUpTo ................................ page 195 If the tank level reaches capacity before you add the
specified quantity, the tank must drop to the resume
Tank_UpdateStats ................................. page 206 level before it can continue filling. To terminate filling
if the tank reaches capacity, enter Tank_Stop as the
resume level. A value of 0 causes an error to occur if
Tank_Fill the tank becomes full before reaching the fill quantity.

Syntax samples
Example
TANK_FILL (<Tank ID>, <Fill Quantity>, <Fill
Rate>, <Resume Level>)
194 Chapter 5:
Pre-defined Tank Subroutines

A tanker arrives and fills a storage tank by the The tank name or location index number.
quantity stored in the tanker’s attribute,
<Empty Quantity>
Load_Qty. The rate of fill is 80 gpm and, if the
tank fills to capacity before the tanker dis- The number of units (gallons, pounds) to empty. To
charges the entire quantity, the level of the empty a tank completely of its current contents, enter
storage tank must drop to 12,000 gallons Tank_Level [<Tank ID>].
before it resumes filling. To represent this, <Empty Rate>
enter the following statement in the opera-
tion logic for the tanker at the unloading sta- The rate in units (gallons, pounds) per time unit
tion. defined in the General Information dialog. To instantly
decrease the level of a tank, use the Tank_Dec subrou-
Tank_Fill(StorageTank, Load_Qty, 80, 12000) tine. To specify a dynamically calculated rate using the
Tank_Rate subroutine, enter 0.
<Resume level>
See Also If the tank level drops to 0 before you empty the speci-
fied quantity, the tank must rise to the resume level
“Filling from an Entity” on page 210 and “Initial-
before continuing to empty. To terminate emptying if
izing and Replenishing Supply Tanks” on the level ever drops to 0, enter Tank_Stop. A value of 0
page 210. causes an error to occur if the tank becomes empty
before removing the specified quantity.
Tank_Empty
Example
Syntax samples When a chemical tank, ChemTank, is full
(state is Tank_Blocked), workers pump its con-
TANK_EMPTY (<Tank ID>, <Empty Quantity>, tents into a rail car at a rate of 60 gpm for
<Empty Rate>, <Resume Level>) transportation to another facility. Since rail
TANK_EMPTY (TankB, 2000, 40, 0) cars are always available and the delivery
activity is not of interest, it is not necessary to
model the rail cars explicitly. Instead, activate
a subroutine in the initialization logic with the
following statement:
Description
Tank_Loop //logic repeats continuously
Empties a tank by a specified quantity and rate.
The state is set to Tank_Emptying, then to {
Tank_Idle if the tank becomes empty. WAIT UNTIL
Tank_State[ChemTank]=Tank_Blocked
Use Tank_Empty when the destination is not
another tank, but an arriving entity or a source Tank_Fill(ChemTank, Tank_Level[ChemTank],
that is not part of the model. 60, 0)
}

Components

<Tank ID>
ProModel 195
User Guide

See Also The rate in units (gallons, pounds) per time unit
defined out of the FROM tank. To use a dynamically
“Emptying to an Entity” on page 211. calculated rate in the Tank_Rate subroutine, enter 0.
<TO Rate>
Tank_Transfer The rate in units (gallons, pounds) per time unit
defined in the General Information dialog into the TO
Syntax samples tank. Use 0 if same as the FROM rate. (The TO rate is
automatically the same as the FROM rate if you add 0
as the FROM rate.)
TANK_TRANSFER (<FROM Tank ID>, <TO Tank
ID>, <Transfer Quantity>, <FROM Rate>, <TO <Resume level>
Rate>, <Resume Level>) If the TO tank reaches capacity before the specified
TANK_TRANSFER (Tank1, Tank2, 2000, 100, 0, quantity transfers, the TO tank must drop to the resume
0) level before continuing with the transfer. To terminate
transferring when the TO tank reaches capacity, enter
Tank_Stop. A value of 0 causes an error to occur if the
tank becomes empty before transferring the specified
Description quantity.

Transfers a specified quantity from one tank to


Example
another. ProModel sets the state of the FROM
tank to Tank_Emptying and the TO tank to
When a mixing tank is ready to mix a new
Tank_Filling. If the FROM tank becomes empty,
batch of material, 10,000 gallons of water
its state becomes Tank_Idle. If the TO tank
must first transfer from a water supply tank at
becomes full, its state becomes Tank_Blocked. a rate of 100 gpm. The following logic repre-
Otherwise, the states remain unchanged. sents this action:
Use Tank_Transfer when you want to transfer a Tank_Transfer(WaterTank, MixingTank, 10000,
specific quantity from one tank to another. 100, 0, 0)

Components
See Also
<FROM Tank ID>
“Tank Transfers” on page 212.
The name or location index number of the FROM tank.
<TO Tank ID>
The name or location index number of the TO tank.
Tank_TransferUpTo
<Transfer Quantity>
Syntax samples
The number of units (gallons, pounds) to transfer. To
transfer the entire contents of a tank, enter Tank_Level
[<FROM Tank ID>]. TANK_TRANSFERUPTO (<FROM Tank ID>, <TO
Tank ID>, <TO Level >, <FROM Rate>, <TO
<FROM Rate> Rate>)
196 Chapter 5:
Pre-defined Tank Subroutines

TANK_TRANSFERUPTO (Tank1, Tank2, 8500, 75, Example


0)
An in-process tank supplies several down-
stream tanks and must maintain a maximum
level of 20,000 gallons. Whenever the in-pro-
Description cess tank drops below 5,000 gallons, a supply
Similar to Tank_Transfer except that tank refills the tank at a rate of 100 gpm. To
Tank_TransferUpTo does NOT terminate a trans- model this, define an activated subroutine for
the supply tank using the following logic:
fer based on the transferred quantity, rather when
the TO tank level rises to a certain point. If the Tank_Loop //logic repeats continuously
tank empties before reaching the TO level, Pro- {
Model suspends the transfer until capacity
WAIT UNTIL Tank_Level[InProcessTank]<=5000
becomes available.
Tank_TransferUpTo(SupplyTank, InProc-
Use Tank_TransferUpTo when you want to raise essTank, 20000, 100, 0)
the level of a tank to a certain value but are not
certain of the quantity needed to reach that level }
(e.g., the tank is draining at the same time you are
trying to fill it).
Tank_TransferDownTo
Components

<FROM Tank ID> Syntax samples


The name or location index number of the FROM tank.
TANK_TRANSFERDOWNTO (<FROM Tank ID>,
<TO Tank ID> <TO Tank ID>, <TO Level >, <FROM Rate>, <TO
The name or location index number of the TO tank. Rate>)

<TO Level> TANK_TRANSFERDOWNTO (Tank1, Tank2, 1000,


80, 0)
Transfer until the TO tank reaches this level.
<FROM Rate>
The rate in units (gallons, pounds) per time unit
Description
defined in the General Information dialog out of the
FROM tank. To use a dynamically calculated rate in Similar to Tank_Transfer except that
the Tank_Rate subroutine, enter 0. Tank_TransferDownTo terminates the transfer
<TO Rate> when the FROM tank level lowers to a desig-
nated level instead of lowering by a specific
The rate in units (gallons, pounds) per time unit
quantity. If the TO tank becomes full, ProModel
defined in the General Information dialog into the TO
tank. Use 0 if the TO rate is the same as the FROM suspends the transfer until capacity becomes
rate. available.
Use Tank_TransferDownTo when you want to
lower the level of a tank to a specific value but
ProModel 197
User Guide

you are not certain how much to empty in order Tank_TransferDownTo(TankA, TankB, 200, 50,
to drop to that level (e.g., the tank may fill at the 0)
same time it empties). }

Components

<FROM Tank ID> See Also


The name or location index number of the FROM tank. “Split Transfers” on page 214.
<TO Tank ID>
The name or location index number of the TO tank. Tank_SetLevel
<TO Level>
Transfer until the FROM tank drops to this level.
Syntax samples
<FROM Rate> TANK_SETLEVEL (<Tank ID>, <Quantity>)
The rate in units (gallons, pounds) per time unit TANK_SETLEVEL (TankA, 1500)
defined in the General Information dialog out of the
FROM tank. To use a dynamically calculated rate in
the Tank_Rate subroutine, enter 0.
<TO Rate> Description
The rate in units (gallons, pounds) per time unit Instantly sets the level of a tank to a specified
defined in the General Information dialog into the TO quantity. If the quantity is negative or larger than
tank. Use 0 if the TO rate is the same as the FROM
the tank capacity, an error occurs. The tank state
rate.
sets to Tank_Blocked if you set the tank level to
the tank capacity and to Tank_Idle if you set the
tank level to 0. Otherwise, the state remains
Example unchanged.

An in-process tank, TankA, supplies TankB at a Use Tank_SetLevel when you want to initialize a
rate of 50 gpm. TankA must maintain a mini- tank to a specific level.
mum level of 200 gallons to insure against
pump cavitation. When TankA’s level drops Components
to 200 gallons, the tank stops pumping to
TankB until the level of TankA rises above 200
<Tank ID>
gallons. To model this scenario, enter the fol-
lowing logic in the subroutine controlling the The tank name or location index number.
flow from TankA to TankB:
<Quantity>
Tank_Loop //logic repeats continuously
The level at which to set the tank (number of gallons,
{ pounds). To completely fill the tank, enter
Tank_Cap(<Tank Name>).
WAIT UNTIL Tank_Level[TankA]>200
198 Chapter 5:
Pre-defined Tank Subroutines

Example The number of units by which to increment the con-


tents of the tank (gallons, pounds).
When you begin a simulation, you wish to set
the initial level of a supply tank, TankX, to
10,000 gallons. To model this, enter the follow- Example
ing statement in the initialization logic for the
model. Trucks deliver pellets to a holding bin twice a
Tank_SetLevel(TankX, 10000) day. When a truck arrives at the drop-off sta-
tion, it dumps the entire 5,000 lb load in only
2.5 minutes. To model this, define the follow-
ing operation logic for the truck at the drop-
See Also off station:
WAIT 2.5 MIN
“Initializing and Replenishing Supply Tanks” on
page 210. Tank_Inc(HoldingBin, 5000)

Tank_Inc
Tank_Dec
Syntax samples
Syntax samples
TANK_INC (<Tank ID>, <Quantity>)
TANK_INC (StorageTank, 5000) TANK_DEC (<Tank ID>, <Quantity>)
TANK_DEC (SupplyTankB, 1000)

Description
Instantly increases the level of a tank by a speci- Description
fied quantity. If the tank has insufficient capacity, Instantly decreases the level of a tank by a speci-
the level increases as capacity becomes available. fied quantity. If the tank has insufficient quantity,
ProModel sets the tank state to Tank_Blocked if it empties as material becomes available. Pro-
the level increases to the tank capacity, otherwise Model sets the tank state to Tank_Idle if you
the state remains unchanged. decrease the level to 0. Otherwise the state
Use Tank_Inc to instantly add a specific quantity remains unchanged.
to a tank. Use Tank_Dec to instantly remove a specific
quantity from a tank.
Components
Components
<Tank ID>
The tank name or location index number. <Tank ID>
<Quantity> The tank name or location index number.
ProModel 199
User Guide

<Quantity> Components
The number of units by which to decrement the con-
tents of the tank (gallons, pounds). <Tank ID>
The tank name or location index number.
Example <Level>

A fill tank fills one 10-gallon container every 15 When the tank level rises to this value, ProModel exe-
seconds. After filling, each container moves cutes any subsequent logic.
to a location called FillStation. To model this
activity, define the following activated sub-
routine (this subroutine creates a filled con- Example
tainer every 15 seconds):
Tank_Loop //logic repeats continuously A tanker waits at a dispatch station until the
level of a finished goods tank rises to 2,000
{
gallons. Once the tank level reaches this
WAIT 15 SEC point, a signal dispatches the tanker to the
Tank_Dec(FillTank, 10) finished goods tank for loading. Meanwhile,
the finished goods tank continues filling. To
ORDER 1 Container TO FillStation model this situation, define the following pro-
} cess logic for the tanker at the dispatch sta-
tion:
Tank_RiseTrigger (FGTank, 2000)

See Also
“Emptying to an Entity” on page 211.
Please note

Tank_RiseTrigger Using the Tank_RiseTrigger subroutine instead


of a WAIT UNTIL statement prevents the next
Syntax samples tanker from dispatching until the finished goods
tank falls back below 2,000 gallons.
TANK_RISETRIGGER (<Tank ID>, <Level>)
TANK_RISETRIGGER (TankA, 3000)
See Also
“Defining Trigger Levels” on page 215.
Description
Waits until tank contents rises to a specific level.
Use Tank_RiseTrigger to initiate some action
when a tank rises to a certain level.
200 Chapter 5:
Pre-defined Tank Subroutines

Tank_FallTrigger Please note

Syntax sample Using Tank_FallTrigger instead of a WAIT


UNTIL statement prevents the action from trig-
gering again until the level first rises above the
TANK_FALLTRIGGER (<Tank ID>, <Level>)
fall trigger level.
TANK_FALLTRIGGER (TankB, 500)

See Also
Description
“Defining Trigger Levels” on page 215.
Waits until tank contents falls to a specified level.
Use Tank_FallTrigger to initiate an action when a
tank level falls to a specific level.
Tank_Cap

Components Syntax samples

<Tank ID> TANK_CAP (<Tank ID>)

The tank name or location index number. TANK_CAP (TankA)

<Level>
When the tank level falls to this value, any subsequent
logic executes. Description
Returns the capacity defined for the specified
tank.
Example
Use Tank_Cap when you need to know the
defined capacity for a tank.
When an in-process tank, TankX, falls to 1000
gallons, it triggers a mixing tank to begin pro-
ducing more product. To model this, define Components
the following activated subroutine to control
the mixing tank: <Tank ID>
Tank_Loop //logic repeats continuously The tank name or location index number.
{
Tank_FallTrigger(TankX, 1000)
[Insert logic to mix new batch here] Tank_FreeCap
}
Syntax samples

TANK_FREECAP (<Tank ID>)


ProModel 201
User Guide

TANK_FREECAP (TankA) <Operation time>


The duration (in time units defined in the General
Information dialog) of the operation.

Description
Returns the available capacity of the specified Example
tank.
Use Tank_FreeCap when you need to know the After technicians add all the necessary ingre-
available capacity of a tank. dients to the mixing tank, the tank requires a
20 minute mixing time. To define this opera-
tion, enter the following statement in the sub-
Components routine for the mixing activity:
Tank_DoOperation(MixingTank, 20)
<Tank ID>
The tank name or location index number.

See Also
Tank_DoOperation “Mixing and Reactor Tanks” on page 211.

Syntax samples Tank_GoDown


TANK_DOOPERATION (<Tank ID>, <Operation Syntax samples
time>)
TANK_DOOPERATION (TankA, 30) TANK_GODOWN (<Tank ID>, <Down time>)
TANK_GODOWN (TankA, 5)

Description
Sets the state of the tank to Tank_Operation and Description
waits for the specified operation time. ProModel
Sets the state of the tank to Tank_Down, waits
sets the state to Tank_Blocked after the opera-
for the specified downtime, then sets the state
tion.
back to the previous setting. If you defined a
Use Tank_DoOperation when some activity or downtime using the location downtime dialog,
treatment time is necessary for the material in a call the Tank_GoDown subroutine in the down-
tank. time logic rather than use a WAIT statement. If
the downtime is for cleaning, use the
Components Tank_DoPrep subroutine.
Use Tank_GoDown to shut down a tank due to
<Tank ID> equipment failure (e.g., pump failure). If the
The tank name or location index number. downtime occurs periodically, you can define a
202 Chapter 5:
Pre-defined Tank Subroutines

clock downtime in the downtime logic for the Tank_GoDownSched


tank location and use Tank_GoDown in place of
the WAIT statement.
Syntax samples
Components
TANK_GODOWNSCHED (<Tank ID>, <Down
time>)
<Tank ID>
TANK_GODOWNSCHED (TankA, 5)
The tank name or location index number.
<Down time>
The duration (in time units defined in the General
Information dialog) of the downtime.
Description
Sets the state of the tank to
Tank_ScheduledDown, waits for the specified
Example scheduled downtime, then sets the tank state back
to its previous setting. If you defined a scheduled
A fill line from a dry supply bin plugs randomly downtime using the location downtime dialog,
according to an exponential distribution with a call the Tank_GoDownSched subroutine in the
mean of 10 minutes. The time to unplug the line downtime logic rather than use a WAIT state-
is normally distributed with a mean of 5 minutes ment. If the downtime is for cleaning and you
and a standard deviation of 1 minute. To define will return the tank status to idle, use the
this behavior, define a clock downtime for the bin Tank_DoPrep subroutine.
to occur with a frequency of E(10) minutes. In the
logic defined for the downtime, enter the follow- Use Tank_GoDownSched to shut down a tank for
ing logic: a scheduled task or event (e.g., interim mainte-
nance or end of scheduled workday). Since the
tank uses a scheduled downtime, the time lapsed
during the event does not record as a downtime.
ProModel 203
User Guide

Components Description
Sets the state of the tank to Tank_Setup, waits for
<Tank ID> the specified time, then sets the state to
The tank name or location index number. Tank_Idle. Use Tank_DoPrep for cleaning activi-
<Down time> ties after you empty a tank.

The duration (in time units defined in the General Use Tank_DoPrep to take a tank off line for
Information dialog) of the scheduled downtime. cleaning or other preparation time.

Components
Example
<Tank ID>
Every 4 hours, a technician must check the fill line The tank name or location index number.
from a dry supply bin. The time required to check
the line is normally distributed with a mean of 10 <Prep time>
minutes and a standard deviation of 3 minutes. The duration (in time units defined in the General
To define this behavior, define a clock-based, Information dialog) of preparation time.
scheduled downtime for the bin to occur with a
frequency of 4 hours. In the logic defined for the
downtime, enter the following:
Example

Workers clean a mixing tank for 30 minutes


after each batch produced. To model this,
enter the following logic in the mixing subrou-
tine defined for the mixing tank:
Tank_Loop //logic repeats continuously
{
[Enter mixing and transfer logic here]
Tank_DoPrep(MixingTank, 30)
}

Tank_DoPrep
See Also
Syntax samples “Mixing and Reactor Tanks” on page 211.

TANK_DOPREP (<Tank ID>, <Prep time>)


TANK_DOPREP (TankA, 5)
204 Chapter 5:
Pre-defined Tank Subroutines

Tank_SetState Description
Selects an output tank from among several tanks
Syntax samples based on a selection rule and optional product
type. To use this function, list all tanks included
TANK_SETSTATE (<Tank ID>, <State>) in the selection decision together in the Location
module.
TANK_SETSTATE (TankA, Tank_Idle)

Components

Description <First Tank>


Sets the state of the tank (e.g., Tank_State[<Tank The name or location index number of the starting tank
ID>]) to a new state and updates the statistics in the range.
since the last change of state. <Number of Tanks>
Use Tank_SetState to explicitly change the state The number of tanks in the selection range (limit 10).
of a tank. Use Tank_SetState only if the default <Selection Rule>
state changes do not adequately meet modeling
needs. The rule for making the selection may be one of
the following:
Components Tank_InOrder (selects the first idle tank
encountered)
<Tank ID> Tank_LongestIdle (selects the tank idle
the longest)
The tank name or index number.
<Maximum Level>
<State>
The maximum level of the output tank before consider-
The new state for the tank. For a list of possible tank
ing it for selection. Enter 0 if the output tank must be
states, see “Tank States” on page 190.
empty or idle before being considered.
<Product Type>
An integer specifying the required value of the Product
Tank_SelectOutput array in order to select the tank. Enter 0 if the tank
selection requires no product type match. (This applies
Syntax samples only if the maximum level specified is greater than 0.)

TANK_SELECTOUTPUT (<First Tank>, <Number


of Tanks>, <Selection Rule>, <Maximum Example
Level>, <Product Type>)
TANK_SELECTOUTPUT (TankA, 3, Tank_InOrder, A supply tank feeds one of 3 output tanks
5000, 0) and always gives preference first to Tank1,
then to Tank2, and finally to Tank3 based on
availability. Furthermore, the supply tank can
select a tank only if its contents are less than
ProModel 205
User Guide

8000 gallons. To model this selection, list .


Tank1, Tank2, and Tank3 together (and in
SelectedTank=Tank_SelectOutput(Tank1, 3,
order) in the location module. Then define
Tank_InOrder, 8000,0)
the following statement to select the tank
using a local variable, Selected_Tank:
INT Selected_Tank
. The diagram below shows the logic used to make
a tank selection:
.

No
Is the specified Max
level > 0?

Yes

Is
there a tank Is
No No Wait for first tank to
No there an idle
with level > 0 but Is the specified Max become idle.
less than Max level and tank that satisfies
level > 0?
same product selection rule?
type?

Yes Yes
Yes

Match Wait for first tank to


fall below the Max
specified product
type if required level.
No

Yes

Return Tank ID

If you base a tank selection on product type, you See Also


must be careful to assign an appropriate integer
“Selecting from Multiple Input or Output Tanks”
value to the Product array element corresponding
on page 213.
to the tank location.
206 Chapter 5:
Pre-defined Tank Subroutines

Tank_SelectInput An integer specifying the required value for the Prod-


uct array in order to select the tank. Enter 0 if the tank
selection requires no product type match.
Syntax samples

TANK_SELECTINPUT (<First Tank>, <Number of Example


Tanks>, <Selection Rule>, <Minimum Level>,
<Product Type>)
A tanker arrives at a pick up station to load
TANK_SELECTINPUT (Tank1, 5, Tank_ByOrder, from one of 5 tanks depending on which tank
1000, 0) has been full the longest. The tanker will fill
from a partial tank if the tank has any con-
tents at all (at least .1 gallons). To model the
tank selection, define the following operation
Description logic for Tanker at PickUpStation:

Selects an input tank from among several tanks INT SelectedTank


based on a selection rule. To use this function, Selected_Tank=Tank_SelectInput(Tank1, 5,
you must list all tanks included in the selection Tank_LongestBlocked, .1, 0)
together in the Location module.

Components
See Also
<First Tank> “Selecting from Multiple Input or Output Tanks”
on page 213.
The name or location index number of the starting tank
in the range.
<Number of Tanks> Tank_UpdateStats
The number of tanks in the selection range (limit 10).
<Selection Rule> Syntax samples
The rule for making the selection may be one of the
TANK_UPDATESTATS (<Tank ID>)
following:
TANK_UPDATESTATS (TankA)
Tank_InOrder (selects the first blocked
tank encountered)
Tank_LongestBlocked (selects the tank
blocked the longest) Description
<Minimum Level>
ProModel calls this subroutine automatically
The minimum level of the input tank before consider- whenever you call any of the predefined subrou-
ing it for selection. If the tank must be full before con- tines that affect the tank level. If you change the
sidering it for an input source, enter 0. value of the Tank_Level directly, call the
<Product Type> Tank_UpdateStats subroutine afterward. This
subroutine updates the current statistics on the
tank and sets the state to Tank_Filling (if filling),
ProModel 207
User Guide

Tank_Emptying (if emptying), Tank_Blocked (if The name or location index number of the TO tank
full), or Tank_Idle (if empty). (this value should be 0 if there is no TO tank).

You should not need to use this subroutine unless


you defined a customized Tank_Empty,
Tank_Fill, or Tank_Transfer subroutine.
Example

TankA fills with 10,000 gallons at a rate of 60


Components gpm until it reaches a level of 9,700 gallons.
Then it fills at a rate of 30 gpm. To model this
<Tank ID> change of rate, define the following logic in
the Tank_Rate subroutine:
The tank name or location index number.
IF Tank_ToID=TankA
THEN IF Tank_Level[TankA]<9700
Tank_Rate THEN RETURN 60
ELSE RETURN 30
Syntax sample Now when you fill TankA, enter the following:
Tank_Fill(TankA, 10000, 0, 0)
TANK_RATE (<FROM tank ID>, <TO tank ID>)
The first 0 in the expression above causes the
TANK_RATE (TankA, TankB) logic defined in the Tank_Rate subroutine to
execute and determine the flow rate.

Description
ProModel calls this subroutine automatically if See Also
you pass a 0 value as the From Rate when using “Varying the Transfer Rate” on page 214.
the Tank_Empty or Tank_Transfer subroutine.
To return the desired rate value, enter the neces-
sary logic in the subroutine—ProModel calls the Pre-defined Data Elements
subroutine with each time step. A return value of
The ProModel tank submodel provides the fol-
0 terminates the flow and returns the remaining
lowing data elements for modeling tanks. Unless
amount in the Tank_QtyLeft variable.
otherwise specified, all arrays are single-dimen-
sional and of type integer. Initially, these arrays
Components are 100 elements in size to allow for up to 100
locations. If you define more than 100 locations,
<FROM Tank> you will need to enlarge the array or place tanks
The name or location index number of the FROM tank toward the beginning of the location list (within
(this value should be 0 if there is no FROM tank). the first 100 locations).
<TO Tank> Tank_Level array Stores the level of each tank.
Since the values in this array directly control the
208 Chapter 5:
Pre-defined Tank Subroutines

tank gauge and tank statistics, the array MUST be Location States by Percentage. When reporting
present in every tank model. Location statistics for tanks, note the following:
Tank_State array Tracks the state of the tank. •Total Entries The number of units (e.g.,
gallons, pounds) to enter the tank.
Tank_Product array An optional array used to
•Avg Minutes Per Entry Left blank since
record or test the product currently at a tank.
there is no individual entry for a tank.
Tank_Statistics array A two-dimensional array
Tank_Fills array An optional array used to track
of type real used to record tank level statistics
the number of transfers to a tank. This is espe-
whenever the level changes. Generally, you will
cially useful when you activate multiple
never need to reference this array since values
Tank_Fill or Tank_Transfer subroutines for a
automatically update when you use the pre-
tank and you wish to know when the fills are
defined Tank subroutines. All times are in time
complete. The user sets the value of Tank_Fills to
units defined in the General Information dialog.
zero before activating the subroutines, then
ProModel always gathers these statistics but
defines a WAIT UNTIL statement after the
reports them only if you check Basic or Time
ACTIVATE statement. The Tank_Fills array
Series statistics for the tank location.
increments automatically when a Tank_Fill or a
Column Description Reset After Warm-up Tank_Transfer subroutine executes. See “Mix-
1 Last level NC ing and Reactor Tanks” on page 211 for addi-
2 Last change time Current time in time tional information.
units defined in the
General Information
dialog Statistics
3 Cum time-weighted 0
level
4 Entries Value of column 1
Please note
5 Max contents Value of column 1
6 Last State Change Current time in time
TS = Tank_Statistics array
units defined in the n = Location index number of tank
General Information
dialog
7 Cum time Idle 0
8 Cum time Operation 0
Calculating Location Statistics for
9 Cum time Setup 0
Tanks
10 Cum time Filling 0
11 Cum time Emptying 0
Entries = TS [n, 4]
12 Cum time Blocked 0
13 Cum time Down 0 Avg. Time per Entry = (not applicable)
14 Current downtime NC Avg. Contents = TS[n,3] / Scheduled Time
count
Max Contents = TS [n,5]
As shown in the previous table, the statistics col- Current Contents = TS [n,1]
lected in the Tank_Statistics array automatically Utilization=100 x TS[n,3] / (Capacity x Sched-
reset after any warm-up period. ProModel reports uled Time)
output statistics under Location statistics and
ProModel 209
User Guide

Calculating Location State Statis- be capable of executing independently of each


tics for Tanks other. On the other hand, if the logic associated
with two tanks is interdependent, only one con-
trol subroutine is necessary. For example, if
%Operation = 100 x TS[n, 8] / Scheduled Time
TankA fills TankB while TankB waits, then
%Setup = 100 x TS[n, 9] / Scheduled Time TankB pumps out while tank A waits, you need
%Idle = 100 x TS[n, 7] / Scheduled Time only a single control subroutine since you control
both tanks by a single logic sequence. If a single
%Waiting = 100 - Sum of other percentages
tank feeds several other tanks independently, you
%Blocked = 100 x TS[n, 12] / Scheduled Time would need a separate subroutine to control each
%Down = 100 x TS[n, 13] / Scheduled Time output. In most cases, you will need at least one
control subroutine per tank and, in certain situa-
tions, you may wish to use a hierarchical control
system (i.e., a master or supervisory control sub-
To gather statistics on how much of a particular routine) to activate subordinate subroutines.
product was processed, you may define variables
to record product processing during the simula- Most tank control subroutines should be activated
tion. subroutines. In contrast to called subroutines,
activated subroutines use the ACTIVATE state-
ment and cause the logic activating the subrou-
Defining Tank Control Subrou- tine to continue independently of the activated
tines subroutine. This allows you to execute multiple
control subroutines concurrently. Multiple tanks
Unlike defining entity activity at a location with identical control logic may share the same
(defined in the Processing module), modeling control subroutine if you activate the subroutine
tank location activity requires the use of subrou- for each tank and pass the tank ID as a parameter.
tines. Many of these subroutines are user-defined
One of the keys to modeling interactive tank
and called using the ACTIVATE statement.
behavior is to effectively use WAIT UNTIL
Though you generally activate them from the ini-
statements. When you use WAIT UNTIL state-
tialization logic, you may also activate them from
ments based on the Tank_Level array, use them
another tank subroutine. Tank subroutines consist
sparingly since this array changes frequently and
of logic defined to control when, where, and how
may slow the simulation.
much to empty, fill, or transfer from a tank.
Often, these subroutines require the use of WAIT
UNTIL statements to monitor conditions (e.g., Examples of Tank Control Logic
the tank level or state) before making a transfer
and may include delays for mixing or cleaning. The following examples show how to model dif-
ferent tank and flow situations. For full models
At a minimum, you should define a separate con- illustrating these situations, see the reference
trol subroutine for any logic that executes inde- model in the MODELS\REFS directory within
pendently of any other logic. For example, if the ProModel directory.
TankA fills TankB at the same time TankB trans-
fers to some other tank, you should define two
separate subroutines since both sets of logic must
210 Chapter 5:
Pre-defined Tank Subroutines

Filling from an Entity attribute adds to the ReceivingTank. Once the


tanker delivers this quantity, it is free to execute
A typical tank modeling situation is the arrival of the routing defined for it at the Delivery location.
an entity (e.g., a tanker or other vehicle) to
deliver its contents to a tank. To model this situa-
tion, define an arrival or routing for the entity, Initializing and Replenishing
causing it to enter the location where it will make Supply Tanks
its delivery. In the entity processing logic at the A supply tank is an originating tank that is a
delivery location, call the Tank_Fill subroutine. source of raw material for one or more down-
By calling rather than activating the subroutine, stream tanks. Often, supply tanks contain ingredi-
you will detain the delivering entity until ents that feed into a mixing tank or hold
Tank_Fill executes. Note that the material does chemicals that feed into a reactor. Typically, you
NOT route from the delivery location to the tank. replenish a supply tank when it gets low and
Instead, the Tank_Fill subroutine simply fills the make it available for use whenever it has an ade-
tank with a specified quantity while the entity quate supply. If you always stock the supply tank
waits. Unless the quantity is a constant amount, it and it is always available for use, you do NOT
is usually a good idea to use an entity attribute to need to model it since it poses no constraint on
store this quantity value. After filling the contents the process. You may set supply tanks to an ini-
into the tank, the entity is free to continue pro- tial level at the start of the simulation in the ini-
cessing. tialization logic, then use them as needed by a
To illustrate how an entity might transfer its con- mixing or other downstream tank. To initialize
tents to a tank, suppose an entity, Tanker, arrives the level in a supply tank, enter the following
at a location, Delivery, carrying a quantity of gal- statement in the initialization logic:
lons stored in an entity attribute called
Tanker_Qty. The tanker discharges its contents Initialize tank level
into a tank, ReceivingTank, at a rate of 200 gal-
lons per minute. Once the ReceivingTank Tank_SetLevel (<supply tank>, <qty>)
becomes full, the level must drop to 1000 gallons
before filling resumes. Since the entity is tied up
while it discharges into the tank, use the follow-
ing statement in the processing logic for Tanker If, for example, you wanted to begin the simula-
at Delivery to define the logic used to fill the tion with the supply tank, WaterTank, filled with
tank: 800 gallons of water, you would enter:

Fill the tank Start with full tank

Tank_Fill (ReceivingTank, Tanker_Qty, 200, Tank_SetLevel (WaterTank, 800)


1000)

To gradually fill or refill a supply tank whenever


The above statement causes each arriving tanker it drops below a trigger level, use the Tank_Fill
to wait until the quantity stored in its Tanker_Qty subroutine with a large fill quantity and an appro-
ProModel 211
User Guide

priate resume level. For example, the following Tank_Transfer (Tank2,MixingTank, 300, 20, 4, 0)
statement will continue pumping up to 999999 Tank_DoOperation (MixingTank,15) //Mix time
units into TankA at a rate of 200 units per minute.
Wait Until Tank_State [StorageTank]=
Whenever the tank becomes full, it must drop to
Tank_Idle /* Waits for storage tank availability
400 units before filling resumes.
*/
Tank_Transfer (MixingTank, StorageTank,
Resume fill with trigger level Tank_Level[MixingTank],40, 0, 0)
Tank_Prep (MixingTank, 50) // Clean mixing
Tank_Fill (TankA, 999999, 200, 400)
tank for 50 minutes.
END

Mixing and Reactor Tanks


Mixing and reactor tanks receive material usually If the ingredients feed into the mixing tank at the
from one or more supply tanks. Once it receives same time rather than sequentially, activate the
the material, the tank may require a mixing or Tank_Transfer subroutines for the mixing tank
other reaction time. To illustrate, suppose we and monitor the Tank_Fills array to know which
have two tanks (Tank1 and Tank2) supplying ingredients enter into the tank. For simultaneous
ingredients to a tank called MixingTank. First, fills, replace the first two transfer statements fol-
workers pump 2000 gallons of a liquid from lowing the BEGIN statement in the previous sub-
Tank1 at 50 gallons per minute followed by the routine with the following logic:
transfer of 300 pounds of dry mix from Tank2 at
20 pounds a minute (the dry mix adds .2 gallons
to the level of the MixingTank for every pound
Simultaneously mix, then clean
transferred, equating to 4 gallons per minute). tank
The ingredients then mix for 15 minutes before
transferring to an idle storage tank. After trans- Tank_Fills[MixingTank]=0
ferring the mix, workers must clean the Mixing- ACTIVATE Tank_Transfer(Tank1, MixingTank,
Tank for 50 minutes to prepare it for the next 2000, 50, 0, 0)
mixing cycle.
ACTIVATE Tank_Transfer(Tank2, MixingTank,
The control logic for the mixing tank should be a 300, 20, 4, 0)
subroutine activated from the initialization logic WAIT UNTIL Tank_Fills[MixingTank]=2
which continues to loop throughout the simula-
...
tion. The subroutine logic might appear as fol-
lows:

Mix and clean the tank Emptying to an Entity


Often, tanks deliver material to discrete entities
Tank_Loop //logic repeats continuously
such as containers (or perhaps the material itself
BEGIN converts to discrete entities through a solidifica-
Tank_Transfer (Tank1,MixingTank,2000, 50, 0, 0) tion or consolidation process). In either case, you
212 Chapter 5:
Pre-defined Tank Subroutines

can draw from the delivery tank using the Tank Transfers
Tank_Empty subroutine if outflow is gradual and
defined by a flow rate, or the Tank_Dec subrou-
tine if the output occurs in discrete intervals
based on a bottling or packaging time.
To output material from a tank without modeling
the entity to which it outputs, call the
Tank_Empty or Tank_Dec subroutine. To trans-
fer material from a tank to entities arriving at a
filling station (remember, the filling station itself
is NOT a tank), route the entities to the filling sta-
tion using a SEND or other routing rule, then call
the Tank_Empty or Tank_Dec subroutine.
If using the Tank_Dec subroutine, the entity When transferring from one tank to another, you
should wait for the fill time before decreasing the must determine whether the source tank makes
tank level since Tank_Dec happens instantly. For the decision to transfer to the destination tank (a
example, if a bottling operation fills a 2 gallon push approach) or whether the destination tank
container every 6 seconds, define the following makes the decision to draw material from a
processing logic for the container at the fill sta- source tank (a pull approach). You should define
tion: a control subroutine from the perspective of the
tank that makes the decision. If the model
Wait to fill from tank, then con- requires no tank selection, specify a WAIT
tinue UNTIL statement to wait until the FROM or TO
tank satisfies the condition required for transfer.
For example, if a source tank makes the decision
Wait 6 sec
to transfer to a destination tank whenever the des-
Tank_Dec (Filler, 2) tination tank becomes idle, enter the following
statement in the subroutine:

If the delivery tank has insufficient contents to Transfer contents when idle
decrease the level by the specified amount, the
processing will automatically pause until enough Wait Until Tank_State [<destination tank ID>] =
material is available. Once the specified quantity Tank_Idle
empties, the entity can continue processing. To
create an entity as the result of an emptying oper-
ation, define an activated subroutine that empties
If the destination tank makes the decision to
the desired quantity, then execute an ORDER
transfer (a pull approach), you should base the
statement. This will create a new entity at the fill-
WAIT UNTIL statement on a required condition
ing station.
for the source tank as follows:
ProModel 213
User Guide

Transfer contents based on condi- Selecting from Multiple Input or


tion Output Tanks
To enable one or more tanks to select from sev-
Wait Until Tank_State [<source tank ID>] = eral input or output tanks, use the pre-defined
Tank_Blocked
subroutine Tank_SelectInput or
Tank_SelectOutput (see subroutine descriptions).
ProModel bases tank selection on which tank is
Following the WAIT UNTIL statement, call the ready to transfer or receive and that has the same
Tank_Transfer, Tank_TransferUpTo, or ProductType array value. You must list the tank
Tank_TransferDownTo subroutine to transfer selections together in the Location module.
from the source tank to the destination tank. For example, if TankX selects from among three
To illustrate how to define a tank transfer using a input tanks (Tank1, Tank2, and Tank3) based on
pull approach, suppose that TankB requires 1000 which input tank has waited the longest to dis-
gallons from TankA whenever TankB becomes charge its contents, you would enter the follow-
empty. TankB will draw material from TankA ing logic in the control subroutine defined for
only when TankA has a minimum level of 1000 TankX:
gallons. The subroutine to define this logic might
appear as follows: Select from multiple tanks

Tank transfer in a pull system Int SelectedTank


SelectedTank = Tank_SelectInput(TankX,
Tank_Loop //logic repeats continuously Tank1, 3,
Tank_LongestBlocked, 0)
Begin
Wait Until Tank_Level[TankA] >= 1000 /*Wait
for TankA to reach 1000 gallons*/
Tank_Transfer (TankA, TankB, 1000, 200,0,0) /* The first statement defines a local variable,
Transfer 1000 gal to TankB at 200 gpm*/ SelectedTank, used to assign which tank you
select. The second statement calls the SelectInput
[Enter TankB processing and emptying logic
subroutine specifying that TankX is to select one
here]
of three tanks beginning with Tank1.
End Tank_LongestBlocked causes TankX to select
the tank blocked the longest (i.e., tank is full or
waiting). Entering 0 at the end prevents selecting
a full tank. If no tank is full, the statement does
Please note not execute until one of the input tanks fills. With
a tank ID assigned to SelectedTank, you can call
To select from among multiple input or output a transfer subroutine to make the transfer.
tanks, activate this subroutine in the initialization
logic.
214 Chapter 5:
Pre-defined Tank Subroutines

For output tanks, you would define similar logic The subroutines TransferToB and TransferToC
but include Tank_SelectOutput instead of would each execute a Tank_TransferDownTo
Tank_SelectInput. command followed by a statement incrementing
the value of TransferDone. For example, the
logic for TransferToB would be as follows:

Split transfers subroutines

TransferDownTo(TankA, TankB, 0, 30, 0)


INC TransferDone

Varying the Transfer Rate


The transfer or empty rate can change dynami-
Split Transfers cally during an empty, fill, or transfer. To vary
the rate of flow, pass 0 as the flow rate when call-
Sometimes it is necessary to use a tank or separa- ing any of the transfer, fill, or empty subroutines.
tor to split the flow to several output tanks. To This calls the Tank_Rate subroutine automati-
define the concurrent transfer of material from cally with each time step. You should modify the
one tank to multiple tanks, define an activated Tank_Rate subroutine so that it returns the appro-
subroutine for each transfer. Suppose, for exam- priate rate value.
ple, that when TankA fills it begins transferring
to TankB at a rate of 30 gpm and to TankC at a Suppose, for example, that TankA transfers to
rate of 40 gpm. To know when both transfers are TankB at a rate that decreases from 150 gpm to
complete, define a global variable (e.g., Transfer- 50 gpm when the level of TankB reaches 4000.
Done) which increments at the end of each trans- To achieve this, pass 0 as the From Rate when
fer. Defining the following logic would initiate you call the transfer subroutine, then enter the
this split transfer once TankA is full: following logic in the Tank_Rate subroutine:

Initiate split transfer Vary the transfer rate

ACTIVATE TransferToB () // initiates transfers IF (Tank_FromID = TankA) AND (Tank_ToID =


from A to B TankB)

ACTIVATE TransferToC () // initiates transfers THEN IF Tank_Level[TankB] >= 4000


from A to C THEN RETURN 50
WAIT UNTIL TransferDone = 2 // Wait until trans- ELSE RETURN 150
fers are complete
TransferDone = 0 // reset for next transfer
ProModel 215
User Guide

Dynamically Suspending Flow associated action should execute when the tank
level rises or falls to a certain level.
To momentarily interrupt flow into or out of a
tank, use the Tank_GoDown subroutine or set the
state of the tank to down (Tank_SetState =
Tank_Down). This typically happens if a pump
fails but may occur in other situations.

Dynamically Terminating a Flow


Normally, the flow into or out of a tank stops
once you reach the desired quantity or level.
However, in some situations you may wish to ter-
minate a transfer if some event or condition
occurs that you cannot predetermine (e.g., a deci-
sion to divert flow to a preferred outlet tank that To show how to define a trigger subroutine, sup-
just became available). In this case, you can turn pose that whenever TankA rises to 2000 gallons,
off the flow into or out of a tank by specifying a an entity called Truck travels to a location called
variable transfer rate instead of a fixed transfer Pickup. The logic for this trigger subroutine
rate (see previous discussion, Varying the Trans- might look as follows:
fer Rate). A variable transfer uses the Tank_Rate
subroutine to determine the rate for each time Trigger subroutine
step—to terminate a transfer, return a rate value
of 0. Tank_Loop //logic repeats continuously
Begin
Defining Trigger Levels
Tank_RiseTrigger (TankA, 2000) /* waits for
A trigger level is a level to which material in a TankA to rise to 2000 units*/
tank either falls or rises and triggers some action. Order 1 Truck to Pickup // order a Truck to
To continuously monitor when a tank reaches a Pickup
trigger level, define and activate a trigger subrou-
End
tine in the initialization logic. The subroutine
should call Tank_RiseTrigger or
Tank_FallTrigger depending on whether the
Once the tank reaches the trigger level, the
Tank_RiseTrigger subroutine prevents further
triggering until the level drops back below the
trigger level first.
When you use trigger subroutines, use them spar-
ingly because they are CPU intensive. Every time
the tank level changes, ProModel tests to see if
the tank reached the trigger level. Trigger subrou-
tines are often unnecessary because, unlike an
216 Chapter 5:
Pre-defined Tank Subroutines

actual tank where sensors report the tank level, Showing Pipes
you directly control how much to pump into a
tank. For instance, an alternative way to model To show pipes connecting the tanks, use paths or
the previous example without using a triggering background graphics. If you desire to show the
subroutine would be to call the material in the pipe, use a long, skinny tank with
Tank_TransferToLevel subroutine to first fill the a capacity of 1 to represent the pipe. You can set
tank to the 2000 unit level, order the Truck entity the level of this tank to 0 or 1 to show product
and then transfer the rest. flow. For example, suppose we define a tank
location called Pipe used to represent the connec-
tion between Tank1 and Tank2. Whenever trans-
Processing Multiple Products ferring from Tank1 to Tank2, you would enter
Where you must track several different products the following:
through one or more tanks, it may be useful to
define macros for naming each product type. For Define pipes
example, setting ProductA equal to 1 and Pro-
ductB equal to 2 will improve the readability of Tank_SetLevel (Pipe,1)
the model. To track which product a particular
Tank_Transfer (Tank1, Tank2, ….)
tank is processing, ProModel uses a pre-defined
integer array called Tank_Product—the user is Tank_SetLevel (Pipe, 0)
responsible 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 High-Rate Entity Processing
to distinguish it from other products: For systems that process entities at rates higher
than one hundred units per minute, using discrete
Tracking products entities could make the simulation extremely
slow. For this reason, ProModel uses tanks. To
Tank_Product [Tank1] = ProductA use a tank to model high-rate processing, think of
the tank as a buffer where the tank level repre-
sents the number of items in the buffer. For
example, suppose that bottles feed through a fill-
ing station at a rate of 110 per minute. The input
buffer, FillerInput, has a capacity of 1200 bottles
and the output buffer, FillerOutput, has a capacity
of 2000 bottles. If FillerOutput is full, processing
stops until the quantity in the output buffer drops
to 1500 bottles. An arriving container feeds quan-
tities of 200 bottles to the FillerInput location and
it takes 1 minute to unload the container. When
the filling station fills 50 bottles, workers put the
bottles into a box (represented by an entity) and
ship them. Since workers load the boxes as soon
ProModel 217
User Guide

as the bottles complete the filling process, there is Order 1 Box to Shipping
no delay time involved. }
The operation logic for the container at the arriv-
ing location would be as follows:
Please note
High-rate processing
The Tank_Dec statement automatically removes
WAIT 1 min
50 bottles from FillerOutput whenever there are
Tank_Inc (FillerInput, 200) at least 50 bottles available.

To model the processing of bottles from FillerIn- Special Notes


put to FillerOutput, enter the following statement
in the model initialization logic. •Since tank models do not stop automatically
when there are no more entities or sched-
uled arrivals, remember to define a run
High-rate processing length or a STOP statement.
•When you activate a subroutine, it doesn't
ACTIVATE Tank_Transfer(FillerInput, FillerOut- process until the current logic (the one
put, 999999, 110, 0, 1500)
activating the subroutine) finishes or
becomes blocked. It you want the acti-
vated subroutine to process first, enter
This statement causes the FillerInput tank to “WAIT 0” after the ACTIVATE state-
transfer bottles to FillerOutput at a rate of 110 per ment.
minute whenever there are bottles in FillerInput •Do not define a local variable inside of a
and capacity available in FillerOutput. The Tank_Loop since the loop will create the
resume level is 1500. (Up to 999999 bottles will variable multiple times.
transfer.) •Make sure all IF...THEN logic and WAIT
UNTIL statements based on the
To model the creation of a 50-bottle box each Tank_Level array use the “>=” or “<=”
time the filling station fills 50 bottles, define and operator and not just an “=” operator.
activate the following subroutine in the model (This is because flow occurs in increments
initialization logic: and you can’t check for an exact value.)
•Tanks are not legal in multi-unit locations or
Create new, combined unit in locations containing a conveyor or
queue.
Tank Loop //causes logic to repeat continu-
ously
{
Tank_Dec(FillerOutput, 50)
218 Chapter 5:
Background Graphics

Background Graphics How to create or edit background


graphics:
Background graphics allow you to enhance a
model by adding a background to the animation.
1. Select Background Graphics from the
A background could show a floor-plan of a fac- Build menu.
tory or any item that is not part of a location,
entity, or resource. Backgrounds can be created 2. Select Front of Grid or Behind Grid
depending on the mode desired.
using the tools in the Background Graphics Edi-
tor or by importing an existing background from
another application, such as AutoCAD. Imported
graphics must have been saved in one of the fol-
lowing formats BMP, WMF, GIF, or PCX. The
Background Graphics Editor
Background Graphics Editor is accessed from the Modes
Build menu as shown below.
ProModel gives you the option of placing the
background graphic in front of or behind the grid.
This is useful when you want to view the
imported background graphic, but you also want
to see the grid for drawing and sizing objects on
the imported background graphic.

Front of Grid Mode


Creating graphics in this mode places the back-
ground graphic in front of the grid as shown
below.

There are two modes for editing in the Back-


ground Graphics Editor: Front of Grid and
Behind Grid. Generally, most graphics should be
laid out in front of the grid. Graphics placed
behind the grid should be reserved for large
objects such as walls or imported backgrounds.

Behind Grid Mode


Creating graphics in this mode places the back-
ground graphic behind the grid as shown below.
ProModel 219
User Guide

located in the lower right portion of the


workspace.

Library Graphics Window


The Library Graphics window contains the icons
of the current graphic library file, specified in the
General Information dialog. These icons may be
placed on the Layout in the same way as other
objects.

Background Graphics Editor


The Background Graphics Editor allows you to You may size the window as desired, or use the
place icons, text and other graphic shapes on the scroll bar shown above to scroll through the
layout behind locations and other system element available icons.
graphics. The arrangement of the two windows
and button bar is shown below. Tools Button Bar
The Tools button bar contains the tools necessary
to create objects various shapes. It also contains

•The Library Graphics window, containing


all the icons in the current graphic library,
is located at the top of the workspace.
•The Tools button bar, where you may select
a tool for creating and editing graphic
shapes, is located at the left of the work-
space.
•The Layout window, where all creating and
editing of graphic shapes is done, is
220 Chapter 5:
Background Graphics

tools for editing those objects including flip, The first four functions apply to the currently
rotate, and cut. selected object. To select multiple objects, hold
the shift key while selecting an object. Alterna-
Selector tively you 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.

Drawing Tools

Cut Removes the selected object(s) and makes a


temporary copy that may be pasted back into the
Editing Tools
edit window later.
Copy Makes a temporary copy of the selected
object(s) for later pasting.
Paste Adds the most recently cut or copied
object(s) to the Layout window.
The Background Graphics Editor Tools button Delete Deletes the selected background graphic
bar is the nearly the same Tools button bar used from the Layout window.
in the Graphic Editor. The only difference is that
Select All Selects all of the graphic objects in
the Background Graphics Editor Tools button bar
the current mode.
does not contain an entity spot or status light tool.
For more information on the Tools button bar, Copy to Clipboard Copies all graphic objects
see “Graphic Tools Button Bar” on page 323. in the current mode to the clipboard as a bitmap
or windows metafile so they can be pasted into
Edit Menu another application such as a word processor.

Use the Edit menu for selecting and duplicating Paste WMF Pastes a Windows metafile (WMF)
the graphic objects in the current Background from the Windows clipboard into the Layout win-
Graphics mode. You may also use it to exchange dow. You must have previously copied a Win-
graphics with other applications. To use the Edit dows metafile to the Windows clipboard.
menu functions, select the object you wish to edit Paste BMP Pastes a bitmap file (BMP) from the
by clicking on it in the Layout window. Windows clipboard into the Layout window. You
ProModel 221
User Guide

must have previously copied a bitmap file to the How to move an imported back-
Windows clipboard. ground graphic:
Import Graphic Imports a WMF, BMP, PCX,
or GIF file into the Layout window. • Place the cursor on the imported back-
ground graphic and drag it to the desired
Export Graphic Exports all graphic objects in location in the layout.
the current mode to a WMF or BMP file.

Importing a Graphic
How to size an imported back-
Importing a background graphic can bring reality
into the model. For example, if a layout is created
ground graphic:
in a graphic package, it may be desirable to
import the entire layout rather than create it in 1. Place the cursor on one of the four corners
of the imported background graphic. The
ProModel. This is done by saving the file in a
cursor becomes a cross-hair at this point.
graphic package, such as AutoCAD, as a WMF,
BMP, PCX, or GIF file and importing the graphic 2. Drag the cursor to size the background
into ProModel. This can save you an extensive graphic as desired.
amount of time.

How to import a background Please note


graphic into the layout:
Once imported, the background graphic is not a
1. In a graphics application, save the separate file from the model. It is included in the
graphic in one of the following formats, WMF, model. Therefore, when moving or copying a
BMP, PCX, or GIF.
model file from one directory to another, it is not
2. Select Background Graphics from the necessary to move or copy the imported back-
Build menu. ground graphic file as well. On the other hand, if
3. Select Front of Grid or Behind Grid. the external graphic file is changed, it must be re-
imported to update the model layout.
4. Select Import Graphic from the Edit Menu.
5. Enter the name of the graphic you would
like to import.
6. Select OK to close the import graphic dia- Exporting a Graphic
log box. The graphic will then appear in the In some cases, it is desirable to export a graphic
layout window. The upper left corner of the
created in ProModel for use in another applica-
imported graphic will align with the upper left
tion. ProModel will export all objects in the cur-
corner of the layout window.
rent mode (In Front of Grid and Behind Grid) as
one graphic to a WMF or BMP file.
222 Chapter 5:
Background Graphics

How to export a graphic: Rotate Rotates the selected object(s) 90 degrees


clockwise. This does not apply for non-true-type
1. Select Export Graphic from the Edit menu. fonts.
2. Enter a valid DOS name for the graphic in Behind Grid Moves the selected object in the
the resulting dialog box, such as forklift.bmp. layout window behind the grid. Once this is done,
3. Click the OK button in the Export Graphic you must go to Behind Grid mode to edit the
dialog box. graphic.
Front of Grid Moves the selected object in the
layout window in front of the grid. Once this is
done, you must go to Front of Grid mode to edit
Graphics Menu the graphic.
The Graphics Menu allows you to flip and rotate Group Combines or groups several graphic
the selected graphic object(s) in the layout win- objects into a single graphic so they may be sized
dow. It also allows you to specify whether you and edited together.
want the graphic to be behind or in front of the
grid. Additionally, it allows you to group selected Ungroup Ungroups several grouped graphic
graphic objects together into a single graphic. objects so they may be edited individually.
Finally, it provides the option to define line
Lock Locks a graphic in place so that it can’t be
styles, fill patterns, line color, and fill color.
moved. This is helpful for preventing accidental
moving of a graphic that you wish to leave sta-
tionary.
Unlock Unlocks a locked graphic, allowing it
to be moved on the layout.
Alignment When multiple objects are 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 thick-
ness, and optional arrowheads 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 fill
pattern for solid objects including slant, grid,
Flip Horizontal Horizontally flips the selected crosshatch, backward slant, horizontal, vertical,
object(s). transparent, solid, vertical gradient, and horizon-
Flip Vertical Vertically flips the selected tal gradient. If any objects are selected, the fill
object(s). patterns of the selected objects are changed.
Line Color Allows the user to define the line
color and create custom colors. If any objects are
ProModel 223
User Guide

selected, the line color of the selected objects are


changed.
Fill Color Allows the user to define the fill color
and create custom colors for solid objects. If any
objects are selected, the fill color of the selected
objects are changed.

Please note

All functions in the Graphic menu of Background


Graphics are nearly the same functions described
in the Graphic Editor Graphic menu. Differences
are noted below for moving a graphic behind the
grid and in front of the grid. See “Graphic Edi-
tor” on page 312 for more information on the
functions above.

How to move a graphic behind


the grid:

1. Select the graphic on the layout using the


selector.
2. Select Behind Grid from the Graphics
menu.

How to move a graphic in front of


the grid:

1. Select the graphic on the layout using the


selector.
2. Select Front of Grid from the Graphics
menu.
224 Chapter 5:
Background Graphics
ProModel 225
User Guide

Chapter 6: Building the


Model: Advanced Elements

Attributes How to create and edit attributes:


Attributes are place holders similar to variables, 1. Select Attributes from the Build Menu.
but are attached to specific locations and entities
and usually contain information about that loca-
tion or entity. Attributes may contain integers or
real numbers. You may also assign model ele- Attribute Types
ment names (e.g., StationA) to an attribute, which
Attributes are classified as follows:
is stored as the element’s index number but may
be referenced by name. Attributes are defined
through the Build menu as shown below. Entity Attributes
Entity attributes are place holders assigned to an
entity and contain numerical information about
that entity. An entity attribute is identified by its
name and may be assigned a value or model ele-
ment name stored as a value. An entity attribute
may be examined and acted upon in any of the
following places:
•Arrival logic
•Operation logic
•Move logic which refers to the attribute of
the entity being routed
•Min or Max attribute rules for locations and
resources
•Routing quantity
•Routing destination priority
•Resource pick up and drop off times
•Entity speed
•Debug condition
226 Chapter 6:
Attributes

Location Attributes would be more appropriate to use a local vari-


able. Local variables act like temporary attributes
Location attributes are place holders assigned and are valid only within the logic in which they
directly to a location and contain numerical infor- are defined (see “Variables” on page 231).
mation 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. Cloning Attributes
A location attribute may be examined and acted
on in any of the following places: Whenever one entity initiates the creation of
other entities through a SPLIT AS, CREATE, or
•Arrival logic ORDER statement, or as the result of specifying
•Operation logic multiple outputs in a routing, the attributes of the
•Move logic original entity are automatically copied to each
•Min or Max attribute for selecting incoming newly created entity.
entities as a location rule
The following examples show two methods of
•Routing quantity splitting an incoming batch of material, called
•Routing destination priority BatchA, into one Tote and six EntA’s. The first
•Resource pick up and drop off times method uses a CREATE statement in the opera-
•Location down time logic tion logic to create the new entities, called EntA.
•Debug condition The original entity, BatchA, will have its name
changed to Tote in the routing table. In the sec-
ond example, both of the new entity types are
Memory Allocation for created in the routing table, so no CREATE state-
Attributes ment is needed in the operation logic. In both
cases, the attributes attached to the original
Because locations always exist during a simula- entity, BatchA, are duplicated in both Tote’s and
tion, location attributes always use memory. the EntA’s attributes.
However, attributes for entities are not created
until the first time any of the entity’s attributes
are examined or set. At that time, ProModel allo-
cates enough memory for all of the entity’s
attributes. When the entity exits the system or is
absorbed by another entity through a COMBINE
or JOIN statement, ProModel automatically frees
the memory allocated for its attributes.

Attributes vs. Local Variables


Attributes are primarily useful where the value of
the attribute is assigned in one logic section and
evaluated in another logic section or field, per-
haps at a different location. If, however, an
attribute is assigned a value and evaluated within
the same logic section (e.g., an operation logic), it
ProModel 227
User Guide

Process Logic Notes A general notes field for describing the


attribute. Notes fields contain user comments
only and are never analyzed by ProModel. Click
on 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 contains an
assembly location to join lids to pots. The pots
are either aluminum or steel and 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
is true for a steel pot and lid. The entities,
steel_lids and alum_lids, are waiting at a queue to
be joined to the pots.
Obviously, one way to model the different pot
types is to use two different entity types. This
example shows how to achieve the same effect
Routing Table using a single entity type (pot) with an attribute
designating whether it is steel or aluminum.
An attribute called “type,” defined in the attribute
edit table, allows the location to tell what type of
pot has arrived at the assembly location. We will
use a value of 1 to represent a steel pot and a
value of 2 to represent an aluminum pot. When a
steel pot enters the system, we assign a value of 1
Attribute Edit Table to the attribute TYPE with the statement
This edit table is used to define entity and loca- TYPE=1. When an aluminum pot enters the sys-
tion attributes. tem, we set its type to 2.

ID The name of the attribute.

Type The type of the attribute, real or integer.

Classification Entity attribute or location


attribute.
228 Chapter 6:
Attributes

At the assembly location, we use the following Process Table


logic:
Entity Location Operation (min)
EntA Loc1 Att1 = 1
WAIT 2 min
EntB Loc2 Att1 = 2
JOIN 1 EntA
EntB Loc3 ...

Routing Table
Blk Output Destination Rule Move Logic
1 EntA Loc2 JOIN 1 MOVE FOR 1
1 EntB Loc3 FIRST 1 MOVE FOR 1
... ... ... ... ...

This logic checks the type of the pot and then In the above example, EntB would have an
joins a lid according to that type. attribute value, Att1, equal to 2 after EntA joined
to EntB.

Attributes and the JOIN State-


Attributes and the GROUP/
ment
UNGROUP Statements
In some cases, one entity joins to another entity
using the JOIN statement (see “Join” on page 504 Suppose several entities, EntA, EntB, and EntC,
for more information). If both entities possess are grouped together and called Batch (see
attributes before they join together, the resulting “Group” on page 493 and “Ungroup” on
joined entity will possess the attribute values of page 568). Each of the original entities have
the entity joined to it. In other words, the entity attributes with values assigned to them before
with the JOIN routing rule is effectively they are grouped. The Batch is processed for 30
destroyed when it gets joined. Consider the fol- minutes, sent to Loc5 and then ungrouped into
lowing diagram in which EntA joins to EntB: the original entities.
The attribute values of the individual entities are
EntA
not transferred to the grouped entity, Batch. In
other words, Att1=0 for the entity, Batch. How-
Join ever, once the entities are ungrouped, they retain

EntB Loc2 EntB

EntA is joined to EntB.

The logic for the above diagram is as follows:


ProModel 229
User Guide

their original attribute values. The following dia- Attributes and the LOAD/
gram graphically shows the concept of grouping.
UNLOAD Statements
EntA
Batch
EntA The LOAD statement loads a specified quantity
Group Ungroup of entities to the current entity. The loaded enti-
EntA
EntB Loc4 Loc5
ties retain their identity for future unloading
EntB
EntBEntC through an UNLOAD statement (see “Load” on
page 509 and “Unload” on page 571 for more
EntC EntC information). When the entities are loaded onto
Three entities are grouped the current entity, the resulting entity retains the
together to form a batch
which is later ungrouped. attribute value of the current entity.
For example, entities called Box are loaded onto
The logic for the diagram is as follows: another entity, Pallet. The Boxes are assigned an
attribute value, Att1=1. Pallets are also assigned
Process Table an attribute value, Att1=2. Once the Boxes are
Entity Location Operation (min) loaded onto the Pallet, the loaded pallet is
EntA Loc1 Att1 = 1 renamed Shipment. The Shipment then has an
EntB Loc2 Att1 = 2 attribute, Att1=2, because it inherits the attribute
EntC Loc3 Att1 = 3 value of the Pallet. However, we then assign an
ALL Loc4 GROUP 3 AS Batch attribute value to Shipment, Att1=3. After the
Batch Loc4 WAIT 30 Boxes are unloaded from the Pallet, the Boxes
Batch Loc5 UNGROUP retain their original attribute value, Att1=1. Now
ALL Loc5 ... the Pallet has a different attribute value, Att1=3,
which was assigned to the renamed entity, Ship-
Routing Table ment. Consider the following diagram and logic
in which two Boxes are loaded onto a Pallet and
Blk Output Destination Rule Move Logic renamed Shipment for the output entity:
1 EntA Loc4 FIRST 1 MOVE FOR 1
1 EntB Loc4 FIRST 1 MOVE FOR 1 Box Box

1 EntC Loc4 FIRST 1 MOVE FOR 1

Load Shipment Unload


1 Batch Loc5 FIRST 1 MOVE FOR 5
Pallet Loc2 Loc4 Pallet
... ... ... ... ... Boxes

Two Boxes are loaded onto a Pallet and renamed Shipment


in the Output. The Boxes are then unloaded from
Please note the Shipment. Shipment is renamed Pallet in the Output.

You can assign an attribute value to a grouped The logic for the diagram is as follows:
entity. However, once the entities are ungrouped,
they retain the attribute values they possessed
before they were grouped.
230 Chapter 6:
Attributes

Process Table bined entity, Box. The following diagram demon-


strates three entities combining into one entity.
Entity Location Operation (min)
Box Loc1 Att1 = 1
WAIT 2 min
EntA
Box Loc2 Att1 = 2
LOAD 2 Combine
Shipment Loc3 Att1 = 3
WAIT 20 EntB Loc4 Box
Shipment Loc4 UNLOAD 2
Box Loc4 WAIT 10
EntC
Routing Table
Blk Output Destination Rule Move Logic
Three entities are combined to
1 Box Loc2 LOAD 1 MOVE FOR 1
form a single entity called Box.
1 Ship- Loc3 FIRST 1 MOVE FOR 3
ment
1 Ship- Loc4 FIRST 1 MOVE FOR .5 The logic for the diagram is as follows:
ment
1 Pallet Loc5 FIRST 1 MOVE FOR 1 Process Table
1 Box Loc5 FIRST 1 MOVE FOR 2
Entity Location Operation (min)
EntA Loc1 Att1 = 1
Attributes and the COMBINE WAIT 2 min
EntB Loc2 Att1 = 3
Statement WAIT 3 min
EntC Loc3 Att1 = 5
Consider the example where several entities are WAIT 6
combined permanently into a single entity, Box ALL Loc4 COMBINE 3
(see “Combine” on page 459 for more informa- ALL Loc5 ...
tion). The combined entity, Box, assumes the
attribute values of the last entity that was com- Routing Table
bined to the single entity. If three entities, EntA,
EntB, and EntC, are combined to form a single Blk Output Destination Rule Move Logic
entity called Box, and EntC was the last entity 1 EntA Loc4 FIRST 1 MOVE FOR 1
that was combined, the Box will have the same 1 EntB Loc4 FIRST 1 MOVE FOR 3
attribute values as EntC. Therefore, if EntC had 1 EntC Loc4 FIRST 1 MOVE FOR .5
an attribute (Att1=5), then Att1=5 for the com- 1 Box Loc5 FIRST 1 MOVE FOR 1
... ... ... ... ...

In the above example, EntC is the last entity to be


combined so the entity Box assumes the attribute
value of EntC, Att1=5.
ProModel 231
User Guide

Variables Variable Edit Table


Variables are of two types: global and local. Glo- This edit table is used to define Variables used
bal variables are place holders defined by the user globally in the model. A description of each field
to represent changing numeric values. Local vari- is given below.
ables are place holders which are available only
within the logic that declared them. Variables can
contain either Real numbers or Integers, includ-
ing element index values, and are typically used
for decision making or recording information. A
Icon This field shows “Yes” if an icon for the
global variable can be referenced anywhere
variable appears on the layout. A variable’s icon
numeric expressions are allowed in a model. If a
looks like a counter and displays the variable’s
variable or attribute is needed only in a single
value.
block of logic, it is easier to define a local vari-
able right inside the logic block. Global variables ID The variable’s name.
are defined in the Variables Editor, accessed from
Type The type of variable, real or integer.
the Build menu. Local variables are defined with
the INT and REAL statements. (See “Local Vari- Initial Value The initial value of the variable to
ables” on page 233 for more information.) 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 previ-
ously defined variables) except attributes and
system functions.
Stats ProModel collects statistics for each vari-
able on three levels of detail, None, Basic, and
Time Series.
•None No statistics are collected for this
variable during simulation.
•Basic Collects basic statistics such as total
changes, average minutes per change, cur-
rent value, and average value.
•Time Series Collects all the basic statistics
plus the value history based on time or
observations. When you select Time
Series, ProModel collects either time-
How to access the variable edit weighted or observation-based statistics
table:

1. Select Variables (global) from the Build


menu.
232 Chapter 6:
Variables

for the variable depending upon the type Please note


selected.
In order to create plots or histograms for a vari-
able, Time Series stats must be selected in the
variables edit table.

Variable Layout
An icon to show a variable’s value during a simu-
lation may be placed anywhere on the layout. The
Variable Observation window below shows the icons for the variables
Record Value Time in Hours Current and Total at the right side of the screen.
Observation 1 6 1 Each icon has been labeled with a background
Observation 2 5 2 graphic.
Observation 3 6 3
Observation 4 5 4
Total 22 10

Time-Weighted Collects information on the


percentage of time the variable was at a specific
value. As shown in the above table, the average
value of the variable is:
(6 x 1) + (6 x 3) + (5 x 2) + (5 x 4) = 5.4
10
Observation-Based Collects information on
the number of times the variable changed to a
specific value. As shown in the above table, the
value of the variable is 6, then 5, then 6, then 5. How to place an icon for a vari-
The average would simply be: able on the layout:
6+5+6+5 = 5.5
1. Highlight the desired variable in the Vari-
4 able edit table.
Notes A general notes field for describing the 2. Click on the layout where the icon is to
variable. Click on the Notes button or double appear.
click in the field to open an edit window for
3. Size the icon by dragging an edge or cor-
entering detailed notes. ner of the sizing box.
ProModel 233
User Guide

How to remove an icon for a vari- Local Variables


able from the layout:
Local variables function as though they were
temporary attributes defined in a specific logic
1. Double click on the icon.
section which disappear when the logic section is
2. Choose Delete from the resulting menu. finished executing. Local variables are useful for
The icon is removed from the layout, but the test variables in loops and storing locally used,
variable remains in the model. unique values for each entity at the current loca-
tion.
Local variables are used within a block of logic
Editing a Variable’s Icon (i.e., operation logic, subroutines) and are
declared with an INT or REAL statement. Local
A variable’s icon can be customized as necessary variables are only available within the logic in
by simply double clicking on the icon and choos- which they are declared and are not defined in the
ing Edit. A dialog box appears as shown below Variables edit table. A new local variable is cre-
for specifying the characteristics of the variable ated for each entity to encounter an INT or REAL
icon or counter. statement (See “Int” on page 502 and “Real” on
page 539). A local variable is specific to each
entity, in much the same way an attribute is spe-
cific to an entity, except that the local variable is
only 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,
How to edit a variable’s icon: such as 10'', 20'', .... All valves are inspected at a
common inspection station and then move to a
dock where they are loaded onto pallets. The pal-
1. Double click on the icon.
lets are designed to hold only a certain size valve.
2. Click on the Digit Color, Frame, or Font but- Therefore, a pallet designed to hold 10'' valves
tons to adjust the respective setting. can only hold 10'' valves, not 20'' valves.
3. Click on OK.
Suppose a Pallet enters a multi-capacity location,
4. All other variable icons that you create Dock. Each Pallet has a different entity attribute,
from now on will retain these modifications. p_type, describing the type of valve it can hold.
Valves are loaded onto the Pallet. The 10” valves
must be loaded onto the pallet 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. We can use local variables
234 Chapter 6:
Variables

to accomplish this modeling task. The logic is as enced in the LOAD statement. The pallet
follows where X is a local variable: attribute cannot be directly referenced in the
LOAD statement.
Process Table
If Dock was a single capacity location, using a
Entity Location Operation (min) global variable would work the same as using a
Valve Inspect WAIT 5 local variable. However, because Dock is a
Pallet Dock INT X multi-capacity location, it can load valves onto
X = p_type multiple pallets at the same time. If a global vari-
LOAD 10 IFF able was used instead of a local variable, the glo-
X = v_type
WAIT 10 bal variable would change each time a pallet
entered Dock. If there were two different types
Routing Table of pallets at Dock, there would be only one type
of valve loaded on the pallet because the global
Blk Output Destination Rule Move Logic variable refers to both pallets.
1 Valve Dock LOAD 1 MOVE FOR 2
1 Pallet Delivery FIRST 1 MOVE FOR 8
Suppose, for example, a global variable, type,
signifies the pallet attribute, p_type. We assign
If we had not used local variables, we would need type=p_type at the beginning of the operation
to use the following operation logic for Pallet at logic for location Dock. The first pallet arrives
Dock: and type=3. Therefore, only valves with
v_type=3 are loaded onto the pallet. Another pal-
let 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 the logic before being ref-
erenced. The entity does not need to execute the
As can be seen from the two examples of logic, local variable definition statement (INT, REAL).
the first example is much easier and more straight
forward.
It is important to note that using “LOAD 10 IFF
p_type = v_type” in the operation logic would not
work for the intended purpose. Attributes refer-
enced in IFF conditions always refer to the entity
being loaded. Set the value of a local variable, X,
to the pallet attribute, p_type, so it can be refer-
ProModel 235
User Guide

Arrays Arrays are defined in the Arrays editor accessed


through the Build menu.
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 reference to a cell in an
array can be used anywhere a variable can be
used. A one-dimensional array may be thought of
as a single column of values. A two-dimensional
array is like having multiple columns of values
(similar to a spreadsheet).
To reference a cell in a one-dimensional array,
give the name of the array and enclose the cell
number in brackets. For example, if a one-dimen-
sional array containing ten cells is named OpnAr-
ray, to reference the fifth cell you would use
OpnArray[5]. To reference a cell in a two-dimen-
sional array, simply use the name of the array
with the row and column number in brackets. For
example, the statement OpnArray[3,4] references
a cell on the third row in the fourth column.
How to use the arrays editor:
Arrays with more than two dimensions are more
difficult to picture, but work exactly the same as
1. Select Arrays from the Build menu.
one and two dimensional arrays. For example, if
an array has a third dimension, you can reference
any cell simply by adding a comma before the
number of the desired cell in the third dimension. Example Arrays
For example, Tool[3,5,8]. Four and five-dimen- The following examples show how elements are
sional arrays work the same way. The maximum referenced in a one-dimensional array with five
number of dimensions for an array is 20. cells and in a two-dimensional array with fifteen
Array cell values are assigned in the exact same cells.
way as you would assign a value to a variable.
For example, to assign the value 18 to the cell at One-dimensional array
the fifth row and second column in an array OpnArray[5]
named Arr1 you would use the following state-
Cell[1]
ment.
Cell[2]

Assign array cell value Cell[3]


Cell[4]
Arr1[5,2]=18 Cell[5]
236 Chapter 6:
Arrays

Two-dimensional array if your .xls file is in the same directory as your


.mod file, simply enter the name of the .xls file
Tool[3,5]
into this field.
Cell[1,1] Cell[1,2] Cell[1,3] Cell[1,4] Cell[1,5]
See “Export Arrays to Spreadsheets” on page 239
Cell[2,1] Cell[2,2] Cell[2,3] Cell[2,4] Cell[2,5]
for more information on using the Export dialog.
Cell[3,1] Cell[3,2] Cell[3,3] Cell[3,4] Cell[3,5]
Disable: Use this option to have the import file,
export file, or both ignored during simulation
Arrays Edit Table without deleting the name of the import or export
files from the Array record. Choose “None” to
The Arrays edit table is used to define Arrays that use the specified import and export files.
are used in the model. The fields of the Arrays
edit table are explained on the following page. Persist: When running multiple replications
you 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, if you run a simulation for three
ID: The name of the array. scenarios with an array that “Keeps” its values,
Dimensions: The size of each dimension of the the data in the array at the end of the first replica-
array in cells. For example, the dimensions of a tion will be kept and used as the second replica-
one-dimensional array of 100 cells is “100.” tion begins. If you are using an Import File, it will
Likewise, a two-dimensional array with 50 rows be used to populate the array for the first replica-
and five columns would have dimensions of tion, but ignored for subsequent replications
“50,5.” The number of rows is first, followed by when “Keep” is selected for the array.
a comma and then the number of columns. An If you choose to “Clear” the array, no array infor-
array cannot have more than 20 dimensions. mation will be kept from one replication to
Type: The type (integer, real, string, or expres- another and the array will be reset with its initial
sion) for all cells in the array. information at the beginning of each replication
(see the next heading “Initializing Arrays”). If
Import File: The name of the spreadsheet from you are using an Import File, it will be used to
which you will populate the array. You may enter populate the array at the beginning of each repli-
either a fully qualified path to your .xls file or a cation when “Clear” is selected for the array.
path relative to your .mod file. For example, if
your .xls file is in the same directory as your Notes A general notes field for entering descrip-
.mod file, simply enter the name of the .xls file tive information about the array. Click the head-
into this field. ing button or double click in this field to open a
larger window for entering notes.
See “Import Data into Arrays” on page 237 for
more information on using the Import dialog. The window pictured above shows how to define
the example arrays that appear on the previous
Export File: The name of the spreadsheet to page.
which you will save the array data. You may
enter either a fully qualified path to your .xls file
or a path relative to your .mod file. For example,
ProModel 237
User Guide

Initializing Arrays tion Logic” on page 180 for a list of logic ele-
ments used to define model parameters.
By default, all cells in an array are initialized to
zero. Initializing cells to some other value should
be done in the initialization logic. A
WHILE...DO loop is useful for initializing array Import Data into Arrays
cell values. The logic below fills a 3 x 5 array (3
rows and 5 columns) with values from an exter- When you import data, from either an external
nal, general read file. Excel spreadsheet or SQL database, into an array,
ProModel loads the data from left to right, top to
bottom. Although there is no limit to the quantity
of values you may use, ProModel supports only
two-dimensional arrays.

Import from an Excel Spreadsheet

This example uses the variables Column and


Row (which may be defined as local variables)
along with two WHILE...DO loops to assign
every cell in the array Inventory_Array a value
from a general inventory file. The logic first sets
the value of the variable Column to one. It then
assigns all the cells in column one a value by
reading a value from the external file and incre-
menting the variable Row. When all the cells in
column one have a value, the logic increments to
the second column and does the inside loop Import File The name of the spreadsheet you will
again. It repeats this loop until each cell in the use. You may enter either a fully qualified path to
array has a value. your .xls file or a path relative to your .mod file.
For example, if your .xls file is in the same direc-
Please note tory as your .mod file, simply enter the name of
the .xls file into this field.
Assigning values to a cell in an array can be done Sheet Name The name of the sheet from which
in any expression or logic field, such as initializa- you will import the array data.
tion and operation logic. However, arrays cannot
be used in logic elements that determine a
model’s structure, such as location capacity. See Please note
“Execution Time of Initialization and Termina-
If your spreadsheet contains only a single data
set, ProModel will automatically load the data
238 Chapter 6:
Arrays

into the array—you do not have to define any cell 6. Enter the Import Start Cell location. The
information unless you wish to limit the contents value in this cell will occupy the first position in
of the array to a portion of the data set. the array.
7. Enter the Import End Cell location. The
Array import requires Microsoft Excel 97 or value in this cell will occupy the last position in
later. the array.
8. Click OK.

Import Start Cell The first piece of data to place


into the array. Import from a SQL Database
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
wish to import.
3. Click the Import File button on the Arrays
dialog.
4. In the File field, enter the name of the
spreadsheet you wish to use (you may also
Connection String The connection string used
browse to select a file).
to connect to the SQL database including all nec-
essary security parameters.
Query or Stored Procedure Enter the SQL
query or the name of the stored procedure to be
executed during the model’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
wish to import.
5. In the Sheet Name field, enter the name of 3. Click the Import File button on the Arrays
the worksheet that contains the data you dialog.
wish to use.
ProModel 239
User Guide

4. Click on the Database radio button. If you export multiple times to the same spread-
sheet, ProModel will 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
simulation.
If you are running multiple scenarios and/or rep-
lications, see step 5 below for a description of
how the spreadsheet handles the multiple scenar-
ios/replications.

How to export array data:

1. Select Arrays from the Build menu.


5. In the Connection String field enter the 2. Click the Export File button on the Arrays
necessary string to connect to the desired dialog.
database.
3. Enter the name of the spreadsheet file you
6. In the Query or Stored Procedure field wish to use, or browse to select a file.
enter the SQL query or stored Procedure
name that will be used to populate the array
during the initialization logic.
7. Click OK.

Export Arrays to Spreadsheets

4. Click OK.
5. When the simulation is run, the array data
will be saved to the spreadsheet file. If you
ran multiple scenarios and/or replications,
data from each one will be saved to a sepa-
rate sheet in the spreadsheet file, as seen
below.

The fields in the Export Arrays dialog have simi-


lar functionality as those for the Import Arrays
dialog.
240 Chapter 6:
Arrays

Using Arrays mation and then Arrays. This information


can also be printed.
Using arrays can simplify a model. Suppose you 4. Arrays can be used with the WAIT UNTIL
need to model an assembly line that attaches statement.
components to a computer motherboard. Fur- 5. Statistics are not generated for arrays. How-
thermore, you want to track the usage of compo- ever, if you would like to see the final value
nent parts over time. Without an array, hundreds of an array’s cell, you can use the array
of individual entities of various types would have export feature to export to Excel, you can
to represent hundreds of individual components. place a PAUSE statement in the termination
Keeping track of all the components would be logic and then view the array under the
very complex, not to mention all of the join oper- Information menu, or you could print an
ations and routings for performing the assembly. array’s values or write them to an external
Instead, various cells in a one-dimensional array file as part of the termination logic. If you
could track the number of each type of compo- want more statistical information on a partic-
nent used during the simulation. ular cell, assign the cell to a variable and
An array can do the job more efficiently. The ini- then choose basic or time-series statistics for
tial inventory level for each component could be the variable.
stored in an external file and read into the cells of
the array at the start of the simulation. The first
cell might contain the inventory level of transis-
tors; the second could contain the inventory level
of capacitors and so on. When a motherboard
arrives at the location adding the components,
each cell’s value is decremented 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 by twelve and the sec-
ond cell is reduced by five. Thus the model
becomes much less complex because it requires
fewer entities and less logic.

Notes on Arrays
1. If a warm-up time is specified, array values
are not reset.
2. Arrays can be nested. For example, if
Arr1[2,3] is equal to three, then the state-
ment Arr2[5,Arr1[2,3]] works exactly like
the statement Arr2[5,3].
3. You can examine the value of a cell in an
array during a simulation by choosing Infor-
ProModel 241
User Guide

Macros Text Any text to be substituted where the macro


name is called. This text may be a complete
A macro is a place holder for an often used expression, an entire logic block, or even part of a
expression, set of statements and functions, or logic block.
any text that might be used in an expression or
Options Allows you to define the macro as a
logic field. A macro can be typed once, and then
run-time interface parameter or select a resource
the macro’s name can be substituted for the text it
group.
represents anywhere in the model and as many
times as necessary. Macros are defined in the The example table above defines three macros.
Macros Editor, accessed from the Build menu. The first macro is simply a numeric constant,
with fpm representing a conversion factor from
miles per hour to feet per minute. If a number is
used in multiple places in a model, then a macro
makes it possible to change that number through-
out the model simply by changing the macro
itself. The second macro, Operation_Time, calcu-
lates the various operation times at different loca-
tions depending on the attributes at the locations.
The last macro, Number_of_AGVs, is a run-time
interface variable used to define the number of
AGVs in the simulation model (see “Run-Time
Interface” on page 242).
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 any expression valid in the expres-
sion or logic field that called the macro. For
instance, the string “the number of entries is”
How to create and edit macros: might be a macro called mac1. This macro by
itself is not a valid expression. However, when
1. Select Macros from the Build Menu. used with the DISPLAY statement in the opera-
tion logic (i.e., DISPLAY mac1), the compiler
will recognize the macro as a string.
Macro Editor A macro may be used in any expression field, but
may only contain a numeric expression (e.g.,
The Macro edit table is used to assign recurring Entries (LOC1), U(5,1), Var1+Att2, etc.). In
text to a reference name. addition, a macro used in an expression field may
not contain multiple lines of text. When used in a
logic field, the macro may include any logic ele-
ment valid in that logic field.
Suppose five different locations use the same
ID A name to identify the macro. lines of code. Instead of entering the same logic
242 Chapter 6:
Macros

five times in five different fields, reference the Please note


following macro by typing the macro ID, Mac1,
in the operation logic of the machine:
Macro notes:
1. A macro may be used only when the elements
contained in the macro are appropriate to the
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 as IF...THEN or WHILE...DO.
For more information, see “Statement Blocks”
on page 436.
Every time the macro is referenced, the logic is
executed. Macros can also be nested within other
macros. This means that a macro can consist of
one or more other macros. Consider the follow- Run-Time Interface
ing Macro edit table:
Defining a run-time interface (RTI) for a macro
allows the user to easily change simulation/model
parameters before the simulation starts. It also
provides an experimental framework for defining
multiple scenarios to be run in a batch (see “Sce-
narios” on page 353). An RTI for a macro allows
a macro’s text to be changed by the user when-
ever a simulation run begins. Since macros are
The macro, Favorite_Quote references other
allowed in any expression, this gives the user
macros, such as Race and Finish. Note that some
flexibility to edit most model parameters every
of the other macros, such as For_Quality, are
time a simulation starts without having to directly
only portions of a complete line of code.
edit the model data.
Although the macro is valid, it will not compile
as a part of macro logic because the create state- The key difference between a macro with an RTI
ment requires an expression and an entity name. and one without is that when a simulation begins,
The line Favorite_Quote in a logic field would be a macro defined with an RTI provides a menu
interpreted as the following line, Create 2 As that allows users to change only the macros you
EntB Take 1 Res1. want them to change. An RTI allows you to
request a variety of information to substitute for a
macro; from simple values (e.g., the initial value
ProModel 243
User Guide

of a location’s capacity) to complex text (e.g., a combinations to find the combination that works
line of logic). You may create RTI parameters best with your model.
using the dialog box below, accessed through the
Numeric Range This specifies the lower and
macros dialog.
upper limits for the parameter if the type is
numeric.

How to define an RTI for a macro:

1. Select Macros from the Build menu.


2. Type the macro name and click on the
Options button.
3. Choose Define from the RTI submenu.
4. Define the Parameter Name and enter the
prompt (optional).
5. Select the parameter type: Unrestricted
Text, Record Range, or Numeric Range.
Parameter Name This text will identify the
parameter represented by this macro. It should 6. If the parameter is numeric, enter the
consist of text that clearly describes the parame- lower value in the From box and the upper
ter to be changed, for example, Operation Time. value in the To box.
The macro name and the parameter name can be 7. Click OK.
different. This provides more flexibility and 8. Enter the default text or numeric value in
allows you to view a more descriptive parameter the Macro Text field.
name when defining scenarios.
9. Use the macro ID in the model (e.g., in
Prompt This text will appear if the user decides operation or resource usage time).
to change the parameter. You should use it to fur-
ther specify the information to be entered, for
example, “Please enter the amount of time the
simulation should run.” Please note
Unrestricted Text This option allows the user to
enter any text, such as the distribution U(8,2). When using a record range, be sure to group all
Note that any text that the user enters will be sub- arrival and shift records. This will allow you to
stituted for the macro name in the model. There- select which series of records to include in the
fore, the text the user enters must be syntactically macro. Note also that when you define an arrival
correct and valid anywhere the macro name or shift RTI, ProModel adds “ARRIVAL_” or
appears. “SHIFT_” to the name to help you identify the
macro more easily.
Record Range Allows you to enable an arrival
or shift record from a range of records. This
allows you to test a variety of shift and arrival
244 Chapter 6:
Macros

Run-Time Interface Example You are now able to change the operation time at
Lathe_1 using the Model Parameters option in
Suppose you build a factory model and determine the Simulation menu. For more information on
the first lathe, Lathe_1, is a bottleneck. The changing model parameters and defining scenar-
model results indicate the throughput is lower
ios, see “Model Parameters & Scenarios” on
than expected. You decide to perform several
page 352.
what-if scenarios with the model by changing the
operation time of Lathe_1. Instead of changing
the operation time at Lathe_1 within the Process Please note
edit table, it is easier to define a macro with an
RTI. This technique allows the model user to For more information concerning the differences
easily see the effect of installing a faster lathe between macros and subroutines, see “Macros”
without ever editing the model itself. The fol- on page 241 and “Subroutines” on page 246.
lowing example represents the dialog used to
define the RTI for the macro where the operation
time is a numeric value between 12 and 20:
Resource Grouping
Resource grouping allows you to define specific
groups of resources rather than define each unit
separately. For example, suppose you need a spe-
cific technician to perform an operation. If the
technician is not available, you may use either
another technician or one of two qualified opera-
tors to perform the operation. Rather than define
each qualified operator as a separate resource,
you may define a macro that includes them.

How to define a resource group


After defining the RTI for the macro, substitute
1. Select Macros from the more elements
the macro, Oper_Time, for the operation time in
section of Build menu.
the operation logic in the Process edit table for
Lathe_1 as shown below: 2. Define a macro ID and enter a list of all
resources you wish to include as part of the
resource group.

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).
ProModel 245
User Guide

3. Click on the Options button and select


Resource Group from the submenu.

At the end of the simulation, ProModel creates a


statistical report containing information collected
for each resource included in the resource group,
as well as the entire group. This will allow you to
track individual, as well as group performance.
For information on statistics and how to graph the
results, see “Reports and Graphs” on page 373.
246 Chapter 6:
Subroutines

Subroutines Subroutines are defined in the Subroutines Editor


which is accessed from the Build Menu.
A subroutine is a user-defined command that can
be called to perform a block of logic and option-
ally return a value. Subroutines may have param-
eters (local variables) which act as variables local
to the subroutine and that take on the values of
arguments (i.e., numeric expressions) passed to
the subroutine.
ProModel handles subroutines in three ways.
First, a subroutine may be processed by the call-
ing logic as though the subroutine is part of the
calling logic. This way is the most commonly
used, and is done by simply referencing the sub-
routine by name in some logic or expression.
Second, a subroutine may be processed indepen-
dently of the calling logic so the calling logic
continues without waiting for the subroutine to
finish. This method requires an ACTIVATE
statement followed by the name of the subroutine
(see “Activate” on page 441), or you may use the How to create and edit subrou-
Interact Menu (see “Run-Time Interact Menu” on tines:
page 368). Third, ProModel allows subroutines
written in an external programming language to 1. Select Subroutines from the Build menu.
be called through the XSUB() function.

Subroutine Editor
The Subroutines edit table consists of several
fields which identify the components of a subrou-
tine. Each of these fields is described below.

ID A name that identifies the subroutine.

Type The type of numeric value returned by the


subroutine can be Real, Integer, None, or Interac-
tive. Use Real and Integer if the subroutine
returns a number and None when no return value
is expected, as is often the case in initialization or
ProModel 247
User Guide

termination logic. Subroutines of type Interactive fore, independent subroutines can run in parallel
are identical to subroutines of type None, except with the logic that called them.
that interactive subroutines are also accessible for
4. Independent subroutines called with the ACTI-
activation by the user through the run-time menu.
VATE statement cannot contain entity-specific or
Interactive subroutines are displayed in the Inter-
location-specific system functions.
act menu during runtime. For more information
on Interactive subroutines, see the discussion
later in this section.
Parameters Arguments passed to the subrou- Subroutine Format
tine get assigned to local variables called parame-
ters. Items passed to a subroutine as arguments A subroutine may be named any unique, valid
can have different names than the parameters that name. The general format for calling a subrou-
receive them. Parameters can be real or integer. tine is as follows:
The first parameter receives the first argument, SubroutineName(arg1, arg2,....,argn)
the second parameter receives the second argu-
ment, and so on.
Subroutine call
Logic One or more statements to be executed
whenever the subroutine is called. Statements in GetOpTime(3,7)
subroutines must be valid in the logic that calls
DoInitialization()
the subroutine. Subroutine logic may contain a
RETURN statement with a value to be returned
from the subroutine. (See “Return” on page 549
for the correct syntax and an example of this Please note
statement.)
Subroutine format notes:
Please note
1. If no arguments are specified, open and closed
Subroutine editor notes: parentheses are still required.
1. If the subroutine is of type Integer and the 2. Statements in subroutines must be valid in the
return value is a real number, the return value logic that called the subroutine. For example, if a
will be truncated unless the ROUND() function is subroutine is called from the operation logic, the
used (e.g., RETURN ROUND(<numeric expres- subroutine may contain only those statements
sion>)). valid in the operation logic. Subroutines called
2. If you do not want a stand-alone subroutine from an ACTIVATE statement or from the Inter-
referenced in operation logic to be treated as an act Menu at run-time can have any general logic
implicit wait statement, define the subroutine as statements, including WAIT.
type None.
3. A subroutine may be used in any logic field. In
3. When using the ACTIVATE statement to call a addition, a subroutine may be used in any expres-
subroutine, the calling logic continues without sion field, provided that the RETURN statement
waiting for the called subroutine to finish. There- is used to return a value to the expression field.
248 Chapter 6:
Subroutines

Expression fields include the Qty Each column of routing are shown below. The subroutine itself is
the Arrivals edit table and the routing rule for shown later in this section.
processing.

4. If a subroutine does not return an expression


with the RETURN statement, a value of zero will
be returned for subroutines of type Real and Inte-
ger. No value will be returned for a subroutine of
type None or Interactive.

Subroutine Example
Suppose that you build a Copy Center model and
it is necessary to define the processing time at the
operator assisted machines as a function of two
parameters: Order Quantity and Quality Level. In
addition, you would also like to write the pro-
cessing times at each copy machine to a file
called Report.Dat. Subroutines Edit Table
Because the operation logic is identical at both The Subroutine edit table lists the name of the
machines, a subroutine may be used to execute subroutine, the return type, the parameters to be
the group of statements required. Notice in the passed to the subroutine, and the logic. Notice
Process Logic pictured next that Subroutine that the subroutine ID corresponds to the subrou-
OrderTime is called, and each order's Quantity, tine name called in the processing logic above
Quality, and Ticket attributes are passed as argu- and that the subroutine has four parameters (P1,
ments. The third argument is simply a constant P2, P3 and P4) corresponding to the four argu-
value, 1 or 2, which represents the location from ments passed to the subroutine. Also note that
which the subroutine was called (i.e., 1 if called the subroutine is of type real since the return
from OpAsist1 or 2 if called from OpAsist2). The value will be a real valued processing time.
operation logic, which calls the subroutine, and

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
ProModel 249
User Guide

passed to the subroutine as parameters of the nor- upon the quality level desired. Operation time is
mally distributed inspection time. determined by simply multiplying the process
time by the scale factor.
Once the order time has been determined, this
value is written 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 returns the order time
value to the processing logic.

Subroutine Logic Interactive Subroutines


The final step in defining the subroutine is to
Interactive subroutines are subroutines activated
specify the logic to be processed when the sub-
by the user anytime during run-time by choosing
routine is called. In this example, the logic should
the subroutine from the Interact menu. The name
include a processing time, a procedure to write
appearing in the Interact menu is either the sub-
the values of the attributes to a file, and a routing
routine name or if a string is entered as a com-
decision based on the values of the two attributes.
ment statement at the beginning of the subroutine
The logic window is accessed by clicking on the
logic, the string is used as the name (e.g., #
Logic heading button.
“Arrival Frequency”). Interactive subroutines
allow the user to interact with the simulation dur-
ing 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:
•changing model parameters during a simula-
tion run
•changing routings
•calculating and reporting user-defined statis-
tics
Suppose you want to interactively change the
The first line of the logic calculates the order time arrival frequency for a certain entity, customers,
as a function of the Quantity and Quality during run time. Define a variable, Var1, and
attributes passed as parameters. These parame- assign it an initial value to be used for the initial
ters are used as arguments in two user defined arrival frequency. Enter Var1 in the arrival fre-
functions, ProcTime() and QualFactor(). Func- quency field for the entity customers. Create a
tion ProcTime() returns a time value based on the
number of copies in the order, while function
QualFactor() returns a scale factor depending
250 Chapter 6:
Subroutines

subroutine of type Interactive and enter the fol- knowledge of your external programming lan-
lowing logic: guage (C, C++, Pascal) to use external subrou-
tines. In addition, you must also have a good
Windows platform knowledge, specifically with
respect to creating DLLs in your language.
Because it is a 32-bit program, ProModel can
load and call only 32-bit DLLs, and requires that
you use a 32-bit Windows compiler.
For more information about this feature, you can
load, study and run XSUB.MOD in the reference
model directory (also see “Xsub()” on page 583).
This model uses XSUB.DLL, found in the MOD-
ELS directory. The source code and make files
for XSUB.DLL (XSUB.CPP, XSUB.MAK,
During run-time, you can then change the arrival XSUB.IDE) are also included in the MODELS
frequency for the customers by choosing the Cus- directory. Some general explanation is contained
tomer Arrivals from the Interact menu (see “Run- in the comments of this source code.
Time Interact Menu” on page 368).
Due to the complexities of Windows program-
ming and the variety of uses for this advanced
Please note feature, PROMODEL Corporation can only pro-
vide minimal support for this feature. Many ques-
Interactive subroutines may also be called from tions regarding Windows programming and other
any logic or expression where no return value is programming languages cannot be handled
required. See “Statements and Functions” on through our customer support department. Please
page 439 for more information. consult your language programming manuals,
language customer service centers, Microsoft,
and other resources to resolve these types of
problems.
External Subroutines
There may be some cases where you need to per- Subroutines vs. Macros
form actions ProModel is not capable of doing.
You may need extended capabilities with more Although subroutines and macros work similarly,
sophisticated commands. ProModel allows you they have subtle differences. Any logic may use
to interface with external subroutines located in both macros and subroutines. The main differ-
thirty-two bit Windows DLL files you have cre- ence is in the way they are used. Only subrou-
ated. This feature could be useful for doing tines can be used when you need to pass
sophisticated file I/O, performing statistical anal- arguments, get a return value, or activate the
ysis, making your simulation interactive, or help- independent execution of logic. Only macros can
ing with other simulation needs. be used when defining run-time interface param-
eters.
Because of the intricacies of the Windows devel-
opment environment, you must have a sound
ProModel 251
User Guide

Macros may be used in any expression 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 may include any logic
element valid in that logic field.
Subroutines may also be used in an expression
field provided that the RETURN statement is
used to return a value to the expression field.
When a subroutine is used to represent one or
more logic statements, the subroutine may only
include statements valid for the particular con-
text.
252 Chapter 6:
Arrival Cycles

Arrival Cycles Arrival Cycles Edit Table


An arrival cycle is a pattern of individual arrivals Arrival cycles are defined by entering the proper
which occurs over a certain time period. Some data into the Cycle edit table. The fields of the
examples of arrival cycles that exhibit a pattern Cycle edit table are explained below.
are the arrival of customers to a store and the
arrival of delivery trucks to a truck dock. At the
beginning of the day, arrivals may be sparse; but
as the day progresses, they build up to one or
more peak periods and then taper off. While the
ID The cycle name.
total quantity that arrives during a given cycle
may vary, the pattern or distribution of arrivals Qty / % Select either Percent or Quantity as the
for each cycle is assumed to be the same. basis for the total number of arrivals per cycle
occurrence.
Arrival Cycles are defined in the Arrival Cycles
edit table, accessed through the Build Menu. Cumulative... Select Yes to specify the % or
Qty values in a cumulative format. Select No to
specify these fields in a non-cumulative format.
Table... Click on 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 operations of a
bank (or any service or manufacturing system)
and we need to specify a pattern for customer
arrivals. From past data, we know that customers
arrive throughout the day (9:00 AM to 5:00 PM)
according to the following approximate percent-
ages.
From Before Percent

How to edit arrival cycles: 9:00 AM 10:30 AM 0


10:30 AM 11:30 AM 10
1. Choose More Elements from the Build 11:30 AM 1:00 PM 25
Menu. 1:00 PM 4:00 PM 55
4:00 PM 5:00 PM 70
2. Choose Arrival Cycles.

Defining the Arrival Cycle


The arrival cycle will be named Bank_Arrivals in
the Arrival Cycles edit table. Because the data is
ProModel 253
User Guide

expressed in terms of percentages, we select Per- record for the bank example appears below. (See
cent as the basis for the cycle. Also, the percent- “Arrivals” on page 163 for more information.)
age values are not cumulative so we specify No
in the Cumulative field.

The total number of customers per day is nor-


mally distributed with a mean of 1000 and a stan-
Next, we click on the Table heading button to dard deviation of 35. The number of occurrences
open another edit table for entering the cycle of the cycle is 20, representing 20 working days
data. (1 month) of time. The frequency in this case
refers to the period of the cycle or the time
between the start of one cycle and the start of the
next cycle, which is every 24 hours. Make sure
the arrival frequency is defined 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 simula-
tion. An arrival cycle will divide the quantity
specified in the Qty each... field into various
In this example, even though the percentages of sized groups arriving throughout the day.
customers that have arrived are not cumulative,
the time is always cumulative. Therefore, the To assign the arrival cycle to the arrival record,
table reads as follows: ten percent of the daily click on the Qty each... heading button to open a
customers arrive in the first 1.5 hours, fifteen per- dialog with the names of all defined cycles.
cent of the daily customers arrive between hour
1.5 and 2.5, and so on. The arrivals are randomly
distributed according to a Uniform distribution
during the time interval in which they arrive.
The arrival cycle is now defined and can be
assigned to an arrivals record in the Arrivals edit
table.

Assigning Arrivals to the Arrival


Cycle
After an arrival cycle has been defined, assign an
arrival record to the arrival cycle in the Arrivals
edit table for the arriving customers. The arrival
Click on the entry Bank_Arrivals and select OK.
The Qty each... field now includes the cycle.
254 Chapter 6:
Arrival Cycles

Cumulative Cycle Tables the number of arrivals to arrive within each time
interval.
In the previous example, percentages were
expressed non cumulatively. This same data Example 1
could have been expressed cumulatively as fol-
Suppose that in the bank example we knew that
lows:
for each cycle period, the number of customers to
Before Percent arrive during each time interval within the cycle
period is as follows:
9:00 am 0
10:30 am 10 From Before Number
11:30 am 25
9:00 AM 10:30 AM 100
1:00 pm 55
10:30 AM 11:30 AM 150
4:00 pm 70
11:30 AM 1:00 PM 300
5:00 pm 100
1:00 PM 4:00 PM 150
The data is now expressed cumulatively and 4:00 PM 5:00 PM 300
could be entered in the cycle table as follows.
With the data in this format, we specify the
Arrival cycle by choosing Qty in the “Qty/Per-
cent” field and complete the cycle table as fol-
lows:

To specify cycles in cumulative form, simply


choose Yes in the Cumulative... field of the
Arrival Cycles edit table.
This table could also be specified cumulatively
Please note by choosing Yes in the Cumulative... field and
entering the quantity values in a cumulative for-
Time values remain cumulative regardless of the mat.
form of the percentages.
Please note

When specifying Arrival cycles by quantity, the


Arrival Cycles by Quantity value entered in the “Quantity each” field of the
The previous example was based on the assump- Arrivals edit table changes meaning. Instead of
tion that a certain percentage of arrivals came the total arrivals per cycle, it represents a factor
within a specified time interval. An alternate by which all entries in the cycle table will be mul-
method of specifying an arrival cycle is to specify tiplied. This field may be any valid expression
which evaluates to a number. This allows the
ProModel 255
User Guide

same arrival cycle to be entered for more than


one arrival record that has a different 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 record for each day with a
frequency of one week.

Example 2
Suppose we wish to see the effect on the Bank
example if the number of arrivals is increased by
50%. The relative quantities per time interval
remain the same but now 50% more customers
arrive each day. Using the data 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.

The result is an arrival schedule with the follow-


ing parameters.
From Before Quantity
9:00 AM 10:30 AM 150
10:30 AM 11:30 AM 225
11:30 AM 1:00 PM 450
1:00 PM 4:00 PM 225
4:00 PM 5:00 PM 450
256 Chapter 6:
Table Functions

Table Functions ear interpolation. The following two examples


show how to specify a linear function (where
Table functions provide an easy and convenient only two reference values are needed to define
way to retrieve a value based on an argument the entire function) and a nonlinear function
(i.e., some other value) that is passed to the table. (where more than two reference values need to be
Table functions specify a relationship between an specified).
independent value and a dependent value. All
table functions are defined in the Table Functions Example 1
editor which is accessed from the Build menu.
The example below shows a relationship that
exists between the time required to process an
order and the number of entities in the order. As
the number of entities increases, the time
required to process the order also increases. The
relationship in this case is linear, meaning the
processing time is directly proportional to the
number of copies in the order. Because of the lin-
ear relationship, only the two endpoints need to
be entered in the function table. (The function
table for this example is given in the discussion
on the Table Function editor.)
Function: ProcTime()
3

Processing
time (min)
How to access the function table 1

editor:
0
0 100 200 300
1. Select More Elements from the Build menu.
Order size
2. Select Table Functions.
Example 2
In this example the relationship between the inde-
Table Functions Editor pendent value and the dependent value is nonlin-
ear and inversely proportional. In addition,
Table functions are defined by the user and return interpolation is required to determine the depen-
a dependent (or look-up) value based on the inde- dent value if the independent value passed to the
pendent (or reference) value passed as the func- function lies between the independent values
tion argument. Independent values must be
entered in ascending order. If the independent
value passed to a table function falls between two
independent values, a dependent value for the
unspecified reference value is calculated by lin-
ProModel 257
User Guide

given explicitly in the table function. The tables for the two example functions are
given below.
Function: QualFactor()
3.0

2.0
Processing
Time Factor
1.4

1.1
1.0

1 2 3 4 5

Quality Level

In the example above the dependent value repre-


sents a factor which is to be multiplied by the
processing time required to complete an order.
Each order is assigned a number, 1 through 5,
according to the level of quality desired. In this The independent and dependent values allow any
case, a lower number represents higher quality. general expression such as numbers, variables,
(The function table for this example is listed in and math functions. The fields are evaluated only
the following explanation of the Function Table at translation, and cannot vary during the simula-
Editor.) tion.
When calling a user-defined table function, if the
Table Function Edit Table independent value is out of range, then the table
function will return a zero for the dependent
The Function Table Editor is where all function value. Consider the following function table,
tables are created and edited. The fields of the Operation_Time:
Function Table editor are defined below.

ID The name of the function table.

Table... Click on this heading button to open a If the function were called with the command
table for defining the independent and dependent “Operation_Time(5),” the independent value
values of the function. passed to the table function Operation_Time
would be five. But five is beyond the limits of the
table, so the dependent value returned will be
zero. Likewise, if the independent value is 1, the
dependent value returned will be zero. However,
if 2.7 is entered as the independent value, Pro-
258 Chapter 6:
Table Functions

Model will interpolate and return a value between


30 and 50.
ProModel 259
User Guide

User Defined Distributions section). The data is entered into the User Distri-
bution edit table. The User Distribution edit
Occasionally, none of ProModel’s built-in distri- table’s fields are described below.
butions can adequately represent a data set. In
these cases, the user may define a User Distribu-
tion to represent the data set. User Distributions
specify the parameters of user-defined (empiri-
cal), discrete, or continuous probability distribu-
tions.
ID The name of the distribution. When referenc-
ing 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... Yes or No depending on whether
the distribution is to be specified in cumulative or
non-cumulative format.
Table... Click on this button (or double click in
the field) to open an edit table for defining the
parameters of the distribution. Once a distribu-
tion has been defined, the field changes from
“Undefined” to “Defined.”
The combination of Discrete and Continuous dis-
How to create and edit user distri- tributions, along with the ability to express either
butions: in cumulative or non-cumulative terms, creates
four possible formats for specifying distributions.
1. Choose More Elements from the Build
The remainder of this section gives examples and
menu. procedures for specifying each of these distribu-
tion types.
2. Choose User Distributions.

Discrete Distributions
User Distribution Edit Table Discrete distributions are characterized by a finite
set of outcomes, together with the probability of
A user-defined distribution is a table of empiri- obtaining each outcome. In the following exam-
cally gathered data. User distributions may be ple, there are three possible outcomes for the
either continuous or discrete, and may be cumu- group size: 30% of the time the group size will be
lative or non-cumulative (more information con-
cerning these options is found later in this
260 Chapter 6:
User Defined Distributions

10, 60% of the time the group size will be 20, and Process Table
10% of the time the group size will be 30.
Entity Location Operation (min)
Discrete Distribution EntA Loc1 GROUP Dist() AS Batch
Batch Loc1 WAIT 10 min
P 1.00
r .90
Routing Table
o .80
b .70
Blk Output Destination Rule Move Logic
a .60
b .50
i .40 1 Batch Loc2 FIRST 1 MOVE FOR
l .30 5
i .20
t .10 ProModel provides the flexibility to specify dis-
y 0 crete distributions according to a probability
10 20 30
mass function or a cumulative distribution func-
Group size tion. Select Yes or No in the Cumulative field of
the Distribution edit table and fill in the table
One way to represent a discrete distribution is by according to the probability mass function or the
its probability mass function, listing the possible cumulative distribution function. The following
outcomes together with the probability of observ- tables show the discrete distribution example
ing each outcome. A probability mass function defined in both formats.
for the example above could be expressed as fol-
lows (with G representing the group size). Discrete (probability mass
G 10 20 30 function)
P(G) .30 .60 .10
An alternate way to represent a distribution is
through a cumulative distribution function, list-
ing each possible outcome together with the
probability that the observed outcome will be less
than or equal to the specified outcome. A cumu-
lative distribution function for the example above
could be expressed as follows.
Discrete (cumulative distribution
G 10 20 30 function)
P(G) .30 .90 1.0
In the next example, the number of parts are
grouped into a batch according to a user distribu-
tion.
ProModel 261
User Guide

Continuous Distributions P(3.5 <= X < 5.0) = 0.40


P(5.0 <= X < 6.0) = 0.30
Continuous distributions are characterized by an P(6.0 <= X <= 8.0) = 0.10
infinite number of possible outcomes, together P(8.0 < X) = 0.00
with the probability of observing a range of these The following table represents the p.d.f. for this
outcomes. In the following example, there are example.
an infinite number of possible operation times
between the values 2.0 minutes and 8.0 minutes.
Twenty percent of the time the operation will take
from 2.0 to 3.5 minutes, 40% of the time the
operation will take from 3.5 to 5.0 minutes, 30%
of the time the operation will take from 5.0 to 6.0
minutes, and 10% of the time the operation will
take from 6.0 minutes to 8.0 minutes.

As with a discrete distribution, a cumulative dis-


Continuous Distribution tribution function for a continuous distribution
specifies the probability that an observed value
P 100
r 90 c.d.f. will be less than or equal to a specified value. A
o 80 c.d.f. for the example distribution is as follows
b 70 (where x represents the return value).
a 60
b 50 x 2.0 3.5 5.0 6.0 8.0
p.d.f.
i 40
P(X <= x) 0 .20 .60 .90 1.0
l 30
i 20 The following table represents this c.d.f.
t 10
y 0

1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0

Processing time (min)

As with a discrete distribution, a continuous dis-


tribution can be defined in two ways. A probabil-
ity density function 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 probability
density function for the example above is
expressed as follows.
P(0.0 <= X < 2.0) = 0.00
P(2.0 <= X < 3.5) = 0.20
262 Chapter 6:
External Files

External Files during the simulation. Each of these fields is


defined below.
External files may be used during the simulation
to read data into the simulation or write data as
output from the simulation. Files can also be used
to specify such things as operation times, arrival
schedules, shift schedules, and external subrou-
tines. All external files used with a model must ID An alias to be used in the model for referenc-
be listed in the External Files Editor which is ing the file. Note that this ID does not have to be
accessed from the Build menu. the same as the file name.
Type Click on this heading button to display the
following menu. The six file types are discussed
in the remainder of this section.

File Name... The actual file name, including the


path. Press the heading button or double click in
this field to browse for a specific file.
Prompt A prompt to be displayed at run time in
the event that the specified file cannot be opened.
How to define external files:
Notes... A general notes field for entering
1. Select More Elements from the Build menu. descriptive information about the file. Click the
heading button or double click in this field to
2. Select External Files. open a larger window for entering notes.

File Types
External Files Editor
External files may be defined as one of several
The External Files Editor consists of an edit table types depending upon the purpose of the file.
with fields specifying the external files to be used
General Read File
A General Read file contains numeric values read
into a model using a READ statement. Values
must be separated by a space, comma, or end of
ProModel 263
User Guide

line. Any non-numeric data will be automatically entered in the cell where the names intersect. An
skipped when obtaining the next numeric value example of a spreadsheet file is shown next.
(See “Read” on page 537 for correct syntax and
examples). For example, if you specify a normal
distribution such as N(5,1) in the General Read
file, ProModel will not return a numeric value
following the distribution. Instead, it will read in
the first value, 5, and the next value, 1.
A General Read file must be an ASCII file. Data
created in a spreadsheet must be saved as a text
file.

To use the value stored in an Entity-Location file


General Write File
as an operation time, call out the file identifier in
A General Write file is used for writing text the operation logic as shown in the following
strings and numeric values using the WRITE and example. (In this example, “SvcTms” is the File
WRITELINE statements. Text strings are ID of the desired Entity-Location file.)
enclosed in quotes when written to the file, with
commas automatically appended to strings. This Please note
enables the files to be read into spreadsheet pro-
grams like Excel or Lotus 1-2-3 for custom view-
If the .wk1 or .xls file contains more than one
ing, editing, and graphing. Write files may also
sheet of data, only the first sheet will be read in.
be written to using the XWRITE statement which
gives the modeler full control over output and
formatting. (See “Write” on page 581, “Write-
Line” on page 582, and “Xwrite” on page 585 for
Process Table
correct syntax and examples.)
Entity Location Operation (min)
If you write to an external file during multiple
EntA Loc1 WAIT SvcTms()
replications or a single, independent run, the data
will be appended to the data from the previous
Routing Table
replication. However, if the RESET statement is
used, the data is overwritten for each replication. Blk Output Destination Rule Move Logic
1 EntA Loc2 FIRST 1 MOVE FOR 5
Entity-Location File By specifying SvcTms() with no arguments in the
An Entity-Location file (or expression file) is a parentheses, a value is returned from the Entity-
spreadsheet (.wk1 or .xls format only) file con- Location File “SvcTms” for the current entity at
taining numeric expressions listed by entity and the current location, i.e., EntA at Loc1. You may
location name. Entity names should appear also return the value stored in any other cell of an
across the top row, beginning in column 2, while Entity-Location file by explicitly specifying the
location names should be entered down the first entity and location names in the parentheses, e.g.,
column, beginning on row 2. A numeric expres- SvcTms(EntB, Loc1) or SvcTms(EntC, Loc2).
sion for each Entity-Location combination is
264 Chapter 6:
External Files

Arrivals File Qty, Time, Number, and Frequency columns


in a spreadsheet.
An Arrivals file is a spreadsheet (.wk1 or .xls for-
When defining an External Arrivals File, you do
mat only) file containing arrival information nor-
not need to define arrivals in the Arrivals edit
mally specified in the Arrival Editor. One or
table. If several entities are scheduled to
more arrival files may be defined and referenced arrive at the same time, entities arrive in the
in the External Files Editor. Arrival files are system according to the order in which they
automatically read in following the reading of the appear in the arrival list. However, when
Arrival Editor data. The column entries must be there is more than one occurrence for the
as follows: arrival record, the next entity will not arrive
until the frequency has elapsed. Meanwhile,
Column Data
other entities listed below the record may be
A Entity name allowed to arrive.

B Location name
C Quantity per arrival
Please note
D Time of first arrival
E Number of arrivals If the time of the first arrival is zero and there is
only one arrival of some quantity, you do not
F Frequency of arrivals
need to complete additional cells. Likewise, if
G through... Attribute assignments there is only one arrival at a time other than zero,
you do not need to fill in additional cells after the
Columns A through F may have any heading
Time entry.
desired as long as the data is of the proper type.
If attributes are to be assigned, columns G and
higher should have headings that match the
names of the attributes being assigned. The fol-
lowing example illustrates these points.
Please note

If the .wk1 or .xls file contains more than one


Example 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
The values in the spreadsheet cells must be a location or resource. If shifts have been assigned,
numeric expression as opposed to a formula the name(s) of the shift file(s) will be automati-
commonly used in spreadsheets. For exam- cally created in the External Files Editor. If no
ple, if cell E4 in the spreadsheet above was path is listed for the shift file, ProModel will
actually a formula generating the value 100,
search in the default models directory.
the value ProModel generates is zero. Pro-
Model only recognizes expressions for the
ProModel 265
User Guide

Please note RDW Binary Output Reports &


Graphs saved for a
Creating a shift file record in the External Files model
Editor should not be done. It is done automati- SED* Binary Seed File used to store
cally through the shift assignment. seed values for each rep-
lication
SFT Binary Shift created when
DLL File defining a shift in the
shift editor
A DLL file is needed when using external sub-
routines through the XSUB() function. See “Sub- TRC* ASCII Trace File
routines” on page 246 for more information. GLB Binary Graphic Library Files
GBM Binary Graphic Bit Map file
Excel File created when loading a
An Excel file is automatically created in the model file.
External Files Editor when you assign a shift to
an array import file. If the external file has been Open Files
assigned, the name(s) of the Excel file(s) will be
automatically created in the External Files Editor. Depending on the model specifications, there
If no path is listed for the Excel file, ProModel may be some occasions where several files need
will search in the default models directory. to be open simultaneously to execute the model.
There is a feature which allows the user to access
up to 255 open files at any time. The [General]
Other External Files section of the promod.ini file contains the fol-
In addition to allowing the user to define external lowing statement: OpenFiles=n where n is the
files, ProModel creates other external files. Pro- number of files between 20 and 255. The default
Model automatically creates and/or opens files is 40. To change the number of available open
depending on the specifications in the model. files, simply edit thepromod.ini file such that
Below is a description of the different files Pro- OpenFiles equals the desired number and then
Model creates (* indicates files that remain open restart ProModel. There is also the option to close
while the model is running): files using the CLOSE statement (see “Close” on
page 458).
Extension Type Description
CSV ASCII Export Data (comma
delimited)
MOD* Binary Model File
RDB Binary Output Database (basic
statistics)
RDT Binary Output Time Series data
266 Chapter 6:
Streams

Streams Streams Edit Table


A stream is a sequence of independently cycling, The Streams Editor consists of an edit table with
random numbers. Streams are used in conjunc- three fields. The fields of the Streams edit table
tion with distributions. Up to 100 streams may be are explained below.
used in a model. A stream generates random
numbers between 0 and 1, which in turn are used
to sample from selected distributions. By default,
all streams use seed value #1 and are not reset
between replications if multiple replications are
run. To assign a different starting seed value to a
stream or to cause the seed value to be reset to the
initial seed value between replications, use the Stream # The stream number (1 to 100). This
Streams Editor. The Streams Editor is accessed number identifies each stream.
from the Build menu as shown below.
Seed # The seed value (1 to 100). Streams hav-
ing the same seed value generate the same
sequence of random numbers. For more informa-
tion on seed values, see “Using Random Number
Streams” on page 266.
Reset... Set this field to YES if you want the
stream to be reset to the initial seed value for each
model replication. 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 and 5 will be reset for each
replication, while streams 3 and 4 will continue
where they left off for subsequent replications.

Using Random Number


How to access the streams editor:
Streams
1. Select More Elements from the Build menu. One of the most valuable characteristics of simu-
2. Select Streams from the submenu. lation is the ability to replicate and isolate proba-
bilistic functions and activities within a system
for specific study. In the real world, events tend
to occur randomly, according to a certain statisti-
cal pattern or distribution. To help you model this
randomness, ProModel uses distributions.
ProModel 267
User Guide

When you include a distribution (e.g., Normal, activities will not affect the sample values gener-
Beta, and Gamma) in your model, ProModel uses ated from the arrival distribution).
a random number generator to produce a set
sequence or stream of numbers between 0 and 1 Please note
(0 <= x < 1) to use in the distribution. Before it
can select any numbers, however, ProModel
The random number generator is a prime modu-
requires an initial seed value to identify the point
lus multiplicative linear congruential generator.
in the stream at which to begin. Once you specify
The C code implementation for most of the ran-
a seed value, ProModel “shifts” the random num-
dom variates was written by Stephen Vincent and
ber selection (in increments of 100,000 numbers)
based on the algorithms described by Law and
by that number of positions and starts sampling
Kelton (see the “Bibliography” on page 606).
values. Since there is only one random number
stream, this will ensure that the selected values
do not overlap. ProModel includes 100 seed val-
ues, and each seed produces a unique set of ran-
dom numbers. If you do not specify an initial Stream Example
seed value, ProModel will use the stream number The following example shows one reason why
as the seed value (i.e., stream 3 uses seed 3). multiple streams are useful.
Random Number Stream Two machines, Mach1 and Mach2, are to go
100,000 random numbers down approximately every 4 hours for servicing.
To model this, the frequency or time between
}

failures is defined by a normal distribution with a


mean value of 240 minutes and a standard devia-
Seed 1 Seed 2 Seed 3 tion of 15 minutes, N(240,15). (For more infor-
mation on distributions, see “User Defined
When you use a specific seed value (e.g., 17), Distributions” on page 259). The machines will
ProModel produces a unique sequence of num- go down for 10 minutes. Because no stream is
bers to use each time you apply that seed value. specified in the normal distribution, ProModel
This allows you to maintain the consistency of uses stream number one to generate sample val-
some model elements and permit other elements ues for both machines. So if the next two num-
to vary. (To do this, specify one random number bers in stream number one result in sample values
stream for the set of activities you wish to main- of 218.37 and 264.69, Mach1 will receive 218.37
tain constant, and another random number stream and Mach2 will receive 264.69. Therefore, the
for all other sets of activities.) In fact, because two machines will go down at different times,
each seed value produces the same sequence of Mach1 after almost four hours and Mach2 after
values every time, completely independent model somewhat more than four hours.
functions must use their own streams. For exam-
ple, Arrival distributions specified in the Arrival Suppose, however, that the resource to service
Module should have a random number stream the machines must service them both at the same
used nowhere else in the model. This will prevent time. The machines would have to go down at
activities that sample random stream values from the same time. Stream number one will not bring
inadvertently altering the arrival pattern (i.e., the them down at the same time because stream num-
ber one sends the machine’s distributions two dif-
268 Chapter 6:
Streams

ferent numbers. Using two streams (in the Note that if a third machine were to use one of the
example below numbered ten and eleven) with streams, for example if Mach3 were to use stream
the same initial seed will ensure that the eleven, the two machines would no longer go
machines receive the same random number every down together. Mach1 would use the first value
time. The two streams have the same starting from stream ten; Mach2 would use the first value
seed value so they will produce exactly the same from stream eleven; and Mach3 would use the
sequence of random numbers. The first number second value from stream eleven. The first time
of stream ten will be exactly the same as the first Mach1 and Mach2 went down, they would go
number of stream eleven; the second numbers down at the same time because the first number
will be the same; indeed, every number will be in streams ten and eleven is the same. But there-
the same. after they would not. The second time they
would go down at different times because Mach1
The Streams window below shows streams ten
would receive the second value from stream ten,
and eleven with the same seed values.
Mach2 would receive the third value from stream
eleven, and Mach3 would receive the fourth
value from stream eleven.

Please note
By assigning stream ten to Mach1 and eleven to Stream notes:
Mach2, both machines will go down at exactly
the same time. 1. If a stream value is not specified for a distribu-
tion, the 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 parameter is also specified. See “Distri-
bution Functions” on page 437 for details.

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 val-
ues for the streams would produce different
sequences and therefore different downtimes.
Using the same stream number for the clock
downtimes would also produce different values.
But two different streams with the same seed
value will bring both machines down at the same
times.
ProModel 269
User Guide

Material Handling Systems if bridge B tries to move to a node N that lies very
close to the left end of the envelope, and bridge A
The following section provides advanced tech- is to the left of bridge B, a run-time error will
niques to model Material Handling Systems. occur if the space remaining between node N and
bridge A is less than the bridge separation dis-
tance. To avoid such problems, define the crane
Crane Systems envelope wide enough to allow sufficient space
To implement cranes in ProModel, the Path Net- beyond any serviceable nodes.
work module allows three types of networks:
non-passing, passing, and cranes. From this mod- Crane Priorities, Preemption &
ule, you can lay down and orient a crane enve- Bridge Bump-Away
lope, define the bridge separation distance, and
define the graphics for rails and bridges in the ProModel associates two types of priorities with
bay. Additionally, the Resources module allows the operation of crane resources: (1) resource
you to define bridge and hoist speeds, and hoist request priority, and (2) crane move priority.
graphics for one or more cranes operating in the Resource Request Priorities Used to
same bay. resolve any conflicts that arise between multiple
tasks requesting the same resource at the same
time. This priority scale follows the rules that
Creating Multi-Bridge Crane
regular dynamic resource priorities do (i.e., 10
Systems levels of 100). Use this priority to preempt crane
Modeling multiple cranes operating in the same resources from lower priority tasks to serve
bay has never been so easy! higher priority tasks.
User defined bridge separation distances, exten- Crane Move Priorities Used for multiple
sions to regular dynamic resource usage state- bridges operating in the same envelope, to decide
ments, and a set of new priority rules have been which crane bridge has priority over another
introduced in order to let you manage conflicting while moving. This priority scale is also in the
movements in the same envelope zone. range [0...999], but does not have any preemption
Crane Envelope The parallelogram-shaped levels. Any higher value has overriding priority
area represented by a crane type path network, over a lower value. You can assign priorities to
bounded by two rails and the lines connecting the crane resources temporarily, on a task-by-task
endpoints of those rails. The lines connecting the basis via extra parameters in the GET, JOINTLY
endpoints of rails are effectively the two extreme GET, USE, and MOVE WITH statements.
positions of the center-lines of any bridges oper- Therefore, you can only use priorities for cranes
ating within the envelope. ProModel uses the end that are either moving to respond to a resource
of one of the rails as the envelope origin to serve request or moving to deliver a part. Moving to
as a reference point for all logical distance calcu- downtime, off-shift or break nodes has the
lations within the envelope. default (0) move priority. Moving to park has the
Bridge Separation The minimum distance lowest move priority (the same as an idle crane).
you want to maintain between center-lines of two You can further sub-divide crane move priorities
neighboring bridges. This distance is not related into three categories:
to how close a bridge center-line can get to one of •Task Move Priority Assigned by the
the extreme endpoints of the envelope. Caution: modeler via parameters passed to resource
270 Chapter 6:
Material Handling Systems

usage statements (GET, MOVE WITH, etc.). •Crane Graphics In the Resources module,
Used as the base move priority for travel to the selected graphic represents the hoist. You
pick up and travel to deposit. may define, edit, and size multiple graphics
•Claim Priority If crane A’s bridge is for the same hoist the same way you create
headed towards its ultimate (task) destina- multiple graphics for other resources.
tion, the claim priority is equal to the task •Units & Multiple Cranes Crane resources
move priority of crane A. Otherwise (if crane limit you to one unit. When you define mul-
A’s bridge is moving under the influence of tiple cranes operating in the same envelope,
crane B), claim priority is equal to the claim define them as separate resources—each
priority of the claim inducer bridge (bridge assigned to the same crane network.
B). •Downtimes In addition to the clock and
•Effective Claim Priority Applies only usage downtimes you may define for cranes,
to envelopes with three or more cranes. If you can assign cranes to shifts in the same
multiple crane bridges are moving in the way you assign other resources. When a
same direction with overlapping claims, the crane goes down, it moves to the downtime
effective claim priority of any bridge in the node specified in the DTs dialog. If you do
overlapping region is the maximum of all the not associate a node with the crane down-
claim priorities of those bridges. time, the crane goes down at its current posi-
tion.
Crane Operations •Specifications Cranes require separate val-
ues for bridge and hoist speed and accelera-
The operation of cranes in ProModel has been
tion. You must enter Speed (Empty), Speed
designed to closely resemble the real-life opera-
(Full), and Accelerate and Decelerate values
tion of cranes. Under most circumstances, you
for bridge movement along the rails and
need not be concerned with how ProModel han-
hoist movement across the bridge. In each
dles crane movements. The following operational
field, the format is Bridge Value, Hoist
specifications are intended as a reference only
Value (e.g., if you enter “150, 20” in the
and are not essential in order to model cranes
speed field, the bridge moves at 150 and the
using ProModel.
hoist at 20 feet per minute). Although you
must enter speed values, acceleration and
Crane Animation deceleration values are optional (if you leave
During a simulation run, entities picked up by a them blank, ProModel assumes the crane to
crane appear graphically on the entity spot for the have an infinite acceleration and deceleration
hoist. The hoist graphic appears above the entity capability. (Hint: this provides better run-
graphic and the bridge of the crane appears on top time computational efficiency).
of the entity and hoist graphics. •Crane Searches Define Work and Park
searches in the same way you define
searches for other resources.
Crane Specifications
•Node Logic Define entry and exit logic for
When you define cranes for your model, consider cranes at nodes in the same way you define
the following: node logic for other resources.
ProModel 271
User Guide

Handling Zone Claims In Multi- Case 1


Crane Envelopes
If a crane is in one of the following 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.
•Picking up or depositing an entity.
•Being used at a location. A B' B A'
•Having a downtime, off-shift time, or break
time. Bridge B starts moving first, from [B] to [B'] and
claims the zone [B'~B] in the ← direction. Bridge
Extended Movement Zone The net zone
A wants to move from [A] to [A'] in the opposite
that it needs to traverse ± bridge separation dis-
direction. If the move priority of A is less than or
tance (± depending on the direction that it will
equal to the move priority of B, we let bridge A
go).
start moving towards [B' - bridge separation]
Before starting to move, any <crane A> attempts only. If A has a higher move priority, B is
to claim its extended movement zone (zone A) stopped immediately and sent back to [A' +
for the entire movement duration. bridge separation]. In the latter case, A may
ProModel can reject the claim attempt of crane A queue up behind B.
for zone A for several reasons:
•If there are immovable cranes in zone A Case 2
•If there are any cranes in zone A with move
priorities greater than or equal to1 the move
priority of crane A, if they are going in the
opposite direction, or they are going in the
same direction with conflicting destina-
tions.2

Case Examples of Zone Claims A B A' B'


The following cases illustrate specific situations Bridge B starts moving first, from [B] to [B'],
with examples: then bridge A wants to move from [A] to [A'].
Bridge B claims zone [B~B'] in the → direction.
Since bridge A wants to move in the same direc-
1. Special case treatment not “>=” but strictly “>” if all tion and their destinations do not conflict (assum-
of the following conditions hold: (1) if the bridge ing that B'-A' is greater than the bridge
that A is trying to oppose is stationary, (2) unless separation), bridge A moves all the way. If B has
crane A is trying to move just to park (if A has a task
or if it is trying to move out of the way of another already cleared the zone [A~(A' + bridge separa-
bridge), (3) if the one A is trying to push is idle or its tion)] by the time A wants to start moving, A
bridge was blocked before reaching its destination. moves independently. Otherwise, A may queue
2. Destination Conflict Test: If sign (B' - A' - up behind B. (If the distance B'-A' is less than the
sign(existing claim)*(bridge_separation)) = sign given bridge separation and the move priority of
(existing claim) then not conflicting. A is greater than the move priority of B, bridge A
272 Chapter 6:
Material Handling Systems

will push away bridge B, and crane B will not direction with a higher move priority than both of
respond to the request while passing over [B']). the other bridges. ProModel interrupts bridges A
and B and lays a new course for both bridge B
Case 3 [B'' = C' - bridge separation] and bridge A [A'' =
B'' - bridge separation]. In this case, B may queue
up behind A, and C behind B.

Case 5

A B A'' B' A'

Bridge B starts moving first, from [B] to [B'],


then bridge A wants to move from [A] to [A'].
A B C
Bridge B claims the zone [B~B'] in the → direc-
tion. Since bridge A wants to move in the same B'
direction and their destinations do conflict, prior- A'
( (
ities will be considered. If the move priority of A C'
is not greater1 than the move priority of B, bridge
A starts moving towards [A'' = B' - bridge separa- This is an extension of Case 4. Assume that the
tion] only. Otherwise, A will push B away, and B move priorities for crane bridges A, B, and C are
will not respond to the request while passing over 3, 1, and 2 respectively. When bridge C tries to
[B']. In both cases, A may queue up behind B. claim zone [C'~C] in the ← direction, it faces an
“effective priority” of 3 and is unsuccessful in its
Case 4 original claim, so it starts moving towards [B' +
bridge separation]. Bridge B goes outside the
effect of bridge A in the second part of its move-
ment, [(A' + bridge separation) ~ B'] at time t0.
However, bridge C does not override bridge B
and start moving towards [A' + 2 * bridge separa-
tion] until the first “reclaim trigger event2” after
time t0.
If ProModel rejects the original claim of crane A,
A B C' A' B' C
crane A claims the largest available portion of the
Bridge B starts moving first from [B] to [B'], original zone, and implements the procedure
claiming zone [B~B'] in the → direction. Bridge described below to move its bridge through the
A wants to move from A to A' and starts moving subset zone. The crane waits until a “reclaim trig-
behind B. Bridge C wants to move in the opposite ger event” occurs, and then repeats the claim