1function Pnir = getProbAggr(self, node, state_a)
2% PNIR = GETPROBAGGR(NODE, STATE_A)
4% Probability of a SPECIFIC per-
class job distribution at a station.
5% Returns
P(n1 jobs of
class 1, n2 jobs of
class 2, ...) at the node.
7% Compare with getProbMarg: returns total queue-length distribution,
8% i.e.,
P(n total jobs) summed over all class combinations.
11% node - Queue or node
object
12% state_a - Per-class job counts, e.g., [2,1] = 2 class-1, 1 class-2
15% Pnir - Scalar probability in [0,1]
17if GlobalConstants.DummyMode
25% Get unnormalized probability using original NC method
27 state_a = sn.state{sn.nodeToStateful(node.index)};
30% Store original state and set requested state
31ist = sn.nodeToStation(node.index);
32original_state = sn.state{ist};
33sn.state{ist} = state_a;
35options = self.getOptions;
36Solver.resetRandomGeneratorSeed(options.seed);
38self.result.(
'solver') = getName(self);
39if isfield(self.result,
'Prob') && isfield(self.result.Prob,
'logNormConstAggr') && isfinite(self.result.Prob.logNormConstAggr)
40 [Pnir_vec,lG] = solver_nc_margaggr(sn, self.options, self.result.Prob.logNormConstAggr);
42 [Pnir_vec,lG] = solver_nc_margaggr(sn, self.options);
43 self.result.Prob.logNormConstAggr = lG;
45self.result.Prob.marginal = Pnir_vec;
47% solver_nc_margaggr already returns normalized probabilities
48% (it computes
P = F_i * G(-i) / G which
is properly normalized)
49% So we simply extract the probability
for this station
52% Restore original state
53sn.state{ist} = original_state;
56self.result.runtime = runtime;