4 % @brief Bard-Schweitzer approximate MVA
for FCFS scheduling with weighted priorities.
10 % @brief Bard-Schweitzer approximate MVA
for FCFS scheduling with weighted priorities.
11 % @fn pfqn_bsfcfs(L, N, Z, tol, maxiter, QN, weight)
12 % @param L Service demand matrix.
13 % @param N Population vector.
14 % @param Z Think time vector (
default: zeros).
15 % @param tol Convergence tolerance (default: 1e-6).
16 % @param maxiter Maximum number of iterations (default: 1000).
17 % @param QN Initial queue length matrix (default: uniform distribution).
18 % @param weight Weight matrix for relative priorities (default: ones).
19 % @return XN System throughput.
20 % @return QN Mean queue lengths.
21 % @return UN Utilization.
22 % @return RN Residence times.
23 % @return it Number of iterations performed.
26function [XN,QN,UN,RN,it]=pfqn_bsfcfs(L,N,Z,tol,maxiter,QN,weight)
27% [XN,QN,UN,RN]=PFQN_BSFCFS(L,N,Z,TOL,MAXITER,QN,WEIGHT)
29if nargin<3%~exist(
'Z',
'var')
32if nargin<4%~exist(
'tol',
'var')
35if nargin<5%~exist('maxiter','var')
40if nargin<6 %~exist('QN','var')
43 QN = QN+eps; % 0 gives problems
45if nargin<7 %~exist('weight','var')
55 relprio(ist,r) = (QN(ist,r)*weight(ist,r));
64 CN(ist,r) = CN(ist,r) + L(ist,s)*QN(ist,s)*relprio(ist,s)/relprio(ist,r);
66 CN(ist,r) = CN(ist,r) + L(ist,r)*QN(ist,r)*(N(r)-1)/N(r)*relprio(ist,s)/relprio(ist,r);
70 XN(r) = N(r)/(Z(r)+sum(CN(:,r)));
74 QN(ist,r) = XN(r)*CN(ist,r);
79 UN(ist,r) = XN(r)*L(ist,r);
82 if max(abs(1-QN./QN_1)) < tol
86RN = QN ./ repmat(XN,M,1);