C Project Machine Problem 5 Queues Write a program that sim

C++ Project

Machine Problem 5 - Queues

Write a program that simulates a checkout line at a supermarket. The line is a queue object. Customers (i.e. customer objects) arrive in random integer intervals of 1-4 minutes, also, each customer is served in random integers intervals of 1-4 minutes. Obviously, the rates need to be balanced. If the average arrival rate is larger than the average service rate, the queue will grow infinitely. Even with balanced rates, randomness can still cause long lines. Run the supermarket simulation for a 2-hour period (120 minutes) using the following algorithm:

Choose a random integer from 1 to 4 to determine the minute at which the first customer arrives

At the first customer’s arrival time:

Determine customer’s service time

Begin servicing the customer;

Schedule arrival time of next customers

For each minute of the day

If the next customer arrives, Say so, enqueue the customer, and schedule the arrival time of the next customer.

If the services was completed for the last customer, Say so, dequeue next customer to be serviced and determined customer’s service completion time (random integer 1 – 4 added to the current time).

Now run your simulation for 120 minutes, and answer each of the following:

What is the maximum number of customers in the queue at any time?

What is the longest wait any one customer experiences?

What happens if the arrival interval is changed from 1-4 minutes to 1-3 minutes?

Please upload the following:

The class .cpp file

The main program

The class .h file

Output File

Answers to the Questions Above

Solution

#include \"stdafx.h\"
#include \"SupermarketQueue.h\"
#include \"Customer.h\"
#include \"Windows.h\"
#include <queue>
#include <iostream>
#include <string>
#include <random>
#include <ctime>
#include <iomanip>

using namespace std;

const int ONE_MINUTE = 100; //Miliseconds

int _tmain(int argc, _TCHAR* argv[])
{
   srand(static_cast <unsigned int> (time(0)));
   SupermarketQueue serviceQueue(ONE_MINUTE);

   int totalTimeReference;
   int nextArrivalTimeReference;
   int nextServiceTimeReference = 0;
   totalTimeReference = nextArrivalTimeReference = GetTickCount();
  
   while ((GetTickCount() - totalTimeReference) <= (720 * ONE_MINUTE))
   {
       if ((GetTickCount() - nextArrivalTimeReference) >= (serviceQueue.getNextArrivalTime() * ONE_MINUTE))
       {
           if (serviceQueue.isEmpty())
           {
               nextArrivalTimeReference = nextServiceTimeReference = GetTickCount();
               cout << serviceQueue.enqueue() << endl;
               cout << \"                       Current Amount Of Customers In Line: \" << serviceQueue.lineLength() << endl << endl;
           }
           else
           {
               nextArrivalTimeReference = GetTickCount();
               cout << serviceQueue.enqueue() << endl;
               cout << \"                       Current Amount Of Customers In Line: \" << serviceQueue.lineLength() << endl << endl;
           }
           serviceQueue.setNextArrivalTime();
       }

       if (!serviceQueue.isEmpty() && ((GetTickCount() - nextServiceTimeReference) >= (serviceQueue.front().getServiceTime() * ONE_MINUTE)))
       {
           cout << serviceQueue.dequeue() << endl;
           cout << \"                       Current Amount Of Customers In Line: \" << serviceQueue.lineLength() << endl << endl;
           nextServiceTimeReference = GetTickCount();
       }
   }

   while (!serviceQueue.isEmpty())
   {
       if ((GetTickCount() - nextServiceTimeReference) >= (serviceQueue.front().getServiceTime() * ONE_MINUTE))
       {
           cout << serviceQueue.dequeue() << endl;
           cout << \"                       Current Amount Of Customers In Line: \" << serviceQueue.lineLength() << endl << endl;
           nextServiceTimeReference = GetTickCount();
       }
   }

   cout << \"STORE CLOSED!\ \" << endl;
   cout << serviceQueue << \"\ \ \" << endl;
   return 0;
}

C++ Project Machine Problem 5 - Queues Write a program that simulates a checkout line at a supermarket. The line is a queue object. Customers (i.e. customer obj
C++ Project Machine Problem 5 - Queues Write a program that simulates a checkout line at a supermarket. The line is a queue object. Customers (i.e. customer obj

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site