LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
pfqn_mvaldms.m
1%{
2%{
3 % @file pfqn_mvaldms.m
4 % @brief Load-dependent MVA for multiserver mixed networks (wrapper for pfqn_mvaldmx).
5%}
6%}
7
8%{
9%{
10 % @brief Load-dependent MVA for multiserver mixed networks (wrapper for pfqn_mvaldmx).
11 % @fn pfqn_mvaldms(lambda, D, N, Z, S)
12 % @param lambda Arrival rate vector.
13 % @param D Service demand matrix.
14 % @param N Population vector.
15 % @param Z Think time vector.
16 % @param S Number of servers per station.
17 % @return XN System throughput.
18 % @return QN Mean queue lengths.
19 % @return UN Utilization (adjusted for multiservers).
20 % @return CN Cycle times.
21 % @return lGN Logarithm of normalizing constant.
22%}
23%}
24function [XN,QN,UN,CN,lGN] = pfqn_mvaldms(lambda,D,N,Z,S)
25% [XN,QN,UN,CN] = PFQN_MVALDMS(LAMBDA,D,N,Z,S)
26% Wrapper for pfqn_mvaldmx that adjusts utilizations to account for
27% multiservers
28[M,R] = size(D);
29Nct = sum(N(isfinite(N)));
30mu = ones(M,Nct);
31for ist=1:M
32 mu(ist,:) = min(1:Nct,S(ist));
33end
34if isempty(Z)
35 Z = zeros(1,R);
36end
37[XN,QN,~,CN,lGN] = pfqn_mvaldmx(lambda,D,N,Z,mu,S);
38
39openClasses = find(isinf(N));
40closedClasses = setdiff(1:length(N), openClasses);
41UN = zeros(M,R);
42for r=closedClasses
43 for ist=1:M
44 UN(ist,r) = XN(r) * D(ist,r)/S(ist);
45 end
46end
47
48for r=openClasses
49 for ist=1:M
50 UN(ist,r) = lambda(r) * D(ist,r)/S(ist);
51 end
52end
53
54end