csc 205 programming ii

12
CSC 205 Programming II Lecture 22 Carwash Simulation

Upload: stephen-hunter

Post on 01-Jan-2016

33 views

Category:

Documents


2 download

DESCRIPTION

CSC 205 Programming II. Lecture 22 Carwash Simulation. Recap: Queue. A queue is an ordered, linear data structure New items are added at the rear end Items are removed from the front end It’s a “ first-in, first-out ” (FIFO) structure Queue operations - PowerPoint PPT Presentation

TRANSCRIPT

CSC 205Programming II

Lecture 22

Carwash Simulation

Recap: Queue

A queue is an ordered, linear data structure New items are added at the rear end Items are removed from the front end It’s a “first-in, first-out” (FIFO) structure

Queue operations Enqueue – add an item to the rear end Dequeue – remove the front item Peek – get the content of the top item

Carwash Simulation

The Problem

A carwash station can wash one car at a time Time needed to wash a car is measured in

seconds Cars may arrive at any given second

A probability can be assumed Cars arrived when the washer is busy have

to wait in line First-come, first-served

The goal: find out the average waiting time for a given period of time (in seconds)

Program Specification

Input Time needed to wash one car The probability that a new customer arrives

at any given second The total length of time to be simulated

Output Car arrival and leaving history Number of customers serviced Average time that a customer spent in line

during the simulation

Design

Objects relevant to the carwash problem A collection of cars: CarQueue Car Washer

Other objects used in the simulation Random arrival time generator: BooleanSource

Average time calculator: Averager The application driver class: CarWashApp

Detailed Design

Key design concept Determine which properties of a real-world

object are relevant to the problem at hand Car

Arrival timestamp Sequence number

CarQueue A linked list object is used as a queue Three operations

• enqueue, dequeue, isEmpty

Detailed Design – continued

Washer Variables

• Time (in seconds) needed to wash a car• Time left to finish washing the current car

Operations• Start washing

• set washTimeLeft to secondsForWash

• Reduce remaining time• Decrement washTimeLeft if it is not zero

• Test if the washer is busy• It’s busy if washTimeLeft is greater than zero

Detailed Design – continued

BooleanSource Variable: probability Operation: query

• returns true only if Math.random() < probability Averager

Variables• A count and a sum

Operations• addNumber: update both count and sum• howManyNumbers: return count• average: return sum/count

Car Wash Application

carWashSimulateThree parameters

• Time needed to wash a car• Probability• Total time

Echo input parameters Validate parametersProcessing car washing with a loopOutput results

Car Wash Application

Within the loop Check if a new car arrives Check whether we can start washing another

car• That is if washer is not busy, and • The queue is not empty

Reduce the remaining time during washing a car

Sample Simulation

C:\courses\CSC205\labs\carwash>java CarWashApp2Seconds to wash one car: 1000Probability of customer arrival during a second: 0.0010Total simulation seconds: 5000Car Arrived Left Waited1 470 470 02 1412 1470 583 1580 2470 8904 2900 3470 5705 3559 4470 911Customers served: 5Average wait: 485.8 sec