LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
pfqn_mvams.m
1%{
2%{
3 % @file pfqn_mvams.m
4 % @brief General-purpose MVA for mixed networks with multiserver nodes.
5%}
6%}
7
8%{
9%{
10 % @brief General-purpose MVA for mixed networks with multiserver nodes.
11 % @fn pfqn_mvams(lambda, L, N, Z, mi, S)
12 % @param lambda Arrival rate vector.
13 % @param L Service demand matrix.
14 % @param N Population vector.
15 % @param Z Think time vector.
16 % @param mi Queue replication factors (default: ones).
17 % @param S Number of servers per station (default: ones).
18 % @return XN System throughput.
19 % @return QN Mean queue lengths.
20 % @return UN Utilization.
21 % @return CN Cycle times.
22 % @return lG Logarithm of normalizing constant.
23%}
24%}
25function [XN,QN,UN,CN,lG]=pfqn_mvams(lambda,L,N,Z,mi,S)
26% [XN,QN,UN,CN,LOGG]=PFQN_MVAMS(LAMBDA,L,N,Z,MI,S)
27
28% this is a general purpose script to handle mixed qns with multi-server nodes
29% S(i) number of servers in station i
30[M,R]=size(L); % get number of queues (M) and classes (R)
31Ntot = 0;
32hasOpenClasses = false;
33for r = 1:R
34 if isinf(N(r))
35 hasOpenClasses = true;
36 else
37 Ntot = Ntot + N(r);
38 end
39end
40mu = ones(M,Ntot);
41if nargin<6 %~exist('S','var')
42 S = ones(M,1);
43end
44if nargin<5 %~exist('mi','var')
45 mi = ones(M,1);
46end
47if isempty(Z)
48 Z = zeros(1,R);
49elseif size(Z,1) > 1
50 % Sum think times across multiple delay stations
51 Z = sum(Z,1);
52end
53for ist=1:M
54 mu(ist,:) = min(1:Ntot,S(ist)*ones(1,Ntot));
55end
56hasMultiServer = false;
57for ist = 1:M
58 if isfinite(S(ist)) && S(ist) > 1
59 hasMultiServer = true;
60 break;
61 end
62end
63
64if ~hasMultiServer % if no multi-server nodes
65 if hasOpenClasses % open or mixed model
66 [XN,QN,UN,CN,lG] = pfqn_mvamx(lambda,L,N,Z,mi);
67 else % closed model
68 [XN,QN,UN,CN,lG] = pfqn_mva(L,N,Z,mi);
69 end
70else % if the model has multi-server nodes
71 if hasOpenClasses % open or mixed model
72 if max(mi) == 1
73 lG = NaN; % NC not available in this case
74 [XN,QN,UN,CN] = pfqn_mvaldms(lambda,L,N,Z,S);
75 else
76 line_error(mfilename,'Queue replicas not available in exact MVA for mixed models.');
77 end
78 else
79 [XN,QN,UN,CN,lG] = pfqn_mvald(L,N,Z,mu);
80 lG=lG(end);
81 end
82end
83return
84end
Definition mmt.m:124