LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
ode_rate_base.m
1function [rateBase, eventIdx] = ode_rate_base(sn, phi, Mu, PH, M, K, enabled, q_indices, rt, Kic, ~, all_jumps)
2% [RATEBASE, EVENTIDX] = GETRATEBASE(sn, PHI, MU, PH, M, K, MATCH, Q_INDICES, P, KIC, SCHED_ID, ALL_JUMPS)
3
4% Phi{i}{c}(ki): probability of service completion in phase ki of station i
5% for class c jobs
6
7rateBase = zeros(size(all_jumps,2),1);
8eventIdx = zeros(size(all_jumps,2),1);
9rateIdx = 0;
10for i = 1 : M %state changes from departures in service phases 2...
11 for c = 1:K
12 if enabled(i,c)
13 for j = 1:M
14 for l = 1:K
15 if isempty(PH{j}{l})
16 pie = 1;
17 else
18 pie = map_pie(PH{j}{l});
19 end
20 if rt((i-1)*K+c,(j-1)*K+l) > 0
21 for kic = 1 : Kic(i,c)
22 for kjl = 1 : Kic(j,l)
23 rateIdx = rateIdx + 1;
24 rateBase(rateIdx) = phi{i}{c}(kic) * Mu{i}{c}(kic) * rt((i-1)*K+c,(j-1)*K+l) * pie(kjl);
25 eventIdx(rateIdx) = q_indices(i,c) + kic - 1;
26 end
27 end
28 end
29 end
30 end
31 end
32 end
33end
34
35for i = 1 : M %state changes from "next service phase" transition in phases 2...
36 for c = 1:K
37 if enabled(i,c)
38 for kic = 1 : (Kic(i,c) - 1)
39 for kicp = 1 : Kic(i,c) % (ki+1), PH distribution
40 if kicp ~= kic
41 rateIdx = rateIdx + 1;
42 rateBase(rateIdx) = PH{i}{c}{1}(kic,kicp);
43 eventIdx(rateIdx) = q_indices(i,c) + kic - 1;
44 end
45 end
46 end
47 end
48 end
49end
50
51end % getRateBase
52