0% found this document useful (0 votes)
40 views

ProModel User Guide-6

Guia de usuario-6

Uploaded by

Guido Salazar S
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
0% found this document useful (0 votes)
40 views

ProModel User Guide-6

Guia de usuario-6

Uploaded by

Guido Salazar S
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
You are on page 1/ 152

ProModel 487

User Guide

operator moves the part to the buffing area,


completes the buffing operation and then is
freed.

Process Table
Entity Location Operation (min)
Assy Weld USE Operator FOR 4 min
GET Operator
USE Tester FOR U(2,.5)
WAIT 4 min
Assy Buffer WAIT T(7,10,11)
FREE Operator

Routing Table
Blk Output Destination Rule Move Logic
1 Assy Buffer FIRST 1 MOVE FOR
1.5
1 Assy Checker FIRST 1 MOVE FOR 5

See Also
JOINTLY GET and USE.
488 Chapter 14:
GetCost()

GetCost() Process Table


Entity Location Opn (min)
Cost Related Function EntA Shipping WAIT N(3,.52)
Var1=GETCOST()
Syntax samples
Routing Table
GETCOST() Blk Output Destination Rule Move Logic
1 EntA Exit FIRST 1

See Also
Description
INCENTCOST, INCLOCCOST, and SETRATE.
Returns the cost of the current entity executing
the logic. Use this function to return the entity’s
actual, accumulated dollar amount.

Valid In
Operation logic only.

Example

The following example shows how to use the GET-


COST() function to generate a Time Series plot
that tracks changing entity cost as entities exit the
system. (See table below.)
• Create a variable (e.g., Var1), select it to be of
type real, and select time series statistics.
• For any location where an entity exits the sys-
tem, place the following as the last line in opera-
tion logic:
Var1 = GETCOST()
ProModel 489
User Guide

GetReplicationNum()
General System Function

Syntax samples

GETREPLICATIONNUM()

Description
Returns the number of the currently running rep-
lication.

Valid In
Any Logic.

Example

Based on the current replication, you may want


to make a decision regarding the exporting of
array data.
In this case, you could use an IF THEN statement
combined with the GETREPLICATIONNUM() func-
tion to decide what data to export based on the
currently running replication.
490 Chapter 14:
GetResRate()

GetResRate() his Input_Queue at the end of the day, he must


stay and finish them. Since the clerk is paid time-
and-a-half for any overtime, you must increment
Cost Related Function the cost of the resource by an additional half of
the normal rate to get the overtime rate. To do
Syntax samples this, set a variable equal to 1 in the pre-off-shift
logic for the resource, indicating the resource
should go off-shift. If the variable is equal to 1,
GETRESRATE({<resource>}) increment the cost of a resource by half the orig-
GETRESRATE() inal rate. (Since each unit of the clerk has a differ-
ent rate, you must obtain the cost rate for the
GETRESRATE(Operator1) resource owned by the entity.)

Process Table
Description
Returns the cost rate specified in the Cost dialog Entity Location Opn (min)
or through the SETRATE() function for a Order Order_desk GET Clerk, 399
WAIT N (4.5, .3)
resource currently owned by the entity making IF Off_Shift_Var=1
the function call. When used without the optional THEN INCRESCOST
<resource> parameter, this function returns the GETRESRATE() *.50
cost rate of the entity’s most recently captured, FREE Clerk
owned resource.
Routing Table
If an entity owns multiple units of a resource, the
function returns the cost rate of the entity’s most Blk Output Destination Rule Move Logic
recently captured resource unit. 1 Order Shipping FIRST 1 MOVE FOR
1
Valid In
See Also
Operation and move logic.
GETCOST(), INCENTCOST, INCLOCCOST,
INCRESCOST, and SETRATE.
Components

<resource>
A resource currently owned by the entity making the
function call. When you use GETRESRATE without
this parameter, this function returns the cost rate of the
entity’s most recently captured, owned resource.

Example

A clerk normally works an 8-hour shift. However, if


the clerk does not finish entering all the orders in
ProModel 491
User Guide

Goto Process Table


Entity Location Operation (min)
General Control Statement Box Receive IF Attr1>1 THEN GOTO L1
INC V1
INC V2
Syntax samples L1:
INC V3
GOTO <label ID>
Routing Table
GOTO LabelA
Blk Output Destination Rule Move Logic
1 Box Stores FIRST 1 MOVE FOR
5
Description
Jumps to the statement identified by the desig- See Also
nated label. A label should follow the normal IF...THEN...ELSE, BREAK, and BREAKBLK.
rules for names except that it is followed by a
colon in the logic. GOTO statements may be
replaced by IF...THEN...ELSE statements.

Valid In
Any logic.

Components

<label ID>
The name of the label to switch to. Omit the colon on
the label name here.

Example

This example shows how a GOTO statement is


used to skip over the first two increment state-
ments based on the value of an attribute.
492 Chapter 14:
Graphic

Graphic Graphic 3. Finally, the icon changes to Graphic 4


after the second two minute processing time.
(The difference between the two graphics may
General Operation Statement only be color, but the two could be completely
different.)
Syntax samples

GRAPHIC <expression> Process Table


GRAPHIC 2
Entity Location Operation (min)
GRAPHIC Var1 EntA Loc1 GRAPHIC 2
WAIT 15 min
GRAPHIC 3
WAIT 25 min
Description GRAPHIC 4

Changes the entity’s or resource’s current


Routing Table
graphic. Entities and resources are assigned
graphics from the graphics library in the Entity or Blk Output Destination Rule Move Logic
Resource editor. Use the GRAPHIC to show the 1 EntA Loc2 FIRST 1 MOVE FOR
result of a process. For example, when a cus- 5
tomer sits down, the graphic could change from a
standing person to a sitting person. See Also
“Entities” on page 118 and “Resources” on
Valid In page 132.
When used in node entry, node exit, and
resource-downtime logic, GRAPHIC changes a
resource’s graphic. When used in location pro-
cessing logic, move logic, and arrival logic,
GRAPHIC changes an entity’s graphic.

Components

<expression>
The number of the entity’s or resource’s new graphic.

Example

In the example below, EntA arrives at Loc1 for a


two step operation. Upon arrival, the graphic icon
of the entity changes to Graphic 2. After the first
two minute processing time the icon changes to
ProModel 493
User Guide

Group may follow a GROUP statement in the same pro-


cess.
Entity-Related Operation Statement
Components
Syntax samples
<expression>

GROUP <expression> {AS <entity name>} The number of entities to group. If this expression is
zero, the statement is ignored. If it is less than zero, it
GROUP (Var1+Var2) generates an error.
GROUP 10 AS EntX This expression is evaluated every time an entity
encounters the GROUP statement, so the amount of
entities to be combined can vary as the simulation
progresses. If it becomes less than or equal to the num-
Description ber of entities already waiting to be combined, the
Accumulates and temporarily consolidates a entity that encountered the GROUP statement will be
grouped with all the waiting entities.
specified quantity of entities into a single
GROUP shell entity. AS <new entity name>

The shell entity retains the same attributes as the The optional name of the resulting entity. If left off, the
first entity that was grouped into the shell. How- new entity will have the same name as the last entity to
complete the group.
ever, if the GROUP AS statement is used, the
new shell entity does not retain any attribute val-
ues, even if the same name is used for the
Explicit Entity Actions
GROUP shell entity as the entities that have been
grouped. GROUP creates a shell (a temporary entity repre-
senting grouped entities that starts with cost and
The individual entities comprising the group time statistics of zero) to which ProModel assigns
retain their identities, attributes, and resources all cost and time statistics for the group. Each
and are divided from the group when an grouped entity retains its individual cost and time
UNGROUP statement is encountered. The first statistics and, when you ungroup the entities and
entity processed from the group takes any the shell disappears, ProModel divides all statis-
resources the group owns. Entities in a group can
tics and cost (accrued by the shell) between them.
be grouped into a larger group at another loca-
tion.

Valid In
The operation column of process edit tables only.
GROUP may not be used in combination with
COMBINE, CREATE, LOAD, UNLOAD,
SPLIT AS, other GROUP statements in the same
processing logic, or with conveyors. An excep-
tion to this rule is that an UNGROUP statement
494 Chapter 14:
Group

Example

In this example, Man, Woman, and Child are


grouped together at Floor1 before getting on an
elevator. The group of entity types, called Grp_A,
is then routed to Floor2 where it will be
ungrouped. (See the UNGROUP statement exam-
ple.)

Process Table
Entity Location Operation (min)
Man Floor1 WAIT E(2.0)
Woman Floor1 WAIT U(3,1)
Child Floor1 WAIT N(2.1,.2)
ALL Waiting GROUP 10 AS Grp_A
Grp_A Waiting GET Elevator

Routing Table
Blk Output Destination Rule Move Logic
1 Man Waiting FIRST 1 MOVE FOR
0.5
1 Woman Waiting FIRST 1 MOVE FOR
0.5
1 Child Waiting FIRST 1 MOVE FOR
0.5

1 Grp_A Floor2 FIRST 1 MOVE WITH


Elevator

See Also
COMBINE, ACCUM, GROUPQTY(), and
ENTITY(). Also see “Attributes” on page 225.
ProModel 495
User Guide

GroupQty() Example

Entity-Specific System Function A group of entities called GRPA arrives at Loc1


and process for some amount of time according
to a Normal distribution. If the group contains
Syntax samples three or more entities it routes to Loc2, otherwise it
routes to Loc3. Routing requires 1.2 minutes.
GROUPQTY({<entity name>})
ORDER GROUPQTY(Part1) Part2 TO Loc1
IF GROUPQTY(Part1) > 5 THEN... Process Table
Entity Location Operation (min)
GRPA Loc1 WAIT N(3,.1)
Description IF GROUPQTY() > 2 THEN
ROUTE 1
Returns the number of entities of a specified type in a ELSE
grouped or loaded entity. If no name is specified, it ROUTE 2
returns the entire group quantity. If it is a loaded entity,
it will only return the number of loaded entities, not the Routing Table
base entity. For example, if four Castings are loaded
onto a Pallet and called Batch, the GroupQty() will Blk Output Destination Rule Move Logic
return the number of Castings (i.e., 4), which does not 1 GRPA Loc2 FIRST 1 MOVE FOR
include the entity Pallet. 1.2
In the case of hybrid nested groups with several mixed 2 GRPA Loc3 FIRST 1 MOVE FOR
1.2
and nested levels of groups and loads, GroupQty()
returns the number of entities in the uppermost level
only. See Also
GROUP, UNGROUP, and ENT().

Valid In
Speed fields, traveling-time fields, conveyor-
speed fields, Resource fields, operation logic,
routing fields, arrival logic, and debug user-con-
dition fields. This function returns an integer.

Components

<entity name>
The optional specific type of entity to search for in the
group.
496 Chapter 14:
If...Then...Else

If...Then...Else Valid In
Any logic.
General Control Statement
Components
Syntax samples
<Boolean expression>
IF <Boolean expression> THEN <statement 1> The condition to be tested.
{ELSE <statement 2>}
THEN <statement 1>
The statement or block to be executed if the condition
IF Var1 = 5 THEN WAIT 2 min is true.
ELSE <statement 2>
IF (Attr2 = 5) OR (Var5 <> 0) THEN WAIT 2 min The statement or block to be executed if the condition
ELSE WAIT 3 min is false.

IF Var1 > Attr2 THEN


BEGIN Example
Var1 = Attr2
WAIT Attr1 In the following example an IF...THEN...ELSE test is
END made to see if the simulation clock is less than
ELSE eight hours. If so, the Client is routed to Office1,
BEGIN otherwise the Client is routed to Office2.
INC Var1
WAIT Attr2
END

Description
Executes a statement or statement block if the
Boolean expression is true. If an ELSE statement
is included and the Boolean expression is false,
an alternate statement or statement block is exe-
cuted. For an IF...THEN statement to be broken
into more than one line, the first item on the next
line must be THEN, AND, or OR. IF...THEN
statements only apply to the next statement or
statement block in a logic. Any statements out-
side of the BEGIN and END will execute nor-
mally. See BEGIN and END for examples.
ProModel 497
User Guide

Process Table
Entity Location Operation (min)
Client Loc1 IF CLOCK(Hr) < 8 THEN
ROUTE 1
ELSE
ROUTE 2

Routing Table
Blk Output Destination Rule Move Logic
1 Client Office1 FIRST 1 MOVE FOR
5
2 Client Office2 FIRST 1 MOVE FOR
5

See Also
BEGIN, END, DO...WHILE, WHILE...DO, and
DO...UNTIL.
498 Chapter 14:
Inc

Inc Example

General Operation Statement The following example increments two variables


in the exit logic. Num_complete is incremented
by one, and Count is incremented by the expres-
Syntax samples sion Attr1*Attr2.

INC <name>{, <expression>}


INC Var1
INC Attr2, 5+Var1

Description
Increments a variable, array element, or attribute
by the value of a specified numeric expression.
When counting the number of entities a location
has processed, increment a variable at the end of
the processing logic.

Valid In See Also


Any logic. DEC.

Components

<name>
The name of any variable, array element, or attribute.
<expression>
The amount to increment the value. If this expression
is omitted, the value will be incremented by one. This
can be a negative number.
ProModel 499
User Guide

IncEntCost Example

Cost Related Statement The logic below allows you to add an initial cost
to an entity implicitly created through the ROUTE
statement. In the following example, a Pallet of
Syntax samples entities, PalletA, arrives at Unload_Loc where
workers unload entities called Box every 20 sec-
INCENTCOST <expression> onds until the pallet is empty. ProModel deter-
mines the number of Boxes unloaded from
INCENTCOST 15 PalletA by the value of PalletA’s attribute, Qty_Attr.
INCENTCOST -15 In Move Logic, the statement “IncEntCost 10”
adds an initial cost of 10 dollars to each implicitly
created entity, Box.

Description
Enables you to increment the cost (positively or Process Table
negatively) of the current entity by a given
amount. Use this function to add to the entity’s Entity Location Opn (min)
actual, accumulated dollar amount. PalletA Unload_Loc int x = 0
WHILE x < Qty_Attr DO
{INC x
Please note WAIT 20 sec
ROUTE 2}
ROUTE 1
When working with new entities created through
a ROUTE statement, use INCENTCOST to assign
an initial cost to entities. Initial entity cost Routing Table
defined for an entity in the cost module applies to Blk Output Destination Rule Move Logic
entities entering the system through a scheduled 1 PalletA Exit FIRST 1
arrival, the CREATE statement, or the ORDER 2* Box Conveyor1 FIRST 1 INCENT-
statement. COST 10

Valid In
See Also
Operation and Move logic.
GETCOST, GETRESRATE(), INCLOCCOST,
INCRESCOST, and SETRATE.
Components

<expression>
The positive or negative change to the value of cost.
500 Chapter 14:
IncLocCost

IncLocCost Inspect, workers inspect EntA. After inspection,


ProModel adds the cost to the location through
the IncLocCost statement and then to the entity
Cost Related Statement with the IncEntCost statement.

Syntax samples
Process Table
INCLOCCOST <expression>
INCLOCCOST 15 Entity Location Opn (min)
EntA Inspect WAIT N(3,.7)
INCLOCCOST -15 INCLOCCOST 3
INCENTCOST 3

Routing Table
Description
Blk Output Destination Rule Move Logic
Enables you to increment the cost (positively or
1 EntA Packaging PROBA-
negatively) of the current location by a given BILITY .93
amount. Use this function to add to the location’s EntA Rework .07
actual, accumulated dollar amount.
See Also
Valid In
GETCOST, GETRESRATE(), INCENTCOST,
Operation logic. INCRESCOST, and SETRATE.

Components

<expression>
The positive or negative change to the value of cost.

Example

The logic below shows how to add a cost per


entry to a location for an entering entity. Pro-
Model automatically tracks operation cost per
time unit specified in the cost dialog, however,
you may assign a one time cost each time an
entity enters a location.
In the following example, an entity, EntA, arrives
for inspection at location Inspect. We define no
rate of operation cost for Inspect because each
inspection accrues a one time cost regardless of
how long the entity remains at Inspect. At
ProModel 501
User Guide

IncResCost Example

Cost Related Statement A clerk normally works an 8-hour shift. However, if


the clerk does not finish entering all the orders in
his Input_Queue at the end of the day, he must
Syntax samples stay and finish them. Since the clerk is paid time-
and-a-half for any overtime, you must increment
INCRESCOST <cost expression> {,<resource>} the cost of the resource by an additional half of
the normal rate to get the overtime rate. To do
INCRESCOST 10 this, set a variable equal to 1 in the pre-off-shift
INCRESCOST GETRESRATE(Operator1)*20, logic for the resource, indicating the resource
Operator1 should go off-shift. If the variable is equal to 1,
increment the cost of a resource by half the orig-
inal rate.

Description
Enables you to increment the cost (positively or Process Table
negatively) of a resource currently owned by the
entity executing the statement. Use this function Entity Location Opn (min)
to add to the resource’s actual, accumulated dol- Order Order_desk GET Clerk, 399
lar amount. When used without the optional WAIT N (4.5, .3)
IF Off_Shift_Var=1
<resource> parameter, this statement increments THEN INCRESCOST
the cost rate of the entity’s most recently cap- GETRESRATE() *.50
tured, owned resource. FREE Clerk
If an entity owns multiple units of a resource, the
cost distributes evenly to each unit. Routing Table
Blk Output Destination Rule Move Logic
Valid In 1 Order Shipping FIRST 1 MOVE FOR 1
Operation and move logic.

Components

<cost expression>
See Also
The positive or negative change to the value of cost.
GETCOST(), GETRESRATE(), INCENT-
<resource> COST, INCLOCCOST, INCRESCOST, and
A resource currently owned by the entity executing the SETRATE.
statement. When used without the parameter, this state-
ment increments the cost rate of the entity’s most
recently captured, owned resource.
502 Chapter 14:
Int

Int Components

Local Variable Declaration Statement <names>


An identifier for the local variable. This identifier must
Syntax samples be a valid name.
<expressions>
INT <name1>{= <expression1>, <name2>= The variable will initially be assigned this value. This
<expression2>...) expression is evaluated every time the INT statement is
INT Count encountered.

INT Count = 1
INT Count = 1, Test = FREECAP(Loc2) Example

A plant manufactures pipes of 12 different types,


such as 2" steel, 4" aluminum, etc. All workers
Description
inspect pipes at a common inspection station
Creates a local variable of type integer. Local after which they move to a dock where other
variables work much the same as attributes, workers load them into boxes. The boxes are
except that they only are available within the designed to hold only certain types of pipes.
logic that declares them. A new variable will be Therefore a box designed to hold 2" steel pipes
created for each entity that encounters an INT can only hold 2" steel pipes, not 4" aluminum
pipes.
statement. Local variables are not directly avail-
able to subroutines, which have their own local Suppose a Box, enters a multi-capacity location,
variables. However, a local variable may be Dock. Each Box has a different entity attribute,
passed to a subroutine as a parameter. Local vari- b_type, describing the type of pipe it can hold.
ables are available inside referenced macros. Workers load pipes into the Box. Workers must
load the 2" steel pipes into the box designed to
Use local variables where ever possible for the hold the 2" steel pipes. Therefore, the attribute
test variable in WHILE...DO, DO...WHILE, and value of the Pipe, p_type, must match the
DO...UNTIL loops. attribute value of the Box, b_type. We can use
local variables to accomplish this modeling task.
Valid In In the following example, we defined X as a local
variable and set it equal to b_type:
Any logic. Variables declared with INT are valid
in any expression within the logic where a normal
integer number is valid.
ProModel 503
User Guide

Process Table
Entity Location Operation (min)
Pipe Inspect WAIT 5
Box Dock INT X= b_type
LOAD 5 IFF
X=p_type
Box Dock WAIT 10

Routing Table
Blk Output Destination Rule Move Logic
1 Pipe Dock LOAD 1 MOVE FOR 2

1 Box Delivery FIRST 1 MOVE FOR 8

See Also
REAL. Also see “Local Variables” on page 233.
504 Chapter 14:
Join

Join Valid In
The operation column of process edit tables only.
Entity-Related Operation Statement More than one JOIN statement may be used in
the same logic.
Syntax samples
Components
JOIN <expression> <entity name> {,<priority>}
<expression>
JOIN 4 EntA
The number of entities to be joined. A zero value is
JOIN Var1 EntA, 1
ignored and a negative value generates an error. This
expression is evaluated when each entity first encoun-
ters it, but is not re-evaluated as the requested entities
are joined.
Description
<entity name>
Joins a specified quantity of a designated entity
type to the current entity. The entities joined to The entity type to be joined to the processing entity.
Joining entities must come from a JOIN routing and
the current entity lose their identities and any
lose their identity once joined.
resources owned by the joining entities are trans-
ferred automatically to the current entity. Use <priority>
JOIN to simulate a component being assembled An entity with a higher priority will have arriving enti-
to a main part, such as when wings are attached ties joined to it before one with a lower priority. This
to the fuselage of an airplane. expression should be a number between 0 and 999. For
more information on priorities, see Priorities, at the
Entities to be joined must be routed to the current beginning of this section.
location with a JOIN rule. The current entity
waits until enough entities to fill its request have
been routed to the current location with a JOIN Explicit Entity Actions
rule.
JOIN passes cost on to base but not statistical
The resulting entity retains the attributes and information. ProModel counts joined entities as
name of the current entity. To transfer attributes exits.
from the joining entity to the current entity, in the
exit logic for the joining entity, copy the desired
attribute to a global variable. Then assign the glo-
bal variable to the attribute of the current entity
after the JOIN statement in the processing logic.
All resources owned by the joining entity are
transferred to the base entity.
To JOIN an entity with a specific attribute value
to another entity with the same attribute value,
use the MATCH statement in addition to a JOIN.
ProModel 505
User Guide

Example

A certain location on an assembly line manufac-


turing cars attaches doors built on another
assembly line. When the Body of the car arrives at
the Assembly location, we attach a left door,
Ldoor, and a right door, Rdoor, with a JOIN state-
ment. The paint station paints the doors and
routes them to Assembly with a JOIN rule. Note
that the Body will wait until we join both doors
before routing to the next location.

Process Table
Entity Location Operation (min)
Rdoor Paint WAIT 30
Ldoor Paint WAIT 30
Body Assembly JOIN 1 Ldoor
JOIN 1 Rdoor

Routing Table
Blk Output Destination Rule Move Logic
1 Rdoor Assembly JOIN 1 MOVE FOR 30
1 Ldoor Assembly JOIN 1 MOVE FOR 30
1 EntB Cleaning FIRST 1 MOVE FOR 5

See Also
LOAD, COMBINE, and GROUP. Also see
“Attributes” on page 225.
506 Chapter 14:
Jointly Get

Jointly Get <resource >


The name of the resource to JOINTLY GET. RES()
can be substituted for the resource name.
Resource-Related Operation Statement
<priority>
Syntax samples When multiple entities request a resource, the requests
will be filled in order of priority. This expression
JOINTLY GET {<quantity>} <resource> should be a number between 0 and 999.
{,<priority>}
{AND or OR {<quantity>} <resource>
{,<priority>}} Example
JOINTLY GET 3 Res1,5
In the following example (which also demon-
JOINTLY GET 2 Res1 OR 3 Res2
strates the FREE statement) EntA arrives at Loc1
JOINTLY GET Res1,3 AND (Res2 OR Res3) for a multi-step process. Because the first step of
JOINTLY GET 2 Res(Attribute1) the process uses Res1 and Res2 simultaneously,
a JOINTLY GET statement is issued to ensure that
both resources are available before the process
begins. The resources are then freed indepen-
dently.
Description
Captures a specified number of resources when
that number of resources is available. When cap-
turing multiple resources, none of the resources Process Table
will be captured until all are available. If the
Entity Location Operation (min)
entity already possesses one or more of the
EntA Loc1 JOINTLY GET Res1 AND Res 2
requested resources, the entity will still try to WAIT N(4.5,.2)
capture additional units of the specified FREE Res1
resources. WAIT L(3.4,.23)
FREE Res2
Valid In
Routing Table
Location processing, downtime, move, and shift
logic. Blk Output Destination Rule Move Logic
1 EntA Loc2 FIRST 1 MOVE FOR 1
Components
See Also
<quantity> GET and USE.
The number of resources to get. A value of zero is
ignored and values less than zero return an error. This
numeric expression is evaluated and truncated every
time the JOINTLY GET statement is encountered.
ProModel 507
User Guide

Last() Example

Resource-Specific System Function This Entry Logic window shows that whenever a
resource enters a particular node a check is
made to see if the name-index number of the
Syntax samples last node equals one. If so, the resource graphic
is changed to Graphic 2, otherwise it is changed
LAST() to Graphic 3.
Var1=LAST()
IF LAST() = 13 THEN Var3 = 0
IF LAST() = PathNet1.N1 THEN INC Var1

Description
Returns the name-index number of the node from
which a resource has just traveled. LAST() can
be useful to choose the appropriate graphic or to
reset a variable. You can also check the name-
index number of the last node by specifying
<path network name>. <name of the node>. For
example, if you wanted to know if the last node
was N5 on the network Net3, you could specify See Also
“IF LAST() = Net3.N5 THEN...” in the node NEXT() and WAIT...UNTIL.
entry logic.

Valid In
Node entry logic.
508 Chapter 14:
Ln()

Ln()
Math Function

Syntax samples

LN(<expression>)
Real1 = LN(Real2)

Description
Returns the natural logarithm of an expression.

Valid In
Any expression. This function returns a real num-
ber.

Components

<expression>
LN() returns the natural logarithm of this expression.

See Also
EXP().

Please note

To get a logarithm to a particular base, use the


following formula:

logbase<expression> = LN<expression>/
LN<base>
ProModel 509
User Guide

Load Components

Entity-Related Operation Statement <expression>


The number of entities to load into the current entity.
Syntax samples This expression is evaluated at the time the entity
encounters the LOAD request.

LOAD <expression> {IFF <Boolean expres- IFF <Boolean expression>


sion>}{IN <time>}{,<priority>} This option allows the LOAD command to be condi-
LOAD 5, 99 tional. Any attributes, entity functions, or location
functions apply to the entity to be loaded, not to the
LOAD 5 IFF Attr3 > 2 IN 5 min current entity. This technique allows only entities with
LOAD Pallet_Capacity certain properties to be loaded onto the current entity.
To use attributes, entity functions, and location func-
tions that apply to the current entity, assign the desired
value to a local variable and use the local variable in
Description the Boolean expression.

Loads a specified quantity of entities onto the IN <time>


current entity. Loaded entities retain their identity The entity will load entities up to the specified limit for
and may be unloaded with an UNLOAD state- this amount of time and then go on. Entities loaded
ment. Loaded entities must be routed to the load- with this option may have a load smaller than the spec-
ing location using the LOAD routing rule. ified amount.
Additional entities may be added to an entity’s <priority>
existing load with additional LOAD statements.
Waiting entities will load arriving entities by priority.
Use LOAD to model parts placed into a container This expression should be a number between 0 and
or pallet when they must be removed later. If a 999.
resource owns the loaded entity when the entities
are unloaded from the base entity, the resource
stays with the base entity. Explicit Entity Actions

Valid In LOAD does not transfer cost or statistics of the


loaded entity.
The operation column of Process edit tables only.
A process may contain multiple load statements
Example
and no more than one UNLOAD statement fol-
lowing all LOAD statements. LOAD may not be
In this example, boxes are loaded onto a semi-
used in the same process with SPLIT AS, CRE-
truck. The quantity is determined by the value of
ATE, COMBINE, GROUP, or UNGROUP.
the Truck’s attribute, Attr1. The resulting entity
retains the name Truck and is sent on to its final
destination, New York, Chicago, or Boston.
510 Chapter 14:
Load

Process Table
Entity Location Operation (min)
Box Shipping WAIT 2 min

Truck MfgSite

Truck Dock LOAD Attr1 IN 2 hr

Routing Table
Blk Output Destination Rule Move Logic
1 Box Dock LOAD 1 MOVE FOR 45
sec
1 Truck Dock FIRST 1 MOVE FOR 10
min
1 Truck NewYork FIRST 1 MOVE FOR 24
hr
Truck Chicago FIRST MOVE FOR 12
hr
Truck Boston FIRST MOVE FOR 28
hr

See Also
LOAD, GROUP, UNLOAD, ACCUM, COM-
BINE, JOIN, GROUPQTY(), and ENTITY().
Also see “Attributes” on page 225.
ProModel 511
User Guide

Loc() Components

Name-Index-Number Conversion Func- <location name-index number>


tion The name-index number of the desired location. This
component may be an expression, allowing the loca-
tion to vary as the simulation progresses. Real numbers
Syntax samples will be truncated to integers.

LOC(<location name-index number>)


ORDER 10 EntA TO LOC(5) Example
DISPLAY “EntA arrived at” $ LOC(5)
Suppose there are five locations which appear
one after the other in the Location edit table as
follows: Dock1, Dock2, Dock3, Dock4, Dock5.
Description Shipments could be ordered to each of the five
locations in rotation with the following logic. Note
Converts a name-index number or integer to a
that Dist() is a user-defined distribution that returns
location name. Use this function when a state- an integer value for the number of Shipments to
ment or function needs the name of a location but order.
whose name-index number is stored in an
INT Var1 = 1
attribute, variable, or some other expression. It
can also be used to vary a selected location based WHILE Var1 <= 5 DO
on the name-index number stored in the expres- BEGIN
sion. When used in a string expression, as in the
ORDER Dist() Shipments TO LOC(Var1)
second syntax example above, ProModel will
convert the name-index number to the actual INC Var1
name of the location. If the expression points to a END
unit of a multi-unit location, then the LOC()
function will return the name of the parent loca-
tion.
See Also
Valid In
ENT(), RES(), and LOCATION().
Any statement where a location name is normally
used, including the Destination field of the Rout-
ing edit table. Also used in string expressions.
512 Chapter 14:
LocState()

LocState()
General System Function

Syntax samples

LOCSTATE (<locationname>)

Description
Returns a value indicating the current state of the
specified location. Return values will range from
1-7, which translate to the following:
1 = idle/empty
2 = setup
3 = operating
4 = blocked
5 = waiting
6 = up (multi-capacity location)
7 = down

Valid In
Any Logic.

Components

<locationname>
The name of the location.
ProModel 513
User Guide

Location() example uses CAP() and LOCATION() in the pro-


cessing logic of the parent location to accumu-
late enough Sinks to fill each oven.
Location-Specific System Function

Syntax samples
Process Table
LOCATION() Entity Location Operation (min)
Attr1 = LOCATION() Sink Oven ACCUM CAP(LOCATION())

IF LOCATION() = 2 THEN WAIT 4 MIN


Routing Table
Blk Output Destination Rule Move Logic
1 Sink Cool FIRST 1 MOVE FOR
Description 5
Returns the current location’s name-index num-
ber. This function is especially useful in macros See Also
and subroutines that vary depending on which LOC() and ENTITY().
location’s logic calls them. By using a LOCA-
TION() function with an IF...THEN statement,
the macro or subroutine can act differently
depending on the location that called it. Also, the
same technique can be used to determine which
location is carrying out a process when ALL is
used as the process location.

Valid In
Any logic.

Example

The individual ovens at a pizza parlor have differ-


ent capacities but are otherwise exactly the
same. While each oven could be modeled as
an individual location, it would be easier to
model this situation with a multi-unit location. This
example uses CAP() and LOCATION() in the pro-
cessing logic of the parent location to accumu-
late enough Orders to fill each oven.The
individual ovens of a ceramics plant have differ-
ent capacities, but are otherwise exactly the
same. While each oven could be modeled as
an individual location, it would be easier to
model this situation as a multi-unit location. This
514 Chapter 14:
Log

Log Example

General Action Statement The example below shows a LOG statement used
to capture each Client’s total throughput time as
they travel through the system. Time starts when
Syntax samples the Client arrives at Receptionist and stops when
the Client exits through the door. The first process
LOG <string>, <expression> sets attribute CT equal to the current clock time.
Next, Clients are sent randomly to one of three
LOG “Activity Time”, Attr1 offices. Finally, when a Client leaves the system
at location OutDoor, the LOG statement records
the cycle time by subtracting the time stored in
attribute CT from the current simulation time.
Description
ProModel assumes that the time stored in the Throughput Time
expression is in the model’s default time units set
in the General Information dialog box. Use the
1 2 3 4 5
LOG statement to record the time from one state-
ment to another statement by storing the time of
the first statement in an attribute, variable, or Reception Loan OutDoor
array element with CLOCK() and using the same Auditor Service
attribute, variable, or array element as the expres-
sion in the LOG statement. Use the LOG state-
ment to determine throughput time or throughput
in a particular section of the facility.

Valid In
Downtime logic, location processing logic, node
entry and exit logic, and routing exit logic.

Components

<string>
This string will be stored in the file before the result of
the log expression and may not be a string expression.
Use this string to identify the number that follows.
<expression>
The result of this expression subtracted from the
model’s current time will be stored in the file <model
name>.LAP, after the string above.
ProModel 515
User Guide

Process Table
Entity Location Operation (min)
Client Reception CT=CLOCK()
Client Auditor WAIT T(5,6,8)
Client Loan WAIT T(4.5,5,7)
Client Service WAIT N(6.2,1.1)
Client OutDoor LOG “Cycle Time”, CT

Routing Table
Blk Output Destination Rule Move Logic
1 Client Auditor RANDOM MOVE FOR
Loan 1 1.5
Service RANDOM
RANDOM
1 Client OutDoor FIRST 1 MOVE FOR
0.5
1 Client OutDoor FIRST 1 MOVE FOR
0.5
1 Client OutDoor FIRST 1 MOVE FOR
1.2
1 Client EXIT

See Also
WRITE, WRITELINE, and READ. Also see
“External Files” on page 262.
516 Chapter 14:
MapArr

MapArr TO <variable name>


The optional name of the variable to which you map
the first cell in the array. If you do not specify a name,
General Action Statement
ProModel will unmap the array from the variables.

Syntax samples
Example
MAPARR <array name>{TO <variable name>}
MAPARR Array1 TO Var10 Suppose you want to dynamically view an array,
MAPARR Array5 Storage_Array, during simulation. The array has a
dimension of 2x3x2 (a three-dimensional array
with 2 cells in the first dimension, 3 cells in the
second, and 2 cells in the third) and contains a
total of 12 cells (multiply all the dimensions
Description
together).
Starting with the variable you specify, the MAP-
Since you already used the first 8 of the 30 vari-
ARR statement maps each individual cell of an ables defined in the model, Var1 through Var30,
array to a unique variable (i.e., if you define 12 you will start mapping the array with Var9 and
cells for the array, the array will map to 12 vari- end with Var20 (the 12th variable from Var9 listed
ables). To display the cell value of a mapped in the Variables module). In the initialization logic,
array, create a variable graphic for the variable to use the following statement:
which you mapped the array cell. ProModel col- MAPARR Storage_Array TO Var9
lects statistics for an array cell through the vari-
able to which you mapped the cell. (Choose The cells in Storage_Array will map to variables
Var9 to Var20 in the following order:
“Basic” or “Time Series” statistics for a mapped
variable, then view the variable in the Statistics [1,1,1] ... Var9
Output program.) [1,1,2] ... Var10
[1,2,1] ... Var11
If you do not specify the optional variable name [1,2,2] ... Var12
in the statement, ProModel will unmap the array [1,3,1] ... Var13
from the variables to which you originally [1,3,2] ... Var14
mapped it. You can remap arrays by using the [2,1,1] ... Var15
MAPARR statement again. [2,1,2] ... Var16
[2,2,1] ... Var17
Valid In [2,2,2] ... Var18
[2,3,1] ... Var19
Any logic. [2,3,2] ... Var20

Components In the Variables module, create graphics for vari-


ables Var9 through Var20 and place them on the
<array name> layout. This will allow you to view them during the
simulation.
Map, unmap, or remap this array. The brackets, [ ], are
unnecessary after the array name in the statement.
ProModel 517
User Guide

Please note

Changing the cell value of a mapped array will


change the value stored in the array cell AND the
value of the variable to which you mapped the
specific cell. Changing the value of a variable
(e.g., INC Var12), however, will change ONLY
the variable value and NOT the cell value of the
mapped array cell. Also, when you use a mapped
array in an expression, the array returns the
value of the variable mapped to it.
518 Chapter 14:
Match

Match Components

Entity-Related Operation Statement <attribute>


Any attribute associated with the processing entity.
Syntax samples

MATCH <attribute> Example


MATCH Attr1
You can use a MATCH to recombine the parts of
an entity which has been split using multiple rout-
ing blocks. In the example below, every time an
EntAB arrives at the location, the variable Count
Description
increments. ProModel assigns Attr1 for EntAB the
Causes the current entity to wait until the value of value of count, which ensures that each EntAB will
the specified attribute matches the value of have a unique value for Attr1. Additionally, when
another entity’s same attribute. Both entities must each EntAB is split into EntA and EntB, both of the
have a corresponding MATCH statement speci- resulting entities, (EntA and EntB) will have the
fied for the same attribute name. The two entities same value for Attr1. EntA and EntB then travel
independently through their respective process-
may be at any location in the model, including
ing steps, denoted by the ellipses. Finally, EntA
the same location and two completely unrelated
and EntB arrive at Loc10A and Loc10B respec-
locations. Therefore, the value of the attribute to tively, where each piece must wait for its match-
MATCH should almost always be assigned to the ing half to arrive before consolidating the entities
value of a global variable incremented for each with the JOIN construct.
entity that will be matched, as in the following
example.
Locations using the MATCH statement usually
should be multi-capacity because otherwise they
would not be able to process any other entities
until the MATCH was made. Additionally, loca-
tions using MATCH usually should be non-queu-
ing to allow the entities to move out of sequence
when the MATCH is fulfilled.
Use the MATCH statement to pair two specific
parts before assembling them, or to match a work
order to a completed job.

Valid In
The operation column of process edit tables only.
ProModel 519
User Guide

Process Table
Entity Location Operation (min)
EntAB Loc1 INC Count
Attr1= Count
EntA Loc2 ...
EntA Loc10A MATCH Attr1
EntB Loc3 ...
EntB Loc10B MATCH Attr1
JOIN 1 EntA

Routing Table
Blk OutputDestination Rule Move Logic
1 EntA Loc2 FIRST 1 MOVE FOR 5
2 EntB Loc3 FIRST 1 MOVE FOR 5
... ... ... ... ...
1 EntA Loc10B JOIN 1 MOVE FOR 30
sec
... ... ... ... ...
1 EntAB Loc11 FIRST 1 MOVE FOR 5

See Also
WAIT...UNTIL and LOAD.
520 Chapter 14:
Move

Move amount of time, and then resumes the processing


logic. The move-time for an entity on a conveyor
is calculated using the following formula:
Entity-Related Operation Statement
Time = (Conveyor Length - Entity Length or
Width)/Conveyor Speed
Syntax samples
For queues only, a MOVE may optionally be fol-
MOVE {FOR <time expression>} lowed by a FOR statement and then a move-time.
If a move-time is specified, the entity moves
MOVE FOR .25 min
through the queue in the specified amount of time
MOVE FOR 3.2 regardless of the entity’s speed and the queue’s
MOVE length. Entities with shorter move times will
catch up to, but will not pass, entities with longer
move times.
If a queue is not empty when an entity enters the
Description
queue, then the move-time will continue to elapse
Moves the entity to the end of a queue or con- even though the arriving entity’s graphic may
veyor location. Use the MOVE statement to have stopped moving. When an entity’s move-
explicitly control the movement of an entity time has elapsed, an entity will begin executing
through a queue or conveyor. any logic following the MOVE statement and
then will be available for routing, even if graphi-
cally the entity does not appear to be at the end of
the queue.
For a conveyor, if additional logic follows a
MOVE statement, the entity must advance to the
Please note last position on the conveyor before the remain-
ing logic is executed.
If there is no MOVE statement, when an entity
enters a queue or conveyor, it executes all the Valid In
processing logic defined for the entity at that The operation column of process edit tables only,
location and then moves to the end of the queue and only if the location is a queue or a conveyor.
or conveyor. For queues, its movement time is MOVE may only be used once per logic.
based on the entity’s speed and the queue’s
length. For conveyors, its movement time is
based on the conveyor speed and length. Components

<time expression>
The amount of time needed for the entity to travel
If an entity processing at a queue or conveyor through the queue. This expression is ignored for con-
encounters a MOVE statement, the entity stops veyors. It is evaluated every time the statement is
executing the processing logic, moves to the end encountered and should be on the same line as the
of the queue or conveyor in the appropriate MOVE command.
ProModel 521
User Guide

Example

The example below shows the processing steps


necessary to mimic the behavior of a queue sys-
tem using MOVE statements. Locations Queue1,
Queue2 and Queue3 should each be repre-
sented graphically with a queue symbol. The
time value in the MOVE statement represents the
time required to traverse each queue section
from beginning to end when the queue is empty.

Process Table
Entity Location Operation (min)
ALL Queue1 MOVE FOR 2.5
ALL Queue2 MOVE FOR 3.5
ALL Queue3 ...

Routing Table
Blk Output Destination Rule Move Logic
1 ALL Queue2 FIRST 1
1 ALL Queue3 FIRST 1
... ... ... ... ...

See Also
“Locations” on page 96. Also see WAIT.
522 Chapter 14:
Move For

Move For Example

Entity-Related Move Logic Statement It takes 4 minutes for the entity, Cutter, to move
from one location, Grinder, to the next location,
Profiler.
Syntax samples

MOVE FOR <time>


Process Table
MOVE FOR 0
MOVE FOR 2.5 + CleanupTime Entity Location Operation (min)
Cutter Grinder GET Operator WAIT 1
MOVE FOR N(8, .5) + 3 sec Cutter Profiler WAIT Attr1

Routing Table
Description Blk Output Destination Rule Move Logic
Used to specify the amount of time required to 1 Cutter Profiler FIRST 1 MOVE FOR 4
move the entity. A move-time of zero may be 1 Cutter Exit
entered to cause events for other entities occur-
ring at the same simulation time to be processed See Also
before any additional logic is processed for the MOVE ON and MOVE WITH. Also see “Rout-
current entity. If no move related statement ing Move Logic” on page 302.
(MOVE FOR, MOVE ON, MOVE WITH) is
specified, the entity instantly enters the next loca-
tion and immediately begins executing the opera-
tion logic for that location.

Valid In
This statement is valid in Move Logic. MOVE
FOR may be encountered only once by an entity
in the same logic.

Components

<time>
The length of time the system takes to execute the
move. This expression is evaluated whenever the
statement is encountered. If no time unit is specified,
the default time unit specified in the General Informa-
tion dialog is applied.
ProModel 523
User Guide

Move On Process Table


Entity Location Operation (min)
Entity-Related Move Logic Statement EntA StationA WAIT 2
EntA StationB ...
Syntax samples
Routing Table
MOVE ON <path network> Blk Output Destination Rule Move Logic
MOVE ON StatPath2 1 EntA StationB FIRST 1 MOVE ON
Net1
... ... ... ... ...

Description See Also


Use this statement to move an entity along a path MOVE FOR and MOVE WITH. Also see “Rout-
network. ing Move Logic” on page 302.

Valid In
This statement is valid only in Move Logic.
MOVE ON may only be encountered once by an
entity in the same move logic.

Components

<path network>
Any valid path network name.

Example

An entity, EntA, moves from StationA to StationB


along a network called Net1.
524 Chapter 14:
Move With

Move With The resource used to make the move is freed only
if the THEN FREE option is used.
Entity-Related Move Logic Statement Valid In
This statement is valid only in Move Logic.
Syntax samples
MOVE WITH may only be encountered once by
an entity in the same move logic.
MOVE WITH <res1> {,p1}
OR <res2> {,p1}
{FOR <time >} {THEN FREE} Components
MOVE WITH Technician, 100
<res1>
MOVE WITH Operator1, 399 FOR 3 min
Resource to be captured and used to transport the
MOVE WITH Truck1, 99 THEN FREE entity.
MOVE WITH Operator1 OR Operator2 <res2>
Alternate resource to be captured and used to transport
the entity.
Description <priority>
This statement is used to move an entity using a The priority for accessing the resource. If the resource
designated resource such as a person or forklift. is already owned by the entity, this priority is ignored.
With the OR operator, you can designate alterna- <time>
tive resources for making the move. In this case,
The length of time the system takes to execute the
the statement captures the first available resource
move. Used only if the resource is static. This expres-
designated in its expression and makes the move.
sion is evaluated whenever the statement is encoun-
As soon as the destination becomes available, the tered. If no time unit is specified, the default time unit
entity implicitly gets the resource. However, if specified in the General Information dialog is applied.
one of the resources is already owned by the
entity, it will use that resource.
It also allows you to set the priority (p1) for
accessing the designated resource. If the
resource is already owned by the entity, this pri-
ority is ignored.
If the resource is static, you may specify a time
(FOR <time expression>) for the move. If a
resource is dynamic, a time (FOR <time expres-
sion>) is not valid. If you use “FOR <time>” with
a dynamic resource, ProModel ignores the time.
The resource will travel based on either the time
or speed/distance defined in the path networks
module.
ProModel 525
User Guide

Example

An entity moving from Station A to Station B may


use either Tech1 or Tech2 to move the entity
depending on which one is available first. The
resource is freed after the move.
MOVE WITH Tech1 OR Tech2 THEN FREE

The same thing could be accomplished in longer


form:
GET Tech1 OR Tech2
MOVE WITH OwnedResource()
FREE OwnedResource()

See Also
MOVE FOR and MOVE ON. Also see “Routing
Move Logic” on page 302.
526 Chapter 14:
Next()

Next() Example

Resource-Specific System Function This Exit Logic window shows that whenever the
resource leaves a node a check is made to see
if the name-index number of the next node
Syntax samples equals 1. If so, the resource graphic is changed
to Graphic 3. (Otherwise it is changed to Graphic
NEXT() 2.)
Var1=NEXT()
IF NEXT() = PathNet5.N11 THEN Var5=3

Description
Returns the name-index number of the resource’s
destination node. Use NEXT() to determine the
direction an entity is headed and choose the
appropriate graphic. This function can be used to
control interference between multiple transport-
ers on the same path network. You can also check
the name-index number of the next node by spec-
ifying <path network name>. <name of the
node>. For example, if you wanted to know if the
next node is N5 on the network Net3, you could
See Also
specify “IF NEXT() = Net3.N5 THEN...” in the
node exit logic. LAST() and WAIT...UNTIL.

Valid In
Node exit logic. This function returns a name-
index number.
ProModel 527
User Guide

Order <location>
The destination of the new entities. LOC() may be sub-
stituted for the names of locations. If no location is
General Action Statement
specified, the entities will be ordered to the location of
the ORDER statement.
Syntax samples

ORDER <expression> <entity> {TO <location>} Example


ORDER 10 EntA TO Loc2
ORDER Order_Qty_Attr ENT(Entity_Attr) TO In this example, EntA arrives at LocA1 and trig-
LOC(Loc_Attr) gers an order for 100 EntB’s to LocB1.

Description Process Table


Causes the specified number of entities to be cre- Entity Location Operation (min)
ated and placed into the system at the designated EntA LocA1 ORDER 100 EntB TO LocB1
location. If the location does not have enough EntB LocB1 ...
capacity for all the new entities, the excess enti-
ties will be destroyed. Attributes from the creat- Routing Table
ing entity will be copied to the resulting entities.
Blk Output Destination Rule Move Logic
Use ORDER to replenish inventories when a par-
1 EntA LocA FIRST 1 MOVE WITH
ticular condition occurs. Such as when an inven- Forklift
tory reaches the minimum level.
See Also
Valid In
SEND, CREATE, and SPLIT AS.
Any logic.

Components

<expression>
The number of new entities to be ordered. This field is
evaluated every time the ORDER statement is encoun-
tered, allowing the number ordered to vary as the simu-
lation progresses.
<entity>
The name of the new entities. ENT() may be used for
an entity name.
528 Chapter 14:
OwnedResource()

OwnedResource() Components

Resource-Specific System Function <expression>


The nth resource currently owned by the entity or
Syntax samples downtime making the function call. When this param-
eter is not used, the function returns the last resource
captured that is still owned by the entity.
OWNEDRESOURCE ({<expression >})
OWNEDRESOURCE (2)
OWNEDRESOURCE (ResQty()) Example
OWNEDRESOURCE ()
Suppose an entity owns two resources. The first
resource was captured using the statement GET
Worker. The second resource was captured using
Description the statement GET Oper1 OR Oper2. We know
the entity owns the resource Worker, but we do
Returns the name-index number of the nth not know if the entity owns Oper1 or Oper2. It is
resource currently owned by the entity or down- time to release the second resource so we use
time making the function call. The function the following logic:
parameter indicates the position of the resource in FREE OWNEDRESOURCE()
the chronological list of owned resources. For
example, OwnedResource(1) returns the longest
owned resource in the list and so on.
See Also
When used without a parameter, this function
returns the most recent resource that the entity RES(), GET, JOINTLY GET, USE, and FREE.
captured and still owns. If the parameter value is Also see “Resources” on page 132.
not within the range of the resource list, or if the
entity or downtime currently does not own a
resource, the function will return a 0 (zero) with-
out a warning or error message.
A preempted resource is NOT removed from the
list but marked temporarily to indicate that the
preemptee does not own the resource. After the
resource resumes the original process after being
preempted, it retains its original rank in the list.

Valid In
Entity speed fields, traveling-time fields,
resource fields, resource downtime logic, loca-
tion processing logic, location downtime logic,
routing fields, arrival logic, debug user-condition
fields, and move logic.
ProModel 529
User Guide

Pause Example

General Action Statement The simple example below pauses the simulation
after the 100th EntA has been processed at Loc1.
The purpose for doing this might be to view the
Syntax samples current state of the system at this particular point
in time.
PAUSE {<string expression>}
PAUSE
PAUSE “Var1 =” $ Var1 Process Table
PAUSE “Reached the midpoint of the simula- Entity Location Operation (min)
tion.” EntA Loc1 WAIT N(3.2,.1)
INC Total
IF Total >= 100 THEN
PAUSE
Description
Pauses the simulation and optionally displays a Routing Table
message at some point of interest. This pause Blk Output Destination Rule Move Logic
allows the user to examine the system in detail. 1 EntA Loc2 FIRST 1
An information dialog box will appear on the ani-
mation screen when the pause occurs. The simu- See Also
lation will continue only when the user selects
Resume Simulation from the Simulation menu. STOP, DISPLAY, and PROMPT.

Valid In
Any logic.

Components

<string expression>
The optional message to display.
530 Chapter 14:
PercentOp()

PercentOp()
General System Function

Syntax samples

PERCENTOP (<locationname>)

Description
Returns the cumulative operation time percentage
for the specified, single-capacity location. The
value returned by this function represents the
cumulative percentage of time the location was
actually processing an entity up to the point
where the function was called.
If PercentOp() is called for a multiple-capacity
location, the value returned will always be zero,
since operation time percentage is not calculated
for multiple-capacity location
Note: The method used to calculate operation
percentage for this function is the same method
used in the output statistics.

Valid In
Any Logic.

Components

<locationname>
The name of the location.
ProModel 531
User Guide

PercentUtil()
General System Function

Syntax samples

PERCENTUTIL (<locationname>)

Description
Returns the cumulative utilization percentage for
the specified location. The value returned by this
function represents the cumulative percentage of
capacity occupied at the location, on average, at
the time the function was called.
Cumulative Occupancy Time x 100
Capacity x Scheduled Time
Cumulative Occupancy Time in the above equa-
tion refers to the sum of the clock time each
entity spends at a location for processing.
PercentUtil() may be called to return percent uti-
lized for both multi- and single-capacity loca-
tions.
Note: The method used to calculate utilization
percentage for this function is the same method
used in the output statistics.

Valid In
Any Logic.

Components

<locationname>
The name of the location.
532 Chapter 14:
Preemptor()

Preemptor() Process Table


Entity Location Operation (min)
Preemption Logic System Function Bracket Punch_1 WAIT 3 min
Bracket* Punch_1 IF PREEMPTOR()>0 THEN
ROUTE 1
Syntax samples ELSE
ROUTE 2
PREEMPTOR()
* Preemptive Process Record
Var1=PREEMPTOR()
Routing Table
Blk Output Destination Rule Move Logic
Description 1 Bracket Inspect FIRST 1
1 Bracket Punch_2 FIRST 1
Identifies whether a downtime or entity is making
the preemptive request. The function returns the 2 Bracket Punch_Wait FIRST 1
name index number of the preempting entity;
however, it returns a 0 if the preemptor is a
downtime. See Also

Valid In “Preemption Process Logic” on page 300.

Operation logic defined as a preemptive process.

Example

Workers may process an entity, bracket, at one of


two locations, Punch_1 or Punch_2. You may pre-
empt the bracket at Punch_1 by either an entity
with a preemptive priority or a location shift down-
time with a preemptive priority. If an entity pre-
empts the bracket, workers send the bracket to
Punch_2 to finish processing. Punch_1 and
Punch_2 are on the same shift, and are sched-
uled to go off-shift at the same time. Therefore, if
a shift downtime preempts the bracket at
Punch_1, the bracket would not be able to go to
Punch_2. In this case, the bracket is sent to a
location called Punch_Wait where it waits for
Punch_1 to come back on-shift. The PREEMPTOR()
function determines whether an entity or shift
downtime preempts the bracket.
ProModel 533
User Guide

Priority Example

Shift & Break Logic Statement Suppose you want to insure that the resource is
non-preemptable for the first four hours it is off-
shift. Simply enter a high (e.g., 999) off-shift priority
Syntax samples value in the priority dialog in the Shift Assignments
module. Enter the following off-shift logic to lower
PRIORITY <expression> the priority (to 99) four hours into the off-shift
period:
PRIORITY 199
WAIT 4 hr
PRIORITY 99
WAIT 4 hr
Description SKIP

This statement is used to change the priority of


the off-line state of the location or resource. If the
priority is less than the value set previously, the See Also
system will check if the location or resource can
“Shift & Break Logic” on page 305.
be preempted.

Valid In
Shift and break main logic only. This statement
is not valid in pre-off shift or pre-break logic.

Components

<expression>
Any expression that yields a value between 0 and 999.
Standard ProModel priority levels apply.
534 Chapter 14:
Prompt

Prompt <name>
The name of the variable, array element, or attribute to
give the value. The value already in this item will be
General Operation Statement
used as the default value.
<choices>
Syntax samples
A string expression identifying the choice. Any num-
PROMPT <string expression>, <name>{, ber of choices may be specified, and all must have cor-
<choice1>:<expression1>, responding expressions.
<choice2>:<expression2>, <expressions>
<choice3:<expression3>...}
The value to assign the variable, array element or
PROMPT “Enter the number of entities to pro- attribute if the user selects the corresponding choice
cess:”, Var2 from the menu.
PROMPT “Enter the size of batches to accu-
mulate:”,Var1, “Large”: 20, “Medium”:
15, “Small”: 10 Example

The logic below uses PROMPT to let the user


select any size of a batch. Attr1 represents the
Description batch size for EntA. If the batch size has not been
Pauses the simulation and displays either a mes- set (if Attr1=0), then the user is prompted to enter
sage and input field or a menu for selecting a the batch size. The SPLIT AS statement then splits
choice. The value entered or selected is then the single entity into the number of entities speci-
fied in the prompt dialog box. The PROMPT state-
assigned to the designated variable, array ele-
ment in this example displays the following dialog
ment, or attribute. To have PROMPT present a
box.
menu, specify one or more choices as in the sec-
ond syntax example above. The value already in IF Attr1=0 THEN
the variable, array element, or attribute is used as PROMPT “Enter the Batch Size”, Attr1
the default value in the dialog box. One use of
SPLIT Attr1 AS EntA
PROMPT is to give the user the option to change
the operation time represented by a variable dur-
ing a simulation.

Valid In
Any logic.

Components

<string expression>
The message to display. This expression should tell the
user what value to enter or choose.
ProModel 535
User Guide

Example

This logic works similarly to the logic in example


one, except that it uses PROMPT to let the user
select from one of three different sized batches.
The PROMPT statement in this example displays
the dialog box below.
IF Attr1=0 THEN
PROMPT “Enter the Batch Size”, Attr1, “Small”:10,
“Medium”:15, “Large”:20
SPLIT Attr1 AS EntA

See Also
PAUSE; DISPLAY. Also see “Run-Time Inter-
face” on page 242.
536 Chapter 14:
Rand()

Rand() when assigned to an integer value. Therefore,


when generating integer values, make sure that
the result of the RAND() function is assigned to
Math Function an integer value, or is used in an expression
where it will be truncated to an integer.
Syntax samples
Valid In
RAND(<expression>)
Any expression.
RAND(10) min
ORDER RAND(10) EntA TO Loc1 Components
IF RAND(100) > 45 THEN ROUTE 1
<expression>
The upper limit of the random value to return. This
value will never be returned.
Description
Returns a random value n between 0 and X (0 <=
n < X) where X is the result of the expression. Example
To generate random numbers between the
expression and a number other than zero use the Two resources, Oper_1 and Oper_2, perform the
expression as the range between the maximum same task at a location, Press. Oper_1 works at
several other locations. As a result, Press only uses
and minimum values. Then add the minimum to
him 30% of the time. The other 70% of the time,
the random number. For example, the statement
Oper_2 performs the task.
Attr1 = 2+RAND(3) generates a random number
from two up to, but not including, five. An alter-
nate method is to use a uniform distribution. Note
that the RAND() function works very similar to a Process Table
uniform distribution. For more information on
Distributions, see “Distribution Functions” on Entity Location Operation (min)
page 437. Axle Press IF RAND(100) < 30 THEN
USE Oper_1
This function returns a real number, although the ELSE USE Oper_2
real value may be converted to an integer. To
have the RAND() function generate random inte- Routing Table
ger values between zero and some upper bound,
Blk Output Destination Rule Move Logic
use the formula, Integer_Value = RAND(X+1),
1 Axle Lather FIRST 1 MOVE FOR
where X is the greatest integer that should be 3
returned by the function. For example, to gener-
ate a random integer value between zero and six, See Also
use the formula, Integer_Value = RAND(7). The
RAND(7) part of this formula will actually gen- “Streams” on page 266.
erate a real value between 0 and 6.999, but will
be truncated to a whole number between 0 and 6
ProModel 537
User Guide

Read If a read file should be read more than once in a


model, it may need to be reset. One way to tell
when a file needs to be reset is with an end of file
General Action Statement marker such as 9999 and the following two lines
of logic.
Syntax samples
Read File1,Value

READ <file ID>, <name> IF Value= 9999 then RESET File1

READ File1, Var1


Valid In
Any logic.

Description Components
Reads the next numeric value from a general read
file and assigns that value to a name. General <file ID>
read files are defined in the External Files Editor.
The file identifier as defined in the External Files Edi-
When reading from a file, ProModel skips all tor.
non-numeric data, such as text, and reads the next
numeric value. Thus comments and notes may be <name>
included in a read file. Multiple replications of a The variable, array element, or attribute to be assigned
model will continue reading from a file where the the value.
previous replication left off unless reset with the
RESET statement.
Example
Please note
The example below shows an outside file being
ProModel reads a period (.) in a General read read in the Arrival logic for entity type Box. In this
case three values representing the length, width
file as a zero. To avoid this, you should use the
and depth of each Box are listed on each line of
comment symbol (#) in front of notes and com-
a file called “Size.Dat.” The File ID for this file is sim-
ments that contain a period.

READ can read ASCII files. Most spreadsheet


programs can convert spreadsheets to ASCII files
(.TXT) and comma-delimited files (.CSV).
If a read statement is not assigning the right val-
ues to the proper name, there may be numeric
information in the read-file’s header information
(notes and comments). Additionally, if the values
are being read into an array, the array indices
may not be incremented properly between reads.
538 Chapter 14:
Read

ply Size. Length, Width, and Depth are all entity


attributes.

See Also
“External Files” on page 262. Also see RESET
and CLOSE.
ProModel 539
User Guide

Real <expressions>
The variable will initially be assigned this value. This
expression is evaluated every time the REAL statement
Local Variable Declaration Statement
is encountered.

Syntax samples Example


REAL <name1>{= <expression1>, <name2>=
The example below uses a local real variable to
<expression2>...)
track the total time an entity waits for another
REAL Var1 entity to be joined to it. A shipping area has an
REAL Counter = 0 operation where invoices are joined to boxes to
produce packages. The user wants to know
REAL Var1 = CLOCK(SEC), Random_Num = exactly how long an invoice must wait before a
RAND(10) box arrives to be joined. By setting the value of a
local variable, Start, to the clock time just before
the JOIN statement and using a LOG statement
immediately after the JOIN, we can determine
Description how long each invoice had to wait before a box
arrived. A local variable is a better choice here
Creates a local variable of type real. Local vari-
than an entity attribute because the only place
ables work much the same as attributes, except
the information is needed is inside this logic.
that they only are available within the logic that
declares them. A local variable will be created for
each entity that encounters a REAL statement.
Local variables are not directly available to sub- Process Table
routines, which have their own local variables.
However, a local variable may be passed to a Entity Location Operation (min)
subroutine as a parameter. Local variables are Box Packing WAIT N(10,3)
available to macros. Invoice Shipping REAL Start = CLOCK()
JOIN 1 Box
LOG "Delay:", Start
Valid In
Any logic. Variables declared with REAL are Routing Table
valid in any expression within the logic where a
Blk Output Destination Rule Move Logic
real number is valid.
1 Box Shipping JOIN 1 MOVE FOR 1
1 Pack- Dock FIRST 1 MOVE FOR 3
Components age

<names> See Also


An identifier for the first local variable. This identifier INT. See “Variables” on page 231.
must be a valid name.
540 Chapter 14:
Real()

Real()
Type Conversion Function

Syntax sample

REAL(<expression>)
Var2 = Var1 + REAL(Var3)
Attr3 = 1.05 * REAL(Var5)

Description
Converts an integer to a real number. ProModel
automatically converts integers to real when
needed.

Valid In
Any expression.

Components

<expression>
REAL() converts this expression to a real number.

See Also
ROUND() and TRUNC().
ProModel 541
User Guide

Rename Implicit Entity Actions


ProModel allows you to define the RENAME
Entity-Related Operation Statement action implicitly as part of the routing definition.
To do this, define a route block with a different
input and output name and the New Entity option
Syntax samples
unchecked.
RENAME {AS} <new entity name>
Example
RENAME EntB
RENAME AS EntB The following example shows how two entities,
RENAME AS ENT(Var2) EntA and EntB, join together at Loc2. Once the
join is complete, ProModel renames the resulting
entity EntC and processes it according to a nor-
mal distribution N(9.4,.3). RENAME is the last state-
Description ment in the process because as soon as you
rename an entity, ProModel searches the pro-
Renames the processing entity to the new entity cessing logic for a process for the entity with the
name. After a RENAME statement is encoun- new name.
tered, the entity then searches forward in the pro-
cess list and again from the beginning until a
process is found at the current location that has
been defined for the new entity type. No further Process Table
logic will be executed for the entity under its Entity Location Operation (min)
original name. Use RENAME to start collecting EntA Loc1 WAIT 1.5 min
statistics for an entity under a new name. Usually, EntB Loc2 JOIN 1 EntA
the easiest and most efficient way to rename an RENAME AS EntC
entity is simply by using the new name as the out- EntC Loc2 WAIT N(9.4,.3)
put entity in the routing.
Routing Table
Valid In
Blk Output Destination Rule Move Logic
The operation column of process edit tables only. 1 EntA Loc2 JOIN 1
1 EntC Loc3 FIRST 1
Components
See Also
<new entity name> COMBINE, SPLIT AS, and GROUP.
The new name of the processing entity. ENT() may be
substituted for the entity name.

Explicit Entity Actions


With RENAME, statistics and cost continue on
with the entity.
542 Chapter 14:
Report

Report Example

General Action Statement To get a snapshot report every 40 hours, enter the
following:

Syntax samples WHILE Clock(hr) < 10000 DO


BEGIN
REPORT {WITH RESET} {AS <string expression>} WAIT 40 hr
REPORT REPORT AS “40HOUR”
REPORT WITH RESET END
IF thruput = 50 THEN REPORT AS “RepOvr50” This results in reports named, 40HOUR, 40HOUR2,
40HOUR3....

Description
Calculates and reports the current statistics to the Please note
output database. This is useful to get a snapshot
of the model while it is running. If you use the REPORT statement even once, a
final overall report will NOT be created since the
The REPORT statement may be followed by the
report generated with your use of the statement
WITH RESET option to reset the statistics after
may be the final report desired. In this case, you
the report is made to the database When you use
must use the REPORT statement at the end of ter-
the WITH RESET option, you generally want to
mination logic in order to create a final report if
provide some looping or event creation that will
desired. If a REPORT statement is never used, a
call the report function at the appropriate time.
final overall report is created automatically.
Used with the AS option, REPORT creates a
report with the name specified in the expression
that can be accessed in the Output Program when
creating a General Stats report. See Also
RESET STATS and WARMUP.
Valid In
Any logic.

Components

<string expression>
A unique name given to the report so it can be
easily identified in the General Stats dialog in the
Output Program. If any reports have the same
name, a number is tacked on the end of the name
to make it unique.
ProModel 543
User Guide

Res() Components

Name-Index-Number Conversion Func- <resource name-index number>


tion The name-index number of the resource desired. This
component may be an expression. Real numbers will
be truncated to integers.
Syntax samples

RES(<resource name-index number>)


Example
USE 10 RES(Var1) for 1.5 min
FREE RES(Var1) The logic below uses five different resource types
DISPLAY “Now using” $ RES(Var1) for ten minutes in rotation.
INT Var1 = 1
WHILE Var1 <= 5 DO
Description BEGIN
Converts a name-index number or integer to a USE RES(Var1) FOR 10 min
resource name. Use this function when a state- INC Var1
ment or function needs the name of a resource
END
whose name index number is stored in an
attribute, variable, or some other expression.
When used in a string expression expecting, such
as in the third syntax example above, ProModel See Also
will output the actual name of the resource.
ENT(), LOC(), and GRAPHIC.
Use RES() to assign a properly skilled operator
according to the attribute of the part or to change
the duties of resources as the simulation
progresses.

Valid In
Any statement where a resource name is nor-
mally used, except in the Move Logic field in the
Routing edit table. Also used in string expres-
sions.
544 Chapter 14:
Reset

Reset Example

General Action Statement The example below shows how a general read
file, Times, is reset in the Initialization logic. Each
time a simulation begins, whether a single repli-
Syntax samples cation or one of several multiple replications, the
Times file is reset so that calls to the Times file start
RESET <file ID> at the beginning of the file.
RESET Times
RESET (Times)

Description
Starts a general read file over from the beginning.
RESET is used primarily in the Initialization or
Termination logic to reset a general read or write
file at the beginning or end of multiple replica-
tions and single, independent runs. RESET can
also be used to re-read cyclic data in the same
simulation run. The parentheses are optional and
are included only to insure compatibility with
older models. See Also
Valid In “External Files” on page 262. Also see READ,
WRITE, XWRITE, and RESET.
Initialization and termination logic, node entry
and exit logic, down-time logic, location process-
ing logic, routing exit, and arrival logic.

Components

<file ID>
The file identifier as defined in the External Files Edi-
tor.
ProModel 545
User Guide

Reset Stats
General Action Statement

Syntax samples

RESET STATS
IF Total = 20 THEN RESET STATS

Description
Resets the simulation statistics. Useful in con-
nection with the REPORT statement to manually
control statistics for reporting purposes in case
specific or event logic.

Valid In
Any logic.

Example

Suppose you want to generate a new output


report for each 20-hour period of the simulation.
Enter the following logic in an independent sub-
routine which is activated at the beginning of the
simulation:
WHILE Clock(hr) < 10000 DO
BEGIN
WAIT 20 hr
REPORT
RESET STATS
END

See Also
REPORT and WARMUP.
546 Chapter 14:
Resource()

Resource()
Shift & Break System Function

Syntax samples

RESOURCE ()

Description
Returns the name-index number of the resource
currently processing the off-shift or break logic.

Valid In
Off-shift and break logic.

Example

Suppose you have locations and resources as


members in a shift file assignment and you want
to wait until variable Parts_To_Process is equal to
zero before allowing a particular resource called
Operator to go off shift. You would enter the fol-
lowing pre-off shift logic:
IF FORRESOURCE() THEN
BEGIN
IF RESOURCE() = Operator THEN
BEGIN
WAIT UNTIL Parts_To_Process = 0
END
END

See Also
LOCATION(), FORLOCATION(), and FORRE-
SOURCE().
ProModel 547
User Guide

ResourceUnit()
Shift & Break System Function

Syntax samples

RESOURCEUNIT()

Description
Returns the unit number of the resource being
used.

Valid In
Off-shift and break logic.

Example

When a multi-unit resource goes on shift, it is


sometimes helpful to know which unit of the
resource is going off shift. Depending on the
resource unit you may want to skip the shift or
update a variable that is used elsewhere in your
model.
548 Chapter 14:
ResQty()

ResQty() Example

Entity-Specific System Function The example below demonstrates the use of


RESQTY() to adjust the processing time for an
entity based on the number of resources avail-
Syntax samples able to process it. Before EntA’s arrive at Loc1,
they capture a certain number of resources
RESQTY({<resource name>}) named Res1. Processing logic at Loc1 deter-
mines how many Res1’s each EntA captured and
IF RESQTY(Res1) > 5 THEN FREE 5 Res1 processes it accordingly. The more resources an
entity captures, the more workers available to
work on the project, and the less time it takes.
ProModel then routes EntA’s on to Loc2. The logic
Description at Loc2 makes sure that no EntA owns more than
Returns the number of units of the specified one Res1.
resource that the current entity owns. RESQTY()
can be used to determine the amount of time nec-
essary to process an entity based on the number
Process Table
of resources an entity owns.
Entitiy Location Operation (min)
Valid In EntA Loc1 WAIT 120/RESQTY(Res1)
EntA Loc2 IF RESQTY(Res1)>1 THEN
Entity speed fields, traveling-time fields,
FREE (RESQTY(Res1)-1)
resource fields, location processing logic, routing Res1
fields, arrival logic, debug user-condition fields,
and exit logic. This function returns an integer. Routing Table
Blk Output Destination Rule Move Logic
Components
1 EntA Loc2 FIRST 1
1 EntA Loc3 FIRST 1
<resource name>
The name of the resource to check for. If no resource See Also
name is specified, the total number of units of all
resource types owned by the entity is returned. RES() FREECAP(), FREEUNITS(), and
may be substituted for a resource name. GROUPQTY().
ProModel 549
User Guide

Return Components

General Action Statement <expression>


The value to return. This expression must be on the
Syntax samples same line as the RETURN. If a subroutine was acti-
vated, then the return value is ignored.

RETURN {<expression>}
RETURN Example
RETURN Attr1**Sqrt(Attr2)
The following example uses a subroutine to
check the supply of items in a storage location. If
the free capacity of the location is greater than
Description 10, the user is prompted for an order quantity;
otherwise no new items will be ordered. If an
Sends a value from a subroutine to the logic that
order is made, the order time is returned; other-
called the subroutine. In the same way that
wise the variable OrdTm remains unchanged.
parameters send information from the calling The logic for Sub1() appears in the logic window.
logic to the subroutine, RETURN sends informa-
tion from the subroutine to the calling logic.
After the RETURN is executed, no more logic in Process Table
the subroutine is executed. When subroutines
return values, the RETURN statement must be Entity Location Operation (min)
followed by an expression. Item99 Stores
Item99 Shipping WAIT N(3.2,.2)
When used in logic that is not a subroutine, OrdTm = Sub1()
RETURN functions like a very powerful BREAK
or BREAKBLK statement. Whereas BREAK and Routing Table
BREAKBLK exit only the innermost loop or
statement block, RETURN exits the logic com- Blk Output Destination Rule Move Logic
pletely, no matter how deeply nested inside loops 1 Item99 Shipping SEND 1 MOVE FOR 15
and statement blocks. 1 Item99 EXIT FIRST 1

Valid In
Any logic, but used most often in user-defined
subroutines.
550 Chapter 14:
Return

See Also
“Subroutines” on page 246. Also see BREAK
and BREAKBLK.
ProModel 551
User Guide

Round()
Math Function

Syntax samples

ROUND(<expression>)
Integer1 = ROUND(3.5)

Description
Rounds the expression to the nearest whole num-
ber. Use this function to override ProModel’s
default, truncation.

Valid In
Any expression. This function returns an integer.

Components

<expression>
The expression to be rounded.

See Also
TRUNC() and REAL().
552 Chapter 14:
Route

Route process the remaining logic after the route state-


ment. The “ghost” entity is also referred to as the
parent entity. The child entity takes the route
Entity-Related Operation Statement specified by the ROUTE statement. If the child
entity cannot go to the next location and is
Syntax samples blocked, the parent entity is also blocked and will
not continue logic execution until the child entity
ROUTE <expression> is no longer blocked. For more information, see
ROUTE 2 “Entities” on page 118.

ROUTE Attr1 Valid In


ROUTE Dist1()
The operation column of process edit tables only.

Components
Description
Executes a routing block for the processing <expression>
entity. The process does not continue until all of The integer result of this expression determines the
the entities being routed for the particular block routing block that the entity will take. The expression
have begun executing their move logic. The pro- is evaluated every time it is encountered, allowing the
cessing logic may contain several ROUTE state- chosen block to vary during the simulation.
ments. These statements may be selected
individually using IF...THEN statements, or they
may be processed sequentially, with or without Example
other process statements in between. If any
ROUTE statement appears in a process logic, This example illustrates a “nested” probability rout-
then ProModel assumes all routing for that pro- ing. The initial entity, EntAB, enters Loc1 and Pro-
cess will be activated by the user and therefore Model makes a decision based on the user-
does no automatic routing. If no ROUTE state- defined distribution Dist1() whether to route the
ment appears in the processing logic, then all resulting entities according to Route 1, Route 2,
routing blocks will be executed automatically or Route 3. If ProModel chooses Route 1, it sends
an EntA 60% of the time, or an EntB 40% of the
once processing logic has been completed.
time, to Loc2. If ProModel chooses Route 2, it
The ROUTE Statement is most often used with sends an EntA 20% of the time, or an EntB 80% of
IF...THEN statements to make routing decisions the time, to Loc3. If ProModel chooses Route 3, it
based on complex logic that is not available sends an EntA 30% of the time, or an EntB 70% of
through other ProModel features (such as system the time, to Loc4.
functions or the User Condition routing rule).
ROUTE, if used with IF...THEN properly, will
insure that only one of the routing blocks is acti-
vated.
This statement can be used to route one or more
entities and leave behind a “ghost” entity that will
ProModel 553
User Guide

Process Table
Entity Location Operation (min)
ENTAB Loc1 Route Dist1()

Routing Table
Blk Output Destination Rule Move Logic
1 EntA Loc2 .600 1 MOVE FOR 2
EntB Loc2 .400 MOVE FOR 2
2 EntA Loc3 .200 1 MOVE FOR 2
EntB Loc3 .800 MOVE FOR 2
3 EntA Loc4 .300 1 MOVE FOR 2
EntB Loc4 .700 MOVE FOR 2

See Also
“Routing Rules” on page 415.
554 Chapter 14:
Send

Send Components

General Action Statement <expression>


The number of entities to send to the destination. Neg-
Syntax samples ative values will generate an error message.
<entity name>
SEND <expression> <entity name> TO <desti- The type of entity to send to the destination. You may
nation>{,<priority>} substitute ENT() for an entity name.
SEND 2 EntA TO Loc2 <destination>
SEND 1 Grp_A TO Grp_A_Processing, 10 The name of the location to which the entities will be
sent. You may substitute LOC() for the location name.
<priority>
Description Multiple SEND requests for the same entity type are
filled according to the longest waiting request having
Sends the specified number of a particular entity
the highest priority. This expression should be a num-
type to the destination. The entities to be sent ber between 0 and 999. For more information on prior-
must be waiting with a SEND routing rule. The ities, see Priorities, at the beginning of this section.
entity that issued the SEND command continues
processing whether or not entities of the type
requested are waiting to be sent. If no entities are
Example
waiting to be sent, a SEND notice is automati-
cally posted so that entities will be sent when
In this example, EntA’s arrive at LocA1 and trigger
they become available.
the sending of EntB’s to LocB2. The value of EntA’s
The SEND statement can model a system based Attr2 determines the number of EntB’s sent to
on demand, rather than on entity arrival, (called a LocB2.
pull system). Customer orders cause a SEND to
be issued for a main assembly. Main assembly
issues SEND commands for sub-assemblies. The
example model SEND has an excellent example
of this technique.
The SEND statement can also be used as a con-
trol device to limit the amount of work-in-
progress (WIP) in certain critical areas. Quanti-
ties are only sent to the production area when the
WIP level falls below a certain point.

Valid In
Any logic.
ProModel 555
User Guide

Process Table
Entity Location Operation (min)
EntA LocA1 WAIT U(3,.5)
SEND Attr2 EntB TO LocB2
EntB LocB1 Wait 5 min

Routing Table
Blk Output Destination Rule Move Logic
1 EntA LocA2 FIRST 1
1 EntB LocB2 SEND 1
EntB LocB3 SEND
EntB LocB4 SEND

See Also
SEND, ORDER, JOIN, ROUTE,
WAIT...UNTIL, and LOAD.
556 Chapter 14:
SetRate

SetRate Please note

General Operation Statement SETRATE uses the time units defined for the
model. (By default, SETRATE uses hours.)
Syntax samples

SETRATE <resource name>, <expression>,


Example
<unit #>
The logic below displays how you can uniquely
SETRATE Operator, 25, 3 assign the regular rate for each unit of a
resource, Operator. Operator has three units,
meaning that each unit can perform the same
Description task. However, each of the three Operators has a
Allows you to define the regular rate of cost for different hourly rate. We set these rates in the Ini-
tialization logic using the following:
resources contained in a model. If you have
already defined the regular rate in the Cost mod-
ule, this statement will override that rate. You can
use SetRate to set different rates for each unit of a
resource.

Valid In
Initialization logic.

Components

<resource name>
The name of the resource whose rate you wish to set.
<expression>
The rate assigned to the resource. See Also
<unit #> GETCOST, GETRESRATE(), INCENTCOST,
The unit number of the resource. Where multiple INCLOCCOST, and INCRESCOST.
instances of a resource exist, you must specify which
instance of the resource to use (e.g., Tech1, Tech2,
Tech3, etc.). The keyword ALL may be used to indicate
all instances of a resource.
ProModel 557
User Guide

Skip
Shift & Break Logic Statement

Syntax samples

SKIP

Description
In pre-off-shift or pre-break logic, a SKIP state-
ment causes any off-shift or break main logic to
be skipped as well as the off-shift or break time
defined in the shift file so that the affected loca-
tion or resource stays on line.
In off-shift or break logic, a SKIP statement
causes the off-shift or break time defined in the
shift file to be ignored. This is useful if you want
to define your own off-shift or break time as part
of the logic rather than use the time defined in the
shift file.

Valid In
Shift logic only.

Example

Suppose a Worker is scheduled to go on break at


10:15 for fifteen minutes. However, if there are
more than two parts in queue, the Worker will skip
his or her break to stay on schedule. The following
logic is entered in the pre-break logic for the
resource, Worker.
IF Contents(Worker_Que) > 2 THEN SKIP

See Also
“Shift & Break Logic” on page 305. Also see
FORLOCATION() and FORRESOURCE().
558 Chapter 14:
Sound

Sound Example

General Action Statement The example below shows an entity’s operation


logic. A variable called Total is used to keep track
of the number of entities passing through the
Syntax samples location. Every 100th entity to pass through the
location will cause the sound “Tada” to sound,
SOUND <string expression> thus notifying the user of the 100th entity. In addi-
tion, ProModel resets the counter.
SOUND “Chimes.wav”
SOUND “Tada.wav”

Description
Plays a wavefile. Wavefiles, which have the
extension .WAV, may be purchased commer-
cially or created with a sound card. A few sounds,
such as the examples here, come with Windows
and are found in the Windows directory. Use
SOUND to alert a model’s user that some event
has taken place.

Valid In
Any logic. See Also
PAUSE, DISPLAY, and PROMPT.
Components

<string expression>
The DOS name of the wavefile to be played. This
expression must evaluate to a valid DOS file. It may
include a path.
ProModel 559
User Guide

Split As Components

Entity-Related Operation Statement <expression>


Split the entity into this number of entities. ProModel
Syntax samples evaluates this expression every time it encounters the
statement.

SPLIT <expression> AS <new entity name> <new entity name>

SPLIT 10 AS Entx The name of the resulting entities. Each split entity
searches forward in the process list, and then from the
beginning of the list, until it finds a process for the new
entity type at the current location.
Description
Splits an entity into the number of entities you Explicit Entity Actions
specify, changes the entity names, and divides all
cost and time statistics accrued by the base entity When you use the SPLIT AS statement, Pro-
between the new entities. ProModel counts the Model divides the accrued cost between the new
old entity as an exit and the resulting entities entities and counts the old entity as an exit. Each
share the same attribute values as the original new entity begins with new statistical informa-
entity. tion.

Any entity you wish to split must release all Implicit Entity Actions
owned resources using the FREE statement. Use
SPLIT AS to divide pieces of raw material into ProModel allows you to use the SPLIT AS state-
components. The entities formed by the SPLIT ment implicitly as part of the routing definition.
AS statement at a location will not appear in the To do this, define a route block with a Quantity
statistics for this location. field output value greater than 1 and the New
Entity option unchecked.
Valid In
Example
The operation column of process edit tables only.
ProModel does not allow SPLIT AS on convey-
In the following example, a batch of entities,
ors, and not at the end of a queue. You also may
Batch A, arrives at Loc1 for a 2 hour processing
not use SPLIT AS after a ROUTE statement. Do
time. Once the processing completes, BatchA
not use SPLIT AS in combination with COM- splits into individual entities called EntA. ProModel
BINE, CREATE, GROUP, UNGROUP, LOAD, determines the number of EntA’s resulting from
UNLOAD, or other split statements in the same the SPLIT AS statement by the value of BatchA’s
process logic. attribute, Attr3.
560 Chapter 14:
Split As

Process Table
Entity Location Operation (min)
BatchA Loc1 WAIT 2 Hr
SPLIT Attr3 AS EntA
EntA Loc1 USE Res1 FOR U(2,.3)

Routing Table
Blk Output Destination Rule Move Logic

1 EntA Loc2 FIRST 1

See Also
JOIN, GROUP, UNGROUP, and CREATE.
ProModel 561
User Guide

Sqrt()
Math Function

Syntax samples

SQRT(<expression>)
Real1 = SQRT(Real2)

Description
Returns the square root of an expression.

Valid In
Any expression. This function returns a real num-
ber.

Components

<expression>
SQRT() returns the square root of this expression.

See Also
ROUND().

Please note

To get a root other than the square root, use the


exponentiation operator as shown in the follow-
ing formula:

X**(1/Y)

For example, where Y is the desired root, the for-


mula 9**(1/3) returns the cube root of 9.
562 Chapter 14:
Stop

Stop Example

General Operation Statement In the example below, a STOP statement is used


in Operation Logic to end the simulation when-
ever the variable Total_Complete reaches 100.
Syntax samples

STOP {<string expression>}


STOP
STOP “Normal termination”

Description
Terminates the current replication and optionally
displays a message. The simulation will then con-
tinue with the next replication. Use STOP to end
a replication when the simulation has run long
enough to provide sufficient statistical data.

Valid In See Also

Any logic. BREAK, BREAKBLK, RETURN, and PAUSE.

Components

<string expression>
An optional message to display when the replication
stops.
ProModel 563
User Guide

ThreadNum() plays the process and logic that caused the


error, as shown below.

General System Function

Syntax samples

THREADNUM()
IF THREADNUM()=215 THEN DEBUG

Description
Every time any logic is executed, it is executed
by a thread which is assigned a unique number. By adding the statement, “IF THREADNUM() = 210
THREADNUM returns the number of the thread THEN DEBUG” before the statement that causes
that called the function. This function is most the error, the simulation will run until the proper
useful in conjunction with the IF...THEN and process and then bring up the debugger. The
DEBUG statements to bring up the debugger at a debugger can then be used to step through the
certain process. See below for a detailed exam- process to find the particular statement causing
the error.
ple. Note that if the model does not change
between simulation runs, every thread will have
the same number from run to run, but not from
replication to replication. Also, most changes in a See Also
model will cause threads to have different num-
bers on subsequent runs. DEBUG.

Valid In
Any logic

Example

For example, suppose that when the 50th entity


of a certain type arrives at a certain location, the
model always crashes. A DEBUG statement at the
beginning of the processing logic would be cum-
bersome because the debugger would come
up forty-nine times before it was needed. How-
ever, when the error occurs, the debugger dis-
564 Chapter 14:
TimeLeft()

TimeLeft() example, if Lathe1 must process the Gear for a


total of 10 minutes, but it only processes for 8
minutes before you preempt the Gear, Lathe1
Preemption Logic System Function should process it for only 2 additional minutes
when it returns to Lathe1. To do this, we assign
Syntax samples the remaining process time using TIMELEFT() to an
attribute, Att1. We also check Att1 at Lathe1 to
determine if it is greater than 0 to know whether
TIMELEFT() the Gear was executing the process for the first
Attr1=TIMELEFT() time or as a preempted entity. Processing should
be as follows:

Description Process Table


Returns the time remaining if the preemption Entity Location Operation (min)
occurred during a WAIT statement. The value Gear Lathe1 IF Att1=0 THEN WAIT 10
returned is in default time units and must be ELSE WAIT Att1
checked before any processing delay occurs since Gear * Lathe1 Att1=TIMELEFT()
the value is updated whenever a preemption takes Gear Wait_Area
place. If the value is referred to later, it should be * Preemptive Process Record
assigned to the entity’s attribute or to a local vari-
able. Routing Table
If several entities were preempted at a location,
Blk Output Destination Rule Move Logic
the value returned by the function to each entity
1 Gear Lathe2 FIRST 1
will be taken from whichever entity has the larg- 1 Gear Wait_Area FIRST 1
est time remaining in the WAIT statement. 1 Gear Lathe1, 99 FIRST 1
When no units are specified in the parentheses in
this function, it returns the default time unit spec- See Also
ified in the General Information dialog. “Preemption Process Logic” on page 300.

Valid In
Operation logic defined as a preemptive process.

Example

You may preempt an entity called Gear while it


processes at a location called Lathe1. When you
preempt the Gear, it should go to a location
called Wait_Area where it waits to return to
Lathe1. When it returns to Lathe1, the lathe
should continue processing the Gear from where
it left off when you preempted the Gear. For
ProModel 565
User Guide

TimesUsed() Example

General System Function In the example below, when an EntA arrives at


Loc1, it will only use the resource Res1 if the
resource has been used five or fewer times. If the
Syntax samples resource has been used more than five times,
EntA will use Res2 instead.
TIMESUSED(<resource>)
IF TIMESUSED(Res1) > 5 then USE Res2 for 10
Process Table
Entity Location Operation (min)
Description EntA Loc1 IF TIMESUSED (Res1)> 5
THEN USE Res2 FOR 10
Returns the number of times a resource has been ELSE USE Res1 FOR 10
used.
Routing Table
Valid In
Blk Output Destination Rule Move Logic
Any logic and any field evaluated after transla-
tion. For a list of fields evaluated after transla-
tion, see the “Appendix A” on page 587.
See Also

Components UNITS().

<resource>
The name of the resource to examine. RES() may be
used here.
566 Chapter 14:
Trace

Trace CLOSE
Turns tracing off and closes the trace listing.
General Action Statement

Syntax samples Example

In this example, a message will appear in the


TRACE {<message>}{STEP or CONT or OFF or
trace listing whenever Agent1 and Agent2 have
CLOSE}
been captured and the downtime for Gate1
TRACE “Begin Test for Resource A” begins. Another message will appear in the trace
TRACE CONT listing at the end of the downtime.

TRACE CLOSE

Description
Turns tracing on and off. Trace listings will
appear in a separate window on the screen. Use
trace to follow the logical flow of a model.

Valid In
Any logic.
See Also
Components
DEBUG.
<message>
The message to appear in the trace listing when the
TRACE statement is encountered. The message can be
any string expression.
STEP
Makes ProModel wait for the user to click the left
mouse button to execute the next statement or trace
continuously while the right mouse button is held
down. TRACE statements default to step.
CONT
Steps continuously without user intervention. Clicking
the right mouse button will step through the logic.
OFF
Turns tracing off but does not close the trace listing.
ProModel 567
User Guide

Trunc()
Type Conversion Function

Syntax samples

TRUNC(<expression>)
Integer1=TRUNC(3.9)

Description
Returns a real expression truncated to an integer.
Any digits to the right of the decimal place will
be removed. When necessary, ProModel auto-
matically converts real values to integers by trun-
cating them. For more information about
ProModel automatically converting between
reals and integers, see “Converting Between
Numeric Types” on page 407.

Valid In
Any expression. This function returns an integer.

Components

<expression>
The expression to be truncated.

See Also
ROUND().
568 Chapter 14:
Ungroup

Ungroup Please note

Entity-Related Operation Statement If you are trying to ungroup an entity that has
never been grouped, ProModel ignores the
UNGROUP statement.
Syntax samples

UNGROUP {LIFO}
UNGROUP Components
UNGROUP LIFO
LIFO
Last In, First Out. Starts the ungrouped entities pro-
cessing from last to first, rather than from first to last.
Description If this option is not specified, the ungrouped entities
Separates entities that were grouped with the will be processed FIFO, or First In, First Out.
GROUP statement. Each of the resulting entities
searches ahead in the process list and then from
the beginning of the list until a process is found Explicit Entity Actions
that has been defined for that entity type at the With an UNGROUP, ProModel dissolves the
current location. The first entity processed from temporary shell and divides costs among the
the group takes any resources the group owns. If ungrouped entities (ungrouped entities may
a grouped entity has members that are also include smaller clusters of grouped entities).
grouped entities, only the top level group is
ungrouped with an UNGROUP statement. An Example
additional UNGROUP will ungroup any member
groups.
The example below is the continuation of the
GROUP statement example where EntA, EntB and
Valid In EntC were grouped to form Grp_A. Now the enti-
The operation column of process edit tables only. ties are ungrouped with all of their original proper-
You may not use UNGROUP on conveyors nor ties. (See the GROUP statement example.)
at the end of a queue. UNGROUP may not be
used in combination with COMBINE, CREATE,
UNGROUP, LOAD, UNLOAD, SPLIT AS or
other UNGROUP statements in a processing
logic. It may follow a GROUP statement no more
than once in the same processing logic to allow
batch processing.
ProModel 569
User Guide

Process Table
Entity Location Operation (min)
Grp_A Loc3 UNGROUP
EntA Loc3 USE Res1 FOR 2 min
EntB Loc3 USE Res1 FOR 2 min
EntC Loc3 USE Res1 FOR 2 min

Routing Table
Blk Output Destination Rule Move Logic

1 EntA Loc4 FIRST 1 MOVE FOR 2


1 EntB Loc5 FIRST 1 MOVE FOR 2
1 EntC Loc6 FIRST 1 MOVE FOR 2

See Also
GROUP, LOAD, JOIN, COMBINE, and SPLIT
AS. See “Attributes” on page 225 for more infor-
mation.
570 Chapter 14:
Units()

Units()
General System Function

Syntax samples

UNITS(<location> or <resource>)
PAUSE “There are” $ UNITS(Res1) $ “Res1's in
the system.”

Description
Returns the total units of a location or resource.

Valid In
Any logic and any field except those evaluated
before translation. For a list of fields evaluated
before translation, see “Appendix A” on
page 587.

Components

<location>
The name of the location to examine. You may substi-
tute LOC() for the name of a location.
<resource>
The name of the resource to examine. You may substi-
tute RES() for the name of a resource.

See Also
FREEUNITS() and RESQTY().
ProModel 571
User Guide

Unload quantity specified for unloading is greater than the


number of entities that have been loaded, the extra
quantity is ignored. This expression is evaluated every
Entity-Related Operation Statement time the statement is encountered.
IFF <Boolean expression>
Syntax samples This option allows the UNLOAD command to be con-
ditional. Any attributes, entity functions, and location
UNLOAD <expression> {IFF <Boolean expres- functions apply to the entity to be unloaded, not to the
sion>} current entity. This technique allows only entities with
UNLOAD 5 certain properties to be unloaded from the current
entity. To use attributes, entity functions, and location
UNLOAD 5 IFF Entity() = EntA functions that apply to the current entity, assign the
desired value to a local variable and use the local vari-
able in the Boolean expression.

Description
Unloads a certain quantity of entities, or a certain Explicit Entity Actions
quantity of those entities depending on a condi- UNLOAD divides up costs and copies statistical
tion. Use UNLOAD to unload entities from a car- information for duration of loading to each entity.
rier entity that was previously loaded with
LOAD. The unloaded entities are processed
ahead of the entity which unloaded them. Each
Example
unloaded entity searches ahead in the process list,
and then from the beginning of the list, until a The following example is a continuation of the
LOAD statement example and shows how the
process is found for that entity type at that loca-
loaded entity (Truck) is unloaded, resulting in the
tion.
original Truck and the boxes that were loaded
onto it. Boxes continue to the next location while
Valid In Truck is returned to its starting location, Factory.
The operation column of process edit tables only. (See the Load statement example.)
UNLOAD is not valid at conveyors, after routing,
or at the end of a queue. You may not use
UNLOAD in combination with COMBINE,
CREATE, GROUP, UNGROUP, and SPLIT AS
or other UNLOAD in the same process logic. If
the process contains LOAD statements,
UNLOAD can only appear once after all of them.

Components

<expression>
The number of entities to unload. A value of zero is
ignored and a negative value produces an error. If the
572 Chapter 14:
Unload

Process Table
Entity Location Operation (min)
Box Shipping WAIT 2 min
Truck MfgSite
Truck Dock LOAD Attr1 IN 2 Hr
Truck NewYork WAIT T(20,30,60)
UNLOAD 5
Box NewYork
Truck Chicago WAIT T(20,30,60)
UNLOAD 5
Box Chicago
Truck Boston WAIT T(20,30,60)
UNLOAD 5
Box Boston

Routing Table
Blk Output Destination Rule Move Logic
1 Box Dock LOAD 1 MOVE FOR 45
sec
1 Truck Dock FIRST 1 MOVE FOR 10
min
1 Truck NewYork FIRST 1 MOVE FOR 24
Hr
Truck Chicago FIRST MOVE FOR 12
Hr
Truck Boston FIRST MOVE FOR 28
Hr
1 Truck MfgSite FIRST 1 MOVE FOR 24
Hr
1 Box NY_Recv FIRST 1 MOVE FOR 5
min
1 Truck MfgSite FIRST 1 MOVE FOR 12
Hr
1 Box Chi_Recv FIRST 1 MOVE FOR 5
min
1 Truck MfgSite FIRST 1 MOVE FOR 28
Hr
1 Box Bos_Recv FIRST 1 MOVE FOR 5
min

See Also
LOAD, COMBINE, JOIN, GROUP, and
UNGROUP. Also see “Attributes” on page 225
for more information.
ProModel 573
User Guide

Use Valid In
Location processing logic, downtime logic, and
Resource-Related Operation Statement move logic.

Syntax samples Components

USE {<quantity>} <resource> {,<priority>} <quantity>


FOR <time> {AND or OR {<quantity>} The number of resources to get. ProModel ignores a
<resource> {,<priority>} FOR <time>... } value of zero and values less than zero return an error.
USE 2 Res2, 5 FOR 4:23:03 ProModel evaluates and truncates this numeric expres-
sion every time it encounters the USE statement.
USE 2 Res1 FOR 2.0 min OR 3 Res2 FOR 1.5 min
<resource>
USE Res1, 3 FOR 1 hr AND (Res2 FOR 5 OR Res3
FOR 5) The name of the resource to USE. You can substitute
RES() for the resource name.
USE Oper_Attr RES(Type_Attr) FOR Time_Var1
Hr. <priority>
When multiple entities request a resource, ProModel
fills the requests in order of priority. This expression
should be a number between 0 and 999.
Description
<time>
Captures a resource or combination of resources
The length of time the entity will tie up the resource.
as each resource becomes available. Once the
ProModel evaluates this expression whenever it
resource has been captured it is used for the spec- encounters the statement. If you specify no time unit,
ified amount of time, and then freed when the ProModel applies the default time unit specified in the
specified duration is over. If the entity already General Information dialog.
possesses one of the specified resources from a
previous GET, JOINTLY GET, or MOVE WITH
statement, the entity will still try to capture an Example
additional unit of that resource.
This simple example shows how Clients arriving at
Please note location Reception must USE the Secretary for
some amount of time according to the user-
If an entity uses a USE statement to capture a defined distribution, Dist1. Clients are then sent to
resource, the resource must complete its opera- a waiting area until the desired next location
becomes available.
tion before you can preempt the entity. However,
if the entity uses a GET, WAIT, FREE sequence,
you may preempt the entity during the WAIT por-
tion of the logic.
574 Chapter 14:
Use

Process Table
Entity Location Operation (min)
Client Reception USE Secretary
FOR Dist1()
Client Waiting

Routing Table
Blk Output Destination Rule Move Logic
1 Client Waiting FIRST 1 MOVE FOR 30
sec
1 Client Loan .400 1 MOVE FOR 1
Client Auditor .350 1 MOVE FOR 1
Client Service .250 1 MOVE FOR 1

See Also
GET, JOINTLY GET, and MOVE WITH.
ProModel 575
User Guide

Variable() Example

General System Function .In the example below, parts of different types
arrive at location In_Queue. Each entity type has
a unique value for Attr1 that corresponds to the
Syntax samples name-index number of a variable in the Vari-
ables module. Once parts arrive at In_Queue,
VARIABLE(<numeric expression>) they increment the variable specific to that entity
type before routing to the location Process_Loc.
VARIABLE(Attr) = 124
VARIABLE(x) = VARIABLE(y)
N=VARIABLE(x) + VARIABLE(y) - 1
Process Table
Entity Location Operation (min)
All In_Queue VARIABLE(Attr1) =
Description VARIABLE(Attr1) + 1
Converts a name-index number or integer to a
variable name. Use this function when a numeric Routing Table
expression uses a variable whose name-index Blk Output Destination Rule Move Logic
number is stored in an attribute, array, or vari- 1 All Process_Loc FIRST1 MOVE 1
able.
See Also
Valid In
LOC(), ENT(), and RES().
Any logic.

Please note

You cannot use VARIABLE() in a PROMPT, INC,


DEC, or READ statement.

Components

<numeric expression>
The name index number for a variable. You can deter-
mine the name-index number associated with a particu-
lar variable by the position of the variable record in the
Variables module.
576 Chapter 14:
View

View Example

General Action Statement You are giving a presentation on the use of simu-
lation for airport design. Two hours into the model
run, you want to zoom in on the baggage area
Syntax samples to show the activity there. Three hours into the
simulation, you want to zoom out to show the
VIEW “view name” entire airport..You are giving a presentation to
management on the factory floor using simula-
VIEW “Cell5” tion. Two hours into the simulation, you want to
VIEW “View10” zoom in on a particular cell in the factory to show
the activity there. Three hours into the simulation,
you want to zoom out to show the entire factory.
To do this, define two views called Cell1 and Fac-
Description tory using the Views editor on the View menu.
Use this statement to change the view in the Lay- Define an independent subroutine and call it in
out window from within your logic. Once the the initialization logic using the ACTIVATE state-
ment. Enter the following logic in the subroutine:
view has been defined from the View menu in
main menu, you can use it in the logic. INT X=1
WHILE X=1 DO
Valid In BEGIN
IF CLOCK(hr) = 2 THEN VIEW “Cell1”
All logic. IF CLOCK(hr) = 3 THEN VIEW “Factory”
WAIT 1 hr
Components END

<view name>
The name of the view defined in the Views dialog.
See Also
Enclose the name in quotation marks.
“Commands” on page 90.
ProModel 577
User Guide

Wait Components

Entity-Related Operation Statement <time expression>


The length of the WAIT. This expression is evaluated
Syntax samples whenever the statement is encountered. If no time unit
is specified, the default time unit specified in the Gen-
eral Information Dialog is applied.
WAIT <time expression>
WAIT 3 min
WAIT 0 Example
WAIT 2.5 + CleanupTime
In the following example, customers arrive at a
WAIT N(8,.5) + 3 sec fast-food restaurant and place their orders at
location Counter. How long customers wait
depends on the type of meal ordered. If they
order meal one, two, or three, they wait only 2
Description minutes. Otherwise they wait 5 minutes.The
Simulates the time it takes to process an entity. example below shows WAIT statements used in
an IF...THEN...ELSE expression. If the value of
WAIT delays further processing of the entity
EntA’s attribute, Attr1, is greater than zero, the
until the specified time has elapsed. The rest of
time delay is 5.0 minutes. Otherwise the delay is
the model continues to process while an entity 2.5 minutes.
waits. If the expression evaluates to zero, the cur-
rent entity will not finish processing until all
other processes scheduled for that moment in the
simulation have finished. Process Table
Entity Location Operation (min)
Please note EntA Loc1 IF Attr1>0 THEN
WAIT 5 min
You may use the “^” symbol in place of a ELSE
“WAIT” statement. WAIT 2.5 min

Routing Table
Blk Output Destination Rule Move Logic
Valid In 1 EntA Loc2 FIRST 1 MOVE FOR 10
Location processing, downtime, and move logic.
Independent subroutines may also use WAIT See Also
statements which function as timers. (For more WAIT UNTIL can stop additional processing
information about Independent subroutines, see until a condition is true.
“Subroutines” on page 246.)
578 Chapter 14:
Wait Until

Wait Until Example

Entity And Resource-Related Operation The example below uses the WAIT UNTIL state-
ment to group a variable quantity of entities. As
Statement
each EntA arrives at Loc1, a variable (Total) is
incremented to keep track of the total entities
Syntax samples waiting at the location. The WAIT UNTIL statement
causes processing of all EntA’s to halt at this point
WAIT UNTIL <Boolean expression> until the variable, Var1, reaches or exceeds 500.
Then all of the waiting EntA’s are GROUPed
WAIT UNTIL Var1 > 3 together as a BatchA.
WAIT UNTIL Var1 < Attr3 AND Var2 >= 5

Process Table
Description
Entity Location Operation (min)
Delays processing of the current logic until the EntA Loc1 INC Total
Boolean expression is true. The rest of the model WAIT UNTIL Total >= 5
continues to process during the delay. Note that GROUP Total AS Batch
if the expression is initially evaluated to be false,
it is only reevaluated when a location attribute, Routing Table
variable, or array element in the expression Blk Output Destination Rule Move Logic
changes. Multiple entities waiting on the same
condition are released one at a time. This allows
a released entity to change a variable value that See Also
will prevent the other waiting entities from being
released. DO...WHILE, WHILE...DO, and DO...UNTIL.

Valid In
Node entry and node exit logic delays processing
for resources, and location processing logic
delays processing for entities. Independent Sub-
routines. (See “Subroutines” on page 246.)

Components

<Boolean expression>
The condition that must be satisfied to continue pro-
cessing the entity or resource. Elements of this expres-
sion are limited to location attributes, variables, and
array elements.
ProModel 579
User Guide

Warmup Example

General Action Statement Suppose you want to base the warmup period on
2,000 entities being processed rather than on a
lapse of time. You could increment a variable
Syntax samples (e.g., Total_Processed) whenever an entity exited
the system. Enter the following logic in an inde-
WARMUP pendent subroutine activated from the initializa-
tion logic:
WARMUP
WAIT UNTIL Total_Processed = 2000
IF thruput = 50 THEN WARMUP
WARMUP

Description
See Also
Instructs the simulation to end the warmup period
by resetting all the statistics and erasing relevant See “Simulation Options” on page 348 for more
time series files. Only one WARMUP statement information on warm-up periods.
may be used in the simulation.

Please note

If multiple WARMUP statements are encountered


or a WARMUP statement is used in addition to
the warmup time specified in the Run Options
dialog, ProModel will generate a warning to
inform you that this has occurred. Only the first
warmup encountered (the statement or the Run
Options setting) will actually be executed. While
the statement will be encountered within the
logic, the Run Options setting will be executed at
the specific time indicated in the dialog.

Valid In
Any logic.
580 Chapter 14:
While...Do

While...Do Example

General Control Statement The example below shows the arrival logic win-
dow for an entity that arrives every 40 hours to
reset the values of Array1 elements 1 through 100
Syntax samples to 0.

WHILE <Boolean expression> DO <statement


block>
WHILE Array1[n] <> 10 DO INC n
WHILE FREECAP(Loc1) > 5 DO
BEGIN
INC Var2, 5
WAIT 5 sec
END

Description
Repeats a statement or statement block continu-
ously while a condition remains true.
WHILE...DO is an entry-condition loop, meaning See Also
that the loop will not be executed once unless the BEGIN, END, DO...WHILE, and DO...UNTIL.
Boolean expression is true.

Valid In
Any logic.

Components

<Boolean expression>
As long as this expression is TRUE, the loop will con-
tinue. This expression is evaluated for each iteration of
the loop.
<statement block>
The statement or block of statements to execute.
ProModel 581
User Guide

Write <maximum digits before decimal>


The maximum number of digits before the decimal.
This value is used to line up any numeric values into
General Operation Statement
columns on the decimal point. This value may be any
numeric expression.
Syntax samples <digits after decimal>

WRITE <file ID>, <string or numeric expression> The number of spaces to save after the decimal point.
{,<maximum digits before decimal>, Use this option to line up any labels appearing after
<digits after decimal>} numbers.

Example
Description
Writes information to a general write file. The The following example uses both WRITE and
next item written to the file will appear immedi- WRITELINE to record the time when EntA com-
ately after this item. WRITE always appends to pletes processing at Loc1 in a general write file
called Rpt.
the file unless the file is RESET. This holds true
for multiple replications as well as single, inde-
pendent runs. Any file that is written to with
WRITE automatically becomes a text file and Process Table
will have an end of file marker attached automat-
ically to the end when it is closed. For more flex- Entity Location Operation (min)
ible WRITE capability, use XWRITE. EntA Loc1 WAIT N(7.3,.4)
WRITE Rpt,”EntA Complete at:”
WRITE and WRITELINE automatically separate WRITELINE, Rpt CLOCK(min),3,2
values by commas
Routing Table
Valid In
Blk Output Destination Rule Move Logic
Any logic.

Components See Also


XWRITE, WRITELINE, RESET, READ, and
<file ID> FORMAT(). Also see “External Files” on
The name of the file as previously defined in the Exter- page 262.
nal Files Editor.
<string or numeric expression> Please note
The string or numeric expression to be written to the
file. In the output file, quotes will automatically be The sum of the maximum digits before and after
added to string expressions so that most spreadsheet the decimal must be less than 20.
programs can easily read the file.
582 Chapter 14:
WriteLine

WriteLine <digits after decimal>


When writing real numbers, the maximum number of
digits after the decimal.
General Operation Statement

Syntax samples
Example
WRITELINE <file ID>, <string or numeric expres-
The following example uses both WRITE and
sion>{,<maximum digits before decimal>,
WRITELINE to record the time when EntA com-
<digits after decimal>}
pletes processing at Loc1 in a general write file
called Rpt.

Description
Writes information to a general write file and Process Table
starts a new line. WRITELINE always appends
to the file unless the file is RESET. Any file that Entity Location Operation (min)
EntA Loc1 WAIT N(7.3,.4)
is written to with WRITELINE automatically
WRITE Rpt, "EntA Complete at:"
becomes a text file and will have an end of file WRITELINE Rpt, CLOCK(min),3,2
marker attached to the end when it is closed.
WRITE and WRITELINE automatically separate Routing Table
values by commas Blk Output Destination Rule Move Logic

Valid In
Any logic. See Also
WRITE, RESET, XWRITE, READ, and FOR-
Components MAT(). Also see “External Files” on page 262.

<file ID> Please note


The name of the file as previously defined in the Exter-
nal Files Editor. The sum of the maximum digits before and after
<string or numeric expression> the decimal must be less than 20.
The string or numeric expression to be written to the
file. In the output file, quotes will automatically be
added to string expressions so that most spreadsheet
programs can easily read the file.
<maximum digits before decimal>
When writing real numbers, the maximum number of
digits before the decimal. Use this value to line num-
bers on different lines up on the decimal.
ProModel 583
User Guide

Xsub() type of structure. The parameters can then be


used through structure overlaying. Integers are
passed as four byte values and reals are passed as
External Subroutine Call eight byte IEEE values.

Syntax samples Please note


XSUB(<file ID>, <ordinal function number> or
For Windows Programmers Only The handle to
<function name> {, <parameter1>,
<parameter2>...}) the run-time simulation frame window will be the
last parameter passed. Most subroutines can
XSUB(Interface,1, 5) completely ignore this parameter, but it will be
XSUB(LogDLL, “_Log_B_of_X”,10,5) needed if the subroutine displays a window.

Valid In
Description
Any expression or logic.
Calls an external subroutine inside a DLL file.
XSUB() is perhaps the most powerful statement
Components
in ProModel, because by using it the user can
access the entire functionality of any 32-bit Win-
<file ID>
dows programming language such as C, C++,
Delphi, or Visual Basic. XSUB() can be used for The file ID assigned to an external DLL file as defined
sophisticated file IO and to make simulations in the External Files editor. This file should be a 32-bit
interactive. In fact, subroutines called with Windows DLL file.
XSUB() can do anything that the language they <ordinal function number>
were written in allows. Because of its power,
The ordinal number of the function inside the DLL.
however, XSUB() should be used with caution. This function must be exportable. When DLL’s are
When called, the simulation is suspended until compiled, every exported function inside them is num-
the external subroutine finishes execution. bered. The individual functions can then be accessed
by calling the program by number. This field may be
The subroutine inside the DLL must have been
an expression that evaluates to an ordinal function
compiled as exportable by a Windows 32-bit
number that is valid inside the DLL. Use an ordinal
compiler and have a return type of IEEE format function number or the function name.
double real. XSUB() will copy the parameters
following the function name to a block of mem- <function name>
ory, then pass the function a pointer to that block The name of the function inside the DLL. This func-
of memory. tion must be exportable. Note that when most compil-
ers compile DLL’s, they adjust the name of the
The function can take only one parameter: a functions inside them. The function name inside the
pointer to void. But the function may access any XSUB statement must be the adjusted name, not the
number of parameters through structure overlay- original name.
ing. The function should define a structure to
Most C compilers add an underscore to the function
match the type and order of the parameters, and name; so a function called “Test1” would be compiled
assign the pointer just passed to a pointer to that
584 Chapter 14:
Xsub()

as “_Test1.” For most C++ compilers, valid ProModel HWND hWndFrame;


external function names will be mangled to “@<func- };
tion name>$pv.” Different compilers will vary, how-
extern “C” //This makes this a C function rather
ever, so the user should be aware of the particular
than a C++ function
compiler’s quirks.
{
<parameters> /* On compile, Borland and Microsoft add a
leading underscore to a 'C' name! */
The parameters to pass to the function. These may be
double _export Log_B_of_X(void *p)
any variable, number, or expression. They are only
{
limited by the type of field or logic that uses the XSUB
function. Each parameter should be separated by a
//Parameters come in a structure pointed to by p;
comma. See above for how the external subroutine will
TEST_SUB_PARAMS * params;
access these parameters.
params = (TEST_SUB_PARAMS*) p;
MessageBox (GetTopWindow (params->hWnd-
Example Frame),
“Executing Log_B_of_X function.”, “XSUB”,
An external function written to the ProModel spec- MB_OK);
ification, called Log_B_of_X and written in C, return log (params->x) / log (params->base);
returns the log of a value to a variable base. The }
function, reproduced below, has been compiled }
into the DLL, “XSUB.DLL.” The function itself is repro-
duced on the left below, and the source code
can be found in the file “XSUB.CPP.” See Also
The ProModel logic statements assign the base “Subroutines” on page 246 (normal subroutines
five logarithm of the real variable R1 to the real are less powerful, but much easier to create and
variable R2. Each statement assumes that the file use).
XSUB.DLL has been assigned the identifier “Log” in
the External Files Editor. The first statement
accesses the function as if the DLL had been
compiled in C++ by using the mangled function
name. The second statement accesses the func-
tion as if it had been compiled in C by using the
C adjusted function name. The third statement
accesses the function using the ordinal function
number.
ProModel Logic
R2 = XSUB(Log, “@Log_B_X$pv”,5.0,R1)
R2 = XSUB(Log, ”_Log_B_X”,5.0,R1)
R2 = XSUB(Log, 2, 5.0, R1)
XSUB.CPP
struct TEST_SUB_PARAMS
{
double base;
double x;
ProModel 585
User Guide

Xwrite Example

General Operation Statement The following example uses XWRITE to record the
time each Box completes processing at location
Ship.
Syntax samples

XWRITE <file ID>, <string or numeric expres-


sion> Process Table
Entity Location Operation (min)
Box Ship WAIT N(7.3,.4)
XWRITE Rpt, “Box Shipped at:”
Description $ FORMAT(CLOCK(min),3,2)
Writes information to a general write file in any
format the user chooses. XWRITE is for writing Routing Table
user-formatted files, while WRITE and WRITE-
Blk Output Destination Rule Move Logic
LINE are for writing special formatted text files.
1 Dock Doc FIRST 1 MOVE FOR
XWRITE always appends to a file unless the file 5
is RESET. Note that any time a WRITE or
WRITELINE writes to a file, the file will auto-
See Also
matically be a text file. No end of file marker is
appended to files written only with XWRITE. In WRITE, WRITELINE, and RESET. Also see
subsequent replications, additional items are “External Files” on page 262.
appended to the end of the file unless the file is
RESET. ProModel does not format the string
expression, although you can use the FORMAT
statement to manually format data. To add an end
of file marker to a user-formatted file, use
XWRITE CHAR(26).

Valid In
Any logic.

Components

<file ID>
The name of the file as previously defined in the Exter-
nal Files Editor.
<string or numeric expression>
The string expression to be written to the file.
586 Chapter 14:
Xwrite
ProModel 587
User Guide

Appendix A

ProModel evaluates various fields and logic at 5. General System Functions


different times during a simulation run. Some
Cap(), CalDay(), CalDom(), CalHour(),
evaluate only once when the model prepares to
CalMin(),CalMonth(), CalYear(), Clock(), Con-
run a simulation, called the translation time. Pro-
tents(), DownQty(), Entries(), FreeCap(), Free-
Model evaluates others as necessary throughout
Units(), OwnedResource(), TimesUsed(),
the simulation. Below is a list of all expressions
Units(), and Variable().
and statements by category, and a table telling
which fields evaluate at translation and which
6. Location-Specific System Function
fields ProModel evaluates continuously during a
simulation. The table also tells where you may Location().
use an expression or statement.
7. Resource-Specific System Function
Expression and Statement Groups Resource().

1. General Expression 8. Node Logic-Specific System Functions


Numbers, Variables, Math Functions, Functions Last(), Next(). (The Last function is valid only in
Table, Distribution Functions, XSUB(), and Node Entry Logic and the Next function is valid
Name Functions (i.e., RES(), ENT(), LOC()). only in Node Exit Logic.)

2. Arrays 9. Downtime-Specific System Function


Arrays of any dimension. DTDelay().

3. Location Attributes 10. Shift-Specific System Functions


Referencing a location attribute in any expression ForLocation(), ForResource().
or assigning to a location attribute.
11. Preemption Logic-Specific System
4. Entity-Specific System Functions and Functions
Attributes Preemptor(), TimeLeft().
Entity(), GroupQty(), ResQty().
588

12. Off-Shift & Break Logic-Specific Sys- 20. Graphic Statement


tem Functions & Statements
Graphic.
DTLeft(), Priority, and Skip.
21. Wait Until Statement
13. Cost Functions & Statements
Wait until.
GetCost(), GetResRate(), IncEntCost, IncLoc-
Cost, and IncResCost. Macros and Subroutines
14. General Statements: (Run-Time Only) A macro may be used in any expression field, but
the macro may only contain expressions which
Activate, Animate, Assignment, Begin End, return a value (e.g., Entries(LOC1), U(5,1)).
Break, BreakBLK, Close, Comment(#, When a macro is used in a logic field, the macro
//, /*...*/), Debug, Dec, Display, Do...Until, may include any logic element that is valid in that
Do...While, Goto, If...Then/If...Then...Else, Inc, logic field. A subroutine may also be used in an
Int, Local Variable, Log, MapArr, Order, Pause, expression field provided that the Return state-
Prompt, Read, Real, Reset, Reset Stats, Return, ment is used to return a value to the expression
Report, Send, SetRate, Stop, String Expressions, field. When a subroutine is used in a logic field,
Sound, Trace, View, WarmUp, While...Do, and the subroutine may include any logic element that
Write/Writeline/XWrite. (You may not use the is valid in that logic field.
Log statement in Initialization or Termination
Logic.)

15. Operation Statements (Group 1)


Accum, Combine, Create, Group, Join, Load,
Match, Move, Rename, Route, Split As,
Ungroup, and Unload.

16. Operation Statements (Group 2)


Free, Get, Jointly Get, and Use.

17. Operation Statements (Group 3)


Wait.

18. Move Logic-Specific Statements


Move For, Move On, and Move With.

19. External Spreadsheet File


Entity Location Expression File.
ProModel 589
User Guide

Valid Expression and Statement the edit fields in this manner and shows the
Groups by Field expression and statement groups that can be used
in each field. Fields are classified as either
When running a simulation, expressions and expression fields or logic fields. Fields not listed
statements are either evaluated 1) once at transla- on this chart are either menu fields or expression
tion (before initialization logic and before any fields that accept only numbers.
events are created) or 2) continuously during the
simulation run. The following chart categorizes

Fields Evaluated Only at Translation

Field Name
(evaluated at translation) Field Type 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

Variables
Initial Value Exp •
Function Table
Dependent Value Exp •
Independent Value Exp •
Simulation Options
Warm-up Hours Exp •
Run Hours Exp •
Replications Exp •
Interval Length Exp •
Path Networks
Node Capacity Exp •
Segment Distance Exp •
Speed Factor Exp •
Resources
Resource Units Exp •
Locations
Location Capacity Exp •
Conveyor
Length Exp •
Speed Exp •
Queue
Queue Length Exp •
590

Field Name
(evaluated at translation) Field Type 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

Cycle Tables
Time (Hours) Exp •
% Exp •
Qty Exp •
Shifts
Shift Start Time Exp •
Entities
Entity Length Exp •
Entity Width Exp •
ProModel 591
User Guide

Fields Evaluated During Simulation

Field Names
(during simulation) Field Type 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

Logic
Initialization Logic Logic • • • •
Termination Logic Logic • • • •
Entities
Speed Exp • • • • • • •
Path Networks
Traveling Time per
Path Segment Exp • • • •
Resources
Acceleration Exp • • • •
Deceleration Exp • • • •
Empty Load Speed Exp • • •
Full Load Speed Exp • • • •
Pickup Time Exp • • • • • • •
Deposit Time Exp • • • • • • •
Node Entry Logic Logic • • • • • • • •
Node Exit Logic Logic • • • • • • • •
Location Clock DT
First Occurrence Exp • • •
Frequency Exp • • •
Priority Exp • • •
Clock DT Logic Logic • • • • • • • • •
Location Entry DT
First Occurrence Exp • • •
Frequency Exp • • •
Entry DT Logic Logic • • • • • • • • •
Location Usage DT
First Occurrence Exp • • •
Frequency Exp • • •
Priority Exp • • •
Usage DT Logic Logic • • • • • • • • •
592

Field Names
(during simulation) Field Type 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

Location Setup DT
Setup DT Logic Logic • • • • • • • • • • •
Resource Clock DT
First Occurrence Exp • • •
Frequency Exp • • •
Priority Exp • • •
Clock DT Logic Logic • • • • • • • • •
Resource Usage DT
First Occurrence Exp • • •
Frequency Exp • • •
Priority Exp • • •
Usage DT Logic Logic • • • • • • • • •
Operation
Operation Logic Logic • • • • • • • • • • • • • •
Preemption
Preemption Logic Logic • • • • • • • • • • • • • •
Routing
Priority for Destination Exp • • • • • • •
Destination Exp • • • • • • •
Entity Output Quantity Exp • • • • • • •
User Condition Rule Exp • • • • • • •
Move Logic Logic • • • • • • • • • • • • • •
Arrivals
First Occurrence Exp • • •
Frequency Exp • • •
Occurrences Exp • • •
Qty of Each Arrival Exp • • •
Arrival Logic Logic • • • • • • • • •
Shift Assignments
Priorities Exp • •
Pre-Off Shift Logic Logic • • • • • • • •
Off Shift Logic Logic • • • • • • • • • •
ProModel 593
User Guide

Field Names
(during simulation) Field Type 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
Pre-Break Logic Logic • • • • • • • •
Break Logic Logic • • • • • • • • • •
Subroutines
Interactive Subroutines Logic • • • • • •
Debugger
Debug Condition Exp • • • • • •
594

Program Defaults Default Values


This section discusses and lists the default set- Build Menu
tings when you first run ProModel.
Graphic library promod.glb
As in most software packages, ProModel makes
Locations
certain assumptions regarding the most useful
settings for the program. While your models may Conveyor/queue style roller
require different settings, an effort has been made Conveyor/queue width 3
to select the most common and helpful default (feet)
settings. Conveyor speed (fpm) 60
Since ProModel can be used for a wide variety of Conveyor accumulating accum
applications, you may require different settings. Conveyor entity orientation lengthwise
As your models differ, so will the need to change Location statistics time series
these settings from their default. However, when
ProModel is first launched and no INI file exists Entities
for it, the defaults in the following table apply. Entity speed 150 fpm (50 mpm)
Some defaults involve edit field values, some are Entity statistics time series
check box settings, etc.
Path Networks
Many defaults can be changed by selecting one of Time/speed Speed
the Model Default options under the Tools menu.
Path color blue/yellow
Other defaults can only be changed in the Build
modules. Still others can only be changed by Resources
directly editing the .INI file. Speed 150 fpm (50 mpm)
After ProModel is first launched, the pro- Entity search Longest Waiting
mod.ini(initialization) file is created in the Win- Resource search Closest resource
dows directory. To change the .INI file defaults,
Resource statistics By unit
you must edit the it using an ASCII text editor
(e.g., Windows Notepad). DO NOT attempt to Processing
edit the .INI file unless you are fully comfortable Snap to border off
doing so and only after you make a backup copy
Variable statistics time series
of the original .INI file.
ProModel 595
User Guide

Tools Menu INI Defaults


Long build menu on Graphic Editor
Confirm record delete on Text alignment center
Recalculate path lengths on Text frame type transparent
when adjusted
Text frame shape rectangle
Text font Arial 8 Bold
Text color black
View Menu Text frame border color black
Snap to grid off Text frame fill color white
Show grid off Variables
Grid size (VGA full layout) 90 grid units Digit font Arial 8 Bold
Scale - distance 1 ft/grid unit Digit color yellow
Scale - time .01 min/grid unit Digit frame type recessed
Background color lt. gray Digit frame shape rectangle
Edit table font Arial 8 Regular Digit frame border color black
Edit table color Gray Digit frame fill color royal blue
Conveyors/Queues
Queue border color black
Directories Queue fill color dark gray
Models c:\ProModel\models Gauges/Tanks
Glib c:\ProModel\glib Gauge/tank fill color maroon
Output c:\ProModel\output Gauge/tank border color black
Gauge/tank empty color white
Gauge/tank - no border checked
Gauge/tank - show scale checked
Other
Autosave (in minutes) 10
Print layout - print options unchecked
dialog - bkgrnd color
596

ActiveX Objects Program Operations


•Start program
ProModel’s ActiveX Automation capability
allows you to externally create, view, and edit •Quit program
model elements such as locations, entities, and •Pause simulation model
variables. Using Visual Basic (or any other •Query status of model
ActiveX-enabled language), you can add capabil- (e.g., running, paused, etc.)
ities to ProModel including: •Enter Run-time Interface parameters from
external data source
•Customized user interface with table inputs
•Access any data field provided in output
•Custom-designed parameter screens
database
•Automatic model creation from external data
sources (e.g., Excel spreadsheets, data- Location Table
bases, or ASCII text files)
•Name
•Software execution from another application
•Capacity
You can also use ProModel’s ActiveX capability •Units
to access any of the following actions and tables •Stats
(any table not mentioned in the following list is •Incoming selection rule
not currently ActiveX enabled).
•Incoming rule, max attribute
More information on ActiveX Automation can be •Incoming rule, min attribute
found in the ActiveX User Guide, which is •Queuing for Output rule
located in the documentation folder within the •Queuing rule, max attribute
ProModel directory. •Queuing rule, min attribute
•Multi-unit selection rule
•Notes
•Operation rate (cost)
•Time units (cost)
Clock Downtime Subtable
•Frequency
•First time
•Priority
•Scheduled
•Logic
•Disable
Entry Downtime Subtable
•Frequency
•First time
•Logic
•Disable
ProModel 597
User Guide

Usage Downtime Subtable •Operation rate (cost)


•Frequency •Time units (cost)
•First time •Cost per use
•Priority Clock Downtime Subtable
•Logic •Frequency
•Disable •First time
Setup Downtime Subtable •Priority
•Entity •Scheduled
•Prior entity •List
•Logic •Node
•Disable •Logic
•Disable
Entity Table Usage Downtime Subtable
•Name •Frequency
•Speed •First time
•Stats •Priority
•Notes •List
•Initial cost •Node
•Logic
Resource Table
•Disable
•Name
•Units Processing & Routing Tables
•Stats •Entity name
•Resource search rule •Preemption process flag
•Entity search rule •Location name
•Entity search, min attribute •Operation logic
•Entity search, max attribute •Routing block number
•Speed empty •Output entity name
•Speed full •Destination name
•Acceleration •Destination priority
•Deceleration •Begin new block flag
•Pickup time •New entity check box
•Drop-off time •Output quantity
•Return home flag •Output rule
•Notes •Output probability
•Network •Output user condition
•Home node •Move logic
•Shift node
•Break node
598

Path Networks Table •Shift files


•Color •Start time
•Visible •Priorities
•Name •Logic
•Type •Disable
•Basis (time or speed)
Scenarios
Path Segments Subtable
•Name
•From
•Enabled
•To
•Bi-directional Model Parameters
•Time
Parameter Subtable
Interfaces Subtable
•Value
•Node
•Location Attribute Table
Mappings Subtable •Attribute name
•From node •Type
•To node •Classification (entity or location)
•Destinations •Notes

Nodes Subtable
Variables Table
•Coordinates •Variable name
•Name •Type
•Capacity •Initial value
•Stats
Arrivals Table •Stats basis
•Entity name •Notes
•Location name
•Quantity of each arrival Arrays Table
•Qty each (cycle table name) •Array ID
•First time •Dimensions
•Number of occurrences •Type
•Frequency of arrivals •Import File
•Arrival logic •Export File
•Disable flag •Notes

Shift Assignments Macro Table


•Locations •Identification (name)
•Resources •Text
•Units •Resource grouping
ProModel 599
User Guide

Subroutine Table •Warm-up start (month, day, year, hour,


•Subroutine name minute)
•Operation logic •Simulation begin (month, day, year, hour,
minute)
User Distributions •Simulation end (month, day, year, hour,
•Distribution name minute)
•Type •Output report method
•Cumulative •Output report interval length
•Percentage •Number of replications
•Value •Clock precision
•Clock units
External Files Table •Disable time series flag
•Filename •Disable animation flag
•File type •Disable costing flag
•Path •Pause at start flag
•Prompt •Display notes flag
•Notes
More on ActiveX
General Information Dialog
•Model title For detailed information regarding ActiveX
•Default time units objects and methods, contact:
•Default distance units ProModel Sales and Support Team
•Graphics library file name Phone (888) PRO-MODEL
•Initialization logic
Fax (801) 226-6046
•Termination logic
•Model notes

Simulation Options Dialog


•Output path
•Run length type
•Warm-up period flag
Time Only
•Warm-up hours (time only)
•Run hours
Weekly
•Warm-up start (day, hr, min)
•Simulation begin (day, hr, min)
•Simulation end (day, hr, min)
Calendar Date
600

Suggested readings
To expand your knowledge and understanding of
simulation, its practices, and its applications,
consider the following texts.
Harrell, Charles; Ghosh, Biman; Bowden, Royce.
2003. Simulation Using ProModel. 2nd Edi-
tion; McGraw-Hill, Inc.

Law, A.M. and David W. Kelton. 1991. Simula-


tion Modeling and Analysis. 2nd Edition,
Chapter 4; McGraw-Hill, Inc.

Lewis, P. and E. Orav. 1989. Simulation Method-


ology for Statisticians, Operations Analysts,
and Engineers. Volume I; Wadsworth &
Brooks.

Harrell, Charles R. and Kerim Tumay. 1995. Sim-


ulation Made Easy. Industrial Engineering
Press.

Banks, Jerry and John S. Carson, II. 1984. Dis-


crete Event System Simulation. Prentice-Hall
Inc.

Heizer, Jay and Barry Render. 1988. Production


and Operations Management. Allyn and
Bacon.

Carrie, Allan. 1988. Simulation of Manufacturing


Systems. John Wiley & Sons.

Industrial Engineering & Management Press.


1987. Simulation: Modeling Manufacturing
& Service Systems. Institute of Industrial
Engineers.

Harrell, Charles R., Robert E. Bateman, Thomas


J. Gogg, Jack R.A. Mott. 1993. System
Improvement Using Simulation. JMI Con-
sulting Group and PROMODEL Corpora-
tion.
ProModel 601
User Guide

Glossary

Cost Statistics Help button is shown, you may select Help from
the main menu.
Statistics collected on a cost basis (e.g., total cost
and average, non-use cost). You have control of
how ProModel collects these statistics. You may Edit Tables
collect information through statements, base An edit table is a powerful editing window used
them on the system clock, or use a combination to add, delete and edit modeling and language
of both. elements such as entities or locations. It is simi-
lar to a spread sheet editor in that it provides
Counter maximum visibility of element lists while still
allowing each field of a particular element to be
A counter is a location or variable graphic used to directly edited.
display the contents of a location or the current
value of a variable during animation. A counter
consists of a frame, a specification of the digit File Name
color, and the font. If the number being dis- A file name is any name used to identify a file.
played requires more digits than the maximum File names may include a path (e.g.,
specified, the counter simply expands to the left. C:\REPORTS\DATA) as well as a terminating
ProModel displays real values showing only 2 period with up to three additional characters as an
decimal places. For example, a variable equal to extension (e.g., DATA.TXT). File names are
4.8936 would display 4.89 on the screen. case insensitive.

Dialog Box Font


A dialog box is a pop-up window used to enter A font is a collection of characters sharing the
information or select options. Movement from same attributes such as height, width, and type-
field to field in a dialog box is accomplished by face. A font determines the appearance of text.
clicking in the field with the left mouse button or Select fonts using the font dialog which shows
by using the Tab key. To accept input made to a how the font will appear.
dialog box press Enter or click on the OK button.
To cancel any changes made to the dialog press
Frame
Esc or click on the Cancel button. For help on the
dialog, press F1 or click on the Help button. If no A frame is a graphical border or background for
placing text or displaying values. Frames have a
602

type (raised, recessed, transparent), shape, color Main Menus


and size. Frames are optional and you may use
them only to enhance the appearance of the The main menus are listed along the main menu
graphic layout. If you do not desire a frame, bar at the top of the application window and pro-
select Transparent as the type. vide access to all of the dialogs and commands
necessary to build, run, and analyze simulation
models.
Gauge
A gauge is a graphic bar that extends and retracts Name Index
to represent the current contents of a location.
You define a gauge by the fill color, the empty During simulation run time, ProModel converts
color, and the gauge border color. You also spec- the name of each location, entity, and resource to
a list index number for efficient access and flexi-
ify the fill direction (up, down, left or right).
bility in assigning names to variables, attributes,
etc. The index number corresponds to the order in
Integer Number which the elements appear in the edit table list. If
An integer number is a whole number ranging five locations were defined, they will be identi-
from -2,147,483,648 to 2,147,483,647. Integer fied by the index numbers 1 through 5 at run
values may not include commas, so enter the time. A name index may be assigned to a variable
number 5,380 as 5380. or attribute by referencing the name itself (e.g.,
Attr1 = EntityA). You may also test for a name
index by referencing the name (e.g., if Var5 =
Library Graphic
Loc3).
A library graphic is a graphic defined and edited
using the Library Graphics Editor. Use library Note
graphics to represent locations, resources or enti-
ties, or as part of the layout background with no A note is any comment or other information
association to any model entity. typed by the user that is for information only and
disregarded by ProModel.
When used to represent a processing location,
library graphics may have entity spots defined for
them so entities that enter the location will appear Numeric Type
graphically on the entity spot. A numeric type specifies whether a numeric
expression is of type real or integer. If, for exam-
You may reference a Library graphic multiple
times and each reference may have a unique size, ple, a variable is of type “real,” then the variable
horizontal or vertical inversion, rotation, and can only represent some real number.
color.
Numeric Value
Main Entity A numeric value is any real or integer number
such as 3.68 or 52.
The original or input entity used in routing logic.
You may create new entities from the main entity
using the CREATE statement or through multiple
routing blocks.
ProModel 603
User Guide

Parameter Preemption
Parameters are variables used in a subroutine Preemption is the act of bumping or replacing an
which are local to or have scope only within the activity currently using a location with an activity
subroutine. Arguments or numeric expressions of a higher preemptive priority. ProModel han-
passed to a subroutine are assigned to the param- dles preempted activities differently depending
eters for use inside the subroutine. on the location preempted.
For locations, ProModel puts the preempted
Park Search activity (any current entity or downtime) in a pre-
A park search defines the sequence where a emption list for that particular location until it can
resource looks for nodes at which to park after resume its activity at that specific location unit.
completing a task assuming no other tasks are
waiting. Real Number
A real number is a number ranging from 1.7 X
Paths 10 -308 to 1.7 X 10 +308. Real values may not
Paths define the course of travel for entities and include commas, so enter the number 5,380.5 as
resources between locations. You may define a 5380.5.
path for a specific entity and routing, or a net- Examples: -2.87563, 844.2, 65.0
work of paths shared by several resources and
entities. Define movement along a path in units
of time, or speed and distance.
Reference
A reference is a name entry in an edit field that
Path networks consist of nodes connected by path
references a defined model element. If you
segments. Any node may have multiple input
change the name of the model element, all refer-
and output segments.
ences to the element automatically change to
reflect the change in name.
Positioning Spot
An entity spot is simply a graphic position rela- Region
tive to a location or resource and displays any
A region is a rectangular area on the graphic lay-
entities occupying the location or resource.
out that represents a location. Defining a region
For any given location you may place one or is useful when you import a layout from a CAD
more entity spots on the graphics layout. Entities drawing and you want to designate a portion of
to enter a location appear on the first available the layout to represent a particular processing
entity spot in the order they are placed. If an location. A region should have one or more
entity enters a location and all the entity spots are entity spots associated with it in order to be
filled, the entity will appear on the last entity meaningful.
spot.
For resources, place the entity spot where it Resource
appears when a resource carries the entity. A resource is a person or item used to perform an
operation or activity. Common resources include
human operators, inspectors, forklifts, and other
604

vehicles. Use resources used to perform opera- 1. Click on the scroll arrows at either end of the
tions on entities at a location, transport entities scroll bar for incremental scrolling.
between locations, or perform activities on a 2. Click on either side of the scroll box for
location during a downtime. scrolling one window at a time.
3. Drag the scroll box with the mouse to scroll
Resource Point to a specific position.

A resource point is a screen position where a


resource will appear when it arrives to park or
Scroll Box
perform a task at a particular node. When a A scroll box is a small box in a scroll bar that
resource arrives at a node, it will appear on that shows the position of what is currently in the
node unless you define a resource point for that window or list box relative to the contents of the
resource at that node. Resource points provide a entire window.
way to have several resources positioned at the
same node without all appearing on top of each Shell
other.
The temporary entity (representing grouped enti-
ties) to which ProModel assigns all costs and sta-
Routing Priority tistics until you ungroup the entities. Once
A routing priority is the priority given to a rout- ungrouped, ProModel divides all costs among the
ing for accessing a destination when capacity entities.
becomes available. ProModel defines the routing
priority as part of the Destination field in the Status Lights
Routing Edit Table. A routing priority applies
where two or more entities wait at a location for a A status light is a circle that lights up with differ-
routing destination to become available. The ent colors depending on the status of the location.
routing priority breaks a tie when deciding which You can place a status light anywhere relative to
entity has access to the destination location first a location for showing the status or current state
when it becomes available. (See Selecting of the location. At run time, you can display a
Incoming Entities in the Location Rules Dialog.) window showing what status each color repre-
sents.
Scroll Arrow
String
You can use the scroll arrows on either end of a
scroll bar to move the contents of a window or A string is a series of characters enclosed in dou-
list box. Clicking once on a scroll arrow moves ble quotes (e.g., “Station A”). You may use
the contents one line. Holding down a scroll strings to write text to a file or to display a mes-
arrow scrolls continuously. sage on the screen.

Scroll Bar System Menu


A scroll bar is a Windows control for scrolling The system menu appears as a dash mark at the
the contents of a window. Scroll bars operate in upper left corner of most windows. The main
three different ways: function of the system menu is to close the win-
ProModel 605
User Guide

dow. To do this, by either double-click on the


menu button or click on the button once and
select Close from the menu options that appear.
ALT + <space bar> also pulls up the system
menu.

Text
Text refers to words that you wish to display on
the graphic layout. Each specification of text has
an associated font, color, frame, and orientation
(up, down, left or right). You can rotate only
true-type fonts.

Time Statistics
Statistics collected on a time basis (e.g., time in
system, average minutes per entry, and average
contents). You cannot control how ProModel
collects these statistics since ProModel bases
them solely on the system clock.

Work Search
A work search defines the sequence in which a
resource looks for work at locations where work
may wait to be performed.
606

Bibliography

Carson, J. S. “Convincing Users of Model's Law, Averill M. “Designing and Analyzing Sim-
Validity is Challenging Aspect of Modeler's ulation Experiments,” Industrial Engineer-
Job,” Industrial Engineering, June 1986, p. ing, March 1991, pp. 20-23
77.
Neelamkavil, Francis Computer Simulation and
Conway, Richard, William L. Maxwell, and Modeling, John Wiley & Sons, 1987.
Steven L. Worona, User's guide to XCELL
Factory Modeling System, The Scientific Pritsker, Alan B. and Claude Dennis Pegden,
Press, 1986, pp 65-66. Introduction to Simulation and SLAM, John
Wiley & Sons, 1979.
Gordon, Geoffrey, System Simulation, 2nd ed.,
Prentice-Hall, 1978. Schlesinger, S. “Terminology for Model Credi-
bility,” Simulation, 32(3), 1979, pp.103-104.
Harrell, Charles; Ghosh, Biman; Bowden, Royce.
2003. Simulation Using ProModel. 2nd Edi- Shannon, Robert E., Systems Simulation: The
tion; McGraw-Hill, Inc. Art and Science, Prentice-Hall, 1975.

Harrell, Charles R. and Kerim Tumay, Simula- Thesen, Arne and Laurel E. Travis, Simulation
tion Made Easy, Industrial Engineering For Decision Making, West Publishing
Press, 1995. Company, 1992.

Hoover, Stewart V. and Ronald F. Perry, Simula- Tumay, Kerim, Business Process Reengineering
tion: A Problem Solving Approach, Addi- Using Simulation, Autofact Workshop,
son-Wesley, Reading Massachusetts, 1990. 1993.

Knepell, Peter L. and Deborah C. Arangno, Sim-


ulation Validation, IEEE Computer Society
Press, 1993.

Law, Averill M. and David W. Kelton, Simula-


tion Modeling and Analysis, McGraw-Hill,
1991.
ProModel 607
User Guide

Index

Symbols Add
time and condition dependent 37

joint 125
- 408, 409, 413 mode 100
# 461 resource points 148
$ 408, 412, 413 resources & variability 55, 58
( ) 408, 413 routing mode 160
* 158, 408, 409, 413 view 85
** 408, 409, 413 Addition 408, 409, 413
+ 408, 409, 413 Additional operations 55, 61
/ 408, 409, 413 AGV 123
/*...*/ 461 AGVS
// 461 see automated, guided vehicle systems
< 408, 410, 413 Alignment
<= 408, 410, 413 graphics 222
<> 408, 410, 413 text 102
= 408, 410, 413 ALL 152, 156, 159, 301, 440, 463, 477, 483, 513, 556
> 408, 410, 413 entity type 153
>= 408, 410, 413 ALTERNATE 416, 417, 422, 427, 432
@ 351 Alternative systems 48
@ or Mod 408, 409, 413 Analysis
capability 33
capacity 33
A constraint 33
decision/response 33
Acceleration rate 144, 273 graphical 12
ACCUM 104, 115, 288, 291, 385, 439, 588 output 51
Accumulate performance 33
see accum sensitivity 33
Accumulating AND 408, 411, 413, 496
conveyor 105 ANIMATE 369, 442, 588
Accumulating conveyor 104 Animation
Accumulating conveyors 278 charts 52
Accuracy, degree of 35 conveyor 105
ACTIVATE 189, 246, 247, 441, 576, 588 disable 363
Active operation zone 276 off 64
ActiveX objects 596 on/off during run time 356
Activity options 363
grouping 41 panning during run time 369
screen 63
608

user pause 363 first time 164


views 363 frequency 164
zoom 363 independent 165
Append location field 163
appending a record to a table 77 logic 164
record to a table 76 new 61
Arc occurrences 164
draw 325 quantity each field 163
Arrange icons 91 rates 95
Arrays 95, 235, 409, 516, 587 AS 542
accessing 235 AS/RS
assigning cell values 235 see automated storage/retrieval systems
definition 235 ASCII 456
dimensions 236 characters 407, 456
disable 236 files 537
displaying information during run time 93, 364 text editor 594
edit table 236 Assemblies
examples 235 making 291
export file 236 Assembly lines 7
import file 236 Assignment 445, 588
initializing 237 Attributes 54, 95, 225
notes 240 accessing 225
persist 236 cloning 226
referencing 235 example 227
statistics 240 combine statement with attributes 230
type (real or integer) 236 define 61, 225
usage 240 edit table 227
Arrivals 54, 163 entity attributes 225
accessing 163 example 227
cycles 252 group statement with attributes 228
accessing 252 join statement with attributes 228
assigning arrivals 253 load statement with attributes 229
cumulative 252, 254 location 587
cycle tables 254 location attributes 226
defining 252 memory allocation
edit table 252 for attributes 226
examples 252 see entity attributes
percent 252 types 225
quantity 252, 254 ungroup statement with attributes 228
table 252 unload statement with attributes 229
define 56, 164 Automated guided vehicle systems 281
graphically 164 Automated guided vehicles
manually 165 modeling 281
definition 163 on-board vehicle sensing 281
destroyed 164 simulation benefits 282
disable 164 zone blocking 281
edit table 163 Automated storage/retrieval systems 283
editor 163 modeling 283
entity field 163 simulation benefits 283
external arrival file 164 vertical bridge crane 283
files 264 AutoSave
example 264 directory 335
ProModel 609
User Guide

files 335 object 80


time between saves 334, 335 wmf 80
AUTOSAVE.MOD file 355 removing an object 80
Axis shift 437 rotate 222
selecting all graphics 80
sizing an imported background graphic 221
B tools
button bar 219
ungroup 222
Background color 94
unlock 222
edit table 90
wmf 285
layout window 88
BACKUP 416, 417, 427, 432
Background graphics 80, 218, 285
Backup file 70
accessing 218
Basic 364
alignment 222
Basic model elements 54
behind grid 222
Batch means technique 48
mode 218
Batching 286
bmp 285
Batching, interval 48
cad 285
BEGIN 242, 446, 475, 588
copy
Behind grid 285
object 80
Behind grid mode 218
to clipboard 80
Beta distribution 437
create 218
Binomial distribution 437
deleting an object 80
Block
edit 80, 94, 218
number
menu 220
* 158
editor 219
routing block 155
modes 218
Blocked time 277
exporting a graphic 80, 221
BMP
fill
importing a background graphic 221
color 223
Boolean
patterns 222
expressions 409, 410
flip
operators 409
horizontal 222
Border
vertical 222
change line or border style 317
front of grid 222
tank 188
mode 218
Bottleneck 282
graphics menu 222
Bottlenecks, identifying 51
group 222
BREAK 447, 549, 588
importing 55, 80, 221
Break logic-specific system functions & statements
layout window 219
588
library graphics window 219
dtleft() 588
line
priority 588
color 222
skip 588
styles 222
BREAKBLK 448, 549, 588
lock 222
Breaks 144
move
colors
behind grid 223
customize 170
imported background graphic 221
draw block 169
in front of grid 223
logic 174
paste
see shift & break logic
bmp 80
see shift definition & shift assignment
610

Bridge priority 270


and hoist trajectory 275 zone 271
following 273 Clearing text in a notes window 78
leading 273 Clock
motion after queue-up 274 clock-based downtime 138
multiple bridges 274 display during run time 369
separation 269 selection 63
separation distance 271 Clock precision 280
speed 269 CLOCK() 413, 457, 514, 587
Budget for simulation project 36 CLOSE 458, 588
Build Collisions 282
expression button Colon notation 412
logic builder 295 Color
menu 95 background 87, 88, 94
description 67 create custom 89
models 9, 41, 53 custom 88
Bump-away 276 edit table 90
BY TURN 157 fill 318, 331
grid lines 87
line 318, 331
C routing path 87, 89, 94
shift & break
customize 170
CALDAY() 449, 450, 587
text 102
CALDOM() 587
COMBINE 104, 115, 185, 286, 291, 385, 459, 493, 509, 559,
CALHOUR() 451, 587
568, 571, 588
CALMIN() 452, 453, 454, 587
Commands 83, 90
CALMONTH() 587
Comments 461, 588
CALYEAR() 587
Common mode 81
CAP() 455, 513, 587
Communication effectiveness 33
Capability analysis 33
Comparison
Capacity
study 33
analysis 33
with similar operations 39
location 97, 106
Comparison operators
maximum location capacity 97
and, or, not 408
Capacity, load rate 278
Compiling within a logic window 79
Cascade 91
Concatenation operators 408, 412, 413
Category Chart 391
Conducting experiments 43
Cause-and-effect relationships
Confidence intervals (CI) 44
identify 36
Confirm record deletion 334
CHAR() 407, 412, 456, 585
Constraints
Character strings 403, 407, 412
analysis 33
Characters
identify 32, 33
ascii 407, 456
CONT, see CONTINUE
Charts 389
CONTENTS() 462, 587
Chord
Context 91
circular 327
CONTINUE 157, 416, 418, 420
draw 327
dynamic priority changing 418
Circle
continuous modeling 188
draw 327
Continuous trace 64
Claim
Control statements 436
attempt rejection 271
Convert
ProModel 611
User Guide

data to useful form 40 object type 183


Convert between numeric types 407 operation rate 183
Conveyors 100, 103, 104, 277 per 184
accumulating 104, 105 regular rate 184
animation 105 disable costing 187
capacity 104 enable costing 187
conveyor networks 279 entities 184, 187
conveyors in promodel 280 initial cost 184
creating bends graphically 105 join/load 185
define locations 183, 186
color 103 operation rate 183
graphically 105 per 184
definition 104 output 186
display graphics 105 preemption/downtime 185
draw to scale 280 resources 184, 186
entity orientation 106 cost per use 184
examples 280, 281 per 184
intermittent 279 regular rate 184
length 104, 106 special cost handling 186
load delivery time 278 statistics 186, 601
load overlap 280 Cost-related functions & statements 588
load rate capacity 278 getcost() 488
load spacing 280 getresrate() 490
modeling conveyor systems 279 incentcost 499
networks 279 incloccost 500
non--accumulating 104 increscost 501
operational limitations 104 Counter 100, 101
options 105 see glossary 601
queuing 278 Cranes 269
run-time visibility 103 bridge and hoist speeds 269
set bridge separation 269
style 103 crane envelope 269
width 103 crane move priorities 269
simulation benefits 278 claim priority 270
single section 279 effective claim priority 270
speed 106, 278 task move priority 269
types 278 crane operations 270
accumulating 278 envelope 269
non-accumulating 278 horizontal speed 283
Copy 330 idle 274, 275, 276
graphic editor 316 immovable 275
information modeling multiple cranes 269
between records 78 move priority 269
from another record 78 multi-crane envelopes
record in a table 77 claim attempt rejection 271
text in a notes window 78 extended movement zone 271
Cost 183 queue-up situations 273
building a model with costing 184 zone claims 271
combine/group 185 node searches 276
cost dialog box 183 operation rules 275
cost per use 184 operations notes 276
initial cost 184 other rules 275
612

park searches 276 model packaging 74


queue-up situations read 262
bridge motion after queue-up 274 requirements
no queue-up 273 determine 38
reclaim trigger events 275 sources 39
resource request write 262
priorities 269 DAY 411, 413, 457, 472
response 274 Deadlocks 282
resource statistics 277 DEBUG 358, 360, 361, 465, 563, 588
blocked time 277 example 360
gross move time 277 Debug 356
in use 277 check condition 359
special case, blocked time 277 debug button 359
travel to use 277 debug dialog 359
searches 276 advanced 360
vertical bridge 283 context 359
vertical speed 283 end simulation 359
work searches 276 error display box 359
zone claims into subroutine 360
examples 271 logic display box 359
speed and mobility 273 next statement 359
CREATE 103, 104, 186, 226, 459, 463, 493, 499, 509, 559, next thread 360
568, 571, 588 options 360
Create run 359
model package 74 disable debugger 358
run-time models 11 examples 357, 360
Creating Charts 389 global change 358
Creating Reports 382 example 361
CSV files 265 logic 357
Cumulative distribution function 260 disable 360
Custom enable 360
colors 88 exclusive 360
reporting 352 new 360
zoom 86 next 360
Customize 307, 336 options dialog 358
Customizing graphics process
background graphics 285 disable 360
Cut 330 exclusive 360
cutting text in a notes window 78 new 360
Cycle period 50 next 360
process thread 357
statement 357
D user condition 358
example 361
DEC 466, 588
Data
Deceleration
approving 41
infinite 273
converting to a useful form 40
rate 273
documenting 41
Deceleration rate 144
gathering 38
Decision
protection
response analysis 33
model data 75
rules
ProModel 613
User Guide

for locations 115 exponential 437


Default graphics library 334 gamma 437
Defaults general components 437
default values table 594 geometric 437
program 594 inverse gaussian 437
Define lognormal 437
arrivals 56 normal 437
attributes 61 pearson5 437
distribution 61 pearson6 437
entities 56, 119 poisson 437
location downtimes 61 stream, optional 437
locations 56 triangular 437
multiple entity graphics 120 uniform 437
objectives 32 user-defined 437
path networks 58 weibull 437
processing 56 Distributions
resources 58 continuous 261
system 36 define 61
Degree of accuracy 34, 35 discrete
Delete cumulative distribution function 260
block 170 probability mass function 260
deleting a record from a table 76 empirical 40
joint 125 fitting 40
location 99 frequency
graphic 99 example 40
process 160 user-defined 40
routing record 160 Division 408, 409, 413
DEPENDENT 416, 420 DO...UNTIL 447, 468, 502, 588
Deposit time 144 DO...WHILE 446, 447, 469, 475, 502, 588
Design of experiments (DOE) 49 Documentation symbols
Destination, choosing 288 #, //, /*...*/ 461
Detail of a simulation project 34 DOWN 470
Developing a budget and schedule 32 DOWNQTY() 471, 587
Dialog box 10 Downtimes 95, 97, 282, 289
see glossary 601 clock 138
Dimensions define location downtimes 61
entity graphic 119 define resource downtimes 138
graphic 318 downtime-specific system functions 435, 470, 472, 587
Directories 334 location 107
Disable costing 187 called 111
DISPLAY 179, 407, 413, 467, 588 clock 108
Display statistics on screen entry 109
see statistics setup 110
Distance 126 special notes 115
per grid unit 88 usage 110
change 320 overlapping shift downtimes 177
units 179 preemption 185
Distribution functions 409, 437 resource 138
axis shift, optional 437 clock 138
beta 437 usage 138, 139
binomial 437 Draw
erlang 437 arc 325
614

chord 327 Entity 54, 118


circle 327 accessing 118
circular chord 327 actions
ellipse 327 implicit 463, 541, 559
lines 325 activity
polygon 328 general statistics report 383
rectangle 326 all as type 153
square 326 attributes 409
triangle 326 assigning values 285
DTDELAY() 175, 306, 472, 587 entity characteristics 285
DTLEFT() 175, 305, 473, 588 operation time 284
DTLENGTH() 174 processing time 284
Dynamic Plots 364, 368 user condition routing 284
Dynamic priority changing 418 using 284
Dynamic resources 136, 276 batching 286
accum 288
combine 286
E group/ungroup 286
load/unload 287
characteristics 285
Edit
cost 184, 187
arrivals 163
general statistics report 383
background graphics 80, 94
defining 56, 119
editing preferences
graphically 119
confirm record deletion 334
multiple entity graphics 120
long build menu 334
entities editor 118
recalculating adjusted paths 334
entity-related move logic statements
existing graphic 101
move for 522
graphics 81
move on 523
logic windows 78
move with 524
menu 76
entity-related operation statements 436
background graphics 220
accum 439
description 67
combine 459
notes windows 78
create 463
preferences 90
graphic 492
process 59
group 493
table 9, 76, 90
join 504
color 90
load 509
edit table font 90
match 518
see glossary 601
move 520
table font 90
rename 541
tank or gauge 188
route 552
Edit Tables 10
split as 559
Ellipse
ungroup 568
draw 327
unload 571
ELSE 298
wait 577
Empirical distribution 40
wait...until 578
EMPTY 421
entity-specific attributes 587
Enable costing 187
entity-specific system functions 435
END 446, 447, 448, 475, 588
entity() 477
Engineers 39
groupqty() 495
ENT() 118, 406, 407, 412, 467, 476, 527, 541, 554, 587
resqty() 548
ProModel 615
User Guide

graphics 329 Expansion, incremental 42


dimensions 119 Experiments
icon 119 conducting 43
location file 263 types 35
name 119 types of 35
new 61 Exponential distribution 437
new entity check box 158 Exponentiation 408, 409, 413
notes 119 Exporting
orientation background graphics 221
on conveyor 106 graphic editor 315
preemptive 121 Expression search 307, 308
example 121 definition 308
processing find 308, 309
define 150 important notes 310
select performing 308
by turn 117 replace 308, 309
fewest entries 117 search next 308
first available 116 Expressions
highest attribute value 116 boolean 409, 410
last selected location 116 expression and statement groups 587
least available capacity 116 numeric 409
longest empty 117 string 407, 409, 412
lowest attribute value 116 char() 412
most available capacity 117 ent() 412
oldest by priority 116 format() 412
random 116, 117 loc() 412
show numeric 412
current 162 res() 412
speed 119 time 409, 411
spot 100 colon notation 412
states types of 408
by percentage 384 Extended movement zone 271
stats 119 External files 262
types 95 accessing 262
unbatching 286 define 262
ENTITY() 477, 587 editor 262
ENTRIES() 478, 587 open files 265
Envelope types 262
crane 269 arrivals file 264
multi-bridge 276 dll file 265
multi-crane 271, 273 entity-location file 263
Equal to 408, 410 excel file 265
Equalities 408 general read file 262
Equipment manufacturers 39 general write file 263
Erlang distribution 437 other 265
Errors, run-time shift file 264
already routed 158 usage 262
no routing defined 158 External spreadsheet file 588
Exclude graphic library 74 External subroutine calls
Exclusive work search 276 xsub() 583
EXIT 383
EXP() 479
616

F background graphics 222


change 318
Find and replace, local 311
Face validity 43 Find process mode 161
Facility 39 Finite move priority 275
layouts 39 FIRST AVAILABLE 422
walk-throughs 39 First in, first out
Factorial design 49 Flexible manufacturing systems 7
fractional-factorial 49 Flip object 330
full-factorial 49 horizontal 316
two-level 49 vertical 316
Factors 49 Flow
impact 36 charts 39
Failed arrivals rate of flow 190
general statistics report 384 time step
FIFO 568 tanks 190
see locations, rules Focus of simulation 37
Figures Following bridge 273
add to gauge or tank 189 Font 102
File edit table 90
exclude graphic library file 74 see glossary 601
extensions 265 FOR 520, 524
external 262 FORLOCATION() 174, 175, 305, 480, 587
define 262 Form of results 34, 36
editor 262 FORMAT() 412, 481, 585
open 265 FORRESOURCE() 174, 175, 305, 482, 587
other 265 Fractional factorial design 49
types 262 Frame
graphic library 181 see glossary 601
management 68, 69 text 102
menu 68 FREE 275, 483, 486, 506, 588
description 67 FREECAP() 484, 587
during run time 355 FREEUNITS() 485, 587
during run-time 355 Frequency distributions
name example 40
see glossary 601 Front of grid 285
open external 265 Front of grid mode 218
types FULL 431
arrivals file 264 Full-factorial design 49
entity-location 263 Functions 435
general read 262 cost-related 488, 490
general write 263 general 435
shift file 264 math 435
Files system 587
ascii 537 type conversion 435
external spreadsheet 588 name 406
Fill nested 297
color 318 new 367
background graphics 223 system 435
define 331 downtime-specific 435
tank 188 entity-specific 435
pattern general 435
ProModel 617
User Guide

resource-specific 435 graphic file library 179, 181


shift & break 435 selection 181
initialization logic 179, 180
logic execution time 180
G model notes 179
termination logic 180
time units 179
Gamma distribution 437
title 179
Gauge 100, 101
usage 179, 218
add labels and figures 189
General operation statements 588
change to tank 189
close 458
edit 188
dec 466
see glossary 602
graphic 492
GBM files 265
inc 498
General action statements 436
prompt 534
activate 441
setrate 556
animate 442
stop 562
debug 465
write 581
display 467
writeline 582
log 514
xwrite 585
maparr 516
General read file 262
order 527
General statistics report
pause 529
entity activity 383
read 537
entity costing 383
report 542
entity states by percentage 384
reset 544
location setup 385
reset stats 545
location states by percentage
return 549
multiple capacity 385
send 554
single capacity 385
sound 558
locations costing 384
trace 566
logs 386
view 576
node entries 384
warmup 579
resource states by percentage 387
General control statements
resources 387
begin 446
costing 386
break 447
grouped 387
breakblk 448
General system functions 435, 587
do...until 468
calday() 449, 450, 587
do...while 469
caldom() 587
end 475
calhour() 451, 587
goto 491
calmin() 452, 453, 454, 587
if...then...else 496
calmonth() 587
while...do 580
calyear() 587
General expressions 587
cap() 455, 587
General functions 435
clock() 457, 587
math 435
contents() 462, 587
type conversion 435
downqty() 471, 587
General information 179
entries() 478, 587
accessing 179
freecap() 484, 587
dialog 55
freeunits() 485, 587
dialog box 179
ownedresource() 587
distance units 179
percentop() 530
618

percentutil() 531 show 319, 320


threadnum() 563 size & scale 319, 320
timesused() 565, 587 snap to grid 319, 320
units() 570, 587 grouping graphics 316, 317
variable() 575, 587 importing graphics 315
General write file 263 library edit buttons 321
Geometric distribution 437 line
GET 121, 140, 159, 269, 270, 277, 303, 304, 486, 588 color 316
GETCOST() 488, 588 button 331
GETRESRATE() 490, 588 styles 316, 317
GIF tool 325
importing a background graphic 221 manipulating graphics 321
GLB files 265 move
GOTO 491, 588 to back 316
GRAPHIC 120, 134, 136, 137, 146, 492, 588 to front 316
Graphic naming a graphic 322
new 322 opening a graphics library 313
Graphic editor 307, 312, 313 options menu 313, 319
accessing 312 order of graphics in the library
arc tool 325 change 322
background color 319, 320 overview 312
changing a graphic’s size 321 paste
changing the order of the graphics in the library 322 button 330
chord tool 327 graphics 315
circle tool 327 pie tool 327
clear button 321 polygon tool 328
closing a graphics library 314 positioning spot 328
combining two graphics 322 print
copy graphic 313, 314
button 330 graphics library 313, 314
graphic 316 rectangle tool 326
cut button 330 rotate
delete button 321 button 330
dimensions 317, 318 graphic 316
edit save
button 321 button 321
library graphic 331 graphic 313
menu 312, 314 graphics library 314
ellipse tool 327 selector 324
exporting a graphic 315 size
file menu 312, 313 change 321
fill square tool 326
color 316 status light 329
color button 331 step back & front buttons 331
patterns 316, 318 text tool 324
flip triangle tool 325
buttons 330 ungrouping graphics 316, 317
horizontal 316 usage 312
vertical 316 window menu 313, 321
graphic tools button bar 323 zoom 319, 320
graphics menu 312, 316 Graphic library
grid create new 322
ProModel 619
User Guide

Graphical analysis 12 view button 98


Graphics move 81
background 285 multiple
alignment 222 assign to resource 136
behind grid 222 resource 329
delete an object 80 multiple 136, 137
edit 94 Graphs
export 80, 221 utilization 13
fill Greater than 408, 410
color 223 or equal to 408, 410
patterns 222 Grid
flip lines
horizontal 222 change color 87
vertical 222 change resolution 87
front of grid 222 scale 88
group 222 settings 94
import 55, 80, 221 grid scale 88
line show 83, 92, 320
color 222 size 87
styles 222 snap to 83
lock 222 unit
move default time 88
behind grid 223 distance per unit 88
imported graphic 221 change 320
in front of grid 223 GROUP 104, 115, 185, 286, 291, 385, 459, 463, 493, 509,
paste 559, 568, 571, 588
bmp 80 Group
wmf 80 activity 41
removing an object 80 graphics 222, 317
right-click editing 80 objects 317
rotate 222 resource 241
size an imported graphic 221 GROUPQTY() 495, 587
ungroup 222
unlock 222
customizing 285 H
behind grid 285
front of grid 285
Hardware requirements 15
importing 285
Help
define multiple entity 120
index 91
dimensions 318
menu 91
editing & moving 81
description 68
entity 329
on-line 11
graphic dimensions 119
accessing 79
library 101
Hidden networks
file 179, 181
show 94
exclude 74
Hide
selection 181
conveyors and queues 103
graphic 102
networks 83, 92
location 100, 329
Histogram 394
graphics window 98
Hoist
edit button 98
and bridge trajectory 275
erase button 98
620

lower 276 incentcost 184


speed 269 order 184
Home route 184
return if idle 143 state 44
Horizontal speed 283 warm-up period 47
Hours 411, 412, 457, 472 Initial value 289
HR 411, 457, 472 Initialization logic 179, 180
Hypothesis testing 48 execution time 180
Input variables 37
Insert
I record in a table 76, 77
Install model package 74, 75
Installation
Icon
see setup and installation 15
add to location 100
INT 231, 233, 502, 588
locations 97
Integer number
Idle
see glossary 602
return home if 143
Integers 406
Idle cranes 275, 276
Interact menu 368
moving 274
Interactive subroutines 249, 368
IF EMPTY 157
Interfaces
IF...THEN 242, 297, 299, 360, 446, 447, 462, 475, 477, 496,
edit table 127
513, 552, 563, 588
location-node 128
IF...THEN...ELSE 57, 297, 491, 496, 588
Intermittent conveyor 279
Immovable cranes 275
Interval batching 48
Impact factors 36
Inverse Gaussian distribution 437
Import
background graphics 55, 221
graphic editor 315
tank submodel 188 J
Importing
background graphics 285 JIT systems 7
INC 498, 588 Job shops 7
INCENTCOST 499, 588 JOIN 61, 115, 118, 228, 290, 291, 385, 423, 504, 539, 588
INCLOCCOST 500, 588 Join 185
Incremental expansion 42 Joint
INCRESCOST 501, 588 add 125
Independent arrivals 165 delete 125
Industrial vehicles 282 JOINTLY GET 121, 140, 269, 277, 304, 506, 588
deployment strategies 282
modeling 282
multiple load transporters 282 K
simulation benefits 283
Inequalities 408
KANBAN systems 7
INF 97
KEEP 275
INFINITE 97, 164
Keyboard 3
Infinite deceleration 273
Keywords 403, 405
Information menu 64
during run time 363
Initial
cost
create 184
ProModel 621
User Guide

L change line or border style 317


color 318
background graphics 222
Labels 82 define 331
add to gauge or tank 189 draw 325
text 100 styles 317
Language elements background graphics 222
character strings 403, 407 LN() 508
keywords 403, 405 LOAD 115, 185, 229, 234, 287, 291, 385, 406, 424, 459, 463,
names 403, 404 493, 509, 559, 568, 571, 588
conventions 404 Load
numbers 403, 406 delivery time 278
converting between numeric types 407 jumping 280
integers 406 overlap 280
name-index 406 rate capacity 278
real numbers 406 spacing 280
operators 403, 408 LOC() 96, 157, 406, 407, 412, 467, 471, 484, 511, 527, 554,
comparison 408 570, 587
mathematical 408 Local find and replace 311
precedence 408 Local variable 588
relational 408 declaration statements
types of 403 int 502
Last in, first out real 539
LAST() 507, 587 Local variables 233
Layout Location
printing a layout 73 attributes 587
settings 86, 94 location-specific system functions 587
background color 87, 88 location() 513
grid settings 87, 88 LOCATION() 304, 306, 455, 513, 587
routing path color 87, 89 Locations 54, 96
window 56 accessing 96
Leading bridge 273 add mode 100
Length adding symbol to existing location 100
conveyor 106 attributes 226
Less than 408, 410 capacity 97, 106
or equal to 408, 410 maximum 97
Level conveyor/queue 100
of detail 34 cost 183, 186
tank 189 costing
Library general statistics report 384
new 322 counter 100, 101
Library graphic 101 create 96
see glossary 602 define 56, 96
License key multiple locations 98
moving 26 multi-unit locations 107
terminating 27 new location graphically 98
transfering 26 delete
License server location 99
definition 18 location graphic 99
LIFO 568 destination
see locations, rules processing 157
Line display
622

information during run time 93, 364 single capacity


location name 101 general statistics report 385
downtimes 97, 107 statistics 97
called 111 status
clock 108 light 100
define 61 tank 100, 101
definition 107 text 100, 102
entry 109 units 97, 106
setup 110 view 99
special notes 115 Lock
specifying 108 graphics 222
usage 110 LocState() 512
edit 96 LOG 386, 457, 514, 539, 588
edit table 56, 97 Logarithm 508
editing an existing graphic 101 Logic 3
editor 96 arrivals 167
entity spot 100 break 174
gauge 100, 101 builder 10
graphics 100, 329 accessing 79, 192, 293
window 98 build expression button 295
edit button 98 building statements or expressions 294
erase button 98 cancel button 295
view button 98 clear button 295
icon 97 components 294
identifying location name during run-time 370 editing statement parameters 296
information window 12 expressions, creating 298
label 100 keypad button 295
library graphic 101, 102 logic
loc() 96 buttons 295
move 81 elements 295
graphic 99 nested functions & statements 297
multiple graphics 99 parameter
multi-capacity vs. multi-unit 106 buttons 294
multiple graphics for a location 101 entry field 294
naming 97 paste
new 61 button 295
mode 98 logic/model elements only 298
node interface 128 return button 295
notes field 98 select
preemption 111, 113 logic elements 296
priorities 111, 112 statements 295, 296
queue 100 using 293
region 100 off-shift 174
rules 97, 115 operation 299
example 117 pre-break logic 174
queuing for output 116 preemption process 300
selecting a unit 116 example 301
selecting incoming entity 116 functions 301
setup statistics report 385 possible effects of delayed preemption 301
states by percentage pre-off-shift 174
multiple capacity process 59, 62, 95
general statistics report 385 routing 59, 62
ProModel 623
User Guide

routing move 302 and subroutines 588


get, jointly get, use 304 create 241
move-related statements 303 definition 241
statement processing 304 edit 241
shift & break 174, 305 table 241
break logic 305 example 241
functions & statements 305 macros vs. subroutines 241
off-shift logic 305 rti 241, 242
pre-break logic 305 see also run-time interface
pre-off shift logic 305 subroutines vs. macros 250
sequence of events 174, 305 text 241
subroutines 249 usage with begin/end 242
windows valid usage 241, 242
edit 78 Main entity 602
Logic elements errors
distribution functions 437 already routed 158
axis shift, optional 437 no routing defined 158
general components 437 Main menus
stream, optional 437 see glossary 602
functions 435 Maintenance reports 39
downtime-specific 435 Maintenance, scheduled 282
entity-specific 435 Managers 39
general 435 Manual material handling systems 282
resource-specific 435 modeling labor 282
shift & break 435 simulation benefits 282
system 435 MAPARR 516, 588
general functions 435 Mapping
math 435 create 129
type conversion 435 edit table 128
priorities 438 example 129
resource request logic 276 Market forecasts 39
statement blocks 436 MATCH 115, 385, 504, 518, 588
statements 436 Math functions 435
control 436 exp() 479
entity-related operation 436 ln() 508
general action 436 rand() 536
resource-related 436 round() 551
Lognormal distribution 437 sqrt() 561
Logs Mathematical operators 408, 409
general statistics report 386 Matrix, resource preemption 141
Long build menu 334 Maximum run length 349
view 334 Maximum speed 273
LONGEST UNOCCUPIED, (LU) 425 Memory
Lower the hoist 276 allocation
LU, see LONGEST UNOCCUPIED for attributes 226
Menu
bar 67
M Merge
models 10, 69, 70
submodel 71
Macros 95, 241, 409
MIN 411, 457, 472
accessing 241
Minutes 411, 412, 472
624

MMHS location graphic 99


see manual material handling systems logic 157, 159, 302
MOD files 265 get, jointly get, use 304
Model move-related statements 303
build 9, 41, 53 statements
create new 69 processing 304
data logic statements 588
protect 75 free 483
elements 53 get 486
basic 54, 55 jointly get 506
example of building a model 53 move for 522
execution 347 move on 523
merge 69, 70 move with 524
new 69 use 573
notes 179 moving a record in a table 76, 77
open 69 multiple location graphics 99
package object
create 74 behind 331
data protection 74 in front 331
install 74, 75 path networks 82, 125
parameters 347, 352 resource 82
define 353 points 148
partitioning 42 routing paths 81
phased modeling approach 54 to park 277
results, reporting 51 MOVE FOR 159, 302, 303, 522, 588
run 11 MOVE ON 159, 302, 303, 522, 523, 588
run-time 11 MOVE WITH 159, 269, 270, 275, 302, 303, 486, 522, 523,
save 69 524, 588
save as 69, 70 Moving Graphics, common mode 81
text Multi-bridge
print 72 crane systems 269, 274
view 72 envelopes 276
validation 43 Multi-crane envelopes 271, 273
verification 42 Multiple capacity location 106
Modeling Multiple load transporters
services 5 see industrial vehicles
Modeling conveyors 280 Multiple locations 98
conveyor systems 279 Multiple single-unit resources 137, 138
Modeling priorities Multiple streams 50
see priorities Multiplication 408, 409, 413
Modulus 408, 409, 413 Multi-unit
MOST 426 locations 106
Motion, bridge 274 resources 137
MOVE 103, 104, 302, 304, 520, 588
Move
along path network 144 N
finite move priority 275
graphics 81
Name
special considerations 81
index
gross move time 277
see glossary 602
idle cranes 274
location 97
location 81
ProModel 625
User Guide

Name-index numbers 406, 409 Non-accumulating conveyor 104


conversion functions Non-accumulating conveyors 278
loc() 511 Non-exclusive work search 276
res() 543 Non-terminating simulation 44, 45
Names 289, 403, 404 running 46
conventions 404 Normal distribution 437
functions NOT 408, 411, 413
ent() 406 Not equal to 408, 410
loc() 406 Notation
res() 406 colon 412
Nested functions & statements 297 Notes
Network field 98
non-passing 123 see glossary 602
passing 123 windows
path 123 editing 78
resource path network 143 Numbers 403, 406, 409
show hidden 94 converting between numeric types 407
show networks 83, 92 integers 406
version name-index 406
installation procedure 17 numeric type
New see glossary 602
arrival 61 random
entity 61 streams 266
entity check box 158 real numbers 406
block number Numeric expressions 409
* 158 Numeric Type, glossary 602
location 61 Numeric types, converting between 407
mode 98
model 69
create 69 O
process
create 160
Objectives, defining 32
New & modified features
Observation-based statistics 232
activex objects 596
Off-shift
New & modified statements and functions 367
locations, preempting 176
New graphic
logic 174
create 322
node 143
New graphics library
Off-shift & break logic specific system functions &
create 322
statements 588
NEXT() 526, 587
On-board vehicle sensing 281
No queue-up 273
One-dimensional array 235
Node
On-line tracking systems 39
add resource points to 148
Open
break 144
model 69
home 143
Operation
logic 134
crane 270, 275, 276
editor 146
statements 588
example 147
time
off shift 143
using entity attributes 284
Node logic-specific system functions 587
zone 276
Nodes 276
Operation logic 59
serviceable 269
626

processing 153
Operator precedence 408, 413
P
addition, + 413
and 413 Pan 63
concatenation, $ 413 Parameters
division, / 413 see glossary 603
equalities 413 subroutines 248
examples 413 Parentheses 413
exponentiation, ** 413 Park and work search 276
inequalities 413 Park search 134, 145
modulus, @ or mod 413 edit table 146
multiplication, * 413 see glossary 603
not 413 Park, travel to 277
or 413 Partitioning, model 42
parentheses, ( ) 413 Paste 330
subtraction, - 413 record in a table 77
Operators 403, 408 text in a notes window 78
comparison 408 Path
mathematical 408 networks, see path networks
relational 408 routing
Optimization move 81
simrunner 370 show 83, 92, 94
study 33 types 89
Options 307, 334 see glossary 603
menu segment
debug option 357 edit table 58
during run time 356 Path networks 54, 82, 95, 123
simulation 63, 347 accessing 123
OR 408, 411, 413, 496 automatic time and distance calculation 127
ORDER 226, 499, 527, 588 default time and distance values 127
Output define 58
analyzing 51 color of path network 124
charts 52 graphically 124
costing statistics 186 editor 123
output menu 68 example 125
reporting options 350 interfaces edit table 127
batch mean 350 location interface points 124
interval length 351 mapping 124
number of replications 351 edit table 128
periodic 351 example 129
running a specific replication 351 move 125
standard 350 name 124
viewing 12 nodes 124
Output Viewer 3DR 374 creating additional 125
Overlap edit table 130
load 280 non-passing 123
OWNEDRESOURCE() 528, 587 passing 123
paths 124
creating segments 125
recalculating adjusted paths 334
segment edit table 126
segments 125
ProModel 627
User Guide

pre-translation check 131 timeleft() 564


resource 143 PREEMPTOR() 301, 532, 587
speed/distance measurement 124 Pre-off-shift logic 174
time measurement 124 Preparing a simulation specification 32
types Pre-translation check 131
non-passing 124 Print
passing 124 graphic 314
PAUSE 240, 529, 588 library 314
Pause simulation 63 layout 72
PCX model text 72
importing a background graphic 221 printer setup 72, 74
Pearson5 distribution 437 change the printer settings 74
Pearson6 distribution 437 text 72
People as resources 282 Printing text within a logic window 79
PercentOp() 530 Priorities 438
PercentUtil() 531 assign 112
Performance analysis 33 claim 270
Pickup time 144 crane move 269, 270
Pitfalls in simulation 52 dynamic priority changing 418
Planning the study 32 effective 272
Points finite move 275
resource 147, 148 for a destination 288
Poisson distribution 437 locations 111, 112
Polygon modeling 288
draw 328 downtimes 289
Positioning spot preemption 289
place on an icon 329 processing destination 288
see glossary 603 selecting resources 288
Power Tools 337 resource request 269, 276
Pre-analysis 371 resources 140, 141
Pre-break logic 174 shift 173
Precedence, see Operator precedence task move 269
Predetermined time standards 39 PRIORITY 174, 175, 305, 533, 588
Preemption ProActiveX 340
creating a preemption process record 300 PROBABILITY 417, 427
downtime 185 Probability mass function 260
entities 121 Processing 54, 149
locations 111 add routing mode 160
off-shift locations 176 create and edit process routings 149
process define 56, 149
example 301 graphically 150
logic 300 deleting a process or routing record 160
possible effects of delayed preemption 301 destination location 157
new functions 301 editing 59
resources 140, 141 editor 151
examples 142 accessing 149
see glossary 603 using 149
shift & break logic 175 entity 150, 152
Preemption logic 289 example 150
and downtimes 289 find process mode 161
system functions 587 layout window 151
preemptor() 532 location 152
628

logic 57, 59, 62, 95 last in, last out (lifo)


move logic 157, 159 lowest attribute value 116
new process mode 160 move 103
operation logic 153 no queuing 116
output part 156 run-time visibility 103
process edit table 57, 59, 151 style 103
processing tools 159 width 103
records Queue-up
edit 77 bridge 274
routing conditions 273
adding additional blocks 160 situations 273
block number 155 unrealistic 273
edit table 151, 155 Queuing 278
entity to exit 161
path editing 160
rules 157 R
view routing button 161
tools window 151
RAND() 61, 536
using all entity type 153
RANDOM 428
Processing time
Random
using entity attributes 284
numbers 266
ProClare 338
streams 50
Product support 4
Rate of flow 190
Program defaults 594
Rate, tank flow 190, 201, 202, 203
default values table 594
RDB files 265
Progressive refinement 42
RDT files 265
Promodel Player
RDW files 265
promodel player 343
READ 458, 537, 588
promodel player gold 344
Read data 262
PROMPT 534, 588
REAL 231, 233, 539, 588
ProSetter 339
Real number
Protect model data 75
see glossary 603
Pull systems
Real numbers 406
creating 290
REAL() 540
send statement
Recharging strategies 282
pull systems 290
Reclaim trigger events 272, 275
steps to build 290
Record
types of 290
append
to table 77
copy 77
Q information 78
between records 78
Quantity 158 delete
Queue 100, 103 from a table 76
by type 116 insert in a table 77
define 103 move in a table 77
color 103 paste 77
drawing 103 Rectangle
entity preemption 103 draw 326
first in, first out (fifo) Reference
highest attribute value 116 see glossary 603
ProModel 629
User Guide

view 86 definition 132


Refinement, progressive 42 downtimes 133, 138
Refresh layout 90, 94 clock 138
Region define 138
see glossary 603 usage 139
Registration dynamic 276
network installation 26 dynamic resources 136
stand-alone pc 24 edit 132, 133
Rejection, claim attempt 271 table 133
Relational operators 408 entity search rules 144
Relationships example 132
cause-and-effect 36 general statistics report 387
Remove view 85 graphic 134
RENAME 118, 186, 541, 588 graphics 329
Rename window 133, 134
views 85 group 241
RENAME AS 155, 156 home node 143
Replace, find and 311 icon 133
Replications 44, 45 least utilized 144
running a specific replication 351 logic 134
REPORT 352, 542, 545, 588 longest idle 144
Reports 382 motion 144
view 65 move 82
Requirements multiple resource graphics 136
hardware 15 example 137
RES() 132, 406, 407, 412, 467, 471, 506, 543, 565, 570, 587 multiple, single-unit resources 138
RESET 537, 544, 581, 582, 585, 588 multi-unit 137
RESET STATS 352, 545, 588 vs. multiple single-unit 137
Reset window positions 90, 91 name 133
Resolution node logic
grid lines 87 editor 146
Resource request 274 example 147
logic 276 notes 134
priorities 269 park search 134, 145
priority 269, 276 edit table 146
Resource statistics 277 path network 143
RESOURCE() 175, 305, 546, 547, 587 people as 282
Resource-related operation statements 436 point
free 483 see glossary 604
get 486 preemption 140
graphic 492 examples 142
jointly get 506 matrix 141
use 573 priorities 140
wait...until 578 shift downtime 141
Resources 54, 95, 132 res() 132
accessing 132 resource points 134, 147
closest 144 adding 148
cost 184, 186 deleting 148
general statistics report 386 moving 148
create 132 search
new resource 134 routines 145
define 58 rules 144
630

see glossary 603 edit 149


selecting 288 quantity 158
shift & break nodes 143 start new routing block 158
specifications 134, 143 table
states by percentage * 158
general statistics report 387 block number 158
static resources 135 type
statistics 133 related 89
units 133 selected 89
variability unselected 89
adding 55, 58 Routing rules 415
work search 134, 145 alternate 416
edit table 145 backup 417
Resource-specific system functions 435, 587 continue 418
last() 507 dynamic priority changing 418
next() 526 dependent 420
ownedresource() 528 dialog box 415
resource() 546, 547 empty 421
ResourceUnit() 547 first available 422
Response 49 full 431
variables 37 join 423
Response time 283 load 424
minimize 282 longest unoccupied, (lu) 425
RESQTY() 548, 587 probability 427
RETURN 247, 549, 588 random 428
Return home 276 send 429
Return home if idle 143 turn 430
Right-click user condition 432
editing 80 Routing, user condition 284
menus 94 Rule field, routing edit table 415
simulation menu 370 Rules
Rotate dialog box 115
object 330 location 97
text 102 Run
ROUND() 247, 410, 551 length 47
ROUTE 156, 383, 499, 552, 559, 588 calendar date 348
Routing time only 348
block 155 weekly time 348
color 94 model 11, 62, 347
edit table 57, 59 non-terminating simulations 46
logic 57, 59, 62 simulation 355
move logic 159 terminating simulations 45
path Run-time
color 87, 89 controls 355, 369
edit 160 animation panning 369
move 81 clock display 369
show 83, 92, 94 identifying location name 370
types 89 simulation speed 369
priority end simulation 356
see glossary 604 errors
process already routed 158
create 149 no routing defined 158
ProModel 631
User Guide

file menu 355 Search


help menu 368 entity search rules
information menu 363 closest 144
arrays 93, 364 longest waiting 144
locations 93, 364 maximum value 144
status light 364 with minimum value 144
variables 93, 364 park 145
interact menu 368 resource search rules
subroutines 368 closest 144
interface 242 least utilized 144
advantages 242 longest idle 144
creating 243 routines 145
defining 243, 353 work 145
example 244 Search, find and replace 311
model parameters 352, 353 SEC 411, 457, 472
numeric range 243 Seconds 411, 412, 472
parameter name 243 SED files 265
prompt 243 Segments 125
record range 243 SEND 290, 416, 429, 438, 554, 588
text 243 Sensitivity analysis 33
menus 355 Separation distance, bridge 271
models, creating 11 Serviceable nodes 269
options menu 356 SETRATE 556, 588
animation off/on 356 Settings 83
debug option 356, 357 layout 86
trace output 356 printer 74
user pause 356 Setup and installation 15
zoom 356 hardware requirements 15
pause/resume simulation 356 network version 17
simulation menu 356 grant rights and permissions 19
window menu 368 install programs 19
stand-alone pc 15
SFT files 265
S Shell 185, 604
Shift
assignments 171
Save
locations 172
and run 347
overlapping downtimes 177
model 69
priorities 173
model as 69
resources 172
Scale
units 172
grid 88
selecting shift files 172
Scenarios 347, 353
shift & break
defining 354
logic 174
parameters 353
functions & statements 174
Scheduled maintenance 282
preemption 175
Scheduling a simulation project 36
sequence of events 174
Scope 34
start times 173
Scroll
usage 171
arrow, see glossary 604
begin time 169
bar, see glossary 604
colors
box, see glossary 604
customize 170
632

copy a shift 170 Show


definition 168 conveyors and queues 103
accessing 168 grid 83, 92, 94, 320
advantage of shifts 168 hidden networks 94
block begin & end time 169 networks 83, 92
changing color 170 routing paths 83, 92, 94
deleting a block 170 SimRunner 370
deselecting a block 169 benefits 371
drawing a block 169 define
duplicating a block 170 input factors 371
editor 168 objective function 371
menus 168 stage three simulation optimization 372
resizing a block 169 starting a new project 371
selecting an existing block 169 Simulation
downtime animation off 64
principles 175 focus 37
examples 176 menu 347
locations 175 description 68
overlapping downtimes 177 during run time 356
preemption 176 model parameters 347
resources 177 options 347
priorities 141 running a model 347
draw block 169 run-time
editor 168 end simulation 356
menus 168 pause/resume 356
end time 169 save & run 347
file 264 scenarios 347
priorities non-terminating 44, 45
break 173 running 46
end shift 173 options 63, 348
off-shift 173 clock precision 349
start break 173 common random numbers 350
shift & break logic 305 customized reporting 352
break logic 305 disable
functions & statements 305 animation 349
off-shift logic 305 cost 349
pre-break logic 305 time series 349
pre-off-shift logic 305 display notes 349
sequence of events 305 maximum run length 349
Shift Library 340 output
Shifts & breaks 282 path 348
logic statements reporting options 350
priority 533 batch mean 350
skip 557 interval length 351
system functions 435 number of replications 351
dtleft() 473 periodic 351
forlocation() 480 running a specific replication 351
forresource() 482 standard 350
resource() 546, 547 pause at start 349
Shift-specific system functions 587 run length
forlocation() 587 calendar date 348
forresource() 587 time only 348
ProModel 633
User Guide

weekly time 348 Stat::Fit 307


pitfalls 52 State
planning initial 44
data gathering 38 terminating 44
steady-state 45, 46, 48 State Chart 392
steps 31 Statements 436
analyzing the output 51 and expression groups 587
building the model 41 blocks 436
conducting experiments 43 control 436
defining the system 36 cost related 499, 500, 501
planning the study 32 entity-related operation 436
reporting the results 51 general action 436
terminating 44, 46, 48 nested 297
running 45 new 367
Single-section conveyors 279 resource-related 436
Sizing 82 Static resources 135
SKIP 174, 305, 557, 588 Statistics 97
Snap basic 97
lines to border 161 cost 601
to grid 82, 83, 94 displaying on screen 289
Snap to grid system throughput 289
off 280 total system time for entities 289
on 280 none 97
SOUND 558, 588 observation-based 232
Spacing resource 277
load 280 time 605
Speed time series 97
and distance 124 time-weighted 232
bridge 269 view 65
control bar 63 Status
conveyor 106, 278 light 100, 364
crane bridge 273 place on icon 329
factor 126 see glossary 604
hoist 269 Steady-state 43, 46, 47
horizontal 283 simulation 45, 46, 48
simulation Step
run-time control 369 back 331
traveling empty/full 144 front 331
vertical 283 trace 64
SPLIT AS 103, 104, 118, 155, 156, 157, 186, 226, 383, 459, STOP 562, 588
463, 493, 509, 559, 571, 588 Stream, distributions 437
Spreadsheet Streams 266
external file 588 accessing 266
SQRT() 561 definition 266
Square edit table 266
draw 326 example 267
Square root 561 multiple 50
Stage one random number 50, 266
pre-analysis 371 usage 266
Stand-alone PC String
setup and installation 15 see glossary 604
Start new block 158 Strings
634

character 403 tank_setlevel 197


expressions 409, 412, 588 tank_setstate 204
char() 412 tank_transfer 195
character strings 412 tank_transferdownto 196
concatenation operators 412 tank_transferupto 195
ent() 412 tank_updatestats 206
format() 412 type (none, real, integer or interactive) 246
loc() 412 valid usage 247
numeric expressions 412 Subtraction 408, 409, 413
res() 412 Supply chains & logistics 7
functions Switches 83
char() 456 Symbols and notation
format() 481 keyboard 3
Submodel logic 3
merge 71 text 3
tank 188 System
import 188 definition 36, 37
uses 10 menu, see glossary 604
Submodels System functions 409, 435
tank break logic-specific 587
tank_dec 198 downtime-specific 587
tank_inc 198 entity-specific 587
tank_risetrigger 199 location-specific 587
Subroutines 95, 246, 409 node logic-specific 587
accessing 246 preemption logic specific 587
and macros 588 resource-specific 587
create 246 shift-specific 587
definition 246 System throughput 289
edit 246
table 246, 248
example 248 T
executing interactive subroutines during run time 368
external 250
Table
format 247
editing 76
interactive 249
functions 256
logic 247, 249
accessing 256
parameters 247, 248
defining 256
return statement 247
edit table 257
subroutines vs. macros 250
editor 256
tank
examples 256, 257
tank_cap 200
Table functions 409
tank_dooperation 201
TAKE 463
tank_doprep 203
TANK_CAP 200
tank_empty 194
TANK_DEC 198
tank_falltrigger 200
TANK_DOOPERATION 201
tank_fill 193
TANK_DOPREP 203
tank_freecap 200
TANK_EMPTY 194
tank_godown 201
TANK_FALLTRIGGER 200
tank_godownsched 202
TANK_FILL 193
tank_rate 207
TANK_FREECAP 200
tank_selectinput 206
TANK_GODOWN 201
tank_selectoutput 204
ProModel 635
User Guide

TANK_GODOWNSCHED 202 Tile 91


TANK_INC 198 Time 124, 126
TANK_RATE 207 between autosaves 335
TANK_RISETRIGGER 199 blocked 277
TANK_SELECTINPUT 206 default grid time 88
TANK_SELECTOUTPUT 204 expressions 409, 411
TANK_SETLEVEL 197 colon notation 412
TANK_SETSTATE 204 load delivery 278
TANK_TRANSFER 195 move 277
TANK_TRANSFERDOWNTO 196 statistics 605
TANK_TRANSFERUPTO 195 studies 39
TANK_UPDATESTATS 206 time and condition dependent activities 37
Tanks 100, 101, 188 time-weighted statistics 232
add labels and figures 189 units 179
basic concepts 189 Time units, tank 190, 201, 202, 203
border color 188 TIMELEFT() 301, 564, 587
capacity Timeplot 396
maximum 97 TIMESUSED() 565, 587
change between a tank and a gauge 189 Title of model 179
define 188 Toolbar 92
edit 188 Tools
fill color 188 button bar 219
flow time step 190 menu
levels 189 description 68
rate of flow 190 options
submodel 188 confirm record deletion 334
import 188 long build menu 334
Tanks, time units 190, 201, 202, 203 recalculating adjusted paths 334
Task move priority 269 settings
Technical support 4 directories 334
Terminating processing 159
simulation 44, 46, 48 TRACE 566, 588
running 45 Trace 356
state 44 continuous 64, 362
Termination logic 180 filtered 362
execution time 180 off 361
Testing options 361
hypothesis 48 output to file 363
Text 3 step 64, 361
clear 78 window 11
copy 78 Training 8
cut 78 Trajectory, hoist and bridge 275
dialog box 102 Transfer lines 7
file Transfering a license key 26
view 63 Translation status window 355
label 100 Travel to park 277
paste 78 TRC files 265
see glossary 605 Triangle
THEN 298, 496 draw 326
THEN FREE 303, 524 Triangular distribution 437
THREADNUM() 563 Trigger events, reclaim 275
Throughput 289 TRUNC() 567
636

TURN 430
Two-dimensional array 236
V
Two-level design 49
Type 289 Valid expressions & statements 587, 589
conversion functions 435 fields evaluated during simulation 591
ent() 476 fields evaluated only at translation 589
real() 540 groups by field 589
trunc() 567 Validation, model 43
numeric 407 Variability
Type of experimentation 34, 35 resources
adding 55, 58
VARIABLE() 575, 587
U Variables 95, 231, 409
accessing 231
displaying information during run time 93, 364
Unbatching 286 edit
UNGROUP 103, 104, 186, 286, 291, 383, 459, 463, 493, 509, icon 233
559, 568, 571, 588 table 231
Ungroup global variable definition 231
graphics 222, 317 icon 231
objects 317 editing 233
Uniform distribution 437 placement 232
Units 97 removal 233
location 106 initial value 231
UNITS() 570, 587 input 37
UNLOAD 103, 104, 229, 287, 459, 463, 493, 509, 559, 568, layout 232
571, 588 local
Unlock example 233
graphics 222 variables 233
UNTIL FULL 157, 421 response 37
Usage-based downtime 139 statistics 231
USE 121, 140, 183, 186, 269, 275, 277, 301, 304, 358, 438, type (real or integer) 231
485, 486, 573, 588 Vehicles, industrial 282
User Verification, model 42
distributions 40, 54, 259 Vertical bridge crane 283
accessing 259 Vertical speed 283
continuous 261 VIEW 576, 588
cumulative 259 View 64, 84, 92, 94
definition 259 add 85
discrete 259 define 84
edit table 259 location 99
table 259 managing 85
type (discrete or continuous) 259 menu 225
pause 64 accessing 83
USER CONDITION 417, 432 commands 90
User-defined distribution 437 description 67
Utilization edit table 90
graphs 13 color 90
edit table font 90
layout settings 86
background color 87, 88
grid settings 87, 88
ProModel 637
User Guide

routing path color 87, 89 statements and functions 367


refresh layout 90 WHILE...DO 237, 242, 297, 441, 447, 502, 580, 588
reset window positions 90 Window menu 91
settings 83 description 68
switches 83 during run-time 368
views 84, 92 WIP 289, 360, 554
managing 85 WK 411, 457, 472
reference WMF
in model logic 86 importing a background graphic 221
zoom 84, 86, 92 Work search 134, 145
to fit layout 84, 92 and park search 276
model edit table 145
reports 65 exclusive 276
statistics 65 non-exclusive 276
text 72 see glossary 605
move WRITE 263, 458, 581, 585, 588
down 85 Write data 262
up 85 WRITELINE 263, 458, 582, 585, 588
output 12 WWW.PROMODEL.COM 67
reference
in model logic 86
remove 85 X
rename 85
routing 161
XSUB() 246, 583, 587
select 84
external subroutine calls 583
view 85
XWRITE 263, 458, 481, 581, 585, 588
with shortcut key 85
set view 85
text 72
file 63
Z
Views
defining 84 Zero units 133
selecting 85 Zone
active operation 276
blocking 281
W claim examples 271
claims 271
extended movement 271
WAIT 140, 155, 174, 175, 183, 299, 301, 304, 305, 358, 385,
Zoom 63, 64, 84, 86, 92, 94
441, 486, 564, 577, 588
animation 363
WAIT UNTIL 115, 146, 174, 190, 234, 240, 304, 305, 352, 384,
custom 86
385
to fit layout 84, 92, 94
WAIT...UNTIL 441, 578, 588
WARMUP 352, 579, 588
Warm-up period 46
determine 46
initial 47
Weeks 411, 457, 472
Weibull distribution 437
What’s new
features
activex objects 596
638

You might also like