1 / 12

CSC 205 Programming II

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

Télécharger la présentation

CSC 205 Programming II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSC 205Programming 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

More Related