1function lossy = ctmc_signal_lossy(sn, arvRates, probSysState, wset, isf)
2% LOSSY = CTMC_SIGNAL_LOSSY(SN, ARVRATES, PROBSYSSTATE, WSET, ISF)
4% Classes whose jobs can be annihilated by a G-network signal at
the stateful
5% node ISF, as a 1 x nclasses logical row. Such a job leaves
the station
6% without a service completion, so
the arrival-based utilization estimator
7% (offered load)
is invalid there and only
the departure-based (carried load)
8% estimator UN = T * E[S] / c
is meaningful.
10% A signal
class R
is active at ISF when its stationary arrival rate there
is
11% positive. A targeted signal (SN.SIGNALTARGET(R) >= 1) only removes that
12% class; an untargeted one
is class-agnostic and removes any non-signal class,
13% matching State.afterEventStationSignal, MAM and LDES.
15% Copyright (c) 2012-2025, Imperial College London
20if ~isfield(sn,'issignal') || isempty(sn.issignal) || ~any(sn.issignal)
23if isempty(arvRates) || isempty(wset)
26issignal = logical(sn.issignal(:)');
31 if probSysState*arvRates(wset,isf,r) <= 0
35 if isfield(sn,'signaltarget') && numel(sn.signaltarget) >= r
36 tgt = sn.signaltarget(r);
38 if tgt >= 1 && tgt <= K
41 lossy(~issignal) = true;