Homework 1

Due October 4

Extend the simple database agents example to do brokering: The Simple Interface Agent should find (via the matchmaker) at least two simple database wrappers, and choose the "cheapest" one to answer the query.

Agent 1: Simple Interface Agent {SIA]. The simple interface agent should allow a user to query a remote database for the cheapest price. You may choose a VERY limited type a query (i.e., price of a stock given the ticker symbol, name of a movie given an actor, capital of a state given the state, etc.). Do not worry about elaborate query languages. You may either prompt the user for the queries on the command line, or in a window widget if you want to be elaborate. Your SIA and the SDBWs should find each other via the Matchmaker; they should not use hardcoded names and locations.

Enter a ticker symbol: IBM
Sending a remote query....the price of IBM is 158.
Enter a ticker symbol: MTZ
Sending a remote query...That symbol is unknown to the remote database.

Agent 2: Simple Database Wrapper [SDBW]. The simple database wrapper should accept two types of queries: a query meaning "how much would it cost to answer this domain query", and a domain query itself. You can simply encode a small database in a Java hashtable, although you may wrap a file or a web site if that's just too boring for you. The "cost" of answering a query should be randomly generated (so different agents will be chosen at different runs of the system).

Question 1: Are these "intelligent agents" (Chapter 1)? Why or why not? If not, what could you do to make them intelligent? If they are intelligent, do they compose a multi-agent system? What multi-agent interactions (from Chapter 2) would be useful in this application context?

Question 2: One important concept in multi-agent software engineering is robustness.
A multiagent system should be very robust to all kinds of serious and transient failures. How robust is your solution? Make a comprehensive list of robustness traits and indicate if your solution has these traits. A robust behavior is one that (1) does not result in a fatal error and (2) either reports the error or attempts to transparently recover from the error. For example:

Also, indicate which traits could be handled by more complex task structures, and which would require some completely new support.

Homework Goals: To develop a basic familiarity with DECAF. Learn how to start up and shutdown agents, including the ANS and Matchmaker. Basic familiarity with the PlanEditor, and with writing Java Agent Actions. A feeling for the different types of thinking needed at the implementation level vs. the "theory" level.