In FIPA-OS the core class ACL
is used to contain messages. As such, it contains the methods:
setPerformative
setTransportMethod
setPlatformID
setDF
setAMS
FIPA-OS provides a Task
class. The goal in providing these is to
- Provide an encapsulation mechanism for re-usable pieces of code.
- Make the learning curve steeper for new users.
- Provide a method for delegation of work among agents.
- Establish a common unit of work.
- Handle different implementation architectures at the same time.
The first things that a FIPA-OS agent must do upon startup (in order) are:
- Register with AMS, register with DF
- Register with DF, register with AMS
- Register with platform, register with AMS, register with DF
- Register with AMS, register with platform, register with DF
- Register with DF, register with platform, register with AMS
In FIPA-OS a task can spawn a sub-task by
- Creating it with a
new
statement.
- Creating it and adding it to the task manager.
- Creating it and calling
startTask
on it.
- Calling the task manager with the appropriate parameter.
- It cannot be done.
The JADE threading method is such that
- Each agent gets only one thread.
- Each conversation by an agent gets only one thread.
- Each task gets only one thread.
- Each container gets only one thread.
- Each agent runs in a separate process.
When a JADE agent sends a message, three things are possible:
-
- If receiver is on same container then pass ACL message using an event object.
- If receiver is on same platform but different container then ACL message is sent using RMI.
- If receiver is on different platform then IIOP protocol
is used, as per FIPA standard. The ACL message is
transformed into a character string and the remote
invocation is done using IIOP.
-
- If receiver is on same container then pass ACL message using a pipe.
- If receiver is on same platform but different container then ACL message is sent using RMI.
- If receiver is on different platform then IIOP protocol
is used, as per FIPA standard. The ACL message is
transformed into a character string and the remote
invocation is done using IIOP.
-
- If receiver is on same container then pass ACL message using an event object..
- If receiver is on same platform but different container then ACL message is sent using inter-process pipes.
- If receiver is on different platform then IIOP protocol
is used, as per FIPA standard. The ACL message is
transformed into a character string and the remote
invocation is done using IIOP.
-
- If receiver is on same container then pass ACL message using an event object.
- If receiver is on same platform but different container then ACL message is sent using sockets.
- If receiver is on different platform then IIOP protocol
is used, as per FIPA standard. The ACL message is
transformed into a character string and the remote
invocation is done using IIOP.
-
- If receiver is on same container then pass ACL message using a pipe.
- If receiver is on same platform but different container then ACL message is sent using sockets.
- If receiver is on different platform then IIOP protocol
is used, as per FIPA standard. The ACL message is
transformed into a character string and the remote
invocation is done using IIOP.
JADE implements FIPA's IPs with
- Two classes, one for the Initiator role and one for the Responder role.
- The Conversation class.
- The Behavior class.
- The low-level communications codec.
- It does not implement IPs.
In order to implement an agent with a GUI in JADE, you should (pick best)
- extend GuiAgent.
- use the Swing library.
- implement it in its own thread.
- it cannot be done.
- use the AWT library.
Which one of the following is not a software engineering method used to build better, complex software.
- Semantic decomposition
- Objects
- Components
- Design Patters
- Software Architectures
Agent-oriented decomposition helps us implement complex systems
because of all the following reasons except which one. (That is,
pick the one that is not a valid reason).
- Agents typically have lower computational
overhead than components.
- Agent autonomy is a natural representation of complex
systems.
- Since decisions are made by autonomous entities selection
can be made based on the local situation.
- Run-time decisions about interactions means designer does
not have to predict a priori all possible links, which
would be impossible.
- Managing relationships is much easier since the agents' flexible interactions allow them to be done bottom-up.
An agent-oriented abstraction that does not necessarily help us in implementing complex systems is:
- White pages
- Organizations
- Social interactions
- Roles
- Norms
The agent-oriented philosophy for dealing with organizational relationships is appropriate for complex systems because
- Organizational constructs are first-class
entities in agent systems and agent systems can flexibly form,
maintain, and disband organizations.
- Complex systems are always structured in terms of a hierarchical organization.
- Agent systems use a very rigid set of pre-defined organizational structures.
- Agent systems do not provide any methods of dealing with organization.
- Complex systems are highly dependent on initial states which precludes the need for autonomous agent systems that can inhabit the boundary regions.
The one about "boundary regions" is pure nonsense.
One of the biggest problem when implementing agent systems is that
- The emergent behaviors are unpredictable.
- There are no viable agent architectures.
- There is little difference between an object and an agent.
- The communications between agents requires sophisticated inference methods.
- The extemporaneous quality of the agents sense of identity.
The one about "sense of identity" is nonsense.
Jennigs proposes a new "social level" which would lie where in Newell's hierarchy.
- Above the knowledge level.
- Above the program level.
- Below the knowledge level but above the program level.
- Above the decision level.
- Above the interaction level.
There are no decision or interaction levels.
If you use task decomposition and sharing to solve the towers of
Hanoi problem with 3 disks (as explained in class), how many
agents would you need?
Using task decomposition and sharing we could, theoretically,
solve many problems in linear time. However, this is not
realistically possible for all these reasons except which
one?
- Task sharing does not scale well.
- There is usually a limited number of agents.
- The tasks cannot always be decomposed finely enough.
- Backtracking is often needed.
- Communications and re-assembly take time.
A strong dependency in a goal graph between goals G1 and G2 represents the fact that
- G2 must be achieved in order for G1 to be achieved.
- If G2 is achieved then so is G1.
- If G2 is achieved then G1 is easier to achieve.
- G2 and G1 must be achieved at the same time.
- G2 must not be achieved in order for G1 to be achieved.
A weak dependency in a goal graph between goals G1 and G2 represents the fact that
- If G2 is achieved then G1 is easier to achieve.
- G2 must be achieved in order for G1 to be achieved.
- If G2 is achieved then so is G1.
- G2 and G1 must be achieved at the same time.
- G2 must not be achieved in order for G1 to be achieved.
One way we use goal graphs for building multiagent systems is:
- The designer builds a goal graph for the
problem and then implements protocols for distributing the goals
among agents.
- Each agent generates its own goal graph and solves it.
- The programmer generates a goal graph by hand and assigns the goals to the agents which they then carry out in parallel.
- The goals are distributed among all the agents who then build their own goal graphs based on the goals they received. These graphs are then sent to everyone and all the agents build the same common full goal graph.
- Goal graphs are used only at the design state to determine how hard the problem would be to solve. They are never used at run-time.
A commitment is
- A pledge made by an agent.
- A contract made by an agent.
- A formalism.
- A binding, non-breakable contract.
- A suggestion.
Agent conventions
- Describe circumstances under which an agent
should reconsider its commitments.
- Are akin to non-breakable commitments.
- Are established between pairs of agents.
- Describe the conditions under which agents can establish new commitments with other agents.
- Describe methods or functions that are common to all agents.
A social convention
- Specifies how an agent should behave towards
other agents if it alters of modifies its commitments.
- Specifies how an agent should behave towards
other agents if it modifies its conventions.
- Specifies how an agent should behave towards
other agents when cooperating with them.
- Governs all of the agents' behaviors as they relate to inter-agent relationships.
- Is a simple rule created by an agent in order to avoid social friction with other agents.
The joint action convention is defined so that
- Agents that have a joint commitment or action will keep each other appraised of any changes.
- Agents can establish joint actions.
- Agents can establish joint commitments.
- Agents can renege on their social conventions.
- Agents that have a social convention will keep each other appraised of any changes.
Goal graphs can be executed with commitments and conventions by
making the obvious mappings. One of these mappings is:
- In an AND relationship we need the commitment of all the agents.
- The goals become social conventions.
- A strong dependency implies a commitment between the goals.
- A weak dependency implies a commitment between the goals.
- In an OR relationship a social convention must be established between all the agents.
The filtering algorithm can do all of the things below except which one? (CSP = constraint satisfaction problem).
- It can find a solution to all CSPs.
- It can reduce the domain of the variables in a CSP.
- It can solve some CSPs with 3 or more variables.
- It will generate only correct solutions.
- It will terminate.
k-consistency is defined as
- Given any instantiation of any k-1 variables
that satisfy all constraints it is possible to find an
instantiation of any kth variable s.t. all k variable values
satisfy all constraints.
- Given any instantiation of any k-1 variables
that satisfy all constraints there exists an
instantiation of any kth variable s.t. all k variable values
satisfy all constraints.
- Any instantiation of any k-1 variables
that satisfy all constraints is possible.
- Given some instantiation of any k variables
that satisfy all constraints, then all k variable values
satisfy all constraints.
- Given any k-1 variables it is possible to find an
instantiation of any kth variable s.t. all k variable values
satisfy all constraints.
The hyper resolution rule
- Provides a simple method for deducing new nogoods from old ones.
- Resolves conflicts in a constraint satisfaction problem
- Determines the value to assign to a variable in a constraint satisfaction problem.
- Enforces k-consistency.
- Cannot be used to determine the value of more than k variables.
The initial set of nogoods in the asynchronous backtracking algorithm is generated
- From the constraints in the problem.
- Using the hyper-resolution rule.
- By the leader agent.
- After the initial variable assignments.
- Using the filtering method.
The main advantage of the asynchronous backtracking algorithm over the filtering algorithm is that
- It can solve all constraint satisfaction problems.
- It runs in linear time.
- It does not require one agent for each variable.
- It can be used in an asynchronous manner.
- It is guaranteed to find the best answer.
In the asynchronous backtracking algorithm, once an agent resolves a new nogood it then
- Sends it to the lower priority agent in the nogood.
- Finds a variable assignment that satisfies the nogood.
- Makes sure that its local view is coherent with the nogood.
- Tries to determine the cause of the nogood.
- Resolves it.
Notice how all the wrong answers are either silly or impossible.
In the asynchronous backtracking algorithm, as applied to a constraint satisfaction problem:
- Each variable is represented by an agent.
- Each constraint is represented by an agent.
- Each agent is responsible for all variables.
- Agents distribute responsibility for the variables among themselves.
- Agents distribute responsibility for the constraints among themselves.
The difference between asynchronous backtracking and asynchronous weak-commitment search is that:
- The priorities are fixed in the former and vary in the later.
- The agents never break their commitments in the former but can break them in the later.
- The former is much faster than the later.
- The former fails to find all the solutions but the later one does not.
- The former require the user of the hyper-resolution rule while the later one does not.
An advantage of asynchronous weak-commitment search over asynchronous backtracking is that:
- It can recuperate from early, bad decisions.
- It has weak commitments.
- It is shiny.
- It will not use the hyper-resolution rule when its not needed.
- It can determine the best possible solution.
Asynchronous dynamic programming, as used to solve a
path-finding problem, works by initially setting the h value of
all nodes to infinity. This h value will eventually converge to
h*, the shortest distance from there to the
goal. Then at each step:
- The agents reset their h values using the h values they received from their neighbors.
- The h values are reduced by the amounts on the edges.
- The agents reset their h values by the amounts on the edge weights.
- The agents use them to calculate the distance to their neighbors.
- The agents set them to their h* values.
Which one of the following statements about the asynchronous
backtracking algorithm (used to solve path-finding problems) is
not true.
- It returns the shortest path from the source to the goal.
- It requires n agents, where n is the number of nodes.
- It takes at least l steps, where l is the shortest path (in number of edges) from source to goal.
- It calculates the shortest distance from all nodes to the goal node.
- It works faster if a good initial heuristic (h) is chosen
It does not return a path, just the distances.
In the learning real-time A* algorithm (used for
path-finding), what happens if the initial h(i) >
h*(i)? That is, if our initial estimates overstate
the truth. The LRTA* algorithm is:
for each neighbor j
f(j) = k(i,j) + h(j)
h(i) = minjf(i)
move to j with min f(j)
- The best solution found might be longer than the actual best solution.
- There will be a division by zero error.
- Nothing. The algorithm will work fine.
- All h values will be increased by some amount.
- The algorithm will get into an infinite loop.
Imagine that the h(goal) > 0, what happens then?
Why does real-time A* use the secondmin instead of the min used by LRTA*?
The LRTA* algorithm is:
for each neighbor j
f(j) = k(i,j) + h(j)
h(i) = minjf(i)
move to j with min f(j)
- It allows RTA* to do more exploration.
- It allows RTA* to find a better solution.
- It allows RTA* to avoid all dead-ends.
- It makes the mathematics easier to understand.
- It satisfies the requirements of real-time hardware.
In the moving target search problem a problem solver tries to
catch a target agent. This problem can be solved using
- A variation on the LRTA* algorithm.
- Asynchronous dynamic programming.
- Asynchronous backtracking.
- The hyper-resolution rule.
- The filtering algorithm.
If you are solving a search problem that has n states with
unidirectional search but then change to use bidirectional
search, the new search space has how many states?
In their efforts at cost-cutting, the University decides that
all undergraduate student schedules will be generated by
computer. You are given the task of implementing a system that
will schedule all the classes for every incoming freshman for
the next year, taking into account pre-requisites, time
conflicts, etc. Which one of the algorithms below is best suited
for this task?
- Asynchronous weak commitment search.
- Asynchronous dynamic programming.
- LRTA*
- The hyper-resolution algorithm.
- The filtering algorithm.
There is no hyper-resolution algorithm.