LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
pfqn_aql.m
1%{
2%{
3 % @file pfqn_aql.m
4 % @brief Approximate Queue Length (AQL) algorithm for product-form networks.
5%}
6%}
7
8function [XN,QN,UN,RN,numIters,AN]=pfqn_aql(L,N,Z,TOL,MAXITER,QN0)
9%{
10%{
11 % @brief Approximate Queue Length (AQL) algorithm for product-form networks.
12 % @fn pfqn_aql(L, N, Z, TOL, MAXITER, QN0)
13 % @param L Service demand matrix.
14 % @param N Population vector.
15 % @param Z Think time vector.
16 % @param TOL Tolerance for convergence.
17 % @param MAXITER Maximum number of iterations.
18 % @param QN0 Initial guess for queue lengths.
19 % @return XN System throughput.
20 % @return QN Mean queue lengths.
21 % @return UN Utilization.
22 % @return RN Residence times.
23 % @return numIters Number of iterations.
24 % @return AN Average arrival rate at nodes.
25%}
26%}
27[M,K]=size(L);
28if nargin<3
29 Z=zeros(1,K);
30end
31if nargin<6 || isempty(QN0) %~exist('QN','var')
32 QN0 = repmat(N,M,1)/M;
33else
34 QN0 = QN0+eps; % 0 gives problems
35end
36if nargin<4
37 TOL = 1e-7;
38end
39if nargin<5
40 MAXITER=1e3;
41end
42Q=cell(1,K+1);
43R=cell(1,K+1);
44X=cell(1,K+1);
45for t=1:K+1
46 Q{t} = zeros(M, 1);
47 R{t} = zeros(M, K);
48 X{t} = zeros(1, K);
49end
50gamma = zeros(M,K);
51
52for t=0:K
53 n=oner(N,t);
54 for k=1:M
55 Q{t+1}(k,1)=QN0(k);
56 end
57end
58it = 0;
59while 1
60 Q_olditer = Q;
61 it = it + 1;
62 for t=0:K
63 n=oner(N,t);
64 for k=1:M
65 for s=1:K
66 R{t+1}(k,s) = L(k,s)*(1+(sum(n)-1)*(Q{t+1}(k)/sum(n)-gamma(k,s)));
67 end
68 end
69 for s=1:K
70 X{t+1}(s) = n(s)/(Z(s)+sum(R{t+1}(:,s)));
71 end
72 for k=1:M
73 Q{t+1}(k) = X{t+1}(:)'*R{t+1}(k,:)';
74 end
75 end % for t
76 for k=1:M
77 for s=1:K
78 gamma(k,s) = (Q{0+1}(k)/sum(N)) - (Q{s+1}(k)/(sum(N)-1));
79 end
80 end
81 if max(abs((Q_olditer{1}(:)-Q{1}(:))./Q{1}(:))) < TOL || it == MAXITER
82 numIters=it;
83 break
84 end
85end
86XN = X{1};
87RN = R{1};
88UN = zeros(M, K);
89QN = zeros(M, K);
90AN = zeros(M, K);
91for k=1:M
92 for s=1:K
93 UN(k,s) = XN(s)*L(k,s);
94 QN(k,s) = UN(k,s)*(1+Q{s+1}(k));
95 AN(k,s) = Q{s+1}(k);
96 end
97end
98end
Definition mmt.m:93