ProModel User Guide-6
ProModel User Guide-6
User Guide
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()
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
GetReplicationNum()
General System Function
Syntax samples
GETREPLICATIONNUM()
Description
Returns the number of the currently running rep-
lication.
Valid In
Any Logic.
Example
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
Valid In
Any logic.
Components
<label ID>
The name of the label to switch to. Omit the colon on
the label name here.
Example
Components
<expression>
The number of the entity’s or resource’s new graphic.
Example
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
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
See Also
COMBINE, ACCUM, GROUPQTY(), and
ENTITY(). Also see “Attributes” on page 225.
ProModel 495
User Guide
GroupQty() Example
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.
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
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.
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
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
IncResCost Example
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
INT Count = 1
INT Count = 1, Test = FREECAP(Loc2) Example
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
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
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
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
logbase<expression> = LN<expression>/
LN<base>
ProModel 509
User Guide
Load Components
Process Table
Entity Location Operation (min)
Box Shipping WAIT 2 min
Truck MfgSite
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
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
Syntax samples
Process Table
LOCATION() Entity Location Operation (min)
Attr1 = LOCATION() Sink Oven ACCUM CAP(LOCATION())
Valid In
Any logic.
Example
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
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
Please note
Match Components
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
<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
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
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
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
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
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
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
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
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()
Example
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
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
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
See Also
PAUSE; DISPLAY. Also see “Run-Time Inter-
face” on page 242.
536 Chapter 14:
Rand()
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.
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.
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
Report Example
General Action Statement To get a snapshot report every 40 hours, enter the
following:
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
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
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
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
ResQty() Example
Return Components
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
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
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
General Operation Statement SETRATE uses the time units defined for the
model. (By default, SETRATE uses hours.)
Syntax samples
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
See Also
“Shift & Break Logic” on page 305. Also see
FORLOCATION() and FORRESOURCE().
558 Chapter 14:
Sound
Sound Example
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
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
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
X**(1/Y)
Stop Example
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.
Components
<string expression>
An optional message to display when the replication
stops.
ProModel 563
User Guide
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
Valid In
Operation logic defined as a preemptive process.
Example
TimesUsed() Example
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
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
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
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
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.
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
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
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
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
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.
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 <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.
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.
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()
Xwrite Example
General Operation Statement The following example uses XWRITE to record the
time each Box completes processing at location
Ship.
Syntax samples
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
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
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
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
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
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.
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.
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.
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.
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
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
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