-
Notifications
You must be signed in to change notification settings - Fork 29
/
model_nested_comp_with_scheduler.py
38 lines (28 loc) · 1.1 KB
/
model_nested_comp_with_scheduler.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import psyneulink as pnl
comp = pnl.Composition(name='comp')
inner_comp = pnl.Composition(name='Inner Composition')
A = pnl.TransferMechanism(function=pnl.Linear(slope=5.0, intercept=2.0), name='A')
B = pnl.TransferMechanism(function=pnl.Logistic, name='B')
C = pnl.RecurrentTransferMechanism(name='C')
D = pnl.IntegratorMechanism(function=pnl.SimpleIntegrator, name='D')
E = pnl.TransferMechanism(name='E')
F = pnl.TransferMechanism(name='F')
for m in [E, F]:
inner_comp.add_node(m)
for m in [A, B, C, D, inner_comp]:
comp.add_node(m)
comp.add_projection(pnl.MappingProjection(), A, B)
comp.add_projection(pnl.MappingProjection(), A, C)
comp.add_projection(pnl.MappingProjection(), B, D)
comp.add_projection(pnl.MappingProjection(), C, D)
comp.add_projection(pnl.MappingProjection(), C, inner_comp)
inner_comp.add_projection(pnl.MappingProjection(), E, F)
comp.scheduler.add_condition_set({
A: pnl.EveryNPasses(1),
B: pnl.EveryNCalls(A, 2),
C: pnl.EveryNCalls(B, 2)
})
comp.termination_processing = {
pnl.TimeScale.RUN: pnl.AfterNTrials(1),
pnl.TimeScale.TRIAL: pnl.AfterNCalls(D, 4)
}