LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
oqn_cs_routing.m
1clear node jobclass solver AvgTable
2
3%model = JMT2LINE('example_openModel_3.jsimg');
4model = Network('myModel');
5
6%% Block 1: nodes
7node{1} = Source(model, 'Source 1');
8node{2} = Queue(model, 'Queue 1', SchedStrategy.PS);
9node{3} = ClassSwitch(model, 'ClassSwitch 1'); % Class switching is embedded in the routing matrix P
10node{4} = Sink(model, 'Sink 1');
11node{5} = Queue(model, 'Queue 2', SchedStrategy.PS);
12
13%% Block 2: classes
14jobclass{1} = OpenClass(model, 'Class A', 0);
15jobclass{2} = OpenClass(model, 'Class B', 0);
16jobclass{3} = OpenClass(model, 'Class C', 0);
17
18node{1}.setArrival(jobclass{1}, Exp.fitMean(0.500000)); % (Source 1,Class A)
19node{1}.setArrival(jobclass{2}, Exp.fitMean(1.000000)); % (Source 1,Class B)
20node{1}.setArrival(jobclass{3}, Disabled.getInstance()); % (Source 1,Class C)
21node{2}.setService(jobclass{1}, Exp.fitMean(0.200000)); % (Queue 1,Class A)
22node{2}.setService(jobclass{2}, Exp.fitMean(0.300000)); % (Queue 1,Class B)
23node{2}.setService(jobclass{3}, Exp.fitMean(0.333333)); % (Queue 1,Class C)
24node{5}.setService(jobclass{1}, Exp.fitMean(1.000000)); % (Queue 2,Class A)
25node{5}.setService(jobclass{2}, Exp.fitMean(1.000000)); % (Queue 2,Class B)
26node{5}.setService(jobclass{3}, Exp.fitMean(0.150000)); % (Queue 2,Class C)
27
28%% Block 3: topology
29C = node{3}.initClassSwitchMatrix();
30C = eye(length(C));
31node{3}.setClassSwitchingMatrix(C);
32
33P = model.initRoutingMatrix(); % initialize routing matrix
34P{1,1}(1,2) = 1; % (Source 1,Class A) -> (Queue 1,Class A)
35P{1,1}(2,3) = 1; % (Queue 1,Class A) -> (ClassSwitch 1,Class A)
36P{1,1}(5,4) = 1; % (Queue 2,Class A) -> (Sink 1,Class A)
37P{1,3}(3,5) = 1; % (ClassSwitch 1,Class A) -> (Queue 2,Class C)
38P{2,2}(1,2) = 1; % (Source 1,Class B) -> (Queue 1,Class B)
39P{2,2}(2,3) = 1; % (Queue 1,Class B) -> (ClassSwitch 1,Class B)
40P{2,2}(5,4) = 1; % (Queue 2,Class B) -> (Sink 1,Class B)
41P{2,3}(3,5) = 1; % (ClassSwitch 1,Class B) -> (Queue 2,Class C)
42P{3,3}(1,2) = 1; % (Source 1,Class C) -> (Queue 1,Class C)
43P{3,3}(2,3) = 1; % (Queue 1,Class C) -> (ClassSwitch 1,Class C)
44P{3,3}(3,5) = 1; % (ClassSwitch 1,Class C) -> (Queue 2,Class C)
45P{3,3}(5,4) = 1; % (Queue 2,Class C) -> (Sink 1,Class C)
46model.link(P);
47
48options = Solver.defaultOptions;
49options.keep = true;
50options.verbose = 1;
51options.cutoff = [1,1,0;3,3,0;0,0,3]; % works well with 7
52options.seed = 23000;
53options.samples = 1e5;
54
55%disp('This example shows the execution of the solver on a 1-class 2-node open model.')
56% This part illustrates the execution of different solvers
57solver={};
58solver{end+1} = CTMC(model,options); % CTMC is infinite on this model
59solver{end+1} = FLD(model,options);
60solver{end+1} = MVA(model,options);
61solver{end+1} = MAM(model,options);
62solver{end+1} = NC(model,options);
63solver{end+1} = JMT(model,options);
64solver{end+1} = SSA(model,options);
65solver{end+1} = DES(model,options);
66for s=1:length(solver)
67 fprintf(1,'SOLVER: %s\n',solver{s}.getName());
68 AvgTable{s} = solver{s}.getAvgTable()
69 AvgTable{s}
70end
Definition mmt.m:92