Simulation with Taylor ED

Download Report

Transcript Simulation with Taylor ED

TKMM01
Manufacturing
simulation
…….…......…...
Taylor ED
Starting up ED
• Possible to download to your personal
computers via the schools computers
• Works together with Windows 7 but without
help files (run in compatibility mode with XP)
Modeling in Taylor ED
• Objects queue up and are serviced by other objects
• Processing is modeled as a (stochastic) time step
• A model according to this principle is called a queuing network
model
• The object or building block of Taylor ED:
ATOM
Atom Overview
• Everything is an Atom
• Resources and products are atoms
• Atoms can contain other atoms
• Atoms can be moved from atom to atom
• Atoms can be created and destroyed
• Atoms can inherit behavior from atoms
• 4 Dimensional
•
x,y,z location
•
time
Application Hierarchy
•
Taylor ED
•
•
Logistic suite application
Library < model | create >
•
modeling atoms
•
functional atoms
•
Model < model | edit >
•
model atoms
•
functional atoms
Contains mother atoms
Do not modify!!!
Building a Model
• <Model | Create> or
• drag atoms from library into the 2D model layout
• double and/or right click to edit atom parameters
• time always in seconds
• sizes always in meters
Moving around in a view
• Pan:
•
press and hold left mouse button
•
move around your mouse
• Zoom
•
press and hold both left and right mouse button
•
zoom in: move your mouse vertically up
•
zoom out: move your mouse vertically down
• Change view angle (3D only)
•
press and hold right mouse button
•
move around your mouse: the center of the view window is your
pivot point
Running a Model
• <model | run>, <Shift + F4> or
•
unlimited speed
•
(synchro) real time
•
slide control
•
custom speed
to popup run control
• press reset and then run to start the simulation
Atom Channel Concept
•
<View | Channels> to set the channel view
•
0..n input/output channels
•
•
•
Input and output channels are used to pass atoms or to reference to other atoms
1 central channel
•
Tip! Use Ctrl+R
Central channel is used for referencing only
Channels connect:
•
one output is connected to one input channel
•
multiple channels can be connected to the central channel
•
connect to own central channel to delete the connection
Atom Channels
• <View | Channels> to
•
connect by dragging mouse from dot to dot
•
right click on channel dot: show current connections
•
double click on channel dot: interactively change a connection
•
create/delete channels by pressing the small plus “+” or minus “-”
sign
•
red: closed
•
green: open
• Channels as arch or line
•
<view | set | channels as arch>
•
<file | preferences | visualization>
Atom Categories
• Baseclass (mother atoms)
Do not change a mothers atom!
•
“bare” atom, no functionality
•
library atoms are created by adding functionality to a baseclass
atom
• Daughter
•
inherits functionality from it’s mother (original)
•
when creating an atom by dragging, you create a daughter
• Duplicate
•
direct copy
•
there is no inheritance of functionality between the original and the
copy
Library Tree <Shift + F2>
The treeview of the library, also the “Model Layout” window will pop up
•
•
View:
•
Atom Info: will display atom help
•
VEG: will display Visual Editing Guide
Tree
•
•
refreshes, collapse or expand the treeview
VEG
•
visual editing guide: displays the active tree atom in a simple layout view
•
autoscale, zoom in, zoom out
Model Layout Window
•
•
Edit:
•
cut, copy, paste and delete atoms
•
set the rotation
View:
•
Channels and grid settings
•
override display settings
•
up <Ctrl+U> and down <Ctrl+D> in hierarchy (highest is the model level)
Library Contents
• General
• Modeling
• Tools
•
Source
•
Operations
•
Visualization 3D
•
Queue
•
Storage
•
External Data
•
Server
•
Transporters
•
Experiments
•
Sink
•
Operators
•
Results
•
Availability
•
Other
•
Products
•
System
•
Other
Part 1
Part 2
Part 3
Model Tree <Shift + F3>
The tree-view of the complete model
Menu is the same as the library tree plus
• Right or double click:
•
atom specific:
user interface
•
general:
standard parameters editing
•
label:
atom specific labels
• VEG is more useful here
Tip! Use Refresh (F5)
to update the Model tree
Tip!
Use understandable
names on your atoms
2D/3D View
• 2D view
•
Left mouse drag: pan through the view
•
Both left and right mouse button drag:
•
Up/down: zoom in/out
• 3D view
Tip! Shift+F9
•
Left mouse drag: pan through the view
•
Right mouse drag:
•
•
Left/right: rotate
•
Up/Down : view angle
Both left and right mouse button drag:
•
Up/down: zoom in/out
4DScript
4DScript Overview
• 4DScript is a functional language:
•
example: 1+2 is written +(2,1)
• 4DScript for everything
•
model logic
•
create atoms
•
control Taylor ED from outside applications
• 4DScript is auto compiled during run-time
• In logistic suite mostly used to manipulate labels in triggers and
conditional statements
4DScript Syntax
• 4D Script words have 0..25 parameters
• Parameters between ( )
• Parameters separated by a comma: “ , ”
• Parameters can be:
•
•
values
•
strings
•
expressions
(4DScript) Strings always between square brackets “ [ .. ] ”
• Comments between { }
4DScript Syntax
Quick example
setlabel(e1,e2,e3)
e1 – Name of the label, a string within [] brackets
e2 – Value, number -> plain text or string -> within [] brackets
e3 – Reference to location (c,i or reference functions e.g. in(1, c))
setlabel([testlabel], 44, i)
4DScript Syntax
• Multiple lines and spaces
•
NOT sensitive in 4DScript
•
sensitive label or other naming
• Lower and/or upper case
•
•
Tip!
Use tabs and new line when writing longer
functions e.g.
NOT sensitive in 4DScript
sensitive label or other naming
• All brackets must match!
do(
setlabel([blue], 1,i),
setlabel([green], label([blue],i), i),
setlabel([red],0,i)
)
Instead of writing
do(setlabel([blue],1,i),setlabel([green],
label([blue],i),i),setlabel([red],0,i))
Atom Labels
• Also called dynamic database fields
• To read and write data on specific atoms:
•
strings
•
values
• Setting labels:
•
setlabel(e1,e2,e3)
•
Sets label e1 (string) of atom e3 (reference) to e2 (string or value)
• 4DScript “sddb” does the same
• Labels do not need to be declared
Atom Labels
• Query labels
•
label(e1,e2,{e3})
•
Returns label e1 of atom e2
•
e3 is optional:
•
e3=1 then always value is returned
•
e3=2 then always string is returned
• 4DScript “ddb” does the same
• Name of the label is case sensitive
Atom Referencing
• About atom referencing
• In Entry and Exit triggers
• Direct referencing
• Relative referencing
About atom referencing
• Referencing in Taylor ED is like using a pointer
• You need to reference other atoms to:
•
get information or data from that atom
•
send atoms or messages to other atoms
• To refer to an atom is in general always relative
• Relative referencing is used because:
•
it is needed in an object oriented environment !!
•
everything is an atom (model, product, machine…)
•
it is fast
In Entry/Exit Triggers
• Current “c” & Involved “i”
• ‘c’ is current atom or the atom where the statement is written on
• ‘i’ is the involved atom or the atom that triggered an
eventhandler
i
c
Entry/Exit Triggers
Example Trigger on Creation in a Source ATOM
Direct Atom Referencing
• Sometimes Atoms can be referenced directly:
•
library = library atom
•
model = model atom
•
treeatom = currently selected atom in treeview
•
animatom = currently selected atom in 2D animation
window
•
atombyname([e1], e2) = atom with name e1 in
container e2
•
atombyID(e1, e2) = atom with ID-number in
container e2 (e.g. model)
•
if tables have aliases you can use the table name
direct
Relative Atom Referencing
•
All other referencing is relative: start from the atom where
statement is written (=c):
•
•
•
•
•
•
•
•
first(e1) = first atom inside atom e1
last(e1) = last atom inside atom e1
next(e1) = the atom next of atom e1 in same
container
prev(e1) = the atom previous of atom e1 in same
container
up(e1) = container of atom e1
in(e1,e2) = atom connected to input channel e1 of
atom e2
out(e1,e2) = atom connected to output channel e1 of
atom e2
rank(e1,e2) = atom at position e1 in queue of atom
e2
Atom Statistics
Is available for every atom at any time:
• age - time from creation or reset
• content - current number of atoms contained in an atom
• avgcontent - average number of atoms contained in an atom since
reset
• avgstay - average time (sec.) atoms have stayed in an atom since
reset
• input - the number of atoms which have entered
• output - the number of atoms which have exited
• status - the state of an atom (see table of atom T029-Statuslist)
• entrytime - time (sec.) at which an atom has entered
Empirical Distribution Atom
• Maximum 50 records per distribution
• Use an alias name to assign the distribution direct
Table Atom
Tip!
• Indirect referencing use:
•
setcell(1,1,123,c)
•
cell(1,1,c)
If you need to create or use large
tables (larger then 100 rows or columns)
use local table instead of linking
to excel table. This speeds up the
simulation.
• Direct referencing use
•
an alias name has been created eg: times
•
settimes(1,1,123)
•
times(1,1)
• Column and row 0 are the header columns and rows
• Index out of range will not give an error message, but results in
the return of 0
Conditional Statements
• if(e1,e2,{e3})
•
e1 = condition
•
e2 = true logic
•
e3 = false logic, not mandatory => 0 is returned
• and/or allowed in condition
Example:
if(comparetext(label([ok],i),[yes]),
negexp(10),
negexp(50)
)
Multiple Statements
• “DO” - statement
•
do(e1,do(e1..e25),..e25)
•
maximum is 25 parameters
Example:
do(
setlabel([ok],[yes],i),
setlabel([time],negexp(60),i)
)
4DScript Editor Functionality
•
Auto Brackets
•
Color View
(F11)
•
Auto Select
•
Tree View
(F12)
•
4Dscript View
•
Select All
(Ctrl+A)
•
Select Word
(F2)
•
Find Replace
•
Previous Word (F3)
•
Print
•
Next Word
(F4)
•
Save to file
•
Get Word
(F8)
•
Loud from file
•
Check Syntax
(F10)
Tip!
Use check syntax (F10)
Repeat Statements
• loopuntil(e1,e2,e3)
•
e1 = condition
•
e2 = statements
•
e3 = maximum repetitions
• use ‘count’ for the current number of loops made
• omitting e3 might result in endless loop
Repeat Statements
• repeat(e1,e2)
•
e1 = number of repetitions
•
e2 = statements
• use ‘count’ for the current number of loops made
repeat(
content(c),
stopatom(rank(count,c))
)
Statistical distributions
Use of statistics:
• Before simulation:
- determine the distributions
- goodness of fit
• During simulation:
- random numbers
- samples from a distribution
• After simulation:
- analysis of results
- reliability
Discrete Distributions
A discrete stochastic variable represents a countable number of
possible values.
40
chance of x=? in % >
35
One particular
value has a
chance (greater
than zero) of
occurring.
30
25
20
15
10
5
0
1
2
3
4
5
Bernoulli distribution
70
• Parameters in Taylor
ED:
60
- result1
- result2
Probability in % >
- probability in %
50
40
30
• A sample having result1 is equal
to probability,
20
10
result2 has a chance of
100% - probability.
0
6
10
Choice between two values: bernoulli(40,6,10)
Empirical distribution
Product mix, Route choices, Test passed,..
In Tayor ED
you can use
an alias name
40
>
35
in %
Value
2
7
10
12
30
chance of x=?
P(x)
15%
25%
20%
35%
5%
30
25
20
15
10
5
0
2
7
10
12
30
Continuous Distributions
The chance of a sample, according to a certain distribution, results
in a value between ‘a’ and ‘b’, is equal to the dark gray area.
density ƒ(x)
The chance
the sample will
result in
precisely ‘a’,
is equal to
zero.
a
b
x>
Uniform Distribution
• Can be used if the information is global
density ƒ(x)
• uniform(e1,e2)
a
x>
b
Normal Distribution
• Fluctuations around an average
density ƒ(x) >
• normal(e1,e2)
x >
Negative Exponential Distribution
• To model irregular (arrival) processes
density ƒ(x)
• negexp(e1)
0
x>
Lognormal Distribution
• Asymmetrical “normal” distrubution
• Repair times and process times
density ƒ(x) >
• lognormal(e1,e2)
0
x>
More Distributions
• Continuous:
- Beta
- Gamma
- Triangular
- Weibull
• Discrete:
- Poisson
- Binomial
- Geometric
Typical Waiting Times
Waiting is :
Process
Time 10%
• Time consuming
• Boring
• Expensive
Bottle neck process:
Waiting
Time 90%
Process time
Other time
Influence Factors
• Fluctuations in arrivals
• Fluctuations in process times
• Priority rules
• Blocking
• Failures
• Availability
• Utilization
Theoretic Waiting Times
• Consider arrivals to be negative exponential distributed
• Define variance coefficient of processes:
•
CV = standard deviation ÷ mean
• Two extremities:
•
CV=0, constant distribution
•
CV=1, chaos, negative exponential distribution
Waiting time >
Waiting Time versus Utilization
low CV
high CV
0
10
20
30
40
50
60
70
80
Utilization in %
Average waiting time (Pollaczek-Kyntchin):
WT  21  (1  CV 2 ) 

 PT ,
(1   )
  utilization
90
Shortening Waiting Times
• Lower utilization
• More regular processes
• Parallel processes
• Controlled processing
• Less failures
• Smaller batches
Waiting
Waiting problems are actually waiting distributing problems.
Balance between:
- waiting of workstation
- waiting of products
- waiting of customers
Result Analysis
• Shit in is Shit out
• Simulating more or longer, results in more reliable results
Analysis of Terminating Systems
• N different simulation runs => n independent values (new
random seeds)
• Calculate confidence interval
Ask yourself if you have to simulate a system like a terminating
system. It’s sometimes better to simulate a worst case scenario
of the system.
Analysis of Steady State Systems
• When has a steady state been reached ?
• How long is the warm up period ?
Two formal methods:
• N different runs
• One long run divided into sub-runs
Warm-up Period
At the beginning of a simulation the system is normally empty.
The production per hour will have the characteristics of this graph.
400
Production per hour >
350
300
250
200
150
100
50
0
0
20
40
60
80
100
120
Time >
140
160
180
200
220
N Different Runs
•
Determine the warm up period.
•
Simulate N different runs; every time the data from the warmup period is disregarded.
The length of a run and the number of runs in total determine
the confidence interval.
If the warm-up period is long, the sub-run method is preferred.
Final Tip!
• Shit in is Shit out! - the result of the simulation is not better
then the data you base your simulation on
• Test in small scale - When testing out new functions and
atoms construct small systems and test the function there
instead of import the new function or atom directly in to your
“big” simulation system
• Use understandable names on atoms, labels etc.
•
Use the help files or the 4DSkript Command list to
understand functions and find new functions
• A simulation is a perfect model of the world, the world is not
perfect!
That is all!
Contact information:
Kristofer Elo [email protected]