projects-2015

advertisement
CS 404
ARTIFICIAL INTELLIGENCE
TERM PROJECTS
2015
Project Signup: via SUCOURSE, by Dec 7th, 11pm
Project Submission: Dec 28 via SUCOURSE, 10am (late projects will be accepted until Jan 5
– submission and presentation)
Presentations: Dec 28, time TBA or Jan 5 (your choice)
Goal: Hands-on experience on a project incorporating some components of Artificial Intelligence,
such as search, heuristics, game playing, or logic programming.
Groups: 2-4 people
How to sign up: You can send a discussion item to Sucourse (to the Project forum) until Dec. 4.
Responsibilities: These apply to all the projects:
o Being on time
o Doing the work yourself: You can share the programming load (one writes the class library,
the other the visual interface etc.) within your group, but everyone is responsible knowing the
search, heuristic... parts. Also, you may find a heuristic on the web, but you have to understand
it fully and implement everything yourself. You may discuss results (e.g. in TSP) and play
with each oothers’ programs, w/o sharing code.
o Doing a good work: People working on the same problem will compete against one another.
Also having an organized, commented and modular code is required.
o
Doing a good presentation: up to 5 minutes to show a 3-4 slides, listing your group, your
problem, your approach, your code and demo of your program
o
Writing a report: You will write a report (5-6 pages, explaining your heuristic, depth of
search, algorithms, any shortcomings etc.) of your project and also demo your program at
the end of the term. GUI of your project game playing can be simple, but if possible
implement via available libraries etc.
o
Language: Your choice subject to other rules (e.g. using server or GUI etc.)
Available Projects:
1) Write a backgammon program.
2-4 people/group
You are expected to write your program with a good graphical user interface (GUI) so as to play
against a human. In case the BG server is up and running, then you can play against opponents
through the server, instead of implementing a GUI.
In case of 4 people groups, you will be expected to have a GUI/server interface. If you want to
have a simple interface, we will pass/read moves as in Chess (King to F4), from numbered areas on
the board (e.g. Dice was 6, 3: Moves may be: 13 to 19
20 to 23)
Implementation: You need to think about the data structure to represent the board; move generator
(considering the empty locations that each of your pieces can go); implement the expectimax
algorithm, and find a heuristic (depending on your pieces and locations, how many taken etc.).
Note: We have some old code written in C++ for a BackGammon server that lets people play against
each other. It has a small glitch regarding double-dices (it is designed to expect 2 moves per dice and
solves the double-dice issue suboptimally). If you can and are willing to work with the server, I will
give you the code to improve and some bonus points (around 10/100).
2) Solve the Travelling Salesman Problem (TSP) using a heuristic and one of the following
algorithms: hill-climbing, simulated annealing or genetic algorithms.
1-2 people/group
You are given data (e.g. x-y coordinates of 52 cities are given in a file) with a known tour length. You
need to start with random city orderings and then write a local optimization algorithm. This project
will require less programming than the others, so if you are not very good with programming,
this may be a good option.
At each iteration or at every 100 iteration (enough duration to give the observer reading time) or so,
you should write the best tour found so far and its length, so that when we stop your program after x
seconds (Ctrl-C), we have your best results found in x seconds.
e.g.
input:
index x y
1 50.0 200.0
2 70.0 350.0
output:
iteration 100: Length: 14,677
Tour: 1-5–32-52-49-4-...
iteration 200: Length: 14,200
Tour: 1-7-29-32-.............
Your system will be tested with a larger or modified TSP problem at the end. So you should be
able to read and work with the file tspdata.txt under lectures/Project/ or any file in that format
(possibly with more cities etc).
You should implement as many local search algorithms as the number of people in your group.
If you have 2 people in your group, you will have twice more time (e.g. 2 min) and you can give the
best of all results.
Important note: One common problem with this project topic is to modify the algorithms (e.g.
modifying simulated annealing). These are well-established algorithms, unless your improvement
helps in more than one problem instance, I suggest you don’t change the optimization algorithm! (you
will lose pts if you loose some randomness or performance, due to your change).
3) Solve Wumpus word with Prolog
Starting from a random world (lets say given from outside or set by the program), according to the
rules of the game, find gold without being killed (fall into pits...).
We may limit this project to the use of FOL only. In other words, we will assume that we can use
logic to deduce hidden properties of the world, without leaving anything to chance or requiring to
compute probabilities about certain events (e.g. P(Pit3,5)). Imagine that a Percept is given as a list, for
a certain time, as in the FOL wumpus world slides.
4) Write an expert system for a significant enough domain in Prolog (possibly for things like
checking whether the requirements for course/credit counts are satisfied; or in a special area of health
or education that you may be qualified build an expert system).
This project first involves studying previous/existing expert system applications and reporting a
summary (20pts/100) and implementing a problem on a narrow domain (e.g. course scheduling with a
small set of courses).
Subject to approval.
5) Make a suggestion for a different game or on a topic related to the course material until project
sign-up time.
Subject to approval. The game shd. be well-known or easily understood, so that we can decide on the
quality of the solution.
Presentation/Grading
Each project group will briefly describe (<5min) what they have used, during the project demos.
Each project will be judged based on:
-
What it has implemented and unimplemented/incomplete parts, if any
Its success compared to other groups (how many times it wins, whether it has obvious
shortcomings etc.)
The code: depending on whether you wrote a nice, modular AI program (search, heuristic, a-b
pruning parts...) as opposed to a bunch of rules.
Comments: You must have commented code (20pt/100)
If you are doing a backgammon/chess project and will demo using interacting with the servers:
you are expected to interact with the backgammon or chess server (under the Projects/ folder) on the
day of the project presentations, so you must test your program for this beforehand!
What to Submit: Code and Report
You should submit a single zip file, named after your group (formed from your names e.g. AliVeli-Ayse.zip), containing:
- your code folder with no files or libraries missing, but debug and release dirs removed
an executable file of your program in the main folder
- a 5-6 page project report, containing:
- name of the people in the group
- project task (e.g. backgammon)
- approach & methods (a few paragraphs)
- known weaknesses & bugs
- acknowledgements in detail if you have used any source from outside your group
- how to use the program
Download