Title: DEVS Coupled Model
1DEVS Coupled Model
Elements of coupled model
- Components
- Interconnections
- Internal Couplings
- External Input Couplings
- External Output Couplings
pulseModels. fireOnce NeuronNet
2Coupling in Action
pulseModels. fireOnce NeuronNet
Coupling (internal)
AB
B
A
Output port
Input port
internal
State
external
time advance
output
internal
State
external
time advance
output
3Coupled Model Example Neuron net can compute
the shortest path in a directed graph by mapping
distances of edges to equivalent time values.
- Small network of fire-once neurons
- a pulse emitted from the generator explores two
paths concurrently to reach the final neuron
(number 4). - depending on the summed firing delays along each
path, a pulse emerging from one or the other will
arrive first to the final neuron, the other will
be shut out and prevented from continuing - in general, the clock time when a pulse first
arrives to a neuron represents the shortest time
to reach it - if nodes and link distances are mapped to
neurons and firing times, then the path taken by
a pulse represents the shortest path of an
associated digraph. - the path can be reconstructed by extending the
neuron model to allow retracing the path of
earliest firings. - This method turns out to be isomorphic to the
well known Dikstrai shortest path algorithm.
pulseModels. fireOnce NeuronNet
If instead of shortest paths, we request longest
paths, a net of neurons that fire after their
assigned fireDelays every time they receive a
pulse will do the job. Finding critical paths in
PERT charts require such longest path
computation.
4Some Types of Models Represented in DEVS
Coupled Models
Atomic Models
Partial Differential Equations
can be components in a coupled model
Ordinary Differential Equation Models
Processing/ Queuing/ Coordinating
Networks, Collaborations
Physical Space
Spiking Neuron Networks
Spiking Neuron Models
Processing Networks
Petri Net Models
n-Dim Cell Space
Discrete Time/ StateChart Models
Stochastic Models
Cellular Automata
Quantized Integrator Models
Self Organized Criticality Models
Fuzzy Logic Models
Reactive Agent Models
Multi Agent Systems
5Basic Atomic Methods
genDevs. modeling. atomic
- public double ta() the time advance function
returns the value of sigma for atomic models - public message out() the output function
releases the message just before an internal
transition - public void deltint() the internal transition
function - public void deltext(double e,message x) the
external transition funciton - public void deltcon(double e,message x) the
confluent transition function - public void Continue(double e) subtract e from
sigma use to retain the same time of next event
after an external event - public void holdIn(String phase, double sigma)
set the phase and sigma values as given in the
arguments - public void passivateIn(String phase) set the
phase as given in the argument and sigma to
INFINITY - public void passivate() set the phase to
passive and sigma to INFINITY - public boolean phaseIs(String phase) return
true if the current phase equals the argument
- public double ta()return sigma
- public message out()return new message()
//override - public void deltint() //override
- public void deltext(double e,message x)
//override - public void deltcon(double e,message
x)//default - deltint()
- deltext(0,x)
-
- public void Continue(double e)
- if (sigma lt INFINITY)
- sigma sigma - e
-
- public void holdIn(String phase, double sigma)
- this.phase phase
6Fire-once Neuron
This neuron fires exactly once after a fixed
delay while ignoring all subsequent inputs
public void initialize() super.initialize() pass
ivateIn("receptive") public void
deltext(double e,message x) Continue(e) if
(phaseIs("receptive") somethingOnPort(x,"in")) h
oldIn("fire",fireDelay)
ignore all subsequent pulses
pulse
pulse
pulse
pulse
input
t
fire
Continue sigma sigma - e
phase
state
receptive
refract
public void deltint() //if (phaseIs("fire")) pas
sivateIn("refract") public message
out() //if (phaseIs("fire")) return
outputNameOnPort("pulse","out")
sigma
pulseModels foreOnceNeuron
elapsed time
pulse
output
7Basic Generator Concepts
pulseExpFrames. basicGenr
third Duration
second Duration
First Duration
0
first
second
passive
third
active
public void initialize() super.initialize() hold
In("active",0) public void deltext(double
e,message x) Continue(e) if
(somethingOnPort(x,"start")) holdIn("first",firs
tDuration) else if (somethingOnPort(x,"stop"))
passivate()
public void deltint() if (phaseIs("active"))
holdIn("first",firstDuration) else if
(phaseIs("first")) holdIn("second",secondDuration)
else if (phaseIs("second")) holdIn("third",third
Duration) else passivate() public message
out() if (phaseIs("active")) return
outputRealOnPort(firstOutput,"out") else if
(phaseIs("first")) return outputRealOnPort(secondO
utput,"out") else if (phaseIs("second")) return
outputRealOnPort(thirdOutput,"out") else //if
(phaseIs("third")) return outputRealOnPort(0,"out"
)
8Example of basicGenr Scuba Diving Plan
surface
15 ft
10 min
40 ft
20 min
pulseModels. scubaModel
60 ft
20 min
A diver drops immediately to 60 ft depth, stays
there for 20 min., then rises to 40 ft, depth
staying 20 min., and finally spends 10 minutes at
15ft before rising to the surface. Modify the
basicGenr to represent this dive plan. Your model
should output the new depth to which the diver
goes at each stage.
9Class pulseGenr -- generates pulses whose size
and frequency can be specified
out
pulseExpframes pulseGenr
interPulseTime
public void initialize() super.initialize() hold
In("active",interPulseTime) public void
deltext(double e,message x) Continue(e) if
(somethingOnPort(x,"start")) holdIn("active",int
erPulseTime) else if (somethingOnPort(x,"stop"))
passivate()
public void deltint() holdIn("active",interPuls
eTime) public message out() return
outputRealOnPort(pulse,"out")
Note stop and start do not remember the time
already elapsed in last period this can be done
by employing the elapsed time, e.
10Coupled Model Example using a basic generator to
dynamically set the period of a pulse generator
boxCar
pulseModels boxCar
public class boxCar extends ViewableDigraph pub
lic boxCar() super("boxCar") ViewableAtomic
basic new basicGenr("basic",15,20,14,
2,1,1000)
\\ d1,d2,d3 ,p1,p2,p3 add(basic) Viewabl
eAtomic pg new pulseGenr("pg") add(pg) addCo
upling(basic,"out",pg,"setInterPulseTime")