4 % @brief PANACEA (PAth-based Normal Approximation
for Closed networks Estimation Algorithm).
10 % @brief PANACEA (PAth-based Normal Approximation
for Closed networks Estimation Algorithm).
11 % @fn pfqn_panacea(L, N, Z, terms)
12 % @param L Service demand matrix.
13 % @param N Population vector.
14 % @param Z Think time vector.
15 % @param terms Number of terms in
the normal-usage asymptotic series
16 % (1, 2, or 3;
default 3), as selectable in
the original PANACEA
17 % package (Ramakrishnan-Mitra, BSTJ 61(10):2849-2872, 1982).
18 % @
return Gn Normalizing constant.
19 % @
return lGn Logarithm of normalizing constant.
22function [Gn,lGn]=pfqn_panacea(L,N,Z,terms)
23% [GN,LGN]=PFQN_PANACEA(L,N,Z,TERMS)
25% K = population vector
27if nargin==2 || isempty(Z)
30if nargin<4 || isempty(terms)
33if ~isscalar(terms) || terms<1 || terms>3 || terms~=round(terms)
34 line_error(mfilename,
'The terms parameter must be 1, 2, or 3 (higher-order coefficients are not implemented).');
36if isempty(L) | sum(L,1)==zeros(1,p)
37 lGn = - sum(factln(N)) + sum(N.*log(sum(Z,1)));
42Nt = max(1./r(r>0)); % ignore structural zeros (classes not visiting a station)
46gammatilde = gamma ./ repmat(alpha',1,p);
48 % line_warning(mfilename,
'Model is not in normal usage');
58 m = zeros(1,p); m(j)=2;
59 A1 = A1 -beta(j) * pfqn_ca(gammatilde,m);
66 m = zeros(1,p); m(j)=3;
67 A2 = A2 + 2 * beta(j) * pfqn_ca(gammatilde,m);
68 m = zeros(1,p); m(j)=4;
69 A2 = A2 + 3 * beta(j)^2 * pfqn_ca(gammatilde,m);
72 m = zeros(1,p); m(j)=2; m(k)=2;
73 A2 = A2 + 0.5 * beta(j) * beta(k) * pfqn_ca(gammatilde,m);
82% m = zeros(1,p); m(j)=4;
83% A3 = A3 - 6 * beta(j) * pfqn_ca(gammatilde,m);
84% m = zeros(1,p); m(j)=5;
85% A3 = A3 - 20 * beta(j)^2 * pfqn_ca(gammatilde,m);
86% m = zeros(1,p); m(j)=6;
87% A3 = A3 - 15 * beta(j)^3 * pfqn_ca(gammatilde,m);
89% m = zeros(1,p); m(j)=4; m(k)=2;
90% A3 = A3 - 2 * beta(j) * beta(k) * pfqn_ca(gammatilde,m);
91% m = zeros(1,p); m(j)=2; m(k)=3;
92% A3 = A3 - 3 * beta(j)^2 * beta(k) * pfqn_ca(gammatilde,m);
93%
for l=setdiff(1:p,[j,k])
94% m = zeros(1,p); m(j)=2; m(k)=2; m(l)=2;
95% A3 = A3 - (1/6) * beta(j) * beta(k) * beta(l) * pfqn_ca(gammatilde,m);
100I = [A0, A1/Nt, A2/Nt^2];
104lGn = - sum(factln(N)) + sum(N.*log(sum(Z,1))) + log(sum(I)) - sum(log(alpha));