LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
spn_open_sevenplaces.m
1clear P T R solver AvgTable
2
3model = Network('model');
4
5%% Nodes
6source = Source(model,'Source');
7sink = Sink(model,'Sink');
8
9P{1} = Place(model, 'P1');
10P{2} = Place(model, 'P2');
11P{3} = Place(model, 'P3');
12P{4} = Place(model, 'P4');
13P{5} = Place(model, 'P5');
14P{6} = Place(model, 'P6');
15P{7} = Place(model, 'P7');
16
17T{1} = Transition(model, 'T1');
18T{2} = Transition(model, 'T2');
19T{3} = Transition(model, 'T3');
20T{4} = Transition(model, 'T4');
21T{5} = Transition(model, 'T5');
22T{6} = Transition(model, 'T6');
23T{7} = Transition(model, 'T7');
24T{8} = Transition(model, 'T8');
25
26% Source
27jobclass{1} = OpenClass(model, 'Class1', 0);
28source.setArrival(jobclass{1}, Exp.fitMean(1));
29
30
31%% Parameterization
32
33% T1
34mode = T{1}.addMode('Mode1');
35T{1}.setNumberOfServers(mode,Inf);
36T{1}.setDistribution(1,Exp(4));
37T{1}.setEnablingConditions(1,jobclass{1},P{1},1);
38T{1}.setFiringOutcome(1,jobclass{1},P{2},1);
39
40% T2
41mode = T{2}.addMode('Mode1');
42T{2}.setNumberOfServers(mode,Inf);
43T{2}.setEnablingConditions(1,jobclass{1},P{2},1);
44T{2}.setFiringOutcome(1,jobclass{1},P{3},1);
45T{2}.setTimingStrategy(1,TimingStrategy.IMMEDIATE);
46T{2}.setFiringPriorities(1,1);
47T{2}.setFiringWeights(1,1);
48
49% T3
50mode = T{3}.addMode('Mode1');
51T{3}.setNumberOfServers(mode,Inf);
52T{3}.setEnablingConditions(1,jobclass{1},P{2},1);
53T{3}.setFiringOutcome(1,jobclass{1},P{4},1);
54T{3}.setTimingStrategy(1,TimingStrategy.IMMEDIATE);
55T{3}.setFiringPriorities(1,1);
56% T{3}.setFiringWeights(1,0.6);
57T{3}.setFiringPriorities(1,1);
58
59% T4
60mode = T{4}.addMode('Mode1');
61T{4}.setNumberOfServers(mode,Inf);
62T{4}.setEnablingConditions(1,jobclass{1},P{3},1);
63T{4}.setEnablingConditions(1,jobclass{1},P{5},1);
64T{4}.setFiringOutcome(1,jobclass{1},P{5},1);
65T{4}.setFiringOutcome(1,jobclass{1},P{6},1);
66T{4}.setTimingStrategy(1,TimingStrategy.IMMEDIATE);
67T{4}.setFiringPriorities(1,1);
68
69% T5
70mode = T{5}.addMode('Mode1');
71T{5}.setNumberOfServers(mode,Inf);
72T{5}.setEnablingConditions(1,jobclass{1},P{4},1);
73T{5}.setEnablingConditions(1,jobclass{1},P{5},1);
74T{5}.setFiringOutcome(1,jobclass{1},P{7},1);
75T{5}.setInhibitingConditions(1,jobclass{1},P{6},1);
76T{5}.setTimingStrategy(1,TimingStrategy.IMMEDIATE);
77T{5}.setFiringPriorities(1,1);
78
79% T6
80mode = T{6}.addMode('Mode1');
81T{6}.setNumberOfServers(mode,Inf);
82T{6}.setDistribution(1,Erlang(2,2));
83T{6}.setEnablingConditions(1,jobclass{1},P{6},1);
84T{6}.setFiringOutcome(1,jobclass{1},P{1},1);
85
86% T7
87mode = T{7}.addMode('Mode1');
88T{7}.setNumberOfServers(mode,Inf);
89T{7}.setDistribution(1,Exp(2));
90T{7}.setEnablingConditions(1,jobclass{1},P{7},1);
91T{7}.setFiringOutcome(1,jobclass{1},P{1},1);
92T{7}.setFiringOutcome(1,jobclass{1},P{5},1);
93
94% T8
95mode = T{8}.addMode('Mode1');
96T{8}.setNumberOfServers(mode,Inf);
97T{8}.setDistribution(1,Exp(2));
98T{8}.setEnablingConditions(1,jobclass{1},P{4},1);
99T{8}.setFiringOutcome(1,jobclass{1},sink,1);
100
101%% Routing
102M = model.getNumberOfStations();
103K = model.getNumberOfClasses();
104
105R = model.initRoutingMatrix(); % initialize routing matrix
106
107R{1,1}(source,P{1}) = 1; % (Source,Class1) -> (P1,Class1)
108
109R{1,1}(P{1},T{1}) = 1; % (P1,Class1) -> (T1,Class1)
110R{1,1}(P{2},T{2}) = 1; % (P2,Class1) -> (T2,Class1)
111R{1,1}(P{2},T{3}) = 1; % (P2,Class1) -> (T3,Class1)
112R{1,1}(P{3},T{4}) = 1; % (P3,Class1) -> (T4,Class1)
113R{1,1}(P{4},T{5}) = 1; % (P4,Class1) -> (T5,Class1)
114R{1,1}(P{5},T{4}) = 1; % (P5,Class1) -> (T4,Class1)
115R{1,1}(P{5},T{5}) = 1; % (P5,Class1) -> (T5,Class1)
116R{1,1}(P{6},T{5}) = 1; % (P6,Class1) -> (T5,Class1)
117R{1,1}(P{6},T{6}) = 1; % (P6,Class1) -> (T6,Class1)
118R{1,1}(P{7},T{7}) = 1; % (P7,Class1) -> (T7,Class1)
119
120R{1,1}(T{1},P{2}) = 1; % (T1,Class1) -> (P2,Class1)
121R{1,1}(T{2},P{3}) = 1; % (T2,Class1) -> (P3,Class1)
122R{1,1}(T{3},P{4}) = 1; % (T3,Class1) -> (P4,Class1)
123R{1,1}(T{4},P{5}) = 1; % (T4,Class1) -> (P5,Class1)
124R{1,1}(T{4},P{6}) = 1; % (T4,Class1) -> (P6,Class1)
125R{1,1}(T{5},P{7}) = 1; % (T5,Class1) -> (P7,Class1)
126R{1,1}(T{6},P{1}) = 1; % (T6,Class1) -> (P1,Class1)
127R{1,1}(T{7},sink) = 1; % (T7,Class1) -> (Sink,Class1)
128R{1,1}(T{7},P{1}) = 1; % (T7,Class1) -> (P1,Class1)
129R{1,1}(T{7},P{5}) = 1; % (T7,Class1) -> (P5,Class1)
130
131R{1,1}(P{4},T{8}) = 1; % (P4,Class1) -> (T5,Class1)
132R{1,1}(T{8},sink) = 1; % (T8,Class1) -> (Sink,Class1)
133
134model.link(R);
135
136
137%% Set Initial State
138
139source.setState(0);
140P{1}.setState(2);
141P{2}.setState(0);
142P{3}.setState(0);
143P{4}.setState(0);
144P{5}.setState(1);
145P{6}.setState(0);
146P{7}.setState(0);
147
148state = model.getState;
149
150%% Solver
151options = Solver.defaultOptions;
152options.keep=2;
153options.verbose=1;
154options.cutoff = 10;
155options.seed = 23000;
156%options.samples = 100;
157
158% options.hide_immediate=1;
159% options.is_pn=1;
160% options.samples=2e4;
161
162% All stations must be initialised.
163% initial_state = [0;2;0;0;0;1;0;0];
164
165% solver = CTMC(model, options);
166% solver.getAvgTable();
167
168solver = {};
169solver{1} = JMT(model,options);
170AvgTable{1} = solver{1}.getAvgTable();
171AvgTable{1}