Comments
Richard Davies wrote: The UK has a good crop of technology pioneers in cloud computing - for example ElasticHosts, FlexiScale, Flexiant, OnApp - and also some strong government initiatives such as G-Cloud. We will have to see whether this kind of technical leadership converts into swift mass-market adoption or not.
Cloud Expo on Google News


2008 West
DIAMOND SPONSOR:
Data Direct
SOA, WOA and Cloud Computing: The New Frontier for Data Services
PLATINUM SPONSORS:
Red Hat
The Opening of Virtualization
GOLD SPONSORS:
Appsense
User Environment Management – The Third Layer of the Desktop
Cordys
Cloud Computing for Business Agility
EMC
CMIS: A Multi-Vendor Proposal for a Service-Based Content Management Interoperability Standard
Freedom OSS
Practical SOA” Max Yankelevich
Intel
Architecting an Enterprise Service Router (ESR) – A Cost-Effective Way to Scale SOA Across the Enterprise
Sensedia
Return on Assests: Bringing Visibility to your SOA Strategy
Symantec
Managing Hybrid Endpoint Environments
VMWare
Game-Changing Technology for Enterprise Clouds and Applications
Click For 2008 West
Event Webcasts

2008 West
PLATINUM SPONSORS:
Appcelerator
Get ‘Rich’ Quick: Rapid Prototyping for RIA with ZERO Server Code
Keynote Systems
Designing for and Managing Performance in the New Frontier of Rich Internet Applications
GOLD SPONSORS:
ICEsoft
How Can AJAX Improve Homeland Security?
Isomorphic
Beyond Widgets: What a RIA Platform Should Offer
Oracle
REAs: Rich Enterprise Applications
Click For 2008 Event Webcasts
SYS-CON.TV
Top Links You Must Click On


A Multi-Agent Meeting Organizer
A Multi-Agent Meeting Organizer

Almost every working professional has experienced the tedium and frustration that results from scheduling a meeting for multiple attendees with potentially conflicting schedules plus additional constraints imposed by the meeting rooms and other resources. This problem deserves serious attention as many people in typical organizations have to spend a large portion of their working time in scheduling and attending meetings. With autonomous agents [1], which can schedule meetings and manage calendars on behalf of their users, the savings in time and effort can be tremendous. Users can then be relieved for more creative and productive tasks.

In this article, we introduce a Java-based multi-agent meeting organizer that requires multiple personal assistants (i.e., software agents) to collaborate with each other for automated meeting scheduling and calendar management. The prototype, known as AMEETZER (multi-Agent MEETing organiZER) represents and reasons with soft constraints related to the meeting attendees and meeting resources. Each AMEETZER interacts with its user, Registry, Room Manager and other AMEETZERs to schedule or negotiate meetings for its user. Using soft constraints allows tedious negotiations to be simplified into one-shot constraint satisfaction to arrive at an optimal meeting time, respecting all hard and soft constraints with graceful degradation. Internally, an AMEETZER is decomposed into four subagents - Receptionist, Scheduler, Messenger and Dispatcher. Inter- and intra-agent communications are realized in a uniform manner with KQML-like messages.

Overview
AMEETZER is a multi-agent meeting organizer that assists its user to manage his or her calendar and to call for meetings with other users. Upon accepting a call-for-meeting request from its user (host), an AMEETZER communicates with other AMEETZERs of the proposed attendees and the agent managing the meeting rooms (i.e., Room Manager) to arrive at some commonly free time slot, taking into account the pre-specified and dynamically created hard and soft constraints of all attendees and meeting resources. Users only decide on the final scheduling outcome and are reminded of forthcoming appointments. For users who are comfortable with full delegation to agents, AMEETZERs can be modified to skip the meeting confirmation process.

A typical meeting scheduling process consists of the following three phases:

  • Phase 1: Call for Meeting - a user (i.e., host of a meeting) wishes to initiate a meeting and sends a meeting request to his or her AMEETZER.
  • Phase 2: Scheduling - AMEETZER solicits necessary calendar and preference information from other AMEETZERs and performs constraint satisfaction to arrive at a scheduling decision.
  • Phase 3: Confirmation - The scheduling outcome of the requested meeting is decided upon, by either the user or the AMEETZER and the necessary information recorded or preparation carried out.

    In short, AMEETZER has the following novel features : 1. An Iterative Reservation withOut Commitment (IROC) scheduling protocol that achieves soundness and flexibility in utility-based scheduling [2,3] and negotiation [4] respectively among autonomous agents without forcing the user to commit a meeting [3] unless he or she is notified and wishes to do so.
    2. A uniform fuzzy constraint satisfaction framework to represent and reason with both hard and soft meeting constraints, be it a user's preference (goal) or a situation to be prevented (constraint). Potentially this would enable constraint satisfaction in a richer inference framework [5] and in a massively parallel computational paradigm [6].
    3. A two-layer (macro and micro) multi-agent architecture with inter- and intra-agent communications respectively to achieve high modularity and concurrency. Distributed networked AMEETZERs interact with each other with the support of the name service agent, Registry, and room management agent, Room Manager. Within an AMEETZER, Receptionist, Scheduler, Messenger and Dispatcher cooperate to fulfill a user's meeting scheduling requirements.

    In this article, we focus on the software architecture. In particular, we see how to structure both multi-agent and agent architectures as Java processes and threads respectively. Consequently, we illustrate how to realize inter- and intra-agent communications using Java sockets and built-in synchronization mechanisms with object serialization, which is crucial to achieve high-level agent message passing. Last but not least, this article also touches on issues of registry implementation.

    Software Architecture and Java Implementation
    Macro-Architecture
    As shown in Figure 1, AMEETZERs are designed as distributed personal software agents that interact with their users and collaborate with each other and the system agents across the network to schedule meetings automatically.

    With distributed architecture, meeting requests that involve disjoint sets of attendees and resources can be scheduled concurrently, in contrast to a centralized approach where all meetings are scheduled by a central scheduling agent. Not only will the latter approach be subject to communication and processing bottlenecks, it will also face fault tolerance and complex schedule maintenance issues.

    The IROC scheduling protocol is shown in Figure 2. It is carried out in three stages:

    Stage 1: Calendar Query
    The host AMEETZER requests the calendars within a specified range (i.e., meeting the time horizon as specified by the user) from the attendee AMEETZERs and Room Manager, instantiated with their preferences.

    Stage 2: Iterative Reservation
    With all retrieved calendars, the host AMEETZER infers the optimal meeting time using a uniform fuzzy inference framework. In the case where the scheduling problem is not over-constrained, a valid optimal meeting time, respecting various hard and soft constraints, will be found. The host AMEETZER then requests the attendee AMEETZERs and Room Manager to reserve the scheduled time. If an attendee's (or Room Manager's) calendar is still available (i.e., has not been reserved by other concurrently scheduled meetings), the corresponding time slot is marked and its status replied to the host AMEETZER. The host AMEETZER may have to iterate this reservation process for $K$ times, each with the $k^{th}$ optimal time, or until all reservations within a single iteration are successful, whichever is earlier.

    Stage 3: User Confirmation
    When the calendars of all attendees (including host) and Room Manager are reserved successfully with some (sub-)optimal time, the host AMEETZER initiates a user confirmation process. Each AMEETZER notifies its user about the scheduled meeting and seeks his or her acceptance, which is replied to the host AMEETZER.

    Within the IROC scheduling protocol, there are four situations where a meeting scheduling can fail (indicated by asterisk ($*$) in Figure 2):
    1. During Stage 1, some attendee(s) is not contactable.
    2. After inference, no commonly free time slot is available.
    3. After Stage 2, some reservation(s) is still not possible after $K$ attempts.
    4. During Stage 3, some user(s) rejects the meeting.

    Whenever one of the above situations arises, the host AMEETZER broadcasts a meeting cancellation message to the relevant AMEETZERs and Room Manager to cancel a meeting. The message passing for these meeting cancellations is not shown in Figure 2 for readability.

    AMEETZERs and system agents (Registry, Room Manager) are implemented as Java processes running on different hosts.

    Registry
    As a user is allowed to run his or her AMEETZER on any host at any time, the only way to cope with dynamic user mobility is to have a name service agent to maintain and provide the most up-to-date host and port information to any AMEETZER when agent communication is required. Thus, a Registry is necessary. The Registry should also be responsible for registration and unregistration of an AMEETZER, to assign an available port number to an AMEETZER newly activated on a host and to be notified of a terminated AMEETZER respectively. We will discuss Registry's implementation in greater detail later.

    Room Manager
    This is an agent to manage the calendars of meeting places. The calendar of a meeting place will be treated uniformly as that of an attendee though specific constraints such as room size and location can be incorporated. Thus, this single agent provides centralized control over calendars of all possible meeting rooms as contrast to one AMEETZER per attendee. This conceptual framework can be generalized for any kind of Resource Manager.

    Other Agents
    Depending on the application domain, more service agents (e.g., Refreshment Catering Agent) can be added to the AMEETZER system to enrich the services provided by the whole system.

    Micro-Archiecture
    To further increase the concurrency of the system, we propose multiagent (or multi-subagent) architecture within each AMEETZER, as shown in Figure 3.

    Each AMEETZER is decomposed into four subagents -- Receptionist, Scheduler, Messenger and Dispatcher. Personal user data comprise a Calendar to record scheduled meetings and a set of Preferences to capture user's constraints on meetings to be scheduled. The functions of the subagents are :
    1. Receptionist - interacts with the user to manage his or her Calendar and Preferences, accepts his or her requests (e.g., call-for-meeting), presents scheduling results for confirmation and reminds him or her about forthcoming meetings.
    2. Scheduler - implements the IROC scheduling protocol and the fuzzy constraint satisfaction framework.
    3. Messenger - forwards outgoing messages to other AMEETZERs, using the name service of Registry when necessary.
    4. Dispatcher - distributes incoming messages to the right subagent.

    In implementation, an Ameetzer class (main program) contains the start-up and clean-up codes for AMEETZER (Listing 1). Upon activation by the user,

    marten% java Ameetzer

    where is the path where the configuration file resides, Ameetzer carries out the following initialization steps,

  • reads in the configuration parameters from a file,
  • identifies the user from System.getProperty( "user.name" ),
  • registers with Registry (more details later),
  • reads in user's calendar and preferences from files,
  • creates its four subagents, providing the data pathname and abbreviated names, as well as a communication Channel object [7] for inter-agent communication (discussed below), and waits for the four subagents to join when the user exits via the Receptionist subagent. Before exit, Ameetzer will perform some clean up operations, such as saving the user's data and mailboxes.

    The four subagents inherit common variables and methods from the Subagent class (Listing 2). Each subagent (thread) executes in a perpetual loop to provide appropriate services based on the message retrieved from its own mailbox. Listing 3 shows skeletonal codes of the Dispatcher subagent.

    Agent Communication
    Recently, KQML [8] has gained popularity as an agent communication language without alternative with similar elaboration. We adopted a subset of KQML's performatives and adapted its communication format and content language for meeting scheduling domain and purpose. In AMEETZER, an Agent Communication Message, shown in Listing 4, has the following constituents :
    1. Intention - agent's intention of sending the message. It implements the performatives in KQML. We feel that intention is a more appropriate term as an agent message only conveys a sender agent's intended request for the receiver agent which may or may not fulfil the request in general.
    2. Sender - the agent (could be human agent) who sends the message.
    3. Receivers - a list of agents to receive the message.
    4. Content - message content, implemented as an array of Java Objects.

    Subagents within an AMEETZER communicate with each other by message passing in mailboxes which support synchronization mechanism via semphores. The MessageQueue and Semaphore classes are given in Listings 5 and 6. The codes for the Queue object can be found in [7].

    For communication among agents running on different hosts, a communication channel that encapsulates generic message sending and receiving behaviors built upon Java sockets and Java Object Serialization has been proposed [7]. Object serialization is necessary to support agent communication messages whose contents are of generic Object type. An item in the message content can range from a Date object (e.g. meeting date and time) to a multi-dimensional array of floating points (e.g. preference values).

    To send a message to another AMEETZER, a Receptionist or Scheduler subagent sends a "forward" message to the Messenger subagent. Listing 7 shows an example where the Scheduler subagent of a meeting host's AMEETZER intends to retrieve the relevant parts of calendars from the attendee AMEETZERs.

    The Messenger subagent will then "unwrap" this message when it is retrieved from its mailbox, look up the hostnames and port numbers of the respective recipient AMEETZERs and send out the message (i.e., fw_msg.content[0]) via the send() method of the Channel object [7] which receives incoming messages intended for the AMEETZER in Dispatcher subagent's mailbox (i.e., Dispatcher subagent's mailbox accepts external messages). The Messenger subagent may consult the Registry for the latest whereabouts of a recipient AMEETZER when necessary via another Channel object created by itself.

    AMEETZER in action
    We have tested AMEETZER's effectiveness under different scenarios. Scheduling a meeting that involves fourteen attendees (i.e., from call-for-meeting request to result reporting) requires not more than twenty seconds. Listing 7 depicts the text output of an operational AMEETZER and Figures 4-8 show some of the sample screen shots of AMEETZER during operation.

    Registry
    To track the whereabouts of AMEETZERs for peer-to-peer agent communications and to resolve communication port allocation conflict for AMEETZERs running on the same host, the Registry provides name service and registration function to the AMEETZERs using Channel object [7] via its well-known port (Listing 9).

    When an AMEETZER comes alive, it needs to contact Registry to request a pair of port numbers (to be used by two Channel objects) for future agent communication (with other AMEETZERs) and name service (with Registry). However, to carry out this registration request an AMEETZER needs a prior communication port. This chicken-and-egg problem is resolved by using an initial well-known port (i.e. AMZ_INIT_PORT in Listing 9).

    Upon receiving a "register" request from an AMEETZER, the Registry creates a new entry in its look-up tables (i.e., uid_host_map, ses_port_map) and replies with a pair of allocated port numbers if the requester is the only AMEETZER for its user. Otherwise, a sorry message will be replied, which will cause the AMEETZER to notify its user of pre-existing AMEETZER (at any time, only one AMEETZER is allowed per user). In the rare case of more than one AMEETZER attempting to register simultaneously, only the first AMEETZER will be granted and the rest will catch a Socket exception and request its user to start AMEETZER again later before exiting itself.

    When the request is "unregister", the Registry simply removes the requester's entry in look-up tables and frees the port numbers held by it.

    Last but not least, the Registry responds to an "ask-all" query request by looking up its tables and replying with a corresponding list of hostnames and port numbers for the given list of user names. Null values are replied for users who have no active AMEETZER running.

    Conclusion and Future Outlook
    In this article, we have described the design and implementation of a Java-based multi-agent meeting organizer, AMEETZER. We are collaborating with Tsukuba Research Center, RWCP, Japan to enhance AMEETZER's user interface with speech and gesture recognition technologies. Users will use voice and gestures to interact with their AMEETZER, which will respond with a synthesized voice which supplements the existing visual output. System integration can be achieved in a seemless and loose manner via socket communication. Briefly, the Channel object [7] in AMEETZER is modified to receive keywords produced after speech and gesture recognition and to send speech synthesized text to the new interface module (currently implemented in C).

    We are also looking into transforming the standalone AMEETZERs for the World Wide Web platform. With Internet, we can extend the Registry to support inter-organization meetings and meetings among home users. A mobile computing and communication platform is another possible area for investigation.

    References
    1. Maes, P. (1994). "Agents that reduce work and information overload." Communications of the ACM, 37(7): 30-40, July 1994.
    2. Ephrati, E., Zlotkin, G., & Rosenschein, J.S. (1994). "A non-manipulable meeting scheduling system." In Proc. of the 13th International DAI Workshop, Seattle, Washington, July 1994, pp. 105-125.
    3. Yamaki, H., Kajihara, M., Nishimura, T., & Ishida, T. (1995). "Socia: an agent-based meeting support system." Technical Report ILTR-95-01. Dept. of Information Science, Kyoto University.
    4. Sen, S. (1996). "An automated distributed meeting scheduler." To appear in IEEE Expert.
    5. Lim, J.H. (1995). "Fuzzy constraint logic programming: a proposal." In Proc. of FUZZ-IEEE/IFES'95, Yokohama, Japan, Mar. 20-24, 1995, pp. 2305-2310.
    6. Lim, J.H. (1991). "A constraint satisfaction neural network applied to timetable scheduling." In Proc. of Neuro-Nimes'91, Nimes, France, Nov. 4-8, 1991, pp. 761-764.
    7. Lai, S.L. & Lim, J.H. (1996). "Channel: a communication component." Java Developer's Journal, Volume 1, Issue 3, December 1996, pp. 16-.
    8. Finin, T. et al. (1993). Draft specification of the KQML agent communication language. http://www.cs.umbc.edu/kqml/.

    About Siet-Lang Lai
    Siet-Leng Lai has published and presented at several international conferences,
    and is now conducting research into XML, WML and WAP. Since 1990 she has been
    a lecturer at the Center for Computer Studies, Ngee Ann Polytechnic, Singapore,
    on subjects ranging from operating systems, system programming, networking,
    Internet computing, and parallel and distributed computer systems to intelligent
    building. Lai has also conducted short courses for the public on the above-
    mentioned topics. She holds degrees from the National University of Singapore.

    About Joo-Hwee Lim
    Joo-Hwee Lim proposed novel neural networks techniques for timetabling and developed execution monitoring engine for a complex planner. He is now a senior software engineer leading an Agent Engineering Team researching agent-based software engineering and multi-agent systems using Java. The project is funded by Japan's Real World Computing Partnership.

  • In order to post a comment you need to be registered and logged in.

    Register | Sign-in

    Reader Feedback: Page 1 of 1

    Enterprise Open Source Magazine Latest Stories . . .
    Apache Deltacloud, the Red Hat-contributed ReSTful API that abstracts differences between clouds so services on any cloud can be managed – provided of course there’s a driver – has graduated from the Apache Foundation’s incubator and is now a full-fledged Top-Level Project (TLP). The...
    With Cloud Expo 2012 New York (10th Cloud Expo) just four months away, what better time to start introducing you in greater detail to the distinguished individuals in our incredible Speaker Faculty for the technical and strategy sessions at the conference... We have technical and st...
    AMD said late Tuesday that its chief sales officer Emilio Ghilardi had left the company and that CEO and president Rory Read is going to do his job while a replacement is sought. AMD didn’t say why Ghilardi left but it’s assumed Read wants his own people. Read is relatively new to th...
    During the lifespan of M3 (Monitis Monitor Manager) there has always been something lacking – timers. M3 execution procedure was outlined in this previous article. The execution mentioned in the latter was a one-time-execution, whereas server monitoring requires periodic invocati...
    Red Hat is putting its bought-in Gluster scale-out NAS storage technology, acquired in October, on the Amazon cloud. It’s styled Red Hat Virtual Storage Appliance for Amazon Web Services and other clouds are supposed to follow in short order.
    A new episode of the screencast series is now available at the OpenNebula YouTube Channel. This screencast demonstrates the new easily-customizable self-service portal for cloud consumers. Its aim is to offer a simplified access to shared infrastructure for non-IT end users. The scree...
    Subscribe to the World's Most Powerful Newsletters
    Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
    Click to Add our RSS Feeds to the Service of Your Choice:
    Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
    myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
    Publish Your Article! Please send it to editorial(at)sys-con.com!

    Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021


    SYS-CON Featured Whitepapers
    ADS BY GOOGLE