Projects

[Technical Support] [Soccer Server] [Groups] [First Project] [Second Project] [Makeup Project]

Technical Support

If you have technical questions on the soccer simulator for the project, you can email Adam Brown, a Brooklyn College student who has been using the simulator and who set up the system you are using for the project.

If you mail Adam, remember he is a volunteer and like many of you, he is both working full time and studying as well as answering your questions. So I expect you to be both polite and respectful when dealing with him.

[Technical Support] [Soccer Server] [Groups] [First Project] [Second Project] [Makeup Project]

Soccer Server

The projects use the Simulator from the Simulator League of the Robocup competition.

One way to work on the project is to download the Soccer Server from SourceForge and run the simulator server on your own computer.

However, to make things easier we have set up a copy of the simulator server running on a machine at Brooklyn College. If you use this, all you have to do is to login to that computer and run the simulator server (though you will still need to run the monitor on your own machine in order to see what is going on).

In order to get started, you should email me and I will then tell you the IP address of the machine running the simulator, and the username and password you can use to login. Once you are logged in you will find information on the computer that tells you how to get started.

We have also supplied you with some sample code (again this is already in the account that has been set up for your team).

Finally, there is some free code that can be used as part of your project. If you go to the http://rccparser.sourceforge.net/ web site, you can find RCCParser and RCClient which provide all the networking and parsing functionality required by the program you have to write. Both the parser and client are available under GPL.

NOTE

To login you will have to use SSH (secure shell) and SFTP to transfer files (if you need to). There are a number of versions of both these programs for WINDOWS, including PuTTY and SSH Secure Shell for Workstations (both of which I use).

[Technical Support] [Soccer Server] [Groups] [First Project] [Second Project] [Makeup Project]

Groups

These are group projects, and you will work in groups of 3.

Group A

Ghodasara
Ishak
Thorne

Group B

Bracichowicz
Gayle
Varon

Group C

Agrest
Shagas
Shuster

Group D

Defunct

Group E

Liang
Xuan
Wang

Group F

Ahmad
Haider
Jung
Sahin

Group G

Croff
Miller
Stuart

Group H

Defunct

Group I

Defunct

Group J

Maslov
Rodriguez
Tsang
Xu

[Technical Support] [Soccer Server] [Groups] [First Project] [Second Project] [Makeup Project]

First Project

The first project is very simple. You have to write code that places one single player onto the pitch in a random position and orientation, and places the ball on the pitch at a random place. The player must then look for the ball, then kick the ball into one of the goals.

What you have to hand in

Everyone has to submit a project report which is their own work (and we will be checking that group members have not just cut and pasted between reports).

Each report should be 4-5 pages long (standard letter paper, 10-12pt type, single spaced), and should describe the design of the the code which controls the soccer player.

You must not only describe the design choices made, but also justify them.

In addition to the 4-5 pages of report, you must submit two other items:

  1. A listing of the code. This should be properly commented (I expect to be able to understand exactly what the code is doing from the comments).
  2. A single sheet which describes the contribution to the project of the author of the report. This should be signed by all the group members indicating that they agree that the description is an accurate picture of the author's contribution to the project.
[Technical Support] [Soccer Server] [Groups] [First Project] [Second Project] [Makeup Project]

Second Project

The second project builds on the first project.

You have to develop a soccer team with 5 players on it.

This could be very simple; you could just set up a team which has five players identical to the one player developed in the first project. However, such a simple team will not get great marks.

A more sophisticated team, maybe one that uses some of the AI techniques we have considered during the course, will attract higher marks.

In order that everyone starts the seond project from approximtely the same place, I will, on request, give you code for a player (a client program for the server) that can find the ball and kick it into the goal. Let me know by email if you want this.

What you have to hand in

Everyone has to submit a project report which is their own work (and we will be checking that group members have not just cut and pasted between reports).

Each report should be 4-5 pages long (standard letter paper, 10-12pt type, single spaced), and should describe the design of the the code which controls the soccer player.

You must not only describe the design choices made, but also justify them.

In addition to the 4-5 pages of report, you must submit three other items:

  1. A listing of the code. This should be properly commented (I expect to be able to understand exactly what the code is doing from the comments).
  2. A single sheet which describes the contribution to the project of the author of the report. This should be signed by all the group members indicating that they agree that the description is an accurate picture of the author's contribution to the project. Finally each group must send me a log file of their team playing itself (so create two versions of your team, run them, and email me a copy of the log file).
[Technical Support] [Soccer Server] [Groups] [First Project] [Second Project] [Makeup Project]

Makeup Project

The makeup project is about search techniques.

Problem Description

A group of 3 Atheists and 3 TV Evangelists are on their way to a conference discussing the relation between faith and morality. To reach the conference they have to cross a river which is too wide to swim across. Happily there is a boat available, and they can use this to all cross the river. However:

What you have to do

The story above can be used to construct a state-space. Identify the initial state, goal state, and the operations. Then write a program (in Java) to perform:

What you have to hand in

A copy of your program (which should contain comments explaining what each line of code does), and a copy of a couple of pages of ``traces'' of the program running.

The program should carry out breadth-first search, iterative deepening search, and both greedy and A* search based on a heuristic that you make up.

A trace should involve printing either the set of new states added to the agenda each time the program runs the top-level loop, or printing the entire agenda each time the new states have been added.

You need to include a trace for all four searches.

Hints

The first thing you have to do is to decide how to represent the states within your program. A suitable representation is some form of structure representing what is on each bank of the river. Something like:
left bank:
        number of evangelists
        number of atheists
        number of boats

right bank:
        number of evangelists
        number of atheists
        number of boats
You then have to represent the operations. These are functions which take a state and generate a new one, representing the movement of a boat across the river. Depending on how you write these functions, you may need to check that the operations don't lead to illegal states.

With these components, you should be able to implement the algorithm for breadth-first search given in the lectures. For the agenda you will need to use a stack or a vector (you might be able to get away with an array, but it will need to be a BIG array) which holds a set of states and which allows you to add new states at the start of the array.

If you find that your program is creating a huge array, one problem is likely to be that it keeps generating new copies of the same state. You might want to try removing duplicate states from the agenda.

Once you have the code for breadth-first search, it should be easy to revise the program to do iterative-deepening search, greedy search, and A* search.

[Technical Support] [Soccer Server] [Groups] [First Project] [Second Project] [Makeup Project]