Project  2     Grocery Store Simulation  20 points

This is one of three major individual assignments that you are required to complete in this class. You MUST design and code this project on your own. You can ask for debugging help, particularly from the tutors, TA or instructor, but this project is to be your own work. The project relies on knowledge and skills that you will develop in class and during the recitations. If you are having trouble with these recitations after your in-class session, please be sure that you come to the lab at another time and sit down with a tutor.


Objectives:

Hand-in Requirements:

Overview:  

This project is based on simulation of a grocery store and how it manages customers in line waiting for a checkout person.  You can imagine that you have been hired by a new grocery store to evaluate the optimal way to set up lines for their store.  Here are the two possible ways.

  1. There are a certain number of checkout stations that are all fed by one line.  As a checkout station becomes available the next person in the single line will go to that checkout station.  This is similar to how banks take care of their customers.
  2. There are a certain number of checkout stations and each has its own line.  As a checkout station finishes one customer it takes care of the next customer in its line.  For simplicity we will not allow customers to jump from one line to another. 
As the high paid computer consultant, you are required to submit a report explaining your findings and evaluate which you believe will be the best approach in a variety of circumstances.

Specifics:

To keep the simulation simple we will assume there are three checkouts.  To make it realistic, the time each customer takes at a checkout station will be randomly distrubuted. 

The first approach will be developed in a simulationModel called singleLineModel it will be tested by a class called singleLineModelTester. The second approach will be developed in a simulationModel called multiLineModel it will be tested by a class called multiLineModelTester.  Each of the two models will have a single incoming line, but different configurations of  "buffered rounter"(s) and outgoing line(s).

TESTING

A difficult part of this project is determining how to test the program and what are legitimate parameters for the experiments.  Run the experiments several times in order to determine how each store setup affects the results of the experiment.

Report

With a copy of a sample run, include a report explaining the results of your experiments.  You need to include the parameters you used and why you think that they were appropriate testing values.  Also, include your explanation of why the experiments performed like they did.  Finally, include your formal recommendation to the owner of the grocery store for how they should configure their check out process. 

Please include a description of all the code that is not working at the top of that class definition. If a method is not working explain why you think the code does not work.