Eco-Friendly Fleet Management
In this project you will consider the problem that faces many local communities -- how to come up with the best routing strategies for a fleet of vehicles used to accomplish a basic service. The following are some examples:
The following are fairly detailed suggested steps for you to follow as you develop your project. Stage 1 of your project should include the first 3 steps (more if you want).
Step 1: Identify the problem
In this phase you are expected to pick a particular problem from the list above (or preferably any other similar problem you may be able to come up with) and to get yourself acquainted with the specifics of the "real world" issues involved. In particular, you may want to do some reading or exploration of the subject matter to familiarize yourself with the problem that interests you. For example, if you are interested in planning the routes of garbage trucks, you may find an article such as "High-Tech Mapping Streamlines City's Bulk Trash Pickups" in the Washington Post useful, or you may find some existing companies such as C2Logix or SmartRoute that provide such services useful. The purpose from this exercise is not to become an expert in route planning but only to appreciate some of the real world considerations that you may not be aware of.
What you have to produce (~ 1 page): A statement of the real-world problem that makes clear why this is an interesting problem to solve, e.g., impact on society, environment, budgets, ...
Step 2: Build a basic model
As with all real-world problems we consider in this class, the first step is always to build the simplest model within which you would be able to pose a well-defined questioned and hopefully get an answer. In this project, we will use "graphs" as the mathematical object for modeling the problem.
To make your model simple, you will have to make some simplifying assumptions. In particular, for the basic model you will start with, you should make the following assumptions:
What you have to produce (~ 0.5 page): The specification of a graph that could be used as a model of the real world for the purposes of the problem at hand. Specifically, what constitutes the nodes and the edges of the graph? are edges directed or not? are the edges labeled and if so, what is the meaning of these labels? what constitutes a correct solution of the problem with respect to the graph? given two correct solutions, how do you determine which one is better quantitatively?
Step 3: Try and evaluate a brute-force solution
Your first attempt at solving the problem is to use an "algorithm" that enumerates all correct solutions to the graph problem you defined in step 2, and then to figure out the best one and select that as your solution of the problem. For example, you will come up with all the ways to pick up the town's kids on the school bus (e.g., stop by Amy's house first and then by David's house and then by Stephanie's house versus David's then Amy's and then Stephanie's, etc.) And after enumerating all such possibilities you would pick up the best one. How much "work" is involved in following this "brute force" algorithm? How does your answer change as a function of the number of stops that the vehicle must make -- in other words, the size of the town. In this class, you will see examples of how this is done -- in particular it is an accounting of the number of basic steps it takes to complete the algorithm as a function of the "size" of the problem. You will see these in class and in homework assignments.
What you have to produce (~ 1 page): First, you have to define what is a basic step in your algorithm. Next, you have to derive the "complexity" of the algorithm. Next, you would show how this complexity changes with the size of the town. In particular, assuming that the basic step of your algorithm takes (say) one second, how long would your algorithm take for a town of 5 houses, 10 houses, 50 houses, 100 houses, 500 houses? What size town would you consider too big to use this brute-force algorithm on?
Step 4: Try to improve your solution
Assuming that the brute-force approach is not going to cut it for a town of any realistic size, in this step, you will try to think creatively about a smarter way to solve (or attempt to solve) the problem. This is the "open ended" part of your project. Here are two possible directions that you may want to consider (using ideas similar to things covered in the class):
What you have to produce (~ 1.5 page): Write down the steps of your improved algorithm. Provide a clear explanation of how your improved algorithm should work. In particular, it should be possible by reading your algorithm and explanation to apply your algorithm to any example graph. You may want to provide illustrations by showing the steps for a small graph of your choice. Provide a measure of the complexity of your new algorithm (basically, a repeat of step 3 but for your new improved algorithm). Can you come up with examples for which your algorithm would provide an answer that is not optimal?
Step 5: So what?
Having gone through the process of abstraction (modeling) and using the model to solve an important problem, this last step should provide some conclusions and some thoughts about the process -- e.g., limitations, possible improvements, ... This is an opportunity to look back at what you have done and provide comments. Some ideas are below.
What you have to produce (~ 1 page): Free form!
Azer Bestavros (2010-04-06)