LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
fj_basic_nesting.m
1clear solver AvgTable;
2
3model = Network('model');
4
5delay = Delay(model,'Delay');
6fork1 = Fork(model,'Fork1');
7fork1.setTasksPerLink(1);
8fork11 = Fork(model,'Fork1_1');
9fork11.setTasksPerLink(2);
10join1 = Join(model,'Join1',fork1);
11join11 = Join(model,'Join1_1',fork11);
12queue1 = Queue(model,'Queue1',SchedStrategy.PS);
13queue2 = Queue(model,'Queue2',SchedStrategy.PS);
14
15jobclass1 = ClosedClass(model, 'class1', 5, delay);
16jobclass2 = ClosedClass(model, 'class2', 2, delay);
17
18delay.setService(jobclass1, Exp(0.25));
19queue1.setService(jobclass1, Exp(1.0));
20queue2.setService(jobclass1, Exp(0.75));
21
22delay.setService(jobclass2, Exp(0.25));
23queue1.setService(jobclass2, Exp(2.0));
24queue2.setService(jobclass2, Exp(2.0));
25
26M = model.getNumberOfNodes;
27R = model.getNumberOfClasses;
28
29P = cellzeros(R,M);
30P{jobclass1,jobclass1}(delay,fork1) = 1.0;
31P{jobclass1,jobclass1}(fork1,queue1) = 1.0;
32P{jobclass1,jobclass1}(fork1,queue2) = 1.0;
33P{jobclass1,jobclass1}(queue1,join1) = 1.0;
34P{jobclass1,jobclass1}(queue2,join1) = 1.0;
35P{jobclass1,jobclass1}(join1,delay) = 1.0;
36
37P{jobclass2,jobclass2}(delay,fork11) = 1.0;
38P{jobclass2,jobclass2}(fork11,fork1) = 1.0;
39P{jobclass2,jobclass2}(fork1,queue1) = 1.0;
40P{jobclass2,jobclass2}(fork1,queue2) = 1.0;
41P{jobclass2,jobclass2}(queue1,join1) = 1.0;
42P{jobclass2,jobclass2}(queue2,join1) = 1.0;
43P{jobclass2,jobclass2}(join1,join11) = 1.0;
44P{jobclass2,jobclass2}(join11,delay) = 1.0;
45
46model.link(P);
47
48
49solver = {};
50solver{end+1} = JMT(model,'seed',23000);
51solver{end+1} = MVA(model);
52%solver{end+1} = DES(model,'seed',23000);
53
54AvgTable = {};
55for s=1:length(solver)
56 AvgTable{end+1} = solver{s}.getAvgTable;
57 AvgTable{end}
58end
59
60%% Corresponding open model
61% model = Network('model');
62%
63% source = Source(model,'Source');
64% queue1 = Queue(model,'Queue1',SchedStrategy.PS);
65% queue2 = Queue(model,'Queue2',SchedStrategy.PS);
66% fork1 = Fork(model,'Fork1');
67% fork1.setTasksPerLink(1);
68% fork11 = Fork(model,'Fork1_1');
69% fork11.setTasksPerLink(2);
70% join1 = Join(model,'Join1');
71% join11 = Join(model,'Join1_1');
72% sink = Sink(model,'Sink');
73%
74% jobclass1 = OpenClass(model, 'class1');
75% jobclass2 = OpenClass(model, 'class2');
76%
77% source.setArrival(jobclass1, Exp(0.25));
78% queue1.setService(jobclass1, Exp(1.0));
79% queue2.setService(jobclass1, Exp(0.75));
80%
81% source.setArrival(jobclass2, Exp(0.25));
82% queue1.setService(jobclass2, Exp(2.0));
83% queue2.setService(jobclass2, Exp(2.0));
84%
85% M = model.getNumberOfNodes;
86% R = model.getNumberOfClasses;
87% P = cellzeros(R,M);
88% P{jobclass1,jobclass1}(source,fork1) = 1;
89% P{jobclass1,jobclass1}(fork1,queue1) = 1.0;
90% P{jobclass1,jobclass1}(fork1,queue2) = 1.0;
91% P{jobclass1,jobclass1}(queue1,join1) = 1.0;
92% P{jobclass1,jobclass1}(queue2,join1) = 1.0;
93% P{jobclass1,jobclass1}(join1,sink) = 1.0;
94%
95% P{jobclass2,jobclass2}(source,fork11) = 1;
96% P{jobclass2,jobclass2}(fork11,fork1) = 1.0;
97% P{jobclass2,jobclass2}(fork1,queue1) = 1.0;
98% P{jobclass2,jobclass2}(fork1,queue2) = 1.0;
99% P{jobclass2,jobclass2}(queue1,join1) = 1.0;
100% P{jobclass2,jobclass2}(queue2,join1) = 1.0;
101% P{jobclass2,jobclass2}(join1,join11) = 1.0;
102% P{jobclass2,jobclass2}(join11,sink) = 1.0;
103%
104% model.link(P);
105% JMT(model,'keep',true).getAvgNodeTable