TKMM01 Manufacturing simulation …….…......…... Taylor ED
description
Transcript of TKMM01 Manufacturing simulation …….…......…... 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 to popup run control
• unlimited speed
• (synchro) real time
• slide control
• custom speed
• press reset and then run to start the simulation
Atom Channel Concept
• <View | Channels> to set the channel view Tip! Use Ctrl+R
• 0..n input/output channels
• Input and output channels are used to pass atoms or to reference to other atoms
• 1 central channel
• 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
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
• NOT sensitive in 4DScript
• sensitive label or other naming
• All brackets must match!
Tip!
Use tabs and new line when writing longer functions e.g.
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
• Indirect referencing use:
• setcell(1,1,123,c)
• cell(1,1,c)
• 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
Tip!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.
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
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.
One particular value has a chance (greater than zero) of occurring.
0
5
10
15
20
25
30
35
40
1 2 3 4 5
chan
ce o
f x=
? i
n %
>
Bernoulli distribution
• Parameters in Taylor ED:
- probability in %
- result1
- result2
• A sample having result1 is equal
to probability,
result2 has a chance of
100% - probability.
Choice between two values: bernoulli(40,6,10)
0
10
20
30
40
50
60
70
6 10
Prob
abilit
y in
% >
Empirical distribution
Product mix, Route choices, Test passed,..
P(x) Value
15% 2
25% 7
20% 10
35% 12
5% 30
In Tayor ED you can use an alias name
0
5
10
15
20
25
30
35
40
2 7 10 12 30
chan
ce o
f x=?
in
%
>
a b x>
dens
ity ƒ
(x)
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.
The chance the sample will result in precisely ‘a’, is equal to zero.
Uniform Distribution
• Can be used if the information is global
• uniform(e1,e2)
a x > b
dens
ity ƒ
(x)
Normal Distribution
• Fluctuations around an average
• normal(e1,e2)
x >
dens
ity ƒ
(x)
>
Negative Exponential Distribution
• To model irregular (arrival) processes
• negexp(e1)
0 x >
dens
ity ƒ
(x)
Lognormal Distribution
• Asymmetrical “normal” distrubution
• Repair times and process times
• lognormal(e1,e2)
0 x >
dens
ity ƒ
(x) >
More Distributions
• Continuous:
- Beta
- Gamma
- Triangular
- Weibull
• Discrete:
- Poisson
- Binomial
- Geometric
Typical Waiting Times
Waiting is :
• Time consuming
• Boring
• Expensive
Bottle neck process:
WaitingTime 90%
ProcessTime 10%
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
Average waiting time (Pollaczek-Kyntchin):
WT CV PT
12
211
( )( )
,
utilization
Waiting Time versus Utilization
0 10 20 30 40 50 60 70 80 90
Utilization in %
Wai
ting
time
>
low CV
high CV
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.
0
50
100
150
200
250
300
350
400
0 20 40 60 80 100 120 140 160 180 200 220
Time >
Pro
duct
ion
per
hour
>
The production per hour will have the characteristics of this graph.
N Different Runs
• Determine the warm up period.
• Simulate N different runs; every time the data from the warm-up 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]