MEEN 4373
Modeling Basic Operations and
Inputs
Instructor: Dr. Hua Li
What Well Do ...
Underlying ideas, methods, and issues in
simulation
Software-independent (setting up for Arena)
Example of a simple processing system
Spreadsheet simulation
Decompose problem
Terminology
Simulation by hand
Some basic statistical issues
Simple static, dynamic models
Overview of a simulation study
The System:
A Simple Processing System
Machine
(Server)
Arriving
Blank Parts
Queue (FIFO)
Departing
Finished Parts
Part in Service
General intent:
Estimate expected production
Waiting time in queue, queue length, proportion of time
machine is busy
Time units
Can use different units in different places must declare
Be careful to check units when specifying inputs
Declare base time units for internal calculations, outputs
Be reasonable (interpretation, roundoff error)
Model Specifics
Initially (time 0) empty and idle
Base time units: minutes
Input data (assume given for now ), in minutes:
Part Number
1
2
3
4
5
6
7
8
9
10
11
.
.
Arrival Time
0.00
1.73
3.08
3.79
4.41
18.69
19.39
34.91
38.06
39.82
40.82
.
.
Interarrival Time
1.73
1.35
0.71
0.62
14.28
0.70
15.52
3.15
1.76
1.00
.
.
.
Service Time
2.90
1.76
3.39
4.52
4.46
4.36
2.07
3.36
2.37
5.38
.
.
.
Stop when 20 minutes of (simulated) time have
passed
Goals of Study:
Output Performance Measures
Total production of parts over run (P)
Average waiting time of parts in queue:
N
WQi
i =1
N = no. of parts completing queue wait
WQi = waiting time in queue of ith part
Know: WQ1 = 0 (why?)
N > 1 (why?)
Maximum waiting time of parts in queue:
max WQi
i =1,...,N
Goals of Study:
Output Performance Measures (contd.)
Time-average number of parts in queue:
20
0 Q (t ) dt
Q(t) = number of parts in queue
at time t
20
Maximum number of parts in queue: max Q (t )
0t 20
Average and maximum total time in system of
parts (a.k.a. cycle time):
P
TSi
i =1
max TSi
i =1,...,P
TSi = time in system of part i
Goals of Study:
Output Performance Measures (contd.)
Utilization of machine (proportion of time busy)
20
B(t ) dt
20
1
if
machine
is
busy
at
time
t
, B(t ) = 0 if machine is idle at time t
Many others possible (information overload?)
Analysis Options
Educated guessing
Average interarrival time = 4.08 minutes
Average service time = 3.46 minutes
So (on average) parts are being processed faster than they
arrive
System has a chance of operating in a stable way in long run, i.e.,
might not explode
If all interarrivals and service times were exactly at their mean, there
would never be a queue
But data clearly exhibit variability, so a queue could form
If wed had average interarrival < average service time, and
this persisted, then queue would explode
Truth between these extremes
Guessing has its limits
Analysis Options (contd.)
Queueing theory
Requires additional assumptions about model
Popular, simple model: M/M/1 queue
Interarrival times ~ exponential
Service times ~ exponential, indep. of interarrivals
Must have E(service) < E(interarrival)
Steady-state (long-run, forever)
Exact analytic results; e.g., average waiting time in queue is
A = E(interarrival time)
S2
,
S = E(service time)
A S
Problems: validity, estimating means, time frame
Often useful as first-cut approximation
Mechanistic Simulation
Individual operations (arrivals, service times) will
occur exactly as in reality
Movements, changes occur at right times, in
right order
Different pieces interact
Install observers to get output performance
measures
Concrete, brute-force analysis approach
Nothing mysterious or subtle
But a lot of details, bookkeeping
Simulation software keeps track of things for you
Pieces of a Simulation Model
Entities
Players that move around, change status, affect and are
affected by other entities
Dynamic objects get created, move around, leave
(maybe)
Usually represent real things
Our model: entities are parts
Can have fake entities for modeling tricks
Breakdown demon, break angel
Though Arena has built-in ways to model these examples directly
Usually have multiple realizations floating around
Can have different types of entities concurrently
Usually, identifying types of entities is first thing to do in
building model
Pieces of a Simulation Model (contd.)
Attributes
Characteristic of all entities: describe, differentiate
All entities have same attribute slots but different values
for different entities, for example:
Time of arrival
Due date
Priority
Color
Attribute value tied to a specific entity
Like local (to entities) variables
Some automatic in Arena, some you define
Pieces of a Simulation Model (contd.)
(Global) Variables
Reflects a characteristic of whole model, not of specific
entities
Used for many different kinds of things
Travel time between all station pairs
Number of parts in system
Simulation clock (built-in Arena variable)
Name, value of which theres only one copy for whole
model
Not tied to entities
Entities can access, change variables
Writing on wall (rewriteable)
Some built-in by Arena, you can define others
Pieces of a Simulation Model (contd.)
Resources
What entities compete for
Entity seizes a resource, uses it, releases it
Think of a resource being assigned to an entity, rather than
an entity belonging to a resource
A resource can have several units of capacity
People
Equipment
Space
Seats at a table in a restaurant
Identical ticketing agents at an airline counter
Number of units of resource can be changed during
simulation
Pieces of a Simulation Model (contd.)
Queues
Place for entities to wait when they cant move on (maybe
since resource they want to seize is not available)
Have names, often tied to a corresponding resource
Can have a finite capacity to model limited space have
to model what to do if an entity shows up to a queue thats
already full
Usually watch length of a queue, waiting time in it
Pieces of a Simulation Model (contd.)
Statistical accumulators
Variables that watch whats happening
Depend on output performance measures desired
Passive in model dont participate, just watch
Many are automatic in Arena, but some you may have to
set up and maintain during simulation
At end of simulation, used to compute final output
performance measures
Pieces of a Simulation Model (contd.)
Statistical accumulators for simple processing
system
Number of parts produced so far
Total of waiting times spent in queue so far
No. of parts that have gone through queue
Max time in queue weve seen so far
Total of times spent in system
Max time in system weve seen so far
Area so far under queue-length curve Q(t)
Max of Q(t) so far
Area so far under server-busy curve B(t)
Simulation Dynamics:
Event-Scheduling World View
Identify characteristic events
Decide on logic for each type of event to:
Effect state changes for each event type
Observe statistics
Update times of future events (maybe of this type, other
types)
Keep a simulation clock, future event calendar
Jump from one event to the next, process,
observe statistics, update event calendar
Must specify an appropriate stopping rule
Usually done with general-purpose programming
language (C++, Java, Matlab, FORTRAN, etc.)
Events for the
Simple Processing System
Arrival of a new part to system
Update time-persistent statistical accumulators (from last
event to now)
Mark arriving part with current time (use later)
If machine is idle:
Start processing (schedule departure), Make machine busy, Tally
waiting time in queue (0)
Else (machine is busy):
Area under Q(t)
Max of Q(t)
Area under B(t)
Put part at end of queue, increase queue-length variable
Schedule next arrival event
Events for the
Simple Processing System (contd.)
Departure (when a service is completed)
Increment number-produced stat accumulator
Compute & tally time in system (now time of arrival)
Update time-persistent statistics (as in arrival event)
If queue is non-empty:
Take first part out of queue, compute & tally its waiting time in
queue, begin service (schedule departure event)
Else (queue is empty):
Make machine idle (Note: there will be no departure event
scheduled on future events calendar, which is as desired)
Events for the
Simple Processing System (contd.)
The End
Update time-persistent statistics (to end of simulation)
Compute final output performance measures using current
(= final) values of statistical accumulators
After each event, event calendars top record is
removed to see what time it is, what to do
Also must initialize everything
Some Additional Specifics for the
Simple Processing System
Simulation clock variable (internal in Arena)
Event calendar: list of event records:
[Entity No., Event Time, Event Type]
Keep ranked in increasing order on Event Time
Next event always in top record
Initially, schedule first Arrival, The End (Dep.?)
State variables: describe current status
Server status B(t) = 1 for busy, 0 for idle
Number of customers in queue Q(t)
Times of arrival of each customer now in queue (a list of
random length)
Simulation by Hand
Manually track state variables, statistical
accumulators
Use given interarrival, service times
Keep track of event calendar
Lurch clock from one event to next
Will omit times in system, max computations
here (see text for complete details)
Simulation by Hand:
Setup
System
Clock
Number of
completed waiting
times in queue
Total of
waiting times in queue
B(t)
Q(t)
Arrival times of
custs. in queue
Area under
Q(t)
Event calendar
Area under
B(t)
Q(t) graph
3
2
1
0
B(t) graph
10
15
20
10
15
20
2
1
0
Interarrival times
Time (Minutes)
1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times
2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Simulation by Hand:
t = 0.00, Initialize
System
Number of
completed waiting
times in queue
0
Clock
B(t)
Q(t)
0.00
Arrival times of
Event calendar
custs. in queue
[1, 0.00,
Arr]
<empty> [, 20.00,
End]
Total of
waiting times in queue
Area under
Q(t)
Area under
B(t)
0.00
0.00
0.00
Q(t) graph
3
2
1
0
B(t) graph
10
15
20
10
15
20
2
1
0
Interarrival times
Time (Minutes)
1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times
2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Simulation by Hand:
t = 0.00, Arrival of Part 1
System
1
Number of
completed waiting
times in queue
1
Clock
B(t)
Q(t)
Total of
waiting times in queue
Arrival times of
Event calendar
custs. in queue
[2, 1.73,
Arr]
<empty> [1, 2.90,
Dep]
[, 20.00,
End]
Area under
Area under
Q(t)
B(t)
0.00
0.00
0.00
0.00
Q(t) graph
3
2
1
0
B(t) graph
10
15
20
10
15
20
2
1
0
Interarrival times
Time (Minutes)
1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times
2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Simulation by Hand:
t = 1.73, Arrival of Part 2
System
Number of
completed waiting
times in queue
1
Clock
B(t)
Q(t)
Total of
waiting times in queue
Arrival times of
Event calendar
custs. in queue
[1, 2.90,
Dep]
(1.73) [3, 3.08,
Arr]
[, 20.00,
End]
Area under
Area under
Q(t)
B(t)
1.73
0.00
0.00
1.73
Q(t) graph
3
2
1
0
B(t) graph
10
15
20
10
15
20
2
1
0
Interarrival times
Time (Minutes)
1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times
2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Simulation by Hand:
t = 2.90, Departure of Part 1
System
2
Number of
completed waiting
times in queue
2
Clock
B(t)
Q(t)
Total of
waiting times in queue
Arrival times of
Event calendar
custs. in queue
[3, 3.08,
Arr]
<empty> [2, 4.66,
Dep]
[, 20.00,
End]
Area under
Area under
Q(t)
B(t)
2.90
1.17
1.17
2.90
Q(t) graph
3
2
1
0
B(t) graph
10
15
20
10
15
20
2
1
0
Interarrival times
Time (Minutes)
1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times
2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Simulation by Hand:
t = 3.08, Arrival of Part 3
System
Number of
completed waiting
times in queue
2
Clock
B(t)
Q(t)
Total of
waiting times in queue
Arrival times of
Event calendar
custs. in queue
[4, 3.79,
Arr]
(3.08) [2, 4.66,
Dep]
[, 20.00,
End]
Area under
Area under
Q(t)
B(t)
3.08
1.17
1.17
3.08
Q(t) graph
3
2
1
0
B(t) graph
10
15
20
10
15
20
2
1
0
Interarrival times
Time (Minutes)
1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times
2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Simulation by Hand:
t = 3.79, Arrival of Part 4
System
Number of
completed waiting
times in queue
2
Clock
B(t)
Q(t)
Total of
waiting times in queue
Arrival times of
Event calendar
custs. in queue
[5, 4.41,
Arr]
(3.79, 3.08) [2, 4.66,
Dep]
[, 20.00,
End]
Area under
Area under
Q(t)
B(t)
3.79
1.17
1.88
3.79
Q(t) graph
3
2
1
0
B(t) graph
10
15
20
10
15
20
2
1
0
Interarrival times
Time (Minutes)
1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times
2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Simulation by Hand:
t = 4.41, Arrival of Part 5
System
Number of
completed waiting
times in queue
2
Clock
B(t)
Q(t)
Total of
waiting times in queue
Arrival times of
Event calendar
custs. in queue
[2, 4.66,
Dep]
(4.41, 3.79, 3.08) [6, 18.69,
Arr]
[, 20.00,
End]
Area under
Area under
Q(t)
B(t)
4.41
1.17
3.12
4.41
Q(t) graph
3
2
1
0
B(t) graph
10
15
20
10
15
20
2
1
0
Interarrival times
Time (Minutes)
1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times
2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Simulation by Hand:
t = 4.66, Departure of Part 2
System
Number of
completed waiting
times in queue
3
Clock
B(t)
Q(t)
4.66
Total of
waiting times in queue
Arrival times of
Event calendar
custs. in queue
[3, 8.05,
Dep]
(4.41, 3.79) [6, 18.69,
Arr]
[, 20.00,
End]
Area under
Area under
Q(t)
B(t)
2.75
3.87
4.66
Q(t) graph
3
2
1
0
B(t) graph
10
15
20
10
15
20
2
1
0
Interarrival times
Time (Minutes)
1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times
2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Simulation by Hand:
t = 8.05, Departure of Part 3
System
Number of
completed waiting
times in queue
4
Clock
B(t)
Q(t)
8.05
Total of
waiting times in queue
Arrival times of
Event calendar
custs. in queue
[4, 12.57,
Dep]
(4.41) [6, 18.69,
Arr]
[, 20.00,
End]
Area under
Area under
Q(t)
B(t)
7.01
10.65
8.05
Q(t) graph
3
2
1
0
B(t) graph
10
15
20
10
15
20
2
1
0
Interarrival times
Time (Minutes)
1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times
2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Simulation by Hand:
t = 12.57, Departure of Part 4
System
5
Number of
completed waiting
times in queue
5
Clock
B(t)
Q(t)
12.57
Arrival times of
custs. in queue
Total of
waiting times in queue
Area under
Q(t)
15.17
15.17
Event calendar
[5, 17.03,
Dep]
() [6, 18.69,
Arr]
[, 20.00,
End]
Area under
B(t)
12.57
Q(t) graph
3
2
1
0
B(t) graph
10
15
20
10
15
20
2
1
0
Interarrival times
Time (Minutes)
1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times
2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Simulation by Hand:
t = 17.03, Departure of Part 5
System
Number of
completed waiting
times in queue
5
Clock
B(t)
Q(t)
17.03
Arrival times of
custs. in queue
()
Event calendar
[6, 18.69,
Arr]
[, 20.00,
End]
Total of
waiting times in queue
Area under
Q(t)
Area under
B(t)
15.17
15.17
17.03
Q(t) graph
3
2
1
0
B(t) graph
10
15
20
10
15
20
2
1
0
Interarrival times
Time (Minutes)
1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times
2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Simulation by Hand:
t = 18.69, Arrival of Part 6
System
6
Number of
completed waiting
times in queue
6
Clock
B(t)
Q(t)
18.69
Arrival times of
custs. in queue
()
Total of
waiting times in queue
Area under
Q(t)
Event calendar
[7, 19.39,
Arr]
[, 20.00,
End]
[6, 23.05,
Dep]
Area under
B(t)
15.17
15.17
17.03
Q(t) graph
3
2
1
0
B(t) graph
10
15
20
10
15
20
2
1
0
Interarrival times
Time (Minutes)
1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times
2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Simulation by Hand:
t = 19.39, Arrival of Part 7
System
Number of
completed waiting
times in queue
6
Clock
B(t)
Q(t)
Total of
waiting times in queue
Arrival times of
Event calendar
custs. in queue
[, 20.00,
End]
(19.39) [6, 23.05,
Dep]
[8, 34.91,
Arr]
Area under
Area under
Q(t)
B(t)
19.39
15.17
15.17
17.73
Q(t) graph
3
2
1
0
B(t) graph
10
15
20
10
15
20
2
1
0
Interarrival times
Time (Minutes)
1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times
2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Simulation by Hand:
t = 20.00, The End
System
Number of
completed waiting
times in queue
6
Clock
B(t)
Q(t)
20.00
Arrival times of
Event calendar
custs. in queue
[6, 23.05,
Dep]
(19.39) [8, 34.91,
Arr]
Total of
waiting times in queue
Area under
Q(t)
Area under
B(t)
15.17
15.78
18.34
Q(t) graph
3
2
1
0
B(t) graph
10
15
20
10
15
20
2
1
0
Interarrival times
Time (Minutes)
1.73, 1.35, 0.71, 0.62, 14.28, 0.70, 15.52, 3.15, 1.76, 1.00, ...
Service times
2.90, 1.76, 3.39, 4.52, 4.46, 4.36, 2.07, 3.36, 2.37, 5.38, ...
Simulation by Hand:
Finishing Up
Average waiting time in queue:
Total of times in queue 15.17
=
= 2.53 minutes per part
No. of times in queue
6
Time-average number in queue:
Area under Q(t ) curve 15.78
=
= 0.79 part
Final clock value
20
Utilization of drill press:
Area under B(t ) curve 18.34
=
= 0.92 (dimension less)
Final clock value
20
Complete Record of the
Hand Simulation
Event-Scheduling Logic via
Programming
Clearly well suited to standard programming
language (C, C++, Java, etc.)
Often use utility libraries for:
List processing
Random-number generation
Random-variate generation
Statistics collection
Event-list and clock management
Summary and output
Main program ties it together, executes events in
order
Simulation Dynamics:
Process-Interaction World View
Identify characteristic entities in system
Multiple copies of entities co-exist, interact,
compete
Code is non-procedural
Tell a story about what happens to a typical
entity
May have many types of entities, fake entities
for things like machine breakdowns
Usually requires special simulation software
Underneath, still executed as event-scheduling
View normally taken by Arena
Arena translates your model description into a program in
SIMAN simulation language for execution
Randomness in Simulation
Above was just one replication a sample of
size one (not worth much)
Made a total of five replications (IID):
Substantial variability
across replications
Confidence intervals for expected values:
In general, X tn 1,1 / 2s / n
(normality assumption?)
For expected total production, 3.80 (2.776)(1.64 / 5 )
3.80 2.04 Precision?
Comparing Alternatives
Usually, simulation is used for more than just a
single model configuration
Often want to compare alternatives, select or
search for best (via some criterion)
Simple processing system: What would happen
if arrival rate doubled?
Cut interarrival times in half
Rerun model for double-time arrivals
Make five replications
Results: Original vs. Double-Time
Arrivals
Original circles
Double-time triangles
Replication 1 filled in
Replications 2-5 hollow
Note variability
Danger of making decisions
based on one (first)
replication
Hard to see if there are
really differences
Need: Statistical analysis
of simulation output data
Simulating with Spreadsheets:
Introduction
Popular, ubiquitous tool
Can use for simple simulation models
Typically, only static models
Risk analysis, financial/investment scenarios
Only (very) simplest of dynamic models
Two examples
Newsvendor problem (static)
Waiting times in single-server queue (dynamic)
Special recursion valid only in this case
Simulating with Spreadsheets:
Newsvendor Problem Setup
Rupert sells daily newspapers on street
Each morning, Rupert buys q copies
X ~ normal ( = 135.7, = 27.1), from historical data
X rounds X to nearest integer
If D q, satisfy all demand, and q D 0 left over,
sell for scrap at s = $0.03 each
If D > q, sells out (sells all q copies), no scrap
q is a fixed number, same every day
Demand during a day: D = max (X, 0)
Rupert buys for c = $0.55 each, sells for r = $1.00 each
But missed out on D q > 0 sales
What should q be?
Simulating with Spreadsheets:
Newsvendor Problem Formulation
Choose q to maximize expected profit per day
Classic operations-research problem
q too small sell out, miss $0.45 profit per paper
q too big have left over, scrap at a loss of $0.52 per paper
Many versions, variants, extensions, applications
Much research on exact solution in certain cases
But easy to simulate, even in a spreadsheet
Profit in a day, as a function of q:
W(q) = r min (D, q) + s max (q D, 0) cq
Sales revenue
Scrap revenue
Cost
W(q) is a random variable profit varies from day to day
Maximize E(W(q)) over nonnegative integers q
Simulating with Spreadsheets:
Newsvendor Problem Simulation
Set trial value of q, generate demand D, compute
profit for that day
Then repeat this for many days independently, average to
estimate E(W(q))
Also get confidence interval, estimate of P(loss), histogram of W(q)
Try for a range of values of q
Need to generate demand D = max (X, 0)
So need to generate X ~ normal ( = 135.7, = 27.1)
(Much) ahead Sec. 12.2, generating random variates
In this case, generate X = -1,(U)
U is a random number distributed uniformly on [0, 1] (Sec. 12.1)
, is cumulative distribution function of normal (, ) distribution
Simulating with Spreadsheets:
Newsvendor Problem Excel
All files in book: www.mhhe.com/kelton,
File Newsvendor.xls
Student Edition, BookExamples.zip
Input parameters in cells B4 B8 (blue)
Trial values for q in row 2 (pink)
Day number (1, 2, ..., 30) in column D
Demands in column E for each day:
= MAX(ROUND(NORMINV(RAND(), $B$7, $B$8), 0), 0)
Rounding
function
RAND() is volatile
so regenerates on
any edit, or F9 key
-1
U(0, 1)
random number
X ~ normal (, )
$ pins down following
column or row when
copying formula
Round to
nearest
integer
MAX 2nd
argument
Simulating with Spreadsheets:
Newsvendor Problem Excel (contd.)
For each q:
Sold column: number of papers sold that day
Scrap column: number of papers scrapped that day
Profit column: profit (+, , 0) that day
Placement of $ in formulas to facilitate copying
At bottom of Profit columns (green):
Average profit over 30 days
Half-width of 95% confidence interval on E(W(q))
Estimate of P(W(q) < 0)
Value 2.045 is upper 0.975 critical point of t distribution with 29 d.f.
Plot confidence intervals as I-beams on left edge
Uses COUNTIF function
Histograms of W(q) at bottom
Vertical red line at 0, separates profits, losses
Simulating with Spreadsheets:
Newsvendor Problem Results
Fine point used same daily demands (column E)
for each day, across all trial values of q
Would have been valid to generate them independently
Why is it better to use same demands for all q?
Results
Best q is about 140, maybe a little less
Randomness in all results (tap F9 key)
All demands, profits, graphics change
Confidence-interval, histogram plots change
Reminder that these are random outputs, random plots
Higher q more variability in profit
Histograms at bottom are wider for larger q
Higher chance of both large profits, but higher chance of loss, too
Risk/return tradeoff can be quantified risk taker vs. risk-averse
Simulating with Spreadsheets:
Single-Server Queue Setup
Like hand simulation, but:
Interarrival times ~ exponential with mean 1/ = 1.6 min.
Service times ~ uniform on [a, b] = [0.27, 2.29] min.
Stop when 50th waiting time in queue is observed
Watch waiting times in queue WQ1, WQ2, ..., WQ50
i.e., when 50th customer begins service, not exits system
Important not watching anything else, unlike before
Si = service time of customer i,
Ai = interarrival time between custs. i 1 and i
Lindleys recursion (1952): Initialize WQ1 = 0,
WQi = max (WQi 1 + Si 1 Ai, 0), i = 2, 3, ...
Simulating with Spreadsheets:
Single-Server Queue Simulation
Need to generate random variates: let U ~ U[0, 1]
Ai = (1/) ln(1 U)
Si = a + (b a) U
All files in book: www.mhhe.com/kelton,
File MU1.xls
Student Edition, BookExamples.zip
Input parameters in cells B4 B6 (blue)
Exponential (mean 1/):
Uniform on [a, b]:
Some theoretical outputs in cells B8 B10
Customer number (i = 1, 2, ..., 50) in column D
Five IID replications (three columns for each)
IA = interarrival times, S = service times
WQ = waiting times in queue (plot, thin curves)
First one initialized to 0, remainder use Lindleys recursion
Curves rise from 0, variation increases toward right
Creates positive autocorrelation down WQ columns
Curves have less abrupt jumps than if WQis were independent
Simulating with Spreadsheets:
Single-Server Queue Results
Column averages (green)
Average interarrival, service times close to expectations
Average WQi within each replication
Cross-replication (by customer) averages (green)
Not too far from steady-state expectation
Considerable variation
Many are below it (why?)
Column T, thick line in plot to dampen noise
Why no sample variance, histograms of WQis?
Could have computed both, as in newsvendor; two issues:
Nonstationarity what is a typical WQi here?
Autocorrelation biases variance estimate, may bias histogram if
run is not long enough
Simulating with Spreadsheets:
Recap
Popular for static models
Add-ins @RISK, Crystal Ball
Inadequate tool for dynamic simulations if theres
any complexity
Extremely easy to simulate single-server queue in Arena
Chapter 3 main example
Can build very complex dynamic models with Arena most
of rest of book
Overview of a Simulation Study
Understand system
Be clear about goals
Formulate model representation
Translate into modeling software
Verify program
Validate model
Design experiments
Make runs
Analyze, get insight, document results
More: Chapter 13
What Well Do ...
Start Arena
Load, explore, run an existing model
Basically same as hand simulation in Chapter 2
Browse dialogs and menus
Run model
Look at results
Construct same model from scratch
Use just these basic building blocks in case
study to address real operational question
Tour menus, toolbars, drawing, printing
Help system
Options for running and control
Behavior of Arena
Arena is a true Windows application
Appearance, operation, functions, are standard
Interoperability with other software (MS Office, CAD)
Interact, communicate with other software (Chapter 10)
Assume you already know basics of Windows:
Disks, files, folders, paths
Mousing, keyboarding
Resizing, moving, maximizing, minimizing windows
Menu operations
Ctrl, Alt, Shift keys
Cut, copy, paste
Filling out dialog fields
Starting Up
Installing Arena Appendix D
Locate icon or shortcut; double-click
See File, View, Tools, Help menus
Other menus present if a model file is open
Toolbars with buttons
Or, Start > All Programs > Rockwell Software > Arena > Arena
Licensed Mode vs. Training/Evaluation Mode (STUDENT)
Unless a model file is open, only New model file, Open
model file, Template Attach/Detach, Context Help (click it,
then click on buttons or menu items)
Tooltips roll over toolbar buttons for names
Quitting Arena: File > Exit, Alt+F4, or top right
Opening an Existing Model
File > Open or
button
Why the .doe default filename
extension for Arena models?
Navigate to desired disk/directory
Click > Open or double-click Model 03-01.doe
Book example models: www.mhhe.com/kelton,
Student Edition, BookExamples.zip, put where you want
More examples (typical location on Windows 7):
C:\Users\Public\Public Documents\Rockwell Software\Arena\Examples
Model window (right side of Arena window)
Where model is built
Resize, maximize, minimize, scroll/pan, zoom
Can have multiple model windows open at once
Cut, Copy, Paste within Arena, and between
Arena and other applications (when sensible)
Flowchart and Spreadsheet Views
Model window split into two views
Flowchart view
Spreadsheet view
Graphics
Process flowchart
Animation, drawing
Edit things by double-clicking on them, get into a dialog
Displays model data directly
Can edit, add, delete data in spreadsheet view
Displays all similar kinds of modeling elements at once
Many model parameters can be edited in either view
Horizontal splitter bar to apportion two views
View > Split Screen (or push ) to see both flowchart and
spreadsheet views (otherwise, only get view for active
module type)
Project Bar
Usually down left edge of Arena window
Hosts panels with modeling building blocks:
modules
Displays one panel at a time
Both flowchart and spreadsheet modules
Switch to different panels via horizontal buttons
Panels for Basic Process, Reports (after running), Navigate
(to different views within a model or to different hierarchical
submodels, thumbnail), others can be attached
(Template Attach button
) for different modeling levels,
specialties
Usually docked to left edge but can move, float
Hide it via View > Project Bar or its own small
Status Bar
At very bottom of Arena window
Displays various information sensitive to status
Coordinates of cursor in worldspace
When simulation is running:
Simulation clock value
Replication number being executed
Number of replications to be done
Hide by clearing (unchecking) View > Status Bar
Moving Around, Up, Down
in Flowchart View of Model Window
Underlying world space for model
Pan with scroll bars, arrow keys, thumbnail
Zoom in (down):
or + key or thumbnail
Zoom out (up):
or key or thumbnail
See all at min altitude: or * key To navigate via keyboard,
flowchart view of model window
Named views
must be active ... click in it.
(x, y) coordinates, arbitrary units (32K in all directions)
Save a pan/zoom view for different parts of model
Assign a Hot key (case-sensitive)
Access via View > Named Views or ? key or
Display grid (
), snap to grid (
) toggles
Rulers, alignment, guides, glue see text
Modules
Basic building blocks of simulation model
Two basic types: flowchart and data
Different types of modules for different actions,
specifications
Blank modules: on Project Bar
Add a flowchart module to model: drag it from Project Bar
into flowchart view of model window
Can have many instances of same kind of flowchart module in
model
Use a data module: select it (single-click) in Project Bar,
edit in spreadsheet view of model window
Only one instance of each kind of data module in model, but it can
have many entries (rows) in spreadsheet view
Can edit via dialog double-click on number in leftmost column
Flowchart Modules
Describe dynamic processes
Basic Process panel flowchart module types:
Nodes/places through which entities flow
Typically connected to each other in some way
Create, Dispose, Process, Decide, Batch, Separate,
Assign, Record
Other panels many other kinds
Shape like flowcharting (later, colors for hints)
Two ways to edit
Double-click to open up, then fill out dialogs
Select (single-click) a module type in model or Project Bar,
get all modules of that type in spreadsheet view
Data Modules
Set values, conditions, etc. for whole model
Basic Process panel data module types:
Attribute, Entity, Queue, Resource, Variable, Schedule, Set
Other panels many other kinds
Icons in Project Bar look like little spreadsheets
To use a data module, select it (single-click) in
Project Bar, edit in spreadsheet view
No entity flow, no connections
Can edit via dialog double-click in leftmost column, or
right-click and select Edit via Dialog
Double-click where indicated to add new row
Right-click on row, column to do different things
At most one instance of each kind of data module
in a model
But each one can have many entries (rows)
Relations Among Modules
Flowchart, data modules related via names for
objects
Arena keeps internal lists of different kinds of
names
Queues, Resources, Entity types, Variables, Expressions,
Sets, many others
Presents existing lists to you where appropriate
Helps you remember names, protects you from typos
All names you make up in a model must be
unique across model, even across different types
of modules
Internal Model Documentation
Data Tips on modules, graphics hover mouse
over object to see
Default part generic info on object (name, type)
User-specified part right-click on object, select Properties,
enter text under Description
Toggle display of Data tips via View > Data Tips
Project Description Run > Setup > Project
Parameters, enter text under Project Description
Model Documentation Report Tools > Model
Documentation Report
Generates HTML file with model details (can choose which
kinds of details to include)
Browsing Through Model 3-1
Open Model 03-01.doe, Book Examples folder
Three flowchart modules
Create, Process, Dispose
Entries in three data modules
www.mhhe.com/kelton, Student Edition, BookExamples.zip,
unzip and put folder where you want on your system
Entity, Queue, Resource
Animation objects
Resource animation
Two plots
Some (passive) labels, art work
Create Flowchart Module
Birth node for entities
Gave this instance of Create-type module the
Name Part Arrives to System
If we had other Create modules (we dont) theyd all have
different Names
Double-click on module to open property dialog:
Create Flowchart Module (contd.)
Name for module (type it in, overriding default)
Entity Type enter descriptive name
Time Between Arrivals area
Can have multiple Entity Types with distinct names
Specify nature of time separating consecutive arrivals
Type pull-down list, several options
Value depends on Type for Random (Expo) is mean
Units time units for Value
Entities per Arrival constant, random variable,
very general Expression (more later )
Max Arrivals choke off arrivals (from here) after
this many arrivals (batches, not entities)
First Creation time of first arrival (need not be 0)
Editing Flowchart Modules in
Spreadsheet View
Alternative to dialog for each instance of a
module type
See all instances of a module type at once
Convenient for seeing, editing many things at once
Selecting a module in either flowchart or
spreadsheet view also selects it in the other view
Click, double-click fields to view, edit
Right-click in row to Edit via Dialog, define user
Data Tip (via Properties)
Right-click in expression fields to get Expression
Builder for help in constructing complex
expressions with Arena variables (more later )
Entity Data Module
A data module, so edit in spreadsheet view only
View, edit aspects of different entity Types in
your model (we have just one entity Type, Part)
Pull-down lists activated as you select fields
Our only edit Initial Picture for animation
Picked Picture.Blue Ball from default list
Menu option Edit > Entity Pictures ... to see, modify
Process Flowchart Module
Represents machine, including:
Resource
Queue
Entity delay time (processing)
Enter Name Drilling Center
Type picked Standard to define logic here
rather than in a submodel (more later )
Report Statistics check box at bottom
To get utilizations, queue lengths, queue waiting times, etc.
Process Flowchart Module (contd.)
Logic area what happens to entities here
Action
Seize Delay Release entity Seizes some number of units of a Resource
(maybe after a wait in queue), Delay itself there for processing time, then
Release units of Resource it had Seized chose this option
Delay entity (red traffic light) no Resources or queueing, just sit here for a time duration
Seize Delay (no Release presumably Release downstream)
Delay Release (if Resource had been Seized upstream)
Priority for seizing lower numbers higher priority
Different Action choices could allow stringing together several Process
modules for modeling flexibility
Resources define Resource(s) to be seized, released
Double-click on row to open subdialog
Define Resource Name, Quantity of units to be Seized/Released here
Not where you say there are multiple Resource units ... do that in Resource data module
Several Resources present (Add) entities must first Seize all
Process Flowchart Module (contd.)
Delay Type choice of probability distributions,
constant or general Expression (more later )
Units time units for delay (dont ignore)
Allocation how to charge delay in costing
(more later )
Prompts on next line change depending on
choice of Delay Type specify numerical
parameters involved
Can also edit in spreadsheet view
Subdialogs (e.g., Resource here) become secondary
spreadsheets that pop up, must be closed
Resource Data Module
Defining Drill Press Resource in Process
module automatically creates entry (row) for it in
Resource data module
Can edit it here for more options
Type could vary capacity Based on Schedule instead of
having a Fixed Capacity
Would define Schedule in Schedule data module later
Capacity (if Type = Capacity) is number of units of this
resource that exist
Failures cause resource to fail according to some pattern
Define this pattern via Failure data module (Advanced Process
panel) later
Queue Data Module
Specify aspects of queues in model
Type specifies queue discipline or ranking rule
We only have one, named Drilling Center.Queue
(default name, given Process module name)
If Lowest or Highest Attribute Value, then another field
appears where you specify which attribute to use
Shared if this queue will be shared among
several resources (later )
Report Statistics check for automatic collection
and reporting of queue length, time in queue
Animating Resources and Queues
Got queue animation
automatically by
specifying a Seize in Process module
Entity pictures (blue balls) line up here in animation
Dont get Resource animation automatically
To add it, use Resource button in Animate toolbar get
Resource Picture Placement dialog
Identifier link to Resource name in pull-down list
Specify different pictures for Idle, Busy states
For pre-defined art work, Open a picture library (.plb filename extension)
Scroll up/down on right, select (single-click) a picture on right, select Idle or
Busy state on left, then
to copy picture
To edit later, double-click on picture in flowchart view
Dispose Flowchart Module
Represents entities leaving model boundaries
Name the module
Decide on Record Entity Statistics (average,
maximum time in system of entities exiting here,
costing information)
Check boxes for statistics collection and reporting:
Most are checked (turned on) by default
Little or no modeling effort to say yes to these
But in some models can slow execution markedly
Moral if you have speed problems, clear these if you dont care
Connecting Flowchart Modules
Establish (fixed) sequence of flowchart modules
through which entities flow
To make a connection
Connect (Object > Connect), cursor becomes cross hairs
Click on exit point
from source module, then entry point
on destination module
Green, red boxes light up to aid in hitting exit, entry points
Intermediate clicks for non-straight line in segments
To make many connections
After each connection, right-click in blank space, select
Repeat Last Action from pop-up menu
Or, double-click on , place multiple connections (no rightclick needed), right-click or Esc to end
Connecting Flowchart Modules (contd.)
Object menu toggles
Auto-Connect automatically connect entry point of newly
placed module from exit point of selected module
Smart Connect force segments to horizontal/vertical
Makes for a tidy-looking flowchart, but has the disadvantage that it
can cause connection lines to be directly on top of each other,
making it impossible to tell them apart
Animate Connectors show entity moves along connectors
(zero time for statistics collection), for verification
Move entry/exit points relative to their module
Right-click on entry/exit point
Select Allow Move from pop-up
Drag entry/exit point around
Dynamic Plots
Trace variables (e.g., queue lengths) as
simulation runs data animation
Disappear after run ends
To keep, save data, postprocess in Output Analyzer ... later
Plot button
from Animate toolbar
Six tabs across top; many options (best just to explore)
Data Series tab click Add button for each curve to be
plotted on same set of axes
In right Properties area, enter Name, define Expression
Pull down Build Expression, + Basic Process Variables, + Queue, Current
Number in Queue, select Drilling Center.Queue in Queue Name field pulldown, note Current Expression NQ(Drilling Center.Queue) automatically
filled in at bottom, OK button to copy this expression back out
DrawMode Stairs or PointToPoint
Line/fill color, vertical-axis on left/right
Note automatic context-sensitive
mini Help window on right
Dynamic Plots (contd.)
Axes tab choose Time (X) Axis on left
Axes tab choose Left Value (Y) Axis on left
X axis is always simulated time
Scale area on right (+ to open it) specify Min/Max,
MajorIncrement, AutoScroll (windows axis during simulation)
Title on right type in Text (mention units!), set Visible to True
Note possibility for a different right Y axis scale for multiple curves
Scale area on right specify Min/Max, MajorIncrement, usually
leave AutoScaleMaximum at True so Y axis scale will automatically
adjust to contain whole plot during run
Title on right
Legend tab clear Show Legend box since we have only
one curve, and Y axis is labeled
Other tabs Titles, Areas, 3-D View ... just explore
Drop plot in via crosshairs (resize, move later)
Dressing Things Up
Add drawing objects from Draw toolbar
Similar to other drawing, CAD packages
Object-oriented drawing tools (layers, etc.), not just a paint
tool
Add Text to annotate
Control font, size, color, orientation
Setting Run Conditions
Run > Setup menu dialog seven tabs
Project Parameters Title, Name, Project Description, stats
Replication Parameters
Number of Replications
Initialization options Between Replications
Start Date/Time to associate with start of simulation
Warm-up Period (when statistics are cleared)
Replication Length (and Time Units)
Hours per Day (convenience for 16-hour days, etc.)
Base Time Units (output measures, internal computations, units
where not specified in dialog, e.g. Plot X Axis time units)
Terminating Condition (complex stopping rules)
Tabs for run speed, run control, reports, array sizes, visuals
Terminating your simulation:
You must specify part of modeling
Arena has no default termination
If you dont specify termination, Arena will usually keep running forever
Running It
Plain-vanilla run: Click
from Standard toolbar
(like audio/video players)
First time or after changes: Check
Enters run mode can move around but not edit
Speed up or slow down animation display via slider bar
Or tap > on keyboard to speed up, < to slow down
When done, asked if you want to see summary reports
Click
to get out of run mode (cant edit until you do)
Can pause run with or Esc key
Other run control, viewing, checking options
Viewing Reports
Click Yes in Arena box at end of run
Default installation shows Category Overview
report summarizes many things about run
Opens new reports window (separate from model window)
inside Arena window
Project Bar shows Reports panel, different reports (each
one would be a new window)
Remember to close all reports windows before future runs
Reports have pages to browse (
and
)
Also, table contents tree at left for quick jumps via
Times are in Base Time Units for model
Viewing Reports Examples
Entity Time Total Time Part:
Avg. time in system was 6.4397 min., max was 12.6185
Resource Usage Instantaneous Utilization
Drill Press:
Utilization was 0.9171 (busy 91.71% of the time)
Process Other Number In Drilling Center:
During run, 7 parts entered Drilling Center
Process Other Number Out Drilling Center:
5 entities left Drilling Center (so were produced)
Entity Time Wait Time Part:
Avg. wait time in all queues was 3.0340 min. (counts only
entities that left the system, but Queue Time Waiting
Time Drilling Center.Queue counts all entities that left
this queue, so these results can differ)
Entity Other Wip Part:
Average Work in Process was 1.7060, max WIP was 4
Types of Statistics Reported
Many output statistics are one of three types:
Tally avg., max, min of a discrete list of numbers
Time-persistent time-average, max, min of a plot of
something where x-axis is continuous time
Used for discrete-time output processes like waiting times in queue,
total times in system
Used for continuous-time output processes like queue lengths, WIP,
server-busy functions (for utilizations)
Counter accumulated sums of something, usually just
nose counts of how many times something happened
Often used to count entities passing through a point in model
More on Reports and their Files
Reports we just saw based on MS Access .mdb
database that Arena actually writes as it runs
.mdb file is saved and can be viewed later
Viewing within Arena via SAP Crystal Reports to query
Access database, produce reports like Category Overview
Arena also produces a plain-text summary report
(.out filename extension)
Previous versions of Arena, underlying SIMAN language
Fairly cryptic, but gives quick view of lots of output data
Also contains a few things not in Access/Crystal Reports
Multiple reports for multiple replications
Half Width columns 95% confidence intervals
on outputs in long-run simulations later
Build It Yourself
Build same model from scratch details in text
Handy user-interface tricks:
Right-click in an empty spot in flowchart view small box of
options, including Repeat Last Action useful in repetitive
editing like placing lots of same module type
Ctrl+D or Ins key duplicates whatevers selected in
flowchart view, offsetting it a bit drag elsewhere, edit
Open new (blank) model window name it, save
it, maybe maximize it
Attach modeling panels youll need to Project Bar
if not there
Build It Yourself (contd.)
Place, connect flowchart modules
Edit flowchart, data modules as needed
Experiment with Expression Builder right-click in
expression field
Add plots, animation, artwork
Add named views (? key or View > Named Views
or ), with hot key (case-sensitive)
Edit Run > Setup dialog
Displays in text
Compact way of saying what needs to be done in a dialog
Omits Arena defaults
Shows completed dialogs, table of actions needed
Displays for Create, Process, Dispose
Modules
Display for Queue-Length Plot
Axes tab showing here ...
Figure 3-14 in book shows Data Series tab
Case Study: Specialized Serial vs.
Generalized Parallel Processing
Loan applications go through four steps
Check credit, prepare covenant, price loan, disburse funds
Each step takes expo (1 hour)
Applications arrive with expo (1.25 hour) interarrival times
First application arrives at time 0
Run for 160 hours
Watch avg, max no. applications in process (WIP);
avg, max total time in system of applications
Four employees, each can do any process step
Serial specialized processing or generalized
parallel processing?
Whats the effect of service-time variability on decision?
Case Study: Model 3-2,
Specialized Serial Processing
Bettys now idle but Chuck
and Doris are overloaded
wasted capacity?
File Model 03-02.doe
All files in book: www.mhhe.com/kelton,
Student Edition, BookExamples.zip
Create module similar to Model 3-1 except expo
mean, time units
Set Entity Type to Application
Case Study: Model 3-2,
Specialized Serial Processing (contd.)
Four Process modules similar to Model 3-1
Dispose module similar to Model 3-1
Default entity picture (report) is OK
Default Resource animations almost OK
Make Idle picture same as Busy
Select correct Resource name in Identifier field
Queue, Resource data modules OK
Plot WIP use Expression builder to find
EntitiesWIP(Application)
Four separate Resources
Expo process time: Expression (via Expression Builder)
Fixed Y axis max = 25 to compare with next three models
Fill in Run > Setup, lengthen queue animations
Case Study: Model 3-3,
Generalized Parallel Processing
Only one place to queue,
but processing times are
longer sum of four IID
expo (1 hour) times
File Model 03-03.doe
Create, Dispose, plot, Run > Setup almost same
Just change some labels, etc.
Case Study: Model 3-3,
Generalized Parallel Processing (contd.)
Replace four earlier Process modules with just a
single Process module
One Resource (Loan Officer), but four units of it
Still set Quantity to 1 since application just needs 1 officer
Delay type Expression
EXPO(1) + EXPO(1) + EXPO(1) + EXPO(1)
Why not 4*EXPO(1)?
Modify Resource Animation for four units
Open Model 3-2 Resource Animation to get Resource
Picture Placement window, open Idle picture
Duplicate white square three times, realign; copy to Busy
In model window, double-click Seize Area, then Add three
Still not completely accurate animation (order) need Sets
Case Study:
Compare Model 3-2 vs. 3-3
Caution: This is from only one replication of each
configuration, so theres output variability
Are differences statistically significant? (Exercise 6-19)
Case Study:
Effect of Task-Time Variability
Is parallel always better than serial under any
conditions?
Many aspects could matter
Focus on task-time variability
Now, each task time ~ expo (1 hour)
Highly variable distribution
P(task time < 10 minutes) = 0.15
P(task time > 2 hours) = 0.14
In serial config., just one large task time congests greatly
See text
In parallel config. it would also congest, but probably not by as
much since other three tasks are probably not all large too
Other extreme each task time is exactly 1 hour
Leave interarrival times as expo (1.25 hours)
Models 3-4 (serial), 3-5 (parallel) alter Process modules
Case Study:
Effect of Task-Time Variability (contd.)
For constant service, parallel improvement
appears minor
Maybe not even statistically significant (Exercise 6-19)
Some further questions
In parallel, work is integrated/generalized, so would it be
slower per task? (Exercises 3-13, 6-20)
Effect of worker breaks? (Chapters 4, 5)
Differences statistically significant? (Exercises 6-19, 6-20)
More on Menus File Menu
Model-file management
Template attach/detach
DXF import (from CAD packages), Visio import
Color palettes
Printing
Send (e-mail) open model file
Recent models
Exit from Arena
Edit Menu
Undo/Redo
Cut/Copy/Paste
Paste Link (create OLE link)
Duplicate, Delete selection
Select/Deselect All
Entity Pictures change content, definition of
pictures presented in Entity data module
Find searches all modules, animation objects
for a text string useful for finding wrong
names, typos after an error message from Arena
Edit Menu (contd.)
Replace replaces all instances of a text string
with another text string
Properties display internal Arena object
properties
Links to link to other files (spreadsheets,
sounds, etc.)
Insert New Object/Control from other
applications (e.g., graphics, VBA, ActiveX)
Object edit object imported from another
application
View Menu
Zooming discussed before
Views canned Arena views of flowchart view
Named Views define, change, use views
Rulers, Grid, Guides, Snap, Glue align objects
Zoom Factor step size when zooming
Page breaks shows page breaks if printed
Data Tips toggles display of Data Tips
Connector Arrows show entity-flow direction
Layers which objects show up in which mode
View Menu (contd.)
Split Screen if checked, shows both flowchart,
spreadsheet views
Runtime Elements Bar if checked, displays
window allowing choice of what is displayed
during execution
Toolbars decide which toolbars show up
Project/Status Bar toggle to show up or not
Debug Bar if checked, displays window of
debugging tools during run
Tools Menu
Arena NewsFlash internet feed for updates, etc.
Arena Symbol Factory make animation symbols
Separate applications for modeling, analysis
Input Analyzer fit probability distributions for input, using
field-collected data more in Chapt. 4
Process Analyzer run, compare many scenarios at once
more in Chapt. 6
Also Output Analyzer not on menus ... start from Start menu
Visual Designer for 3D animation, etc.
Expression Builder very useful tool (described earlier)
ReportDatabase export results to CSV file
Model Documentation Report generate HTML
file with many details of this model
Tools Menu (contd.)
Import/Export model to/from Database bring in,
save model details to Excel or Access
OptQuest for Arena separate application that
takes over running of model to search for an
optimal scenario more in Chapt. 6
AVI Capture record actions (editing, animation)
to .avi file for playback
Macro create Visual Basic macros (mini
programs), VB editor ... more in Chapter 10
Module count reports module instances
Options control many aspects of how Arena
works, looks
Arrange Menu
For modeling, graphics objects first select
object(s)
Bring object to Front, Send to Back stacking
Group, Ungroup objects (move together, etc.)
Flip around Vertical, Horizontal line
Rotate object (90 clockwise)
Align objects on top, bottom, left, or right edges
Distribute objects evenly (horizontally, vertically)
Flowchart Alignment arrange flowchart modules
(horizontally, vertically)
Snap Object to Grid for selected object(s)
Change Object Snap Point on snapped object
Object Menu
Connect tool changes cursor to cross hairs
Auto-Connect new module to selected module
Smart Connect new connections in
horizontal/vertical segments only
Animate Connectors show entities moving (at
infinite speed for statistics collection)
Animate At Desktop Color Depth use desktop
color depth (could slow run)
Hit twice for repeated connections, right-click or Esc to exit
If not checked, color is 8-bit (256 colors), runs faster
Submodel define, manage hierarchical
submodels, useful for large, complex models
Run Menu
Setup control model run conditions
Entries to run, check, pause, step through
Alternatives to watch execution, view results (or
errors)
Control how run goes and is displayed
Most capabilities on Run Interaction Toolbar
details later
Access code in underlying SIMAN simulation
language
Window Menu
Cascade, Tile multiple open model windows
Arrange Icons for any minimized model windows
Use system Background Color use Windows
colors rather than Arena settings
List of open model windows
Help Menu
One of several ways to get into Help system
Arena Help TOC, Index, Search
Whats This? adds ? to cursor, then click on
things for brief description
Release notes recent changes, requirements
Arena Smart Files subject-based index to many
small but complete models that illustrate specific
modeling techniques (very useful)
List of attached modeling panels select to get
Help on that one
Help Menu (contd.)
Arena Product Manuals detailed PDF reference
documents on Arena components
Activation for licensing
Copy protection information for commercial,
research, and lab versions
About Arena... version number, licensing
information, etc.
More on Toolbars
Collections of buttons for frequent operations
Most are duplication of menu entries
Standard, Draw, Animate, Integration, View, Arrange, Run
Interaction, Record Macro, AVI Capture, Animate Transfer,
Dialog Design, Project/Status/Debug Bars
View > Toolbars (or right-click in a toolbar area)
to decide which ones show up, which to hide
Toolbars can be torn off (floating palettes), or
docked to an edge of screen
Arena remembers Toolbars for next time
View > Toolbars > Customize to alter how
toolbars and buttons are displayed
See text for run-through description of toolbars
and buttons (or, just experiment)
More on Drawing
Draw via toolbar buttons only (no menus):
0
Line, Polyline (Shift for 45 ), Arc, Bzier Curve
Box, Polygon, Ellipse (fill, line, shade)
Text (font, size, style)
Colors for Lines, Fill, Text, Window Background
Line Width, Style, Arrow Style, Pattern
Show Dimensions shows sizes, lengths for
precise drawing
Best way to learn: play around on scratch model
Printing
Print all or parts of flowchart view of active model
window supports color
Usual Print, Print Preview, Print Setup (File menu)
Could consume many pages also prints named
views separately
Print Preview, select only what you want for printing
View > Page Breaks to show how pages will break
Alternative to printing from Arena: Windows
Snipping Tool or PrintScreen key sends screen
to clipboard, paste into another application
Alt+PrintScreen sends only active window to clipboard
Could first pass through a paint application to crop, etc.
Help!
Extensive, comprehensive online system
including complete (electronic) manuals
Interlinked via hypertext for cross referencing
Multiple entry points, including Help menu
(described above), links to websites
button for context-sensitive help
Click it, then click what youre curious about
button in most dialogs
button (Whats This?) in dialogs for info on
things in that dialog
Help! (contd.)
Tooltips roll over something, get sticky note
SMART library small models illustrating points
subject index via Help > Arena Smart Files
See the Help entry for location of files on your system
Typical location on Windows 7:
C:\Users\Public\Public Documents\Rockwell Software\Arena\Smarts
Online Help
http://www.rockwellautomation.com/support
Examples folder several detailed, complete
examples, some fairly complex
Typical location on Windows 7:
C:\Users\Public\Public Documents\Rockwell Software\Arena\Examples
More on Running Models
Run Menu; Standard & Run Interaction toolbars
Run > Setup many options to control run
These are attached to model, and are not global
Run > Go
run simulation normally
(depends on selections from Run > Run Control
and Tools > Options > Run Control)
Run > Step
one step at a time (verify,
debug)
Run > Fast-Forward
disable animation
(faster)
Run > Pause
(or Esc key) freeze run, resume
with Go
Run > Start Over
go back to beginning of
simulation
More on Running Models (contd.)
Run > End
get out of run mode
Run > Check Model
like compiling
Run > Review Errors for most recent Check
Run > Run Control > Command
bring up
interactive command-line window to control run
Run > Run Control > Breakpoints
set times,
conditions to interrupt for checks, illustration
Run > Run Control > Watch
bring up a
window to watch a variable or expression during
run
More on Running Models (contd.)
Run > Run Control > Break on Module
set/clear break when an entity enters or resumes
activity on a module
Run > Run Control > Highlight Active Module
highlight flowchart module being executed
Run > Run Control > Batch Run (No Animation)
run model with no animation this is even faster
than Fast-Forward usually used for
production runs for statistical analysis
Run > SIMAN view or write model (.mod) and
experiment (.exp) files for underlying SIMAN
model
What Well Do ...
Model 4-1: Electronic assembly/test system
Model 4-2: Enhanced electronic assembly/test
Modeling approaches
New Arena modules (Decide, Record)
Resource Schedules, States, and Failures
Frequency outputs
More on utilizations
Model 4-3: Enhancing the animation
Queues, Entity Pictures, Resource Pictures
Adding Plots and Variables
What Well Do ... (contd.)
Model 4-4: Adding entity travel times
Stations, Transfers, Routes, animation of entity movement
Finding and fixing model errors
Input analysis
Specifying input distributions, parameters
Deterministic vs. random input
Collecting and using data
Fitting input distributions via Arena Input Analyzer
No data?
Nonstationary arrival processes
Multivariate and correlated input data
Electronic Assembly/Test System
(Model 4-1)
Produce two different sealed elect. units (A, B)
Arriving parts: cast metal cases machined to
accept electronic parts
Part A, Part B separate prep areas
Both go to Sealer for assembly, testing then to
Shipping (out) if OK, or else to Rework
Rework Salvaged (and Shipped), or Scrapped
Part A
Interarrivals: expo (5) min.
From arrival point, go immediately to Part A Prep
Go immediately to Sealer
Process = (machine + deburr + clean) ~ tria (1, 4, 8) min.
Process = (assemble + test) ~ tria (1, 3, 4) min.
91% pass (i.e, 0.91 probability independently for each part),
go to Shipped; Else go to Rework
Rework: (re-process + testing) ~ expo (45) min.
80% pass (i.e, 0.80 probability independently for each part),
go to Salvaged; Else go to Scrapped
Part B
Interarrivals: batches of 4, expo (30) min.
Upon arrival, batch breaks into 4 individual parts
Proceed immediately to Part B Prep area
Go to Sealer
Process = (machine + deburr +clean) ~ tria (3, 5, 10)
Process = (assemble + test) ~ weib (2.5, 5.3) min. ,
different from Part A, though at same station
91% pass, go to Shipped; Else go to Rework
Rework: (re-process + test) = expo (45) min.
80% pass (i.e, 0.80 probability independently for each part),
go to Salvaged; Else go to Scrapped
Run Conditions, Output
Start empty & idle, run for 32 hours
Collect statistics for each work area on
Resource utilization
Number in queue
Time in queue
For each exit point (Shipped, Salvaged,
Scrapped), collect total time in system (a.k.a.
cycle time)
Developing a Modeling Approach
Define pieces of model, modules, data structures,
control logic
Appropriate level of detail judgment call
Often multiple ways to model, represent logic
This model:
Entities are individual parts (two types)
Separate Create modules for two part types
Separate Process modules for each Prep area
Process modules for Sealer and Rework, each followed by
a Decide module (2-way by Chance)
Depart modules for Shipped, Salvaged, Scrapped
Attribute Sealer Time assigned after Creates in Assign
modules (parts have different times at the Sealer)
Record modules just before Departs for time in system
Building Model
New model window
Attach Basic Process panel (if needed)
Place modules
Create ( 2)
Assign ( 2)
Process ( 4)
Decide ( 2)
Record ( 3)
Dispose ( 3)
Alternate strategy
place one module at a
time, fill it out completely
Right click repeat last action (place module)
Auto-Connect, or manually connect via
Part A Create Module
Name: Part A Arrive
Entity Type: Part A
Time Between Arrivals
Type: Random (Expo)
Value: 5
Units: Minutes
Pull-down list with options
Once these entries are made,
they are placed on list for
names of that type (Module
Name, Entity Type, etc.) and
will appear on future pull-down
lists for that type of name.
Pull-down list with options
Default whats not mentioned above
Part B Create Module
Name: Part B Arrive
Entity Type: Part B
Time Between Arrivals
Type: Random (Expo)
Value: 30
Units: Minutes
Pull-down list with options
Pull-down list with options
Entities per Arrival: 4
Part A Attributes Assign Module
Name: Assign Part A Sealer and Arrive Time
Add button:
Type: Attribute
Attribute Name: Sealer Time
New Value: TRIA(1, 3, 4)
Add button:
Type: Attribute
Attribute Name: Arrive Time
New Value: TNOW (to compute time in system on exit)
TNOW is internal Arena variable name for simulation clock; see
Help > Arena Help > Contents > Variables, Functions, and Distributions > Variables >
Date and Time Variables
Part B Attributes Assign Module
Name: Assign Part B Sealer and Arrive Time
Add button:
Type: Attribute
Attribute Name: Sealer Time
New Value: WEIB(2.5, 5.3)
Add button:
Type: Attribute
Attribute Name: Arrive Time
New Value: TNOW
Names for things in Arena
Default names usually suggested
Names placed on appropriate pull-down lists for future reference
All names in a model must be unique (even across different kinds of objects)
Prep A Process Module
Name: Prep A Process
Action: Seize Delay Release
Resources subdialog (Add button):
Type: Resource (a pull-down option)
Resource Name: Prep A
Quantity: 1 (default)
Delay Type: Triangular
Units: Minutes
Minimum: 1
Value (Most Likely): 4
Maximum: 8
If several Resources
were named (Add
button), entity would
have to Seize them all
before Delay could start.
Prep B Process Module
Name: Prep B Process
Action: Seize Delay Release
Resources subdialog (Add button):
Type: Resource (a pull-down option)
Resource Name: Prep B
Quantity: 1 (default)
Delay Type: Triangular
Units: Minutes
Minimum: 3
Value (Most Likely): 5
Maximum: 10
Sealer Process Module
Name: Sealer Process
Action: Seize Delay Release
Resources subdialog (Add button):
Type: Resource (a pull-down option)
Resource Name: Sealer
Quantity: 1 (default)
Delay Type: Expression
Units: Minutes
Expression: Sealer Time
Recall Sealer Time attribute
was defined upstream for both
Parts A and B now its value is
being used allows for different
distributions for A and B.
Sealer Inspection-Result Decide Module
Decide module provides branch points
By Condition (entity Attributes, global Variables)
By Chance (multi-sided, possibly-biased hypercoin flip)
Name: Failed Sealer Inspection
Type: 2-way by Chance (default)
Percent True: 9
Different exit points for True, False results
connect appropriately downstream
Note its percent true, not probability of true so 9 means probability of 0.09
We arbitrarily decided true meant part failed inspection could have reversed (but would
change numerical results ... why? ... does this upset you? ... why?)
This is a rich, deep, versatile module explore its Help button
Rework Process Module
Name: Rework Process
Action: Seize Delay Release
Resources subdialog (Add button):
Type: Resource (a pull-down option)
Resource Name: Rework
Quantity: 1 (default)
Delay Type: Expression
Units: Minutes
Expression: EXPO(45)
Had to use general Expression choice for
Delay Type since what we want (EXPO) is
not directly on Delay Type pull-down list.
Rework Inspection-Result Decide
Module
Name: Failed Rework Inspection
Type: 2-way by Chance (default)
Percent True: 20
We arbitrarily decided true
meant part failed inspection
Record Modules
Arena collects and reports many output statistics
by default, but sometimes not all you want
Want time in system (avg, max) of parts sorted by
their exit point (Shipped, Salvaged, Scrapped)
Its this sorting that Arena doesnt do by default ... it would
automatically sort by Entity Type if we had Entities checked
in Run > Setup > Project Parameters (which we dont)
Record module can be placed in flowchart to
collect and report various kinds of statistics from
within model run as entities pass through it
For Tally-type output performance measures
Shipped Parts Record Module
Name: Record Shipped Parts
Type: Time Interval
Attribute Name: Arrive Time
Records time elapsed up to now (TNOW) from when an
entity attribute was marked with a time stamp upstream ...
Attribute Name is below ...
There are several other options for Type explore via
Record modules Help button!
Was defined upstream as clock value in Assign modules
instantly after each entity was Created
Tally Name: Record Shipped Parts
Determines label in reports
Other two Record modules
just like this except for Name
and Tally Name.
Dispose Modules
Three separate exit points for three separate part
disposition (Shipped, Salvaged, Scrapped)
Could have directed all three exit types to a
single Dispose module
Separate ones gets animation counts of three dispositions
Separate Dispose modules allows for differentially checking
boxes to Record Entity Statistics
Produces flow statistics separated by entity type (if Entities
Statistics Collection is checked in Run > Setup > Project
Parameters), not by final disposition of part so we did need our
Record modules and Arrive Time attribute
Run > Setup for Run Control
Without this, model would run forever no
defaults for termination rule
Thats part of modeling, and generally affects results!
Project Parameters tab:
Fill in Project Title, Analyst Name
Defaults for Statistics Collection, but we cleared check box
for Entities
Not needed for what we want (we installed our own Record
modules), and would slow execution
Replication Parameters tab:
Replication length: 32, accept Hours default for Time Units
Base Time Units: Minutes for inputs without Time Units
option, internal arithmetic, and units on output reports
Different Part A, B Entity Pictures
Entity data module (just single-click on it in
Project Bar, edit via spreadsheet only)
Row for each Entity Type (Part A, Part B)
Pull down Initial Picture pull-down menu, select
different pictures for each Entity Type
Edit > Entity Pictures to see, change list of pictures thats
presented here more later
Running Model
Check
(will automatically pre-Check if needed)
Some graphics dont show during run will return when
you End your run control via View > Layers
Status Bar shows run progress replication number,
simulation time, simulation status
Animation speed
Find button to help find errors
Go
(if desired)
Slider bar at top, or increase (> key), decrease (< key)
Pause ( ) or Esc key;
to resume
Run > Step ( ) to debug
Run > Fast-Forward ( ) to turn off animation
Run > Run Control > Batch Run (No Animation) is fastest
Viewing Results
Counters during animation for modules
Create, Dispose, Decide incremented when entity leaves
Process number of entities currently in module
Asked at end if you want to see reports
What you get depends on Run > Setup > Project Parameters
Navigate through report with browsing arrows, tree at left
Tally, Time-Persistent, and Counter statistics
Avg, Min, Max, and 95% Confidence Interval half-widths
Looks like Rework area is bottleneck ... more later
Confidence intervals are for steady-state expectations Chapter 7
May not be produced if run is not long enough for reliable stats
Generally difficult/unreliable to draw conclusions
from just one run more later
Model 4-2: Enhanced Electronic
Assembly and Test System
Original model shown to production manager
Pointed out that this is only first shift of a two-shift day on
second shift there are two operators at Rework (bottleneck
station) 16-hour days
Pointed out that Sealer fails sometimes
Wants to buy racks to hold rework queue
Uptimes ~ expo (2) hours
Repair times ~ expo (4) min.
A rack holds 10 parts
How many racks should be bought?
Run for 10 days (16-hour days)
Need: Resource Schedules, Resource States,
Resource Failures
Run Conditions
Redefine a day to be 16 hours Run > Setup >
Replication Parameters
Change Replication Length to 10 (of these) days
Schedules
Vary Capacity (no. units) of a resource over time
In Resource Data module (spreadsheet view)
For Rework Resource, change Type from Fixed
Capacity to Based on Schedule
Two new columns Schedule Name and Schedule Rule
Type in a Schedule Name (Rework Schedule)
Select a Schedule Rule details of capacity decrease if
Resource is allocated to an entity
Wait Capacity decrease waits until entity releases Resource, and
break will be full but maybe start/end late
Ignore Capacity goes down immediately for stat collection, but
work goes on until finished break could be shorter or gone
Preempt Processing is interrupted, resumed at end of break
Schedules (contd.)
Define actual Schedule that Resource will follow
Schedule data module
Row already there since we defined Rework Schedule
Format Type is Duration for entries based on elapsed time
past simulation start time
Type is Capacity, for Resource schedule (more later on
Arrival Type)
Click in Durations column, get Graphical Schedule Editor
X-axis is time, Y-axis is Resource Capacity
Click and drag to define graph
Options button to control axis scaling, time slots in editor, whether
schedule loops or stays at a final level forever
Can use Graphical Schedule Editor only if time durations are
integers, with no Variables or Expressions involved
Schedules (contd.)
Alternatively, right-click in row, select Edit via Dialog
Enter schedule Name
Enter pairs for Capacity, Duration as many pairs as needed
If all durations are specified, schedule repeats forever
If any duration is empty, it defaults to infinity
Can involve Variables, Expressions
Another alternative right-click in row, select Edit via
Spreadsheet
Enter capacity Value, Duration pairs
Resource Failures
Usually for unplanned, random downtimes
Can start definition in Resource or Failure module
(Advanced Process panel) well start in Failure
Attach Advanced Process panel if needed, singleclick on Failure, get spreadsheet view
To create new Failure, double-click add new row
Name the Failure
Type Time-based, Count-based (well do Time)
Specify Up Time, Down Time, with Units for both
Resource Failures (contd.)
Attach this Failure to correct Resource
Resource module, Failures column, Sealer row click
Get pop-up Failures window, pick Failure Name Sealer
Failure from pull-down list
Choose Failure Rule from Wait, Ignore, Preempt (as in
Schedules)
Can have multiple Failures (separate names)
acting on a resource
Can re-use defined Failures for multiple
Resources (operate independently if they involve
random variables)
Frequencies
Record time-persistent occurrence frequency of
variable, expression, or resource state
Use here to record % of time rework queue is of length 0,
(0, 10], (10, 20], for info on number of racks needed
Statistic data module (Advanced Process panel)
Five Types of statistics, of which Frequencies is one
Specify Name (Rework Queue Stats),
Frequency Type (Value)
Specify Expression to track and categorize
Right-click in field to get to Expression Builder
Report Label (Rework Queue Stats)
Pop-up secondary spreadsheet for Categories (browse file)
Frequencies (contd.)
Add another Frequency (in Statistic module) to
give a finer description of Sealer states
Produces statistics on proportion of time Sealer is in each
of its three possible states Busy, Idle, and Failed
Frequencies are not part of default Category
Overview report
Open Frequencies report from Project Bar (get separate
window)
Results of Model 4-2
Differ from those of Model 4-1 since this is a
longer run, modeling assumptions are different
All of which causes underlying random-number stream to
be used differently (Chapter 12)
Prep A/B didnt change (other than run length and
random variation) need statistical analysis of
simulation output (Chapters 6, 7, 12)
Sealer is more congested (it now fails)
Rework is less congested (50% higher staffing)
Frequencies report suggests one rack suffices
about 95% of the time, two racks all the time
Standard vs. Restricted Percents see text
Utilizations Fine Points
Two utilizations reported for each Resource
Instantaneous Utilization is time-average of ratio of number
of units that are busy to number of units that are scheduled
Scheduled Utilization is average number busy divided by
average number available
By definition, counts periods when zero units are scheduled as
zero-utilization periods
No division-by-zero problem, assuming there were ever any units of
Resource scheduled at all (if not, it shouldnt be in model)
Identical for fixed-capacity Resource
Can differ for Resources on a variable Schedule
If Resource capacity varies among several different positive
values, its better to use Scheduled Utilization
More issues, even finer points see text
Model 4-3: Enhancing the Animation
Get Spartan generic default animation for some
things (queues, connector-animation movement)
Often want to customize, enhance it a bit
More realism, impact
Pull animation away from logic in model window
Usually sufficient for verification, validation
Useful for big models, complex animation
Named Views for model logic, animation, or close-ups
Default animation objects are connected to model
logic and move with the module
Identifiers, physical location (Shift-drag to decouple)
Changing Animation Queues
Lengthen (click, drag, maybe hold shift) to hold
more entities
Simulation logic, results OK if animated queue overflows
Rotate to re-orient for realism
Change form of queue from Line (default) to
Point fixed places for entities
Double-click on queue
Select Type to be Point
Click Points button
Successively click Add for points, then OK
Drag them around on screen
Check Rotate box to show entities turning
Changing Entity Pictures
Earlier used Entity data module to assign
different Initial Pictures to different Entity Types
Can customize list, alter pictures in it
Edit > Entity Pictures
Left column names, pictures currently on list
Right column picture libraries (.plb filename extension)
Add a hand-drawn picture Add button on left, name it in
Value field at top, double-click on blank depressed button,
then artwork (or paste in a copied graphics image)
New name wont appear in Entity data module until you type it there
Edit an existing picture double-click, artwork
Copy a picture over from picture library
Adding Resource Pictures
Animate a Resource Resource button
in
animate toolbar get Resource Picture
Placement window
Left column default pictures for different
Resource states
Attach logically to a Resource by Identifier pull-down list
Double-click to edit artwork by hand, or paste in previously
copied graphics images
Seize area where seizing entity will reside
Multiple seize areas for multi-capacity Resources
Right column picture libraries (.plb files) can
copy over to selected (depressed) state pictures
Accept window, cross hairs, click to place
Resize, reposition later
Adding Variables and Plots
Variable animation just show a value of
something as a number, watch it change
Variable object
from Animate toolbar
Double-click, specify Expression to be shown (Expression
Builder), and cosmetics
Resize, reposition later
Dynamic animated plots Chapter 3
Other animation objects from Animate toolbar
Clock (TNOW), variety of formats
Level (thermometer) animation
Others discussed later
Model 4-4: Electronic Assembly and
Test System with Part Transfers
Generalize Model 4-3
All part transfers now take 2 minutes (not instant)
Model, animate this
Materially changes model logic, results
Two-minute transfer times for:
Arriving parts to prep areas
Departing parts to appropriate exit
All internal part transfers
Transfers take two minutes regardless of distance
Fix this (unrealistic) assumption in Chapter 8
New Arena Constructs
Station location where some process occurs
Arrivals, manufacturing cells, departures
Each Station given a unique name
Can serve as an entry point for a section of model logic
Station marker
represents a logical station in
flowchart/animation
Station Transfer entities move between Stations
without direct connection
Several different types well use Routes here, which allow
for positive transfer time, but no other delays like room on
transitway or transporters
Route paths represent Routes in flowchart/animation
Adding Route Logic From Arrival
Stations and Station Transfers affect both model
logic and animation
Start with Model 4-3 change to Model 4-4
For incoming parts (A and B) delete connection
from Assign modules to Prep Process modules
Replace with Station/Route module pairs
Station module (Advanced Transfer panel) define entitys location
Module Name vs. Station Name
Route module (Advanced Transfer panel) send entity out
Route Time, Destination Station
No direct connections exiting from Route modules Route
modules Destination Station Name defines that
Adding Remaining Route Logic
Add Station modules for entry to each Prep area
Process modules for Prep A, Prep B unchanged
After prep, entities connected to Route module to
send to next station (sealer)
Dont need a separate Station module for outgoing side
Similar changes for rest of model
Station names are Prep A Station, Prep B Station,
and are destination stations for Routes after arrivals
Station modules for incoming parts into sealer, rework,
each of three Record modules (entity exit points)
Route modules for outgoing parts out of sealer inspection,
rework inspection (two for each Decide module pass/fail)
Could run model now, get correct results but
no animation of transfers
Why Not Just Add Delays?
Simpler way to get two-minute transfer times:
Insert a Process module with Action = Delay for 2 minutes
on each relevant connection
Or, use Delay module from Advanced Process panel
This would work from modeling, numerical-output
viewpoints
But would not allow animation of part transfers,
so well proceed with Stations and Routes
Altering Animation Stations
Add animation for Stations and Routes
Station button , Animate Transfer toolbar
Attach Identifier to it from pull-down list of station names
Get cross hairs, place (click) marker in animation
Can place several station markers for same logical station
(e.g., to represent incoming, outgoing sides)
Can drag station markers around later
Altering Animation Routes
Route button
Options for appearance of entities as they travel route
Get cross hairs; click in origin, destination Station Markers
from Animate Transfer toolbar
Intermediate clicks for corners along route
Can drag around endpoints, corners later
Alternatively, use Route animation to create both Station
markers and Route animation
Click for beginning Station marker
Intermediate clicks for route corners
Double-click for ending Station marker
Then go back and double-click on the two Station markers to define
their logical Identifiers
Altering Animation Entity Pictures
Part B arrivals are in batches of four parts/batch
But constant travel time to Prep B implies they travel on
top of each other so it looks like just one part B
Try change Route time from 2 to EXPO(2), see
separation along route
Create a dishonest illusion to animate batch
Assign module just after Part B Arrive
Add assignment of Entity Picture to Picture.Batch B
Edit > Entity Pictures to draw new picture
Copy Picture.Part B and rename it Picture.Batch B
Double-click on picture, use Picture Editor to get four circles
When batch arrives to Prep B, change to single circle
Add Assign module after Prep B Arrival Station
Finding and Fixing Model Errors
If error prevents model from running, Arena will
try to detect and lead you to it in Check or Run
Undefined (or inconsistently spelled) Variables, Attributes,
Resources
Unconnected modules
Duplicate names
Examples see text
Highlight Active Module selects active module
during run animation
View > Layers while running change what
shows during run animation
Finding and Fixing Model Errors (contd.)
Module Break stop when entity reaches module
Debug Bar
View > Debug Bar
Breakpoints, Calendar, Active Entity, Watch
Run Controller
Examples see text
Input Analysis: Specifying Model
Parameters, Distributions
Structural modeling: what weve done so far
Logical aspects entities, resources, paths, etc.
Quantitative modeling
Numerical, distributional specifications
Like structural modeling, need to observe systems
operation, take data if possible
Deterministic vs. Random Inputs
Deterministic: nonrandom, fixed values
Random (a.k.a. stochastic): model as a
distribution, draw or generate values from to
drive simulation
Number of units of a resource
Entity transfer time (?)
Interarrival, processing times (?)
Transfer, Interarrival, Processing times
What distribution? What distributional parameters?
Causes simulation output to be random, too
Dont just assume randomness away validity
Collecting Data
Generally hard, expensive, frustrating, boring
System might not exist
Data available on wrong things might have to change
model according to whats available
Incomplete, dirty data
Too much data (!)
Sensitivity of outputs to uncertainty in inputs
Match model detail to quality of data
Cost should be budgeted in project
Capture variability in data model validity
Garbage In, Garbage Out (GIGO)
Using Data:
Alternatives and Issues
Use data directly in simulation
Read actual observed values to drive model inputs
(interarrivals, service times, part types, )
Arena ReadWrite module ... see Model 10-2
All values will be legal and realistic
But can never go outside your observed data
May not have enough data for long or many runs
Computationally slow (reading disk files)
Or, fit probability distribution to data
Draw or generate synthetic observations from this
distribution to drive model inputs
Weve done it this way so far
Can go beyond observed data (good and bad)
May not get a good fit to data validity?
Fitting Distributions to Data
with Arena Input Analyzer
Assume:
Have sample data: Independent and Identically Distributed
(IID) list of observed values from actual physical system
Want to select or fit a probability distribution for use in
generating inputs for simulation model
Arena Input Analyzer
Separate application, also via Tools menu in Arena
Fits distributions, gives valid Arena expression for
generation to paste directly into simulation model
Fitting Distributions to Data
with Arena Input Analyzer (contd.)
Fitting = deciding on distribution form
(exponential, gamma, empirical, etc.) and
estimating its parameters
Several different methods (Maximum likelihood, moment
matching, least squares, )
Assess goodness of fit via hypothesis tests
H0: fitted distribution adequately represents data
Get p value for test (small = poor fit)
Fitted theoretical vs. empirical distribution
Continuous vs. discrete data, distribution
Best fit from among several distributions
Data Files for Arena Input Analyzer
Create data file
Open data file from within Input Analyzer
Editor, word processor, spreadsheet, ...
Plain ASCII text save as text or export)
Values separated by white space blanks, tabs, linefeeds
Otherwise free format
File > New or
File > Data File > Use Existing or
Get histogram, basic summary of data
To see data file: Window > Input Data
Generate fake data file to play around
File > Data File > Generate New
Fit Menu
Fits distributions, does goodness-of-fit tests
Fit a specific distribution form
Plots density over histogram for visual test
Gives exact expression to Copy and Paste (Ctrl+C, Ctrl+V)
over into simulation model
May include offset depending on distribution
Gives results of goodness-of-fit tests
Chi square, Kolmogorov-Smirnov tests
Most important part: p-value, always between 0 and 1:
Probability of getting a data set thats more inconsistent with fitted distribution
than data set you actually have, if fitted distribution is truly the truth
Small p (< 0.05 or so): poor fit (try again or give up)
Fit Menu (contd.)
Fit all of Arenas (theoretical) distributions at
once
Fit > Fit All or
Returns minimum square-error distribution
Square error = sum of squared discrepancies between histogram
frequencies and fitted-distribution frequencies
Can depend on histogram intervals chosen: different intervals can
lead to different best distribution
Could still be a poor fit, though (check p value)
To see all distributions, ranked: Window > Fit All Summary
or
Fit Menu (contd.)
Fit Empirical distribution (continuous or
discrete): Fit > Empirical
Used when theoretical distributions fit poorly, or used
intentionally
Can interpret results as Discrete or Continuous distribution
Discrete: get pairs (Cumulative Probability, Value)
Continuous: Arena will linearly interpolate within data range
according to these pairs (so you can never generate values outside
range, which might be good or bad)
Edit > Copy Expression to paste the (sometimes-lengthy)
expression to Windows clipboard, then paste this copied expression
into destination field in Arena model
Need to edit end of expression slightly by adding an extra pair at the end still
inside the parentheses, , 1.000, xmax where xmax is the largest value
you ever want to generate
Issues in Fitting Input Distributions
Not an exact science no right answer
Consider theoretical vs. empirical
Consider range of distribution
Infinite both ways (e.g., normal)
Positive (e.g., exponential, gamma)
Bounded (e.g., beta, uniform)
Consider ease of parameter manipulation to
affect means, variances
Simulation model sensitivity analysis
Outliers, multimodal data
Maybe split data set (details in text)
No Data?
Happens more often than youd like
No good solution; some (bad) options:
Interview experts
Min, Max: Uniform
Avg., % error or absolute error: Uniform
Min, Mode, Max: Triangular
Mode can be different from Mean allows asymmetry
Interarrivals independent, stationary
Exponential still need some value for mean
Number of random events in an interval: Poisson
Sum of independent pieces: normal (heed left tail ...)
Product of independent pieces: lognormal
Cautions on Using Normal Distributions
Probably most familiar distribution normal bell
curve used widely in statistical inference
But it has infinite tails in both directions in
particular, has an infinite left tail so can always
(theoretically) generate negative values
If mean is big relative to standard deviation ,
then P(negative) value is small one in a million
Many simulation input quantities (e.g., time durations) must
be positive to make sense Arena truncates negatives to 0
But in simulation, one in a million can happen
See text, Model 4-5
Moral avoid normal as input distribution
Nonstationary Arrival Processes
Events (often arrivals), rate varies over time
It can be critical to model nonstationarity for
model validity
Lunchtime at fast-food restaurants
Rush-hour traffic in cities
Telephone call centers
Seasonal demands for a manufactured product
Ignoring peaks, valleys can mask important behavior
Can miss rush hours, etc.
Good model: Nonstationary Poisson process
Nonstationary Arrival Processes (contd.)
Two issues:
How to specify/estimate rate function
How to generate from it properly during simulation
Several ways to estimate rate function well just
do piecewise-constant
Divide time frame of simulation into subintervals of time
over which you think rate is fairly flat
Compute observed rate within each subinterval
In Arena, must convert to expected number of arrivals per
hour on subintervals that need not be of one-hour length
Want expected 45 arrivals in a half hour; specify rate = 90 per hour
Example: Model 5-2 in Chapter 5
Multivariate and Correlated Input Data
Usually assume all generated random
observations in a simulation are independent
(though from possibly different distributions)
Sometimes not true:
A difficult part requires long processing in both Prep and
Sealer operations
This is positive correlation
Ignoring such relations can invalidate model
See text for ideas, references