Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSC 205 Programming II Lecture 22 Carwash Simulation.

Similar presentations


Presentation on theme: "CSC 205 Programming II Lecture 22 Carwash Simulation."— Presentation transcript:

1 CSC 205 Programming II Lecture 22 Carwash Simulation

2 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

3 Carwash Simulation

4 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)

5 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

6 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

7 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

8 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

9 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

10 Car Wash Application carWashSimulate Three parameters Time needed to wash a car Probability Total time Echo input parameters Validate parameters Processing car washing with a loop Output results

11 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

12 Sample Simulation C:\courses\CSC205\labs\carwash>java CarWashApp2 Seconds to wash one car: 1000 Probability of customer arrival during a second: 0.0010 Total simulation seconds: 5000 Car Arrived Left Waited 1 470 470 0 2 1412 1470 58 3 1580 2470 890 4 2900 3470 570 5 3559 4470 911 Customers served: 5 Average wait: 485.8 sec


Download ppt "CSC 205 Programming II Lecture 22 Carwash Simulation."

Similar presentations


Ads by Google