LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
ode_jumps_new.m
1function jumps = ode_jumps_new(M, K, enabled, q_indices, P, Kic)
2% JUMPS = ODE_JUMPS_NEW(M, K, MATCH, Q_INDICES, P, KIC, STRATEGY)
3
4jumps = []; %returns state changes triggered by all the events
5jump = zeros( sum(sum(Kic)), 1 );
6for i = 1 : M %state changes from departures in service phases 2...
7 for c = 1:K
8 if enabled(i,c)
9 xic = q_indices(i,c); % index of x_ic
10 for j = 1 : M
11 for l = 1:K
12 if P((i-1)*K+c,(j-1)*K+l) > 0
13 xjl = q_indices(j,l); % index of x_jl
14 for ki = 1 : Kic(i,c) % job can leave from any phase in i
15 for kj = 1 : Kic(j,l) % job can start from any phase in j
16 jump = 0*jump; % reuse same vector for efficiency
17 jump(xic+ki-1) = jump(xic+ki-1) - 1; %type c in stat i completes service
18 jump(xjl+kj-1) = jump(xjl+kj-1) + 1; %type c job starts in stat j
19 jumps = [jumps jump;];
20 end
21 end
22 end
23 end
24 end
25 end
26 end
27end
28for i = 1 : M %state changes: "next service phase" transition
29 for c = 1:K
30 if enabled(i,c)
31 xic = q_indices(i,c);
32 for ki = 1 : (Kic(i,c) - 1)
33 for kip = 1:Kic(i,c)
34 if ki~=kip
35 jump = 0*jump; % reuse same vector for efficiency
36 jump(xic+ki-1) = jump(xic+ki-1) - 1;
37 jump(xic+kip-1) = jump(xic+kip-1) + 1;
38 jumps = [jumps jump;];
39 end
40 end
41 end
42 end
43 end
44end
45end % ode_jumps_new()