联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> Java编程Java编程

日期:2018-11-26 10:53

CS 116 PROJECT

Grade: 12 points.

Guidelines

To be worked on individually.

Must be presented to the TA in person in order to be graded.

Similar projects will both receive a grade of zero regardless as to who did the actual

work. Therefore giving your files to someone else will cost you the grade also.

Due Date: 11/25 11:59PM on Blackboard

After submitting the project by the due date, you will also present the project to your

graduate grader. The grader will schedule a time for your presentation during the week of

Nov. 26th. Do not demo your code during the regular class times.

During the presentation, you will be asked to run the program on your laptop. Be prepared to

answer questions about your coding. Lack of understanding of the design and the code

presented will result in a zero grade!

You can get partial credit based on your design and your code even if your classes are not

compiled or the project is not producing the correct result. You should be able to explain your

work. Anyone who misses the scheduled demo will not receive a

grade.

Upload all files on Blackboard by the deadline. You can’t make any changes after the

submission.

You must work this project by yourself. No groups are allowed. Ask for help early enough. You

can work with the instructor, TAs and/or ARC.

There will be discussions devoted to the project intermittently over the coming weeks.

WHAT TO PRESENT AND SUBMIT

A PowerPoint file that has a diagram that shows your classes and their relationships and

other information required (as described in the “deliverables” section)

The source code files.

2

The compiled files (unless your program does not compile).

PROJECT DESCRIPTION

Design a Simulation Program for Road Traffic

West to East

South to North

Figure 1: Simulation of the Traffic Intersection

In this project, you will implement a discrete event simulator to study the flow of traffic through

an intersection. Such type of applications are useful in traffic engineering, specifically in the

East to West

North to South

Span

3

planning and maintenance of traffic lights, calculating traffic delays, etc. You will be using the

concept of discrete event simulation to simulate the power usage. A Discrete Event Simulator

uses a computer program (basically a loop counting some time intervals, minutes for example) to

simulate time moving forward and random arrival and handling of some sort of event. In this

project, we consider a time intervals to be constant and call each interval a “tick”. The events in

our project correspond to the movement of the vehicles and the change in the traffic lights. So

every iteration of the loop is equal to one tick. In each tick, we will handle the events.

Specifications:

Components

1. You are required to simulate automobile traffic through an intersection controlled by traffic

lights. We will consider a 4-way intersection with traffic flowing in North to South (NS), South

to North (SN), East to West (EW) and West to East (WE). A simulation is a computer program

that models a real world scenario using mathematical or computational representations. In the

traffic simulation program, you are representing the position and movement of automobile

through the given road intersection.

2. The main components of the simulation program are:

a. Roads: You will need to create the four lanes for the NS, SN, EW, WE directions. Each of

these roadways are one-way. In order to estimate the position of automobiles, each lanes

is divided into blocks of unit space (see fig 1). A vehicle can occupy one or more blocks

or unit space. For the purpose of this simulation, consider only SMALL vehicles of 1 unit

space. Also the vehicle cannot move back.

Now the blocks are of three types:

1. Normal blocks: A vehicle in this block can move to the next block if it is empty.

2. Intersection blocks: lie at the intersection of the lanes. In fig. 1, the intersection blocks

have directional arrow (e.g. , ). At the intersection block, vehicles can change their

direction based on the rules of traffic. For example, a vehicle, traveling along SN, when it

reaches the block , have the option of continuing along SN or turn right onto WE.

3. Traffic blocks: The traffic flowing into the intersection are controlled by traffic lights.

There is only one traffic block for each lane and the traffic lights for the lane is situtationed

in the block. Each traffic blocks are indicated in Fig. 1, by the icon . A vehicle in a

traffic block can move forward only if the appropriate traffic light i.e. “GREEN” or

“ORANGE” is on.

You will need to implement these blocks using inheritance. See the attached files for a

sample superclass Block. You will create appropriate subclasses to implement the different

types of blocks.

4

Once the classes for the blocks have been created, you will create a class RoadNetwork

that will use the Block classes to generate the four lanes NS, SN, EW and WE. As part of

the simulation, you will accept a parameter for “span” of the lanes (see Fig 1). Span is the

number of blocks on the lane before it reaches the intersection. You will limit your

simulation on the lanes over the length of the span.

Some of the attributed you should consider for the block classes are:

1. Type: Normal or Intersection or traffic

2. Vehicle: The Auto object (described later) occupying the block

3. Next: The next block on the lane.

4. Prev: The previous block on the lane.

b. Vehicles: The Auto class will represent the vehicle objects travelling on the lanes. For the

purposes of the simulation, you can assume that all vehicle move with a constant speed, i.e., during

each “tick” of the simulation, a vehicle will move to the next block if it is empty else it remains in

the same block. If the vehicle is in a traffic block, then additional rules apply (see the description

for “Traffic Light” component). For vehicles on intersection blocks, there is also an option for the

vehicles to turn left or right based on the traffic rules.

c. Traffic Light: You will need to create a traffic light for each lane and will be placed in the Traffic

block of these lanes (refer Fig. 1). The traffic light will control the flow of the traffic into the

intersection. Each traffic light will cycle through “GREEN”, “ORANGE” and “RED” states only.

Normal traffic rules, such as free right turns and left turn by yielding to ongoing traffic, apply.

Vehicles in the traffic block will be able to move only if the next block is empty AND the traffic

light is “GREEN” or “ORANGE”.

You will implement a simple logic for changing the states of the traffic lights during the simulation.

The traffic light for NS and SN lanes will cycle through the same states at the same time. Similarly

for EW and WE lanes. You will provide the duration for the states as an input for your program.

For example, if GREEN: 5 ticks and ORANGE:2 then the RED state should have a duration of 7

ticks

Simulator

This will use the other components, and will contain the logic to update the simulation over time.

a. Initialization: Before the simulation can start, you will need to do the initialization. This step is

executed once as the simulation is started. You will prompt

the user for the following parameters:

1. Entry rate: This is a value between 0 and 1. The entry rate is the probability that a new

vehicle can enter the simulation. You will use this with a random

5

number generator to determine whether a new vehicle will enter the simulation on

a particular lane.

2. Turn rate: This is a value between 0 and 1. The probability that a vehicle can turn left or

right, based on traffic rules, when occupying an intersection block.

3. Durations for the GREEN and ORANGE states in ticks: The duration for RED

can be automatically determined from these values.

4. Simulation time: No. of ticks for which the traffic will be simulated.

5. Span of the lanes: Span is the number of blocks in a lane that lead upto the intersection

from the entry block. It is also the number of blocks in the lane that lead from the

intersection to the exit block (refer Fig. 1).

You will initialize the lanes of the road by creating the block objects and storing them

within a data structure such as an array or vector. The lanes, once created, do not change

over the duration of the simulation.

You will initialize the traffic light objects for each lane.

b. Simulation Run: For each tick of the simulation, you will need to do the following steps. The

steps for running the simulation during each tick are (in the following order):

1. Update the states of the traffic lights

2. Move the vehicles forward based on the traffic rules and block availability. Update all

corresponding objects (such as blocks and vehicles). On normal blocks, a vehicle can only

move forward on the same lane. However, on the intersection blocks, a vehicle has the

option to move forward and also to turn left or right based on the traffic laws. The

probability to turn is based on the turn rate, you will randomly generate a number between

0 and 1 and if this number is greater than the turn rate, AND if the next block on the left

(or right) is empty, then the vehicle will take a turn. Otherwise the vehicle will move

straight ahead if the next block is empty.

3. Check for vehicles that reach the end of the lanes and need to be moved from the

simulation.

4. For each lane, check if a new vehicle can enter the simulation based on the entry rate.

The entry rate is the probability that a new vehicle can enter the simulation. For each lane,

you will randomly generate a number between 0 and 1 and if this number is greater than

the entry rate, AND if the first block on the lane was empty, then a new vehicle is

introduced on the lane.

5. Update the statistics of the simulation such as wait time of the vehicles. (see the section

on simulation output)

6. REPEAT steps 1 – 5 till the end of the simulation time.

Simulation Output:

Your simulation program should have the following output:

6

1. On your standard output (stdout): Print out the following:

a. Average wait time: of the vehicles in the simulation, For this, you will need to store the

entry time and exit time for each vehicle. You do not need to consider the vehicles that have not

exited at the end of the simulation.

b. Total flow rate (i.e. no of vehicles exiting the simulation per tick) and a break down

showing the flow rate for the vehicles that exited at each lane. For this you need to keep count of

the cars exiting each lane.

2. In an output text file called “out.txt”, print out the ID, entry time, entry lane (NS/SN/EW/WE),

exit lane for each vehicle. You do not need to consider the vehicles that have not exited at the end

of the simulation.

Other instructions:

Create the classes for the components within appropriate packages.

Provide comments in the code for documentation.

Generate the Javadoc for the classes.

Deliverables

1. Create slides in Powerpoint with the following information

o Design info:

A design for the project using UML.

Create Class Diagrams for all the requirements.

Show the associations between the classes

Add Attributes to the Class Diagrams.

Create appropriate test cases.

2. Source code

3. Compiled code

4. Javadoc documentation for the code.

Question?

Post your questions on the discussion list on the blackboard.

Submission

7

Zip all files mentioned in the deliverables section and name the zip file

using your last name followed by your first name followed by the name of

the assignment

i.e. Doe_Jane_Project.zip

Upload the zip file under Project on Blackboard.


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp