You are on page 1of 5

CS5350 Advanced algorithms List of project topics Note: you might have personal preferences about the following

g projects. However, never make the


assumption that one project is easier than another. They are all equally challenging and will require your attention and constant work for the next weeks until the end of week 14.

Procedure to decide on a project: You will have to send me your preferences via email or give them to
me on paper in class, ranking all 6 projects in decreasing order: your preferred project coming first. You are requested to do it by Wednesday September, 15 at 3:00pm. Failing to do so will result in 5 points off your final grade for this project and being assigned a random (possibly not preferred) project.

Project 1. Hybrid optimization solvers


Context: In this project, you will consider optimization problems. An optimization problem is a problem in which, given an objective function to optimize (let's say, minimize) over a given search space and possibly constraints to satisfy, the goal is to find all elements of the search space that minimize the objective function while satisfying the constraints. Solving such problems can be pretty tricky, all the more when constraints are involved. Problems can also sometimes be very large (e.g., many variables, large domains, many constraints). Often, there is not even any available model of the objective function to minimize: instead, a black-box process will provide values of the objective function as necessary, but often taking a prohibitively long time (therefore, evaluation-based optimization algorithm are not algorithms of choice). Although many types of algorithms exist, we can categorize them in two large families: local solvers and global solvers. Local solvers only do their best, reaching reasonably good solutions (i.e., with a reasonable low value of the objective function and satisfaction of the constraints) without providing any guarantee that the best minimizer has been found. Global solvers are guaranteed to find the best minimizer that also satisfy all the constraints of the given problem, if any. We can easily picture that local solvers are more tractable than global ones, yet not providing any guarantee. In some cases, global solutions are actually sought (critical systems, verification of programs, etc.). In such cases, we have to find a way to make global solvers tractable. A way of doing this is to hybridize solvers: in this case, we refer to combining local and global solvers. However, it is still not clear how the interaction of solvers that are local with solvers that are global can improve the overall performance of optimizers (both in time to and quality of solutions). Tasks: In this project, 1. You will have to implement a local search algorithm for solving optimization problems. You will run tests of this local algorithm to evaluate its performance in terms of time to solution as well as quality of solution (w.r.t. the objective function and the satisfaction of the constraints) 2. You will then have write another algorithm that combines your local algorithm with RealPaver (as a

black box) This algorithm will have to be flexible enough that several strategies of hybridization will be possible. You will design a testing strategy of evaluation of the different hybridizations.

You will analyze and report on the performance of the several hybridizations you have designed. 3. You will draw general conclusions (based on your experiments) about strategies of hybridization. Technical details: Programming language: C/C++ Provided software: RealPaver Type of problems to consider: Non-linear objective function, defined over a continuous search space, possibly subject to possibly non-linear constraints. Possible variation: Multi-objective optimization.

Project 2. Network flow problems


Context: In your textbook Algorithms in a Nutshell, Chapter 8 focuses on Network flow algorithms. The topic of this project is within this context. While Chapter 8 presents several problems that can be viewed as network flow problems, you will have to pick two of them. Tasks: In this project, you will have to: 1. Pick two of the areas of network flow problems proposed in your textbook Algorithms in a Nutshell. 2. Implement at least 2 algorithms to solve each of these two problems. 3. Propose for each of these problems a testing strategy that will allow to compare and contrast the two approaches. 4. Make a general conclusion relating the two problems you had to deal with and suggest how these problems are related and how each could be improved by considering solutions to the other, if applicable (if not applicable, you will have to justify / prove that it was not applicable). Technical details: You are free to use any programming language that is suitable for the needs of this project: you will have to justify your choice. Data: You will have to design (as part of your testing strategy) a test-case generator.

Project 3. The pooling problem

Context: (taken from Pooling Problem: Alternate Formulations and Solution Methods, by Audet, Brimberg, Hansen, Le Digabel, Mladenovic) The pooling problem, which is fundamental to the petroleum industry, describes a situation in which products possessing different attribute qualities are mixed in a series of pools in such a way that the attribute qualities of the blended products of the end pools must satisfy given requirements. This problem is expressed as an optimization problem. Tasks: In this project, you will have to: Review at least four different techniques to solve this specific pooling problem, discuss and theoretically compare them. These techniques should include any technique presented in the abovementioned paper. Implement at least one technique and possibly use already developed other techniques in order to run a experimental testing strategy from which you will derive experimental comparison and conclusions. Technical details: Your programming language(s) will be determined by the software that you will be using, if you use already developed algorithms. For all algorithms that you will be implementing, language will be up to you, provided that you can justify why it is a good choice. Data: You will have to test and compare your work and/or the chosen algorithms against the benchmarks provided in the above-mentioned paper. If you need more data, please ask Dr. Ceberio.

Project 4. A shipping problem


Context: In this project, you will have to address the following transportation problem. You are supposed to take merchandise from one point to another (different merchandises possibly going to different points). You only have so much as transportation facilities to do the job (each truck you have is limited in size and can only load so much of merchandise). Moreover, there are a time constraints on the pick-up and delivery schedules: For some merchandise, you know an interval of time within which the delivery must occur. You need to determine a satisfying pick-up time so as to guarantee that the delivery will be within this determined interval of time. For some other merchandise, you will be dynamically notified about the pick-up time: e.g., at time t0, you will be notified that merchandise_0 needs to be picked up and from time t0, you will have 30 minutes to pick it up. Tasks: In this project, you will have to: 1. model what the problem is in terms of a graph problem; 2. generate instances of this problem (related to your testing strategy); 3. implement and test 3 known algorithms to solve this problem: you will have to justify your choice of these 3 algorithms. Notes: None of these algorithms might be an exact fit to solve this problem.

Therefore, you will have to make assumptions about the problem you solve when using each of these algorithms. You will have to explain these assumptions.

You will also have to explain how these assumptions along with the corresponding algorithms impact the properties of the solution. You will then have to: 4. run experiments, report and analyze their results: comparing the results gotten for each of the algorithms you picked in terms of time to solution, quality and properties of the solutions. Technical details: You are free to use any programming language of your choice: however, whichever choice you make, you will have to justify it as the best language of choice to solve this problem.

Project 5. Solving the Rubik's cube


Context: Solving the Rubik's cube can be a tricky and most of us will agree to this statement. However, how tricky is it actually? And how to solve it (algorithmically)? These are two questions that need to be answered in this project. Tasks: In this project, You will have to analyze the complexity of solving the rubik's cube. In particular, you will have to determine the lower bound complexity for this problem so that you can compare your solution to the ideal running time. You will then have to implement an efficient algorithm that, given any configuration of a rubik's cube, will determine the sequence of steps that need to be taken to solve the rubik's cube. An efficient algorithm is one that comes as close as can reasonably be to the theoretical lower bound. Any discrepancy should be justified. You will design a testing strategy, run experiments and report on them so as to provide an experimental analysis of the algorithm. Technical details: You are encouraged to implement your work in Robot-C. The result of your work can then be tested on a robot designed and built in Dr. Ceberio's lab. Warning: You might have to engage in some Rubik's cube learning in order to do this project. Therefore, if you have no interest in the subject matter, you should just rank this project last.

Project 6: Black-box constrained optimization


Context: In this project, you will have to consider and provide solutions to the following problem: You are given a project (let's say, designing a building) in which: you know the variables related for instance through constraints about the size of the building, the complex network of pipes, electrical system; and you need to optimize (generally minimize) for instance the overall cost, or the length of the building

process, etc. The catch is that you do not know any model for the value to minimize. You know about its values through the use of a black-box software that is provided to you: you feed values of the variables in (which hopefully satisfy the constraints) and you get a value of the quantity to minimize as the output. Using a black-box component can make the whole optimization process very tricky since it dramatically limits your knowledge of the problem. The goal of this project is to design and implement at least two approaches to solving this problem, compare them, and suggest future techniques to solve it more efficiently (by providing an idea of the lower bound complexity of this problem). Tasks: In this project, you will have to: review the literature about black-box optimization and the current solving techniques; pick at least two of the current techniques, implement them; design a testing strategy, run the corresponding experiments, analyze your results, and draw conclusions; suggest future work related to the techniques you have tested, which could improve the performance of the current techniques.

Technical details: You are free to use any programming language of your choice: however, whichever choice you make, you will have to justify it as the best language of choice to solve this problem. Data: The constraints should be the result of an automatic generator that is consistent with your testing strategy. As for the black-box component, Dr. Ceberio will act as your black-box optimization software. Each time you will need to perform any evaluation, you will have to email Dr. Ceberio asking for a value. There will be no guarantee about when a solution will come back to you, if at all (just like in real-life use of black-box optimizers / software).

You might also like