1function ispas = nc_is_pas_model(sn)
2% ISPAS = NC_IS_PAS_MODEL(SN)
4% True when
the model
is a closed two-station pass-and-swap (
P&S) tandem: both
5% stations are OI/PAS (SchedStrategy.OI or SchedStrategy.PAS) and there
is no
6% other station. The swap graph may be empty, since an order-independent (OI)
7% queue
is exactly
the P&S specialization with an empty/zero swap graph:
the
8% importance-sampling analyzer SOLVER_NC_PAS_IS_ANALYZER covers both, as
9% PFQN_PAS_IS with H=0 samples all microstates and reduces to PFQN_OI_IS.
11% Used to bind
the importance-sampling selectors (
'is', and
'sampling' which
12% maps to
'is' in
the presence of OI/PAS stations). Note that a
P&S tandem with
13% a NON-EMPTY swap graph
is reducible (Comte & Dorsman, 2021) and lies outside
14%
the exact path of NC_IS_OI_MODEL / SOLVER_NC_OI_ANALYZER, so it also takes
15% this analyzer on 'default'; a pure-OI tandem on 'default'/'exact'
is caught
16% earlier by
the exact OI analyzer.
18% Copyright (c) 2012-2026, Imperial College London
21if any(isinf(sn.njobs))
27for ist = 1:sn.nstations
28 if sn.sched(ist) ~= SchedStrategy.PAS && sn.sched(ist) ~= SchedStrategy.OI
31 ind = sn.stationToNode(ist);
35 if isempty(sn.nodeparam{ind}.svcRateFun)
36 return % no OI rank-rate function: cannot evaluate
the balance function