Answered step by step
Verified Expert Solution
Question
1 Approved Answer
I need help with the correct MATLAB Code to calculate pN which is the total of users in the system including those in the queue
I need help with the correct MATLAB Code to calculate pN which is the total of users in the system including those in the queue and being served.function [Ws, Wq, c_util, p_drop, p_state] = MMCQ(lambda, mu, c, Nwait) rho = lambda / (c * mu); p0_denom = sum((c * rho).^(0:(c - 1)) / factorial(0:(c - 1))) + (c * rho)^c / factorial(c) / (1 - rho); p0 = 1 / p0_denom; p_state = zeros(1, Nwait + 1); p_state(1) = p0; for i = 1:Nwait ci = min(i, c); if i <= c p_state(i + 1) = ci / c * p_state(i) * rho / factorial(i); else p_state(i + 1) = c^ci / factorial(ci) * p_state(i) * rho^i / factorial(c); end end p_state = p_state / sum(p_state); pN = p_state(Nwait + 1); lambda_loss = lambda * p_state(Nwait + 1); lambda_eff = lambda - lambda_loss; Lq = sum((0:Nwait) .* p_state); Ls = Lq + lambda_eff / mu; c_bar = Ls - Lq; c_util = c_bar / c; p_drop = p_state(Nwait + 1); Ws = Ls / lambda_eff; Wq = Lq / lambda_eff; end % c = Total service time / Total time lambda = 2; % arrival rate mu = 5; % service rate c = 3; % number of servers Nwait = 15 % Call the MMCQ function with the given parameters % [Ws, Wq, c_util, p_drop, p_state] = MMCQ(lambda, mu, c, Nwait); [Ws, Wq, c_util, p_drop, p_state] = MMCQ(1, 0.5, 4, 5); % Define a relative error function rel_error = @(x, y) abs(x - y) / y; % Validate the results and print "PASS" or "FAIL" for each metric if rel_error(Ws, 2.1557) < 0.005 fprintf('Ws = %6.3f PASS ', Ws); else fprintf('Ws = %6.3f FAIL ', Ws); end if rel_error(Wq, 0.1557) < 0.005 fprintf('Wq = %6.3f PASS ', Wq); else fprintf('Wq = %6.3f FAIL ', Wq); end if rel_error(c_util, 0.4986) < 0.005 fprintf('c_util = %6.3f PASS ', c_util); else fprintf('c_util = %6.3f FAIL ', c_util); end if rel_error(p_drop, 0.00272) < 0.005 fprintf('p_drop = %8.5f PASS ', p_drop); else fprintf('p_drop = %8.5f FAIL ', p_drop); end fprintf('p_state: %s ', num2str(p_state)); fprintf('sum(p_state): %f ', sum(p_state)); % Extra Tests: p_state % p_state should have Nwait+1 probabilities % disp(['The probability of being in state ', num2str(Nwait), ' is ', num2str(p_state(Nwait + 1))]); disp(['The probability of being in state ', ' is ', num2str(p_state)]); % Check that the probabilities sum to 1 if abs(sum(p_state) - 1) < 1e-5 disp('The probabilities sum to 1. Test PASSED.'); else disp('The probabilities do not sum to 1. Test FAILED.'); end Can you please help me as well how to show the correct number of state probabilities. It is showing only 6 states
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started