Thursday, 29 May 2008

JADE - Behaviour Scheduling and Execution

"An agent can execute several behaviours concurrently. However, it is important to note that the scheduling of behaviours in an agent is not pre-emptive (as for Java threads), but cooperative. This means that when a behaviour is scheduled for exection its action() method is called and runs until it returns. Therefore it is the programmer who defines when an agent switches from the execution of one behaviour to the execution to another."

(Source: developing multi-agent systems with JADE)

Monday, 19 May 2008

AAMAS 2008

Just got back from a week in Portugal attending the 'Seventh International Conference on Autonomous Agents and Multiagent Systems' (AAMAS 2008). It was good to meet in person individuals whose work I have been following this past year-and-a-half. On the back of the conference and given that my focus is Argumentative Negotiation in Multiagent Systems, I find myself quite interested in the work of Iyad Rahwan (strategy etc), Peter Mcburney (dialogue games etc) and Elizabeth Black (enthymemes etc).

Thursday, 8 May 2008

43.2, MAS: Rational Decision Making and Negotiation

Snippets taken from slides prepared and used by Ulle Endriss to teach a "Multiagent Systems: Rational Decision Making and Negotiation" course at Imperial College London in 2005

Game Theory: Given the rules of the "game" (the negotiation mechanism, the protocol), what strategy should a rational agent adopt?

Dominant Strategies: A strategy is called dominant iff, independently of what any of the other agents do, following that strategy will result in a larger payoff than any other strategy.

Nash Equilibria: A Nash equilibrium is a set of strategies, one for each agent, such that no agent could improve its payoff by unilaterally deviating from their assigned strategy.

Monday, 5 May 2008

43.1, MAS: Rational Decision Making and Negotiation

Snippets taken from slides prepared and used by Ulle Endriss to teach a "Multiagent Systems: Rational Decision Making and Negotiation" course at Imperial College London in 2005

Welfare Economics: mathematical models of how the distribution of resources amongst agents affects social welfare.

Social Welfare: Utilitarian, Egalitarian, Nash Product, Pareto Optimality.

Thursday, 1 May 2008

More questions to think about

Following on from the previous post, a couple of questions to think about:

Why negotiation rather than an auction-based approach?

Why argumentative negotiation rather than a bargaining approach?

Wednesday, 30 April 2008

THE question: What is "the problem"?

(Note: Terms enclosed in quotation marks below most likely require background knowledge to be properly understood.)

My problem to solve is as follows: Given a number of "agents", each with a number of "resources" and each with "desires" for resources that it may or may not have, how do the agents exchange resources so that each has/obtains the resources it desires?

My solution: Allow the agents to "dialogue" between themselves by means of "argumentative negotiation". This will be achieved by modularising the problem into three inter-related sub-problems:

(1) Defining the "dialogue protocol" for argumentative negotiation, i.e. what are the "messages" that agents can exchange? how are the messages connected to form an argumentative negotiation dialogue? what messages initiate the dialogue? what messages terminate the dialogue? when is a terminating dialogue "successful" and when is it "unsuccessful"?

(2) Defining the "agent policies", i.e. what does the agent do with incoming messages? how does the agent know what messages are allowed to be sent at a certain stage according to the protocol? out of all these allowed messages, which one does the agent select to send at a certain "turn"? why/how?

(3) Defining the "knowledge-base" ("inference rules", allowed "assumptions", "contraries" of assumptions etc) which guides the decision-making of the agent at the policy/"strategy" level.

Note to self: Agent policies are to be defined so that they are largely independent of the definition of the various knowledge-base components they call upon when run. This will allow modifying the underlying knowledge of the agent (i.e. how desires are specified, how preferences over resources are specified, how incentive for exchanging resources is specified, and so on) hence allowing the behaviour of the agents and results of the negotiations to be modified without having to modify the dialogue protocol or agent policies.

Monday, 21 April 2008

Jason - note to self 6

Given a hypothetical execution as follows:
(1) an agent ag1 delegates a goal !g1 to an agent ag2;
(2) ag2 begins executing !g1 (as delegated by ag1);
(3) ag2 reaches a stage in the plan body of !g1 where it has to execute !g2;
(4) ag2 is in the process of executing !g2 (called from !g1);
(5) ag2 receives an 'unachieve !g1' message from ag1.

Now, in processing the 'unachieve' message, !g1 would be removed from the current set of intentions. !g2 (and any goals subsequently called by !g2 that are currently in the stack of intentions) would also be removed.

This is because all those plans chosen to achieve sub-goals would be within the stack of plans forming the intention, on top of the plan for !g1, which would be dropped (and everything on top of it too, necessarily).

HOWEVER... the case for !! is different (recall that this allows the agent to achieve a goal in a SEPARATE intention). In this case, if we choose to achieve a goal in a separate intention, we lose track of why we were trying to achieve the goal. Needless to say, although this (!!) operator is provided because it can be useful, this is one of the reasons why it should be used with care.

Modifying step (5) as "ag2 receives an 'unachieve !g2' message from ag1". In this case, !g1 will also be dropped since the 'unachieve' uses the '.drop_desire' intention. '.drop_desire(g2)' "kills" the intention where !g2 appears and no failure event is produced. If we used 'fail_goal' instead of 'drop_desire', this allows a different behaviour. With this, the plan for !g2 would be terminated and a failure of !g1 (note it's g1 here) would be created.