1function [Pnir,runtime,fname] = solver_ctmc_jointaggr(sn, options)
2% [PNIR,RUNTIME,FNAME] = SOLVER_CTMC_JOINTAGGR(QN, OPTIONS)
4% Copyright (c) 2012-2026, Imperial College London
7M = sn.nstations; %number of stations
8K = sn.nclasses; %number of
classes
12[Q,~,SSq,~,~,~,sn] = solver_ctmc(sn, options);
13% SSq
is an aggregate state space
16 save([fname,
'.mat'],
'Q',
'SSq')
17 line_printf('\nCTMC generator and aggregate state space saved in: ');
18 line_printf([fname, '.mat'])
20pi = ctmc_solve_reducible(Q);
21pi(pi<GlobalConstants.Zero)=0;
27 isf = sn.stationToStateful(i);
28 [~,nir,~,~] = State.toMarginal(sn, isf, state{isf});
29 nvec = [nvec, nir(:)
'];
32Pnir = sum(pi(findrows(SSq,nvec)));
37% line_printf('\nCTMC analysis completed. Runtime: %f seconds.\n
',runtime);