Advertisement
sabbirshibli

Single Server Queueing System

Apr 25th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.81 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define M 100
  3. #define sf(a) scanf("%d", &a)
  4. #define pf(a) printf("%d", a)
  5. #define sc scanf
  6. #define pc printf
  7. #define pb push_back
  8. #define pi1 acos(-1)
  9. #define pi2 3.14151317
  10. #define loop0(i,n) for(i=0;i<n;i++)
  11. #define loop1(i,n) for(i=0;i<n-1;i++)
  12. /*
  13. @ Author- Sabbir Ahmed Shibli
  14. @ ID- 15101076
  15. @ Department of CSE, University of Asia Pacific
  16. */
  17. using namespace std;
  18. int main()
  19. {
  20.     int n,i=0,sum=0;
  21.     float avgWaitingTime,serverUtil;
  22.     int interArrival[M];
  23.     int arrivalTime[M];
  24.     int serviceTime[M];
  25.     int serviceBegins[M];
  26.     int serviceEnds[M];
  27.     int waitingTime[M];
  28.     int idleTime[M];
  29.     printf("Enter the amount of customers: ");
  30.     scanf("%d", &n);
  31.     loop0(i,n) {
  32.         if(i==0)
  33.             interArrival[i]=0;
  34.         else
  35.             interArrival[i]=rand()%n;
  36.     }
  37.     loop0(i,n) {
  38.         serviceTime[i]=rand()%4+1;
  39.     }
  40.     loop0(i,n) {
  41.         if(i==0)
  42.             arrivalTime[i]=0;
  43.         else
  44.             arrivalTime[i]=arrivalTime[i-1]+interArrival[i];
  45.     }
  46.     loop0(i,n) {
  47.         if(i==0) {
  48.             serviceBegins[i]=0;
  49.             serviceEnds[i]=serviceTime[0];
  50.         }
  51.         else {
  52.             if(serviceEnds[i-1]>=arrivalTime[i])
  53.                 serviceBegins[i]=serviceEnds[i-1];
  54.             else
  55.                 serviceBegins[i]=arrivalTime[i];
  56.             serviceEnds[i]=serviceBegins[i]+serviceTime[i];
  57.         }
  58.     }
  59.     loop0(i,n) {
  60.         waitingTime[i]=serviceEnds[i]-serviceBegins[i];
  61.     }
  62.     loop0(i,n) {
  63.         sum += waitingTime[i];
  64.     }
  65.     avgWaitingTime=sum/float(n);
  66.     sum=0;
  67.     loop1(i,n) {
  68.         idleTime[i]=serviceBegins[i+1]-serviceEnds[i];
  69.     }
  70.     loop1(i,n) {
  71.         sum+=idleTime[i];
  72.     }
  73.     serverUtil=((serviceEnds[n-1]-sum)/float(serviceEnds[n-1]))*100;
  74.  
  75.     /// Printing all the columns
  76.  
  77.     // Inter Arrival Time
  78.     printf("InterArrival Time: ");
  79.     loop0(i,n) {
  80.         printf("%d ", interArrival[i]);
  81.     }
  82.     printf("\n");
  83.     // Service Time
  84.     printf("Service Time: ");
  85.     loop0(i,n) {
  86.         printf("%d ", serviceTime[i]);
  87.     }
  88.     printf("\n");
  89.     // Arrival Time
  90.     printf("Arrival Time: ");
  91.     loop0(i,n) {
  92.         printf("%d ", arrivalTime[i]);
  93.     }
  94.     printf("\n");
  95.     // Service Begins
  96.     printf("Service Beginning Time: ");
  97.     loop0(i,n) {
  98.         printf("%d ", serviceBegins[i]);
  99.     }
  100.     printf("\n");
  101.     // Service Ends
  102.     printf("Service Ending Time: ");
  103.     loop0(i,n) {
  104.         printf("%d ", serviceEnds[i]);
  105.     }
  106.     printf("\n");
  107.     // Waiting Time
  108.     printf("Waiting Time: ");
  109.     loop0(i,n) {
  110.         printf("%d ", waitingTime[i]);
  111.     }
  112.     printf("\n");
  113.     printf("Average Waiting Time: %.02lf s.\n", avgWaitingTime);
  114.     printf("Server Utilization: %.02lf %%\n", serverUtil);
  115.  
  116.     return 0;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement