CS378: Autonomous Multiagent Systems -- Fall 2003: Programming Assignment 3

Programming Assignment 3 for Autonomous Multiagent Systems (cs378)


This assignments assumes the knowledge gained from assignment 1 and assignment 2.

Your goal is to use communication to help an agent improve its performance in some way. Details for an example are given here. It is expected that many of you will choose to follow the example (which is perfectly acceptable). But you may choose any other task (different from you assignment 2) as long as you can show a noticeable improvement with communication when compared to no communication. If you don't use the example, you should still read carefully through the hints since they may be applicable to your task.


  • Create an agent whose sole goal is to face the ball as much as possible. When you drop the ball in a new location, it should find the ball again as quickly as possible. Once the player is placed on the field (e.g. with the move command), it need no longer change location.
  • Note that your player from assignment 2 can already do this. But now, you may use up to 3 other agents placed on the field to watch and communicate (with the "say" command).
  • None of the players will need to dash or kick - only turn and say.
  • As in the previous assignment, you are encouraged to base this code off of the sample agent - you still don't need to parse the entire see messages.
  • The communication protocol among the agents is for you to design.

  • Some details:
  • Put the player that's trying to see the ball in "narrow" view mode (45 degree view cone), by sending the command "(change_view narrow high)". That will make the difference between the comm/nocomm conditions more visible.
  • Keep in mind that when the player is in narrow view mode, it gets sights twice as frequently. That means that it can get more than one sight in a given cycle. Be careful not to send more than one kick/dash/turn in the same cycle. You can check if the sight is new by tracking the time stamps at the beginnings of the messages.
  • The helping players can be in either narrow or normal view mode (45 degree or 90 degree view cone), but don't put them in wide mode (180 degree view cone) -- that is, among the 3 of them, there will be a blind spot unless they do some scanning themselves.
  • In the end, there should be a visible improvement in the speed with which the player can find the ball.
  • Remember that there is a limit to the range of communication. Plan the positions of the players accordingly.
  • Default messages can only be 10 characters long. If you need to, you can increase this value by changing the line
    say_msg_size        : 10
    in the copy of .rcssserver-server.conf in your home directory (see hint from part 3 of programming assignment 2).
  • You will also probably want to keep the line
    forbid_kick_off_offside: off
    from the previous assignment.
  • What to turn in:
  • 2 logfiles with player 1 (make sure it's player 1 so I know which one to look at) trying to face the ball: one without communication, called [yourlogin]-nocomm.log, and one with communication, called [yourlogin]-comm.log. In both cases, drop the ball around the field in a wide variety of locations to exhibit the robustness (or lack thereof) of your agents to different ball positions.
  • Relevant parts of your source code as [yourlogin]-source
  • To turn in your files, use the turnin program with grader "mazda" and assignment label "prog3". When the assignment is there, send us an email to that effect, with a brief description of your task, your communication protocol, and an answer to the following question: Could an opponent agent disrupt your communication method? How?

  • [Back to Department Homepage]

    Page maintained by Peter Stone
    Questions? Send me mail