csc 205 programming ii lecture 22 carwash simulation

12
CSC 205 Programming II Lecture 22 Carwash Simulation

Upload: jessie-fowler

Post on 03-Jan-2016

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CSC 205 Programming II Lecture 22 Carwash Simulation

CSC 205Programming II

Lecture 22

Carwash Simulation

Page 2: 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 Enqueue – add an item to the rear end Dequeue – remove the front item Peek – get the content of the top item

Page 3: CSC 205 Programming II Lecture 22 Carwash Simulation

Carwash Simulation

Page 4: CSC 205 Programming II Lecture 22 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)

Page 5: CSC 205 Programming II Lecture 22 Carwash Simulation

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

Page 6: CSC 205 Programming II Lecture 22 Carwash 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

Page 7: CSC 205 Programming II Lecture 22 Carwash Simulation

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

Page 8: CSC 205 Programming II Lecture 22 Carwash Simulation

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

Page 9: CSC 205 Programming II Lecture 22 Carwash Simulation

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

Page 10: CSC 205 Programming II Lecture 22 Carwash Simulation

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

Page 11: CSC 205 Programming II Lecture 22 Carwash Simulation

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

Page 12: CSC 205 Programming II Lecture 22 Carwash Simulation

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