LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
solver_ctmc_marg.m
1function [Pnir,runtime,fname] = solver_ctmc_marg(sn, options)
2% [PNIR,RUNTIME,FNAME] = SOLVER_CTMC_MARG(QN, OPTIONS)
3%
4% Copyright (c) 2012-2026, Imperial College London
5% All rights reserved.
6
7
8M = sn.nstations; %number of stations
9K = sn.nclasses; %number of classes
10state = sn.state;
11fname = '';
12
13Tstart = tic;
14
15[Q,SS,SSq,~,~,~,sn] = solver_ctmc(sn, options);
16if options.keep
17 fname = lineTempName;
18 save([fname,'.mat'],'Q','SSq')
19 line_printf('\nCTMC generator and state space saved in: ');
20 line_printf([fname, '.mat'])
21end
22pi = ctmc_solve_reducible(Q);
23pi(pi<GlobalConstants.Zero)=0;
24pi = pi/sum(pi);
25
26statesz = [];
27for ind=1:sn.nnodes
28 if sn.isstateful(ind)
29 isf = sn.nodeToStateful(ind);
30 statesz(isf) = size(sn.space{isf},2);
31 end
32end
33cstatesz = [0,cumsum(statesz)];
34Pnir = zeros(1,sn.nstations);
35for ind=1:sn.nnodes
36 if sn.isstateful(ind)
37 isf = sn.nodeToStateful(ind);
38 ist = sn.nodeToStation(ind);
39 state_i = [zeros(1,size(sn.space{isf},2)-length(state{isf})),state{isf}];
40 Pnir(ist) = sum(pi(findrows(SS(:,(cstatesz(isf)+1):(cstatesz(isf)+length(state_i))), state_i)));
41 end
42end
43
44runtime = toc(Tstart);
45
46%if options.verbose
47% line_printf('\nCTMC analysis completed. Runtime: %f seconds.\n',runtime);
48%end
49end