1% Minimal closed fork-join model solved exactly by
the native CTMC
2% fork-join implementation (tag-augmented state space) and validated
3% against
the closed form
for N=1:
4% X = 1/(Z + E[max(S1,S2)]), E[max] = 1/mu1 + 1/mu2 - 1/(mu1+mu2)
6model = Network(
'model');
8delay = Delay(model,
'Delay1');
9queue1 = Queue(model,
'Queue1',SchedStrategy.FCFS);
10queue2 = Queue(model,
'Queue2',SchedStrategy.FCFS);
11fork = Fork(model,
'Fork1');
12join = Join(model,
'Join1',fork);
14jobclass1 = ClosedClass(model,
'Class1',1,delay);
16delay.setService(jobclass1, Exp(1.0));
17queue1.setService(jobclass1, Exp(2.0));
18queue2.setService(jobclass1, Exp(3.0));
31solver{end+1} = CTMC(model);
32solver{end+1} = SSA(model,
'seed',23000,
'samples',5e4);
33solver{end+1} = JMT(model,
'seed',23000);
37 AvgTable{end+1} = solver{s}.getAvgTable;
41% closed-form check (N=1): X = 1/(1 + 1/2 + 1/3 - 1/5) = 0.612244...