You will be part of a team assigned to one of the following projects. Each of the projects represents a significant computer system, that you will have to implement. The projects are "impossible" in that, as far as I am aware, what might be considered a "complete" solution has not yet been produced by anyone. On the other hand, there is considerable prior art that is applicable to each of the problems and the solution spaces are gradual enough that interesting results are possible in the course of a semester project.
In general I expect you to write your own code.
Components that you do not write yourself
need approval from the class instructor (me).
Standard stuff that does not directly bear on the "difficult" aspect of your
problem (e.g. image i/o or linear algebra operations) will generally be OK,
but you still need to run them by me.
The first goal is to create a virtual world in which to develop and test
the system. Using existing cities as models, create a test city with
a population of 10,000 - 100,000 people, and a road network modeled
realistically regarding road capacities, speed limits etc.
Ideally, you should do traffic lights as well, but this may be too
much complexity, so make it a secondary goal.
You can use any existing software/data you can get your hands on.
Each inhabitant has a home address, and a large percentage
(50% or more) have a workplace and a work schedule.
In addition, each inhabitant has "random" errands that need to be run
daily (shopping, visits, recreation).
You will need a "character generator" to produce each inhabitant's
individual parameters.
A "level generator" for producing the city might be reasonable as
well.
The dynamics of the city should be viewable with a "Sim-city" type
graphic interface. At a minimum, you need to show roads and
vehicles. Fancy 3-D graphics are not not needed
Once you have the simulator, investigate the feasibility and efficiency of
the Easy-Route proposal compared to individual cars and traditional
fixed-route busses. Important metrics are passenger transit time
(compared e.g. to time in individual cars)
and energy efficiency.
Important variables are the number and capacities of the busses.
For the purposes of this project, assume that the Easy Route protocol
consists of the user calling the system at the time s/he needs a ride.
and that destination and current location are available at the time
of the call. You can consider modified versions if needed.
This is essentially a networking problem. The dynamic route planning
problem is difficult, and probably NP-hard in any non-trivial formulation,
so don't underestimate the importance of your scheduling algorithm.
Do some research on the subject before writing scheduling code.
Running the simulation could be time consuming as well.
This could be an excuse to make use of the department's computational
resources (come see me when you need them).
It might make sense to have a set of cities of various sizes
(e.g. from 100 on up) to investigate the scalability issues.
Team: Michael Rotondo, Gershon Bialer, Athul Acharya, Thomas O'Neill.
Ignorance is usually a liability, but one exception to this rule is when ignorance causes you to look at a problem with fresh eyes, and without preconceptions. Usually this yields little, and you just see a blurry version of what others have, with much effort, seen more clearly; but on rare occasions, a picture will flip. So it is worthwhile, when first encountering a novel problem or a new aspect of an old one, to spend a few days to see what you can make of it on your own.
Spend a good chunk of time examining about your project problem, specifically what the difficult aspects seem to be, and what approaches might be worth trying. Go as far as you can along these lines, looking up peripheral information about possible methods as needed, but WITHOUT researching the problem directly. Break your thinking time up over a couple of days. After effort on a problem, your brain seems to keep working on it in the background. You may find an answer waiting when you open the door again. It may even come knocking to get out.
Write a couple of pages on your thoughts.
On Tuesday, the teams will assemble, spend the first 30-40 minutes
brainstorming and combining ideas, and then present the brainstorming
results to the rest of the class.
Due Thursday, February 10.