Saturday, 6 June 2009
52, Argumentative Agent Deliberation, Roles and Context
This paper ('Argumentative Agent Deliberation, Roles and Context', 2002, Antonis Kakas and Pavlos Moraitis) presents an argumentation based framework based on 'Logic Programming without Negation as Failure' that makes use of three levels of rules (in the examples at least); 'object-level decision rules', 'role (or default context) priorities' and '(specific) context priorities'. Hints at using abduction for agents to make assumptions under incomplete knowledge but I didn't quite get it. Good deliberation examples making use of rules, priorities over rules and priorities over priorities over rules.
Friday, 5 June 2009
'Sentence'
"a sentence is a 'formula' in which every occurrence of a variabl (if any) is within the scope of a quantifier for that variable."
(Introduction to Logic Programming (page 11), by Chrstopher John Hogger)
(Introduction to Logic Programming (page 11), by Chrstopher John Hogger)
Friday, 22 May 2009
maraIRAgents
Just finished the first version of the 'maraIRAgents' implementation (2 agents, 1+ resources each, 1 goal each, distributed fulfils plans).
Seems to run and not loop infinitely but identified a problem case, as follows:
-----
a1: goal(a1,g1), has(a1,r1), fulfils(r2,g1)
a2: goal(a2,g2), has(a2,r2), fulfils(r1,g1), fulfils(r2,g2)
-----
If a2 can communicate fulfils(r1,g1) to a1 then both agents end successfully but this doesn't happen.
Solution: Responding agent should only agree to a response if one of the two agents end up better off (similar to the condition for initiating a request). Otherwise it should refuse providing argument as such.
Seems to run and not loop infinitely but identified a problem case, as follows:
-----
a1: goal(a1,g1), has(a1,r1), fulfils(r2,g1)
a2: goal(a2,g2), has(a2,r2), fulfils(r1,g1), fulfils(r2,g2)
-----
If a2 can communicate fulfils(r1,g1) to a1 then both agents end successfully but this doesn't happen.
Solution: Responding agent should only agree to a response if one of the two agents end up better off (similar to the condition for initiating a request). Otherwise it should refuse providing argument as such.
Wednesday, 20 May 2009
Deliberation Examples
I need to think of an example for a multi-agent deliberation-like dialogue to include in a forthcoming paper. Here are some first tries:
--- 1 ---
swapAppointments(Ag1,Ag2,App1,App2) <- requires(Ag1,Req1), fulfils(App2,Req1), has(Ag1,App1), ¬fulfils(App1,Req1), canSwap(Ag2,App2,App1)
cantSwap(Ag,App1,App2) <- ¬has(Ag,App1)
cantSwap(Ag,App1,App2) <- has(Ag,App1), requires(Ag,Req), fulfils(App1,Req), ¬fulfils(App2,Req)
Assumptions = {¬fulfils(App,Req), canSwap(Ag,App1,App2)}
Contrary(¬fulfils(App,Req)) = fulfils(App,Req)
Contrary(canSwap(Ag,App1,App2)) = cantSwap(Ag,App1,App2)
Consider two concrete agents, ag1 and ag2, with initial private beliefs as follows:
Priv(ag1) = {has(ag1,app1), requires(ag1,fridayAppointment), fulfils(app1,morningAppointment), fulfils(app2,fridayAppointment)}
Priv(ag2) = {has(ag2,app2), requires(ag2,morningAppointment), fulfils(app2,morningAppointment)}
--- 2 ---
buy(House) <- withinBudget(House), goodLocation(House)
badLocation(House) <- farFromWork(House), badTransportLinks(House)
goodTransportLinks(House) <- nearBusStop(House), frequentBusService(House)
Assumptions = {goodLocation(House), badTransportLinks(House), frequentBusService(House)}
Contrary(goodLocation(House)) = badLocation(House)
Contrary(badTransportLinks(House)) = goodTransportLinks(House)
Contrary(frequentBusService(House)) = infrequentBusService(House)
Consider two concrete agents, ag1 and ag2, with initial private beliefs as follows:
Priv(ag1) = {withinBudget(house1), nearBusStop(house1)}
Priv(ag2) = {farFromWork(house1)}
--- 3 ---
watch(Ag1,Ag2,Film) <- criticallyAcclaimed(Film), willLike(Ag1,Film), willLike(Ag2,Film)
wontLike(ag2,Film) <- actor(Film,timRobbins), boring(Film)
¬boring(Film) <- actor(Film,morganFreeman), goodUserRating(Film)
Assumptions = {willLike(Ag,Film), boring(Film), goodUserRating(Film)}
Contrary(willLike(Ag,Film)) = wontLike(Ag,Film)
Contrary(boring(Film)) = ¬boring(Film)
Contrary(goodUserRating(Film)) = badUserRating(Film)
Consider two concrete agents, ag1 and ag2, with initial private beliefs as follows:
Priv(ag1) = {criticallyAcclaimed(shawshankRedemption), actor(shawshankRedemption,morganFreeman)}
Priv(ag2) = {actor(shawshankRedemption,timRobbins)}
------
--- 1 ---
swapAppointments(Ag1,Ag2,App1,App2) <- requires(Ag1,Req1), fulfils(App2,Req1), has(Ag1,App1), ¬fulfils(App1,Req1), canSwap(Ag2,App2,App1)
cantSwap(Ag,App1,App2) <- ¬has(Ag,App1)
cantSwap(Ag,App1,App2) <- has(Ag,App1), requires(Ag,Req), fulfils(App1,Req), ¬fulfils(App2,Req)
Assumptions = {¬fulfils(App,Req), canSwap(Ag,App1,App2)}
Contrary(¬fulfils(App,Req)) = fulfils(App,Req)
Contrary(canSwap(Ag,App1,App2)) = cantSwap(Ag,App1,App2)
Consider two concrete agents, ag1 and ag2, with initial private beliefs as follows:
Priv(ag1) = {has(ag1,app1), requires(ag1,fridayAppointment), fulfils(app1,morningAppointment), fulfils(app2,fridayAppointment)}
Priv(ag2) = {has(ag2,app2), requires(ag2,morningAppointment), fulfils(app2,morningAppointment)}
--- 2 ---
buy(House) <- withinBudget(House), goodLocation(House)
badLocation(House) <- farFromWork(House), badTransportLinks(House)
goodTransportLinks(House) <- nearBusStop(House), frequentBusService(House)
Assumptions = {goodLocation(House), badTransportLinks(House), frequentBusService(House)}
Contrary(goodLocation(House)) = badLocation(House)
Contrary(badTransportLinks(House)) = goodTransportLinks(House)
Contrary(frequentBusService(House)) = infrequentBusService(House)
Consider two concrete agents, ag1 and ag2, with initial private beliefs as follows:
Priv(ag1) = {withinBudget(house1), nearBusStop(house1)}
Priv(ag2) = {farFromWork(house1)}
--- 3 ---
watch(Ag1,Ag2,Film) <- criticallyAcclaimed(Film), willLike(Ag1,Film), willLike(Ag2,Film)
wontLike(ag2,Film) <- actor(Film,timRobbins), boring(Film)
¬boring(Film) <- actor(Film,morganFreeman), goodUserRating(Film)
Assumptions = {willLike(Ag,Film), boring(Film), goodUserRating(Film)}
Contrary(willLike(Ag,Film)) = wontLike(Ag,Film)
Contrary(boring(Film)) = ¬boring(Film)
Contrary(goodUserRating(Film)) = badUserRating(Film)
Consider two concrete agents, ag1 and ag2, with initial private beliefs as follows:
Priv(ag1) = {criticallyAcclaimed(shawshankRedemption), actor(shawshankRedemption,morganFreeman)}
Priv(ag2) = {actor(shawshankRedemption,timRobbins)}
------
Wednesday, 6 May 2009
Reviewing the eumas08 negotiation policy
Consider an agent system consisting of 2 agents and 2 resources as follows:
a1 has r1 and needs r1, r2
a2 has r2 and needs r1, r2
According to the eumas08 negotiation policy (simple and reason-based procedures) both agents end unsuccessfully. However, a1 could end successfully if a2 gave it r2. Likewise, a2 could end successfully if a1 gave it r1. However, according to the policy, neither will make this sacrifice and thus an optimal (maximal) number of agents that end successfully is not reached.
Consider including offers/arguments of the form: "Your goal G of obtaining R1, ..., Rn is not achievable because ... so give me Ri".
a1 has r1 and needs r1, r2
a2 has r2 and needs r1, r2
According to the eumas08 negotiation policy (simple and reason-based procedures) both agents end unsuccessfully. However, a1 could end successfully if a2 gave it r2. Likewise, a2 could end successfully if a1 gave it r1. However, according to the policy, neither will make this sacrifice and thus an optimal (maximal) number of agents that end successfully is not reached.
Consider including offers/arguments of the form: "Your goal G of obtaining R1, ..., Rn is not achievable because ... so give me Ri".
Monday, 4 May 2009
Computing for Kids
I need to demonstrate/explain Computing to young children (9 years of age) in a fun/interactive way. I thought of the following group exercises:
Find Median - split children into teams of 7 or 9, have each team make a line, give each child in the team a number (in no particular order), ask the children in their teams to work out the middle (median) number. The key is for them to first assign a captain and order themselves by their numbers (highest to lowest or lowest to highest).
Bubble Sort - split children into teams, have each team make a line with each child spaced out from the next by one metre, give each child in the team a number (in no particular order), ask the children to sort themselves (highest to lowest or lowest to highest) by only being allowed to speak to the person immediately in front or behind. Can't get around this problem by assigning a captain!
Resource Allocation - split children into teams of 7ish, have each team make a circle, give each child in the team an item (chocolate?) and a goal (item to obtain), ask the children to maximise the number of "happy" children in their teams. Need to think of cases involving conflict.
Find Median - split children into teams of 7 or 9, have each team make a line, give each child in the team a number (in no particular order), ask the children in their teams to work out the middle (median) number. The key is for them to first assign a captain and order themselves by their numbers (highest to lowest or lowest to highest).
Bubble Sort - split children into teams, have each team make a line with each child spaced out from the next by one metre, give each child in the team a number (in no particular order), ask the children to sort themselves (highest to lowest or lowest to highest) by only being allowed to speak to the person immediately in front or behind. Can't get around this problem by assigning a captain!
Resource Allocation - split children into teams of 7ish, have each team make a circle, give each child in the team an item (chocolate?) and a goal (item to obtain), ask the children to maximise the number of "happy" children in their teams. Need to think of cases involving conflict.
Friday, 1 May 2009
Changes to Prolog deduction program
Made changes to my Prolog 'deduction' program to (properly) allow 'member', '\==' and '>' prefix predicates/operators to be used in the 'body' of 'rule' predicates.
Subscribe to:
Posts (Atom)