LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
getProbAggr.m
1function Pnir = getProbAggr(self, node, state_a)
2% PNIR = GETPROBAGGR(NODE, STATE_A)
3%
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.
6%
7% Compare with getProbMarg: returns total queue-length distribution,
8% i.e., P(n total jobs) summed over all class combinations.
9%
10% Input:
11% node - Queue or node object
12% state_a - Per-class job counts, e.g., [2,1] = 2 class-1, 1 class-2
13%
14% Output:
15% Pnir - Scalar probability in [0,1]
16
17if GlobalConstants.DummyMode
18 Pnir = NaN;
19 return
20end
21
22T0 = tic;
23sn = self.getStruct;
24
25% Get unnormalized probability using original NC method
26if nargin<3
27 state_a = sn.state{sn.nodeToStateful(node.index)};
28end
29
30% Store original state and set requested state
31ist = sn.nodeToStation(node.index);
32original_state = sn.state{ist};
33sn.state{ist} = state_a;
34
35options = self.getOptions;
36Solver.resetRandomGeneratorSeed(options.seed);
37
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);
41else
42 [Pnir_vec,lG] = solver_nc_margaggr(sn, self.options);
43 self.result.Prob.logNormConstAggr = lG;
44end
45self.result.Prob.marginal = Pnir_vec;
46
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
50Pnir = Pnir_vec(ist);
51
52% Restore original state
53sn.state{ist} = original_state;
54
55runtime = toc(T0);
56self.result.runtime = runtime;
57
58end