function ABServerQueue() clear all % Find Arrival Times for the Different Customer Types: i=1; AArrivalTimes(i)=0; while AArrivalTimes(i)<=1 i=i+1; AArrivalTimes(i)=AArrivalTimes(i-1)+poissrnd(1/6); % (10 customers/hour)/(60 minutes/hour) = 1/6 customers/minute end j=1; BArrivalTimes(j)=0; while BArrivalTimes(j)<=1 j=j+1; BArrivalTimes(j)=BArrivalTimes(j-1)+poissrnd(1/10); % (6 customers/hour)/(60 minutes/hour) = 1/10 customers/minute end % Create Ordered Queue: i=1; j=1; k=1; Q(k)=0; for count=1:(length(AArrivalTimes)+length(BArrivalTimes)) if j<=length(BArrivalTimes) && i<=length(AArrivalTimes) if AArrivalTimes(i)>BArrivalTimes(j) k=k+1; Q(k)=BArrivalTimes(j); ord(k)='b'; j=j+1; elseif AArrivalTimes(i)length(AArrivalTimes) && j<=length(BArrivalTimes) k=k+1; Q(k)=BArrivalTimes(j); ord(k)='b'; j=j+1; elseif j>length(BArrivalTimes) && i<=length(AArrivalTimes) k=k+1; Q(k)=AArrivalTimes(i); ord(k)='a'; i=i+1; end end % Find Service Times and Departure Times for Each Customer: if Q(1)=='a' DepartureTimes(1)=exprnd(3); ATimeInBank(1)=DepartureTimes(1); else DepartureTimes(1)=exprnd(6); BTimeInBank(1)=DepartureTimes(1); end m=1; n=1; for k=1:(length(AArrivalTimes)+length(BArrivalTimes)) if ord(k+1)=='a' AServiceTimes(m)=exprnd(3); % Mean = 3 minutes DepartureTimes(k+1)=DepartureTimes(k)+AServiceTimes(m); ATimeInBank(m)=DepartureTimes(k+1)-AArrivalTimes(m); m=m+1; else BServiceTimes(n)=exprnd(6); % Mean = 6 minutes DepartureTimes(k+1)=DepartureTimes(k)+BServiceTimes(n); BTimeInBank(n)=DepartureTimes(k+1)-BArrivalTimes(n); n=n+1; end end AArrivalTimes BArrivalTimes DepartureTimes Q ATimeInBank BTimeInBank plot(1:length(Q),Q) grid on title('Number of Arrivals vs. Time') xlabel('Time (in minutes)') ylabel('Number of Arrivals') mean(ATimeInBank) mean(BTimeInBank)