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:
- Understand how event-driven simulation works.
- Use queues in a realistic application.
- Learn about empirical approaches to performance assessment.
- Use appropriate classes.
- Understand a program in which multiple classes collaborate to
solve a problem.
Hand-in Requirements:
- All Classes 15 points
- Sample output and your Report 5 points
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.
- 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.
- 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.