Practical Agent Programming
Download
Report
Transcript Practical Agent Programming
Mobile Agent Programming
Concepts
FK
Dimensions of mobility
• Moving between different execution servers
(processes, hosts)
• Moving in time
• Moving with the user (execution server)
• Moving between contexts
Properties of agent execution
environments
•
•
•
•
•
•
Static network (fixed host network address)
Roaming network (dyn. host netw. address)
Reliable real-time (stationary server computer)
Intermittent real-time (laptop, iPhone)
True persistence (Hard-disc, NV-RAM)
Volatile persistence (battery RAM)
Properties of agent execution
environments
Dynamic network address
Intermittent realtime
Volatile persistence
Static network address
Reliable realtime
True persistence
Dynamic network address
Intermittent realtime
True persistence
Properties of agent execution
environments
Dynamic
Cell phones
Early wearables
Network address
Laptops
Intermittent
Servers
Static
Volatile
Dynamic network address
•
•
•
•
•
Difficult to find a particular host
Needs registration at a well-known name
LAN: local discovery techniques (eg Jini)
WAN: remote interaction (eg SIP)
Network Address Translation (NAT)
imposes similar problem
• IPv4 → IPv6 : needed but costly
Intermittent real-time
• If the agent is suspended externally, eg by
power management, it may not “see” the
suspension.
• Can the agent control power mgmt when it
needs to?
• Small devices (mobile phones) may be
suspended without warning.
Volatile persistence
• How much of the present state must be saved?
•
•
•
•
To where can it be saved?
How to (re)establish state after reanimation?
How can the saved state be found?
Time (how long was the agent asleep?)
Planned discontinuity (1)
2. Set timer
1. Save state
Zz
5. Restore state
4. Wake up
Planned discontinuity (2)
3. External event
1. Save state
5. Restore state
Planned discontinuity (3)
1. Negotiate hosting
3. Terminate
2. Save state
5. Restart
4. Transfer identity and state
6. Restore
state
Mobile code (1)
Initial execution
environment
Next execution
environment
1. Locate exec. env.
2. Negotiate hosting
3. Transfer identity
and state
4. Terminate
5. Continue
Mobile code (2)
Initial execution
environment
Next execution
environment
1. Locate exec. env.
2. Negotiate hosting
3. Transfer identity
and state
6. Acknowledge
7. Terminate
5. Continue
What do we mean by “state”?
• Memory and cpu configuration of process
• Values of active variables (including call
stack) and the execution point
• A classifiable subset of the true state:
switch (myState) {
case 0: /* state 0 */
break;
case 1: /* state 1 */
break;
// etc...
}
State (cont’d)
• For the programmer, state and code are
often the same concept
• Mobile code (e.g. Java) may not be able to
transfer the execution point
• This breaks the code-state relationship
y==1
START
State (cont’d)
y==2
START
y = y*2
Migrate?
Yes
y = y*2
No
z=y
Migrate?
z==2
No
Variables evolve while
code point is reset
z=y
z==4
Goal-driven execution
• The task can be expressed as a sequence of
discrete steps
• The accomplishment of each step can be
tested
• What to do next is computable
Goal-driven execution (cont’d)
Task: Deliver a message (to a user)
The message is executable and must
run on the recipient’s current host.
Goal-driven execution
while (true) do
if (the current host is the user host) then
execute the message
exit
else
locate the user host
move to user host
endif
done
Goal-driven execution
• Gets complicated quite fast, e.g. remember
failures, responses, a dialogue...
• State must be ”knitted” into the task
resolution structure
• Goal stack approach
Goal stack interpreter
• Useful for intermittent real-time (wearable
devices, power management)
• The goal stack is maintained as a data
structure
• The goal on top of the stack is either
replaced by a sequence of subgoals, or
executed as an idempotent unit until it
succeeds
Goal stack interpreter
Goal expansion
Establish host of Ralph
Move to Ralph’s host
Deliver message to Ralph
Execute
goal-code
Execute message code
Y
Fail?
N
Pop
stack
Establish host of Ralph
Move to Ralph’s host
Execute message code
Move commanded
by external events
has small impact
on top-most goal.
Empty
stack?
Y
Stop
N
Goal stack interpreter
Execute
goal-code
Pop
Establish host of Ralph
Move to Ralph’s host
Move to Ralph’s host
Execute message code
Execute message code
Y
Fail?
N
Pop
stack
Empty
stack?
Current goal
Current goal
Y
Stop
N
Layers of abstraction
Task
Transport
Discovery
Communication
Layers of abstraction
Task
Transport
Discovery
Communication
Code for
identifying and
approaching
the goal.
Layers of abstraction
Code for
moving the
agent between
places of
execution.
Task
Transport
Discovery
Communication
Code for
identifying and
approaching
the goal.
Layers of abstraction
Code for
moving the
agent between
places of
execution.
Task
Transport
Discovery
Communication
Code for
identifying and
approaching
the goal.
Methods for
finding (the
addresses) to
resources.
Layers of abstraction
Code for
moving the
agent between
places of
execution.
Task
Transport
Discovery
Sending the
bits of the
agent to
another place.
Communication
Code for
identifying and
approaching
the goal.
Methods for
finding (the
addresses) to
resources.
Agent enabling middleware
• Discovery mechanisms (execution hosts,
other agents, negotiation partners ...)
• Addressing namespaces (IP, URLs, SIP, RMI)
• Communication means (netw. stack)
• Protocol (language and semantics)
Game of Tag for agents
•
•
•
•
•
Discover execution environments
Query properties of the exec. env.
Locate other agents
Negotiate for status (being ‘it’ or not)
Transaction (reliably transferring ‘it’
between players)
• Multiple roles and tasks dep. on being ‘it’.
TAG player outline
Acquire state of game
Decide what to do
Execute choice
TAG player outline
Locate all Bailiffs and players
YES
NO
Am I it?
NO
Move to
a Bailiff
with players
Is
there a player
here?
YES
NO
Tag a
player
Move or wait
according to
strategy
Is
the ’it’ player
here?
YES
Move to
another Bailiff
TAG player outline
Locate all Bailiffs and players
YES
NO
Am I it?
NO
Move to
a Bailiff
with players
Is
there a player
here?
YES
State information
must be updated
NO
Tag a
player
Move or wait
according to
strategy
Is
the ’it’ player
here?
YES
Move to
another Bailiff
TAG player outline
Locate all Bailiffs and players
YES
NO
Am I it?
NO
Move to
a Bailiff
with players
Is
there a player
here?
YES
Seek to be lonely
Seek company
Act randomly
NO
Tag a
player
Move or wait
according to
strategy
Is
the ’it’ player
here?
YES
Move to
another Bailiff
TAG player outline
Seek to be lonely
Seek company
Act randomly
TAG player outline
Seek to be lonely
Seek company
Act randomly
TAG player outline
Seek to be lonely
Seek company
Act randomly
TAG player outline
The lonely strategy
• increases the chance that the it player goes to another Bailiff
• makes the player faster
• needs as many Bailiffs as there are players, but no more
• with fewer Bailiffs it approaches the company strategy
The company strategy
• increases the chance that the it player tags another player
• needs fewer Bailiffs
• makes the player slower
End