|
|
Line 1: |
Line 1: |
| Given an [[DEVS#Atomic DEVS|atomic DEVS]] model, simulation algorithms are methods to generate the model's legal behaviors which are trajectories not to reach to illegal states. (see [[Behavior of DEVS]]). [[Simulation_Algorithms_for_Atomic_DEVS#References|[Zeigler84]]] originally introduced the algorithms that handle time variables related to ''lifespan'' <math>t_s \in [0,\infty]</math> and ''elapsed time'' <math>t_e\in [0,\infty)</math> by introducing two other time variables, ''last event time'', <math>t_l\in [0,\infty)</math>, and ''next event time'' <math> t_n\in [0,\infty]</math> with the following relations:
| | Hi there! :) My name is Ivan, I'm a student studying Modern Languages and Classics from Hutton Wandesley, United Kingdom.<br><br>Also visit my site: [http://comeseetv.com/development/blog/50197/%D0%B4%D0%B8%D0%B5%D1%82%D1%8B-%D0%BA%D0%B0%D0%BA-%D0%BF%D0%BE%D1%85%D1%83%D0%B4%D0%B5%D1%82%D1%8C-%D0%B6%D0%B8%D0%B2%D0%BE%D1%82-%D0%B8-%D1%85%D0%B8%D1%82%D1%80%D0%BE%D1%81%D1%82%D1%8C-%D1%87%D1%82%D0%BE%D0%B1%D1%8B/ ореховая диета] |
| <center><math> \, t_e = t - t_l </math></center>
| |
| | |
| and
| |
| | |
| <center><math>\, t_s = t_n - t_l </math></center>
| |
| | |
| where <math>t\in [0,\infty)</math> denotes the ''current time''. And the ''remaining time'',
| |
| | |
| <center><math>\,t_r=t_s-t_e</math></center> is equivalently computed as
| |
| <center><math>\, t_r = t_n - t</math></center>, apparently <math> t_r \in [0,\infty]</math>.
| |
| | |
| | |
| Since the behavior of a given atomic DEVS model can be defined in two different views depending on the total state and the external transition function (refer to [[Behavior of DEVS]]), the simulation algorithms are also introduced in two different views as below.
| |
| == Common parts ==
| |
| Regardless of two different views of total states, algorithms for initialization and internal transition cases are commonly defined as below.
| |
| | |
| DEVS-simulator
| |
| variables:
| |
| parent // parent coordinator
| |
| <math>t_l</math> // time of last event
| |
| <math>t_n</math> // time of next event
| |
| <math>A=(X,Y,S,ta, \delta_{ext}, \delta_{int}, \lambda) </math>// the associated [[DEVS#Atomic DEVS|Atomic DEVS]] model
| |
| when receive init-message(Time <math>t</math>)
| |
| <math> t_l \leftarrow t;</math>
| |
| <math> t_n \leftarrow t_l + ta(s); </math>
| |
| when receive star-message(Time <math>t</math>)
| |
| if <math> t \ne t_n </math> then
| |
| error: bad synchronization;
| |
| <math> y \leftarrow \lambda(s);</math>
| |
| send y-message(<math>y,t</math>) to parent;
| |
| <math> s \leftarrow \delta_{int}(s)</math>
| |
| <math> t_l \leftarrow t;</math>
| |
| <math> t_n \leftarrow t_l + ta(s); </math>
| |
| | |
| == View 1: total states = states * elapsed times ==
| |
| As addressed in [[Behavior of Atomic DEVS]], when DEVS receives an input event, right calling <math>\delta_{ext}</math>, the last event time,<math>t_l</math> is set by the current time,<math>t</math>, thus the elapsed time<math>t_e</math> becomes zero because <math>t_e = t - t_l</math>.
| |
| | |
| when receive x-message(<math>x \in X</math>, Time <math>t</math>)
| |
| if <math>( t_l \le t </math> and <math> t \le t_n )</math> == false then
| |
| error: bad synchronization;
| |
| <math> s \leftarrow \delta_{ext}(s,t-t_l, x)</math>
| |
| <math> t_l \leftarrow t;</math>
| |
| <math> t_n \leftarrow t_l + ta(s); </math>
| |
| | |
| ==View 2: total states = states * lifespans * elapsed times==
| |
| Notice that as addressed in [[Behavior of Atomic DEVS]], depending on the value of <math>b</math> return by <math> \delta_{ext}</math>, last event time,<math>t_l</math>, and next event time,<math>t_n</math>,consequently, elapsed time, <math>t_e</math>, and lifespan<math>t_n</math>, are updated (if <math>b=1</math>) or preserved (if <math>b=0</math>).
| |
| | |
| when receive x-message(<math>x \in X</math>, Time <math>t</math>)
| |
| if <math>( t_l \le t </math> and <math> t \le t_n )</math> == false then
| |
| error: bad synchronization;
| |
| <math> (s,b) \leftarrow \delta_{ext}(s, t-t_l, x)</math>
| |
| if <math> b = 1 </math> then
| |
| <math> t_l \leftarrow t;</math>
| |
| <math> t_n \leftarrow t_l + ta(s); </math>
| |
| | |
| ==See also==
| |
| * [[DEVS#Atomic DEVS|Atomic DEVS]]
| |
| * [[Behavior of atomic DEVS]]
| |
| * [[Simulation algorithms for coupled DEVS]]
| |
| | |
| == References ==
| |
| * [Zeigler84] {{cite book|author = Bernard Zeigler | year = 1984| title = Multifacetted Modeling and Discrete Event Simulation | publisher = Academic Press, London; Orlando | id = ISBN 978-0-12-778450-2 }}
| |
| * [ZKP00] {{cite book|author = Bernard Zeigler, Tag Gon Kim, Herbert Praehofer| year = 2000| title = Theory of Modeling and Simulation| publisher = Academic Press, New York | id= ISBN 978-0-12-778455-7 |edition=second}}
| |
| | |
| [[Category:Algorithms]]
| |
Hi there! :) My name is Ivan, I'm a student studying Modern Languages and Classics from Hutton Wandesley, United Kingdom.
Also visit my site: ореховая диета