Download presentation
Presentation is loading. Please wait.
Published byJessie Fowler Modified over 9 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.