LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
ncDispatch.m
1function out = ncDispatch(self, sn, options)
2% OUT = NCDISPATCH(SN, OPTIONS)
3%
4% One inner solve of the normalizing-constant analyzer, in the contract that
5% @NetworkSolver/fjFixedPoint.m expects (see @SolverMVA/mvaDispatch.m). It is
6% used on the fork-join path only: the MMT transformation returns a plain
7% mixed queueing network, so the specialised NC routes (order-independent,
8% cache, loss network, finite capacity regions) cannot apply to it, and the
9% load-dependent route is selected here exactly as runAnalyzer does.
10%
11% The auxiliary open classes that carry the parallelism start at an arrival
12% rate of GlobalConstants.FineTol. On an open transformed model the analyzer
13% resolves them with the exact open-network formulas, so no method override is
14% needed; on a closed or mixed one the normalizing constant has to separate a
15% chain whose throughput is ~1e-8, which is where the accuracy of this path
16% has to be judged (see the fork-join tests).
17%
18% Copyright (c) 2012-2026, Imperial College London
19% All rights reserved.
20
21subopts = options;
22if ~isempty(sn.lldscaling) || ~isempty(sn.cdscaling) || ~isempty(sn.jdscaling)
23 [QN,UN,RN,TN,CN,XN,lG,runtime,lastiter,actualmethod] = solver_ncld_analyzer(sn, subopts);
24else
25 [QN,UN,RN,TN,CN,XN,lG,runtime,lastiter,actualmethod] = solver_nc_analyzer(sn, subopts);
26end
27
28out = struct('QN', QN, 'UN', UN, 'RN', RN, 'TN', TN, 'CN', CN, 'XN', XN, ...
29 'lG', lG, 'runtime', runtime, 'lastiter', lastiter, 'method', options.method, ...
30 'actualmethod', '');
31if exist('actualmethod','var') && ~isempty(actualmethod)
32 out.actualmethod = actualmethod;
33end
34end