Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Task composed of three stages Stage 1 develop a program that given a problem and a solution computes the quality of the solution Stage 2/3

Task composed of three stages

Stage 1 develop a program that given a problem and a solution computes the quality of the solution

Stage 2/3 develop a program that given a problem computes a solution of high quality

Classes - write code for the following classes to:

Main Class - get the name of the two files from the command line and creates/run the simulation

public class Main { public static void main(String[] args) { String worldAndRidesFileName = args[0]; String allocationFileName = args[1]; Simulation s = new Simulation(worldAndRidesFileName, allocationFileName); s.run(); } }

Simulation Class - creates a WorldAndRides and Allocation from the files

/** * Write a description of class Simulation here. * */ public class Simulation { String worldAndRidesFileName; String allocationFileName; public Simulation(String worldAndRidesFileName, String allocationFileName) { this.worldAndRidesFileName = worldAndRidesFileName; this.allocationFileName = allocationFileName; } public void run() { try { WorldAndRides worldAndRides = new WorldAndRides(worldAndRidesFileName); Allocation allocation = new Allocation(allocationFileName, worldAndRides); int score = 0; //compute score of allocation //.... System.out.println(score); } catch (FileFormatException e) { System.out.println ("ERROR "+ e.description()); } } }

WorldAndRides Class - read information about the world and the rides from the file storing them into internal data-structures

/** * Write a description of class WorldAndRides here. * */ public class WorldAndRides

//TODO decide a proper data-structure to store the information about the world //and the requested rides.

{ public WorldAndRides(String worldAndRidesFileName) throws FileFormatException { //TODO read the world information from worldAndRidesFileName //and store the information in this class //TODO read the information about the requested rides and store the //information in this class } //TODO define appropriate methods for this class. }

This class should check the format of the file and read values are according to the specifications

Allocation Class - reads information about the allocation of rides to cars and stores them in internal data-structures

/** * Write a description of class Allocation here. * */ public class Allocation

//TODO decide a proper data-structure to store the allocation

{ public Allocation(String allocationFileName, WorldAndRides worldAndRides) throws FileFormatException { //TODO read an allocation from allocationFileName and stores the content in //an appropriate datastructure inside this class } //TODO define appropriate methods for this class (e.g. accessor methods) }

This class should check format, values, and and that they are consistent with information from the world

FileFormatException Class - used to signal that there is a problem with the files

/** * Write a description of class FileFormatException here. * * @author (your name) * @version (a version number or a date) */ public class FileFormatException extends Exception { public String description() { //returns a message describing what is the problem with the file instead of null.. return null; } }

You need to keep the Main class as it is (it is needed for the automated system to work)

Where to go from here

First you need to write some code to read the WorldAndRidesfile to

Set up the parameters of the world

Store the list of rides in a data structure

Second you need to write some code to read the Allocation file and store the list of rides allocated to each vehicle

Then you need to think how to compute the score, there are two ways about this:

A simpler way that goes through what happens to each vehicle separately as it moves around according to the car movement rules, computing the points for the vehicle

after a vehicle has completed the list of rides, the points get added to the total, clock is reset to 0 and the simulation restarts for the next vehicle

A more complex way in which there is a single clock and all vehicles move in a single simulation adding points as they go

This takes substantially longer but it can be helpful to develop strategies in Stage2/3 as it is easy to know where every vehicle is at a specific point in time

The problem

A fleet of self-driving cars get passengers around

passengers pre-book their rides beforehand

to each self-driving car is allocated a sequence of rides to complete in order, according to a pre-defined set of rules

cars get points if they start/finish rides on time

In Stage 1 you have to develop a simulation/scoring system that reads two input files

World and Rides: a description of the city and the rides booked,

Allocation: a list of rides allocated to each car;

and prints how good that allocation is, i.e. the total number of points obtained.

In Stage 2/3 you will instead read the World and Rides file, allocate rides to cars to obtain as many points as possible, and then print out the resulting Allocation.

The World

The city is represented by a rectangular grid of streets, with R horizontal streets (rows) and C vertical streets (columns).

Street intersections are referenced by integer, 0-based coordinates of the horizontal and the vertical street.

For example, [r, c] means the intersection of the r-th horizontal and the c-th vertical street ( 0 r < R, 0 c < C ).

Time and distance

The time proceeds in T steps, from 0 to T 1.

The distance between two intersections is defined as the minimum total number of city blocks (cells in the grid) that a vehicle has to pass in each direction to get from one intersection to the other. That is, the distance between intersection [a, b] and intersection [x, y] is equal to |a x| + |b y| .

The number of steps required to drive between two intersections is equal to the distance between them.

The Rides

There are N pre-booked rides.

Each ride is characterized by the following information:

start intersection to begin the ride, the vehicle must be in this intersection.

finish intersection to end the ride, the vehicle must be in this intersection. Finish intersection is always different than start intersection.

earliest start the earliest step in which the ride can start. If the ride starts at that time the car gets B bonus points, but it can also start at any later step.

latest finish the latest step by which the ride must finish to get points for it. Rides finishing in time get a number of points equal to the distance between the start and the end intersections.

e.g. ride 1 1 2 3 2 7

will start from (1,1)

will go to (2,3)

can start from T=2

gets points if it finishes by T=7

so if it starts

at T=2 B+3 points

from T=3 to T=4 3 points

from T=5 0 points

World and Rides file: The World

The first line of the file contains the following integer numbers separated by single spaces:

R number of rows of the grid (1 R 10000)

C number of columns of the grid (1 C 10000)

F number of vehicles in the fleet (1 F 1000)

N number of rides (1 N 10000)

B per-ride bonus for starting the ride on time (1 B 10000)

T number of steps in the simulation (1 T 10^9 )

World and Rides file: The Rides

N subsequent lines of the file describe the individual rides, from ride 0 to ride N 1 . Each line contains the following integer numbers separated by single spaces:

a the row of the start intersection (0 a < R)

b the column of the start intersection (0 b < C)

x the row of the finish intersection (0 x < R)

y the column of the finish intersection (0 y < C)

s the earliest start(0 s < T)

f the latest finish (0 f T) , (f s + |x a| + |y b|)

note that f can be equal to T this makes the latest finish equal to the end of the simulation The finish intersection is always different from the start intersection (the two can be in the same column, or in the same row, but not in the same column and in the same row).

Vehicles and Allocation

Vehicles

There are F vehicles in the fleet. At the beginning of the simulation, all vehicles are in the intersection [0, 0]. There is no limit to how many vehicles can be in the same intersection.

For stage 1/2 each vehicle can carry only one passenger at a time

Vehicles are programmed with a list of rides they need to carry out (in order), this is called an Allocation

Allocation File

The allocation file contains F lines, one for each vehicle in the fleet.

Each line describing the rides of a vehicle must contain the following integers separated by single spaces:

M number of rides assigned to the vehicle (0 M N)

R0 , R1 , ..., RM-1 ride numbers assigned to the vehicle, in the order in which the vehicle will perform them (0 Ri < N)

Any ride can be assigned to a vehicle at most once. That is, it is not allowed to assign the same ride to two or more different vehicles. It is also not allowed to assign the same ride to one vehicle more than once.

It is not required to assign all rides to vehicles some rides can be skipped.

Vehicle movement

Once the allocation is decided each vehicle carries out its allocated rides in a pre-defined order:

first, the vehicle drives from its current intersection ([0,0] at the beginning of the simulation) to the start intersection of the next ride (unless the vehicle is already in this intersection)

then, if the current step is earlier than the earliest start of the next ride, the vehicle waits until that step

then, the vehicle drives to the finish intersection

the vehicle does this even if the arrival step is later than the latest finish; but no points are earned by such a ride

then, the process repeats for the next assigned ride, until the vehicle handles all scheduled rides or the simulation reaches its final step T (whichever comes first)

any remaining assigned rides are simply ignored

Example

World: 4 rows, 6 columns, 1 vehicle, 1 ride, 3 bonus and 10 steps

Rides: 1 Ride (id=0) with the following parameters:

start intersection: [1, 2]

finish intersection: [1, 4]

earliest start: 5

latest finish: 8

First vehicle has 1 ride in total in the allocation: the one with id=0

Then the simulation proceeds as follows:

in steps 0, 1 and 2 the vehicle drives to [1, 2]

in steps 3 and 4 the vehicle waits until the earliest start in step 5

in steps 5 and 6 the vehicle drives to the finish intersection

in step 7 the ride is finished, one step before the deadline

the score is: 2 (ride length) + 3 (bonus) = 5

WorldAndRide file:

4 6 1 1 3 10

1 2 1 4 5 8

Allocation file:

1 0

Scoring

Remember goal of Stage 1

you have to develop a simulation/scoring system that reads the two input files

World and Rides: a description of the city and the rides booked,

Allocation: a list of rides allocated to each car;

and prints how good that allocation is, i.e. the total number of points obtained.

Scaffolding Code

Classes

Main, get the name of the two files from the command line and creates/run the simulation

Simulation, creates a WorldAndRides and Allocation from the files

WorldAndRides read information about the world and the rides from the file storing them into internal data-structures

Should check the format of the file and read values are according to the specifications

Allocation reads information about the allocation of rides to cars and stores them in internal data-structures

Should check format, values, and and that they are consistent with information from the world

FileFormatException used to signal that there is a problem with the files

You need to keep the Main class as it is (it is needed for the automated system to work)

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Theory Icdt 99 7th International Conference Jerusalem Israel January 10 12 1999 Proceedings Lncs 1540

Authors: Catriel Beeri ,Peter Buneman

1st Edition

3540654526, 978-3540654520

More Books

Students also viewed these Databases questions

Question

Make a list of customer desired traits for an MP3 player.

Answered: 1 week ago