CSCE 782: Problem Set 3

Due: Monday, 7 October 2002

Upload Problem Set

Distributed Meeting Scheduling

For this problem set you will implement a distributed meeting scheduling application using JADE as your agent platform. Specifically, you will be extending the MeetingScheduler demo application that comes with JADE to support a series of new features. You should read the FIPA Personal Assistant Specification for guidelines on how to implement your system.

The current MeetingScheduler schedules meetings by searching for an empty time where all attendants can attend and using that time. You will extend this mechanism by adding priority values to agents and to meetings. The current MeetingScheduler also uses its own ontology. You will change that ontology and instead use a subset of the hybrid calendar schema from the RDF calendar task force.

The ontology you implement does not need to implement all the terms of the hybrid schema (there are too many), only those that are needed for your protocols. Those terms and relationships that you implement should, however, conform to the hybrid architecture. Specifically, you should use the same names for terms and relationships and preserve the same semantic relationships. Again, the point is for you to implement a subset of the hybrid calendar schema.

The agents you implement will each be given a priority number by the user upon startup. The priority of an agent is simply a number from 1 to 10 where 1 has the highest priority (the boss). When the user of an agent wants to set up a meeting you will use the same interface as the current one but the meeting itself will also include a priority number, also from 1 to 10, and it will divide invitees into two sets: must-attend and should-attend. You will then design and implement an interaction protocol for the agents that obeys the following rules. The effective priority of a scheduled meeting is the sum of the meeting's priority and the average priority of the agents attending that meeting. If the meeting has not been scheduled then its effective priority is the sum of the meeting's priority and the average priority of the must-attend agents.

  1. A meeting is scheduled only if all the must-attend agents can attend.
  2. A scheduled meeting can only be cancelled for a meeting of higher effective priority.
  3. If no time is found for a meeting then all must-attend agents that have other meetings with lower effective priority at those times should consider cancelling one of these meetings. The order in which the agents should do this is based on the agents' priorities. Agents with low priority go first.
  4. After a meeting is scheduled all agents should be informed of this fact along with the list of attendees.
  5. If a must-attend agent cancels out of a meeting then that meeting is cancelled.
  6. Any meeting that has less than 2/3 attendance should be cancelled.
  7. If a meeting is cancelled then itshould be re-scheduled automatically by the system.
  8. The only reason a meeting will not be scheduled by the system is if all the must-attend agents have higher effective priority meetings during the requested time.
  9. Most Important! The agents should do all this while revealing as little of their schedules as possible. For example, the worst possible solution is for all the agents to send to some agent the list of all their meeting times and attendees.


The final version you hand in needs to be really easy for me to compile and run. As such, you will need to test it on Unix before handing it in to make sure it compiles and runs as you expect. After you unzip the JADE code, you will copy-over the Makefile in jade/src/demo with this Makefile. With this makefile in place you should be able to cd to jade/src/demo, type make and have all your code compile, type make clean to remove all old and compiled classes, and type make run to run the demo with two agents (Tizio and Caio). Do this now! Once you have confirmed that you can compile and run the code then you can start modifying the java files under jade/src/demo. Do not change or create any files outside that directory.

Submission Instructions

This problem set is to be done by groups of 1 to 2 students. As will all the problem sets, you will hand them in using our department's dropbox. You will hand in a zipped file (tar and gzip, or zip) of your MeetingScheduler directory containing all your .java files. Do a make clean before handing it in. I will be running your project by doing a make run. If that does not work then you are in trouble. You will also include a README file where you fill out:


I understand that it is the responsibility of every member of the Carolina community to uphold an maintain the academic standards and integrity of the University of South Carolina. Any member of the University community, who has reasonable grounds to believe that an infraction of the Code of Student Academic Responsibility has occurred, has an obligation to report the alleged violation.

I certify that I have neither given nor received unauthorized aid on this problem set.

This file will explain the architecture of your system and the interaction protocols you used. You will also hand in AUML diagrams of your interaction protocols. If you have them in .png/.gif/.jpg/.pdf/.ps format then you can hand them in with the rest of your files. Otherwise you should print them out and hand those in before the deadline.


José M. Vidal
Last modified: Tue Sep 24 07:28:06 EDT 2002