CSCE 782: Problem Set 1

Due: Wednesday, 17 October 2001

Distributed Meeting Scheduling (100%): For this problem set you will implement a distributed meeting scheduling application using FIPA-OS or JADE as your agent platform and RDF as your content language. Since you are using RDF, you might also want to use DAML and some of its ontologies for the encoding of the data. You should also carefully read the FIPA Personal Assistant Specification (you can ignore the bits that do not deal with meeting scheduling) for guidelines on how to implement your system.

You will implement one agent which will act as a proxy for the user. The agent will have a simply GUI that will allow the user to see the meetings/seminars he has scheduled, as well as allow him to schedule new meetings.

Your system will handle two types of appointments: seminars, and meetings:

Seminars are announced to all the agents in the system. The agent that receives an invite will ask the user if he wants to attend. If the user wants to attend then the agent will tell this the announcing agent. Any agent can schedule a seminar.

Meetings are more complicated. Any agent can try to set a meeting. This agent automatically becomes the coordinator of that meeting. A meeting itself has the following attributes:

  1. A time length. You can assume that all events in the system start and end at the hour, but they can go on for more than one hour.
  2. A priority which is just an integer between 1 and 10. Higher numbers have higher priorities. (Yeah, I know this would not work in real life, but it provides some interesting dynamics for this demo scenario).
  3. A list of invited members.
  4. A minimum attendance percentage. If the percentage of attending agents is less than this number then the agent must try to re-schedule at some other time.
  5. A list of must-attend members. If any agent in this list cannot attend the meeting then it must be re-scheduled.

When scheduling meetings, the agent must keep in mind that:

  1. The person can only attend one event at a time.
  2. If two meetings have different priority, the meeting with the highest priority takes precedence, the other one must be canceled.
  3. Meetings take priority over seminars (is that not a shame!)

Also, the GUI must allow the user to:

  1. Cancel meeting/seminar attendance. That is, if the agent scheduled the user for some meeting, the user should be able to later tell the agent that he cannot make that time. The agent will then take care of sending the appropriate cancellations.
  2. Get a list of the people that are attending a particular meeting/seminar. That is, the user should be able to get a list of the current set of agents that have confirmed their attendance to the meeting. Of course, this list will change over time.

Grading: You will be graded on the protocol and content language you develop for this project as well as on its successful implementation. Each group will need to schedule a demo to show me how it works. You will also need to turn in a document describing your protocols, messages, and overall architecture. You will not be graded on the GUI. Specifically, you do not need to implement a pretty calendar that shows all the days of the month and the events scheduled for each. A simple list that shows all the events will be enough for this class.

Submission: Every group must show me a demo of their system at work before the 18 October, 3:30pm. Use the department's dropbox system to turn in your well-commented source code. If you are late you will lose 20%. You must provide javadoc documentation of your code as well as AUML diagrams for all the protocols you implemented.

Jose M. Vidal
Last modified: Mon Oct 8 15:49:54 EDT 2001