Final Project

For the 473 final project you will investigate a topic in AI of your own choosing in some depth. The project will involve

You will create the final project in a team of two or three students.

Deadlines:

In between these times you are encouraged to talk about your progress on the project with Prof. Kautz, Ravi, and/or the cse473-discuss mailing list.

How Projects Will Be Graded

Projects will be graded 65% on content and 35% on the write-up. They will be graded by Prof. Kautz, not the TA. A good project will:

Note that is possible to get 100% on your project even if the approach you try does not work, as long as you made a solid effort and tried to understand why the approach was not a good one for the problem. However, if your system does not work because of programming bugs, or because you left it until the last minute and it was never finished, then you will, of course, be penalized.

The project will count for 20% of your final grade.

Project Ideas

The project ideas below are only suggestions. These suggestions are deliberately open-ended; there is no one right way to carry them out! You are encouraged to come up with other project ideas if you like.

  1. New! In class we showed the traveling salesman genetic algorithm demo and said that it was unknown whether the crossover operator really gave any power over just using mutation. You could do a careful study to determine what is the best combination of crossover and mutation settings to solve TSP. To get meaningful conclusions you'll need to do thousands of runs, systematically varying the length of the run, the kinds of operations allowed, and the probabilities used for random mutations. Instead of doing this by hand, you'll want to take the source code for the TSP demo and write a program that directly calls its methods. To analyze the results, you'll want to normalize the fitness of the solution found in each run as a percentage of the optimal solution for that instance, and compute the mean, standard deviation, and median of the percent of optimal. Finally, you will also want to try several different problem size, for example, 100 cities, 1000 cities, and 10,000 cities. Create nice graphs summarizing what you discover.
  2. New! Write a spam filter - a program that classifies email messages as spam or not spam. Here is a link to an assignment from a previous 473 class that describes how you might do this using a Naive Bayes classifier (you can read ahead on this in the textbook) and/or a neural network. Here are some slides on Bayesian learning that describe how a Naive Bayes classifier works.
  3. Extend your Othello program in a significant way, such as by incorporating machine learning or creating a database of end games.
  4. New! Write a program that plays any game. See the General Game Playing competition website for information and starter code.
  5. Write a program that plays a game of incomplete information and/or chance. Test it against human players and other computer programs. Encourage another group of students to select the same game for their project, and hold a mini-tournament. Ideas:
  6. Write a forward-chaining heuristic search planner for deterministic domains that takes PDDL (planning domain definition language) input: Start with the basic STRIPS subset of PDDL, and see how far you can go in handling conditional effects, defined predicates, metric resources, etc. Test you system on some of the problems from the AIPS plannng competitions.
  7. STRIPS planning problems can be translated to Boolean satisfiability problems in CNF form using the approach described in this paper:
    Encoding Plans in Propositional Logic Henry Kautz, David McAllester, and Bart Selman, Proc. KR-96.
    Determine how actions that involve metric resources can be translated to satisfisfiability. Implement your approach by building a system for a specfic planning domain of your choice, that takes as input the initial and goal states, and number of time steps. For an even more challenging project, write a domain-independent translator that also takes as input the operator descriptions in PDDL.
  8. This paper describes how a very simple neural network can recognize the emotional expression in photographs of human faces:
  9. Dailey, M.N., Cottrell, G.W., & Adolphs, R. (2000), A six-unit network is all you need to discover happiness. In Proceedings of the 22nd Annual Cognitive Science Conference, Philadelphia, PA, pp. 101-106, Mahwah: Lawrence Erlbaum.

    Use this approach to build your own system tht can classify the expression of cartoon faces you draw, and/or pictures of faces captured by your own camera.
  10. The output of a speech-recognition system can be improved if the system knows something about the topic being talked about - what words to expect, and what words commonly follow other words. Obtain a commercial or freeware speech recognition system, and build a post-processor that takes as input the output text of the speech recognizer, and outputs a "corrected" version of the text, for a particular topic of your choosing (e.g., sports, weather, movies, etc.).
  11. Local search algorithms (walksat and gsat) are very good at solving some classes of satisfiability problems, such as random 3-CNF and encodings of graph coloring. Create your own local search algorithm - for example, a genetic algorithm, or an ant algorithm - and compare it against Walksat on some satisfiability problems. A good set of benchmark problems is SATLIB. You can download Walksat from here.
  12. The following paper shows how a "portfolio" of algorithms for satisfiability testing can be made to outperform any one algorithm:

    SATzilla: An Algorithm Portfolio for SAT.  Nudelman, Devkar, Shoham, Leyton-Brown, Hoos.  Presented at the Eighth International Symposium on Artificial Intelligence and Mathematics (AI+Math 2004).

    Try a similar approach on some other interesting search problem.
  13. Design and implement agents that learn or evolve to live successfully in a simulated world. For examples of simulated worlds, Google "artificial life" or "bots".