Simulate_Simple_Queue<-function(Customers,n_cust) { for (i in c(1:n_cust)) { if (i==1) { Customers$AT[i]<-0+Customers$IAT[i] #ARRIVAL TIME Customers$TSB[i]<-0 #TIME SERViCE BEGINS Customers$TWQ[i]<-0 #WAITING TIME IN QUEUE Customers$TSE[i]<-Customers$TSB[i]+Customers$ST[i] #TIME SERVICE ENDS Customers$TIS[i]<-Customers$TSE[i]-Customers$AT[i] #TOTAL TIME IN SYSTEM Customers$IDTS[i]<-0 #IDLE TIME OF THE SERVER } else { Customers$AT[i]<-Customers$AT[i-1]+Customers$IAT[i] #ARRIVAL TIME Customers$TSB[i]<-max(Customers$AT[i],Customers$TSE[i-1]) #TIME SERViCE BEGINS Customers$TWQ[i]<-Customers$TSB[i]-Customers$AT[i] #WAITING TIME IN QUEUE Customers$TSE[i]<-Customers$TSB[i]+Customers$ST[i] #TIME SERVICE ENDS Customers$TIS[i]<-Customers$TSE[i]-Customers$AT[i] #TOTAL TIME IN SYSTEM Customers$IDTS[i]<-Customers$TSB[i]-Customers$TSE[i-1] #IDLE TIME OF THE SERVER } } return(Customers) } Simple_Queue_Stats<-function(Customers) { queue_stats<-data.frame(TST=0,AWT=0,Pr_W=0,Pr_I=0,AST=0,ATBA=0,AWT_C=0,ATS=0) n<-length(Customers$TSE) # CUSTOMERS queue_stats$TST<-Customers$TSE[n] #TOTAL SIMULATION TIME queue_stats$AWT<-mean(Customers$TWQ) #AVERAGE WAITING TIME queue_stats$Pr_W<-length(which(Customers$TWQ>0))/n #PROB CUSTOMER HAS TO WAIT queue_stats$Pr_I<-sum(Customers$IDTS)/queue_stats$TST #PROB SERVER IS IDLE queue_stats$AST<-mean(Customers$ST) #AVERAGE SERVICE TIME queue_stats$ATBA<-mean(Customers$IAT) #AVERAGE TIME BETWEEN ARRIVALS queue_stats$AWT_C<-mean(Customers$TWQ[which(Customers$TWQ>0)]) #AVERAGE WAITING TIME OF THOSE CUSTOMERS THAT WAIT queue_stats$ATS<-mean(Customers$TIS) #AVERAGE TIME IN THE SYSTEM return(queue_stats) } n<-10 The_Customers = data.frame(AT=replicate(n,0), # Arrival Time IAT=replicate(n,0), # Inter Arrival Time ST=replicate(n,0), # Service Time TSB = replicate(n,0), # Time Service beings TWQ = replicate(n,0), # Waiting Time in the Queue TSE = replicate(n,0), # Time Service Ends TIS = replicate(n,0), # Time in System IDTS = replicate(n,0)) # Idel Time of Server The_Customers$IAT<-c(0,3,1,3,7,2,3,7,9,3) The_Customers$ST<-c(2,5,2,3,2,7,3,2,1,7) The_Customers<-Simulate_Simple_Queue(The_Customers,n) The_Customers_Stats<-Simple_Queue_Stats(The_Customers) The_Customers The_Customers_Stats