What you will build |
In this Practical Session you will implement some basic mechanisms for interaction-centric coordination among agents. This implementation will enable agents to deal with delays in the tasks to build a house. You will program this multi-agent system, situated in a simple environment. |
What you will need |
|
Code |
You can download the initial code from here |
1. Preamble
In this practical session, you will have to design and implement a coordination process based on the communication among agents for dealing with delays during the building of a house.
The use case is the same as in the Agent-Centric Coordination. Thus, we assume that Client and Company agents have the same objectives. We also assume that the construction has started (i.e., the Contracting phase has ended) and one Company is allocated to each task. We will add a coordination mechanism for dealing with delays in the execution of the tasks (i.e., Execution phase).
In the initial implementation, two families of agents are defined. Here, we consider the same types of agents, but we deal only with the behavior related to the management of delays. We abstract away the actual action to construct the house.
Important
|
The implementation of the agent types companyQX and clientQXy is part of the Practical Session.
|
2. Deliverable
Single document in PDF format containing the answers to the questions in the Practical Work Part I and Part II.
The document must be uploaded via eCampus (Assignment Interaction-Centric Coordination) no later than December 20, 2024 at 23h59.
The answers to the Part I and Part II questions are worth 10% of the total marks.
3. Interaction-Centric Coordination: Coordination by Conversation
3.1. QUESTIONS
-
What are the hidden hypothesis of coordination by messages like in this scenario?
-
Discuss the pros and cons of this approach versus the agent-centric coordination approach.
-
What is missing in the description of coordination by messages? Why?
3.2. [PRACTICAL WORK 1] Management of delay for performing a task
-
Client agents (
giacomo
andandrei
of typeclientQ1y
) have a tolerance level for the total acceptable delay in the execution of tasks by the companies. This tolerance decreases with each new granted delay. The required beliefs for the client agents are:-
delay_limit(v)
: the total client’s delay tolerance inv
time units (Initial belief) -
delay(d)
: delay ofd
time units needed by the client (Received belief)
-
-
An agent Company (
companyA
of typecompanyQ1
) may have several clients and has to divide its working time among them. The required beliefs for the company agent are:-
delay_limit(d)
: maximum delay tolerance ofd
time units for the execution of a task (Received belief) -
client(c, v)
: allocation ofv
time units to the clientc
(Initial belief)
-
Warning
|
Note that not all beliefs are initial beliefs and they will be received via communication (i.e., tell performative). Please inspect carefully the giacomo agent belief base in Q3 for a clear understanding.
|
Q1. Add the clientQ1a.asl and clientQ1b.asl client agent definition files in the JaCaMo project. Read the code!
Q2. Rename the MAS description file initial.jcm
to initial.jcm.bak
. Create a new MAS description initial.jcm
file and define the giacomo
agent of type clientQ1a
and the andrei
agent of type clientQ1b
Q3. Execute the use case. Create a new agent using the New REPL agent in the console, name the agent agenttest
, and send the following message to the giacomo
agent
.send(giacomo, tell, delay(plumbing,10)).
-
Note the modification in the
giacomo
belief base
Q4. Execute the use case again. Send the following message to giacomo
agent
.send(giacomo, achieve, updateTolerance(10)).
-
Note the modification in the
giacomo
belief base
Q5. Execute the use case again. Send the following message to giacomo
agent
.send(giacomo, askOne, penalty(X,Y)).
-
Note the modification in the
giacomo
belief base
Q6. Compare the belief base of the giacomo
agent after carrying out Q3, Q4, and Q5 (your notes), deduce the semantic of the performatives tell
, achieve
, and askOne
, and define when they should be used.
Q7. Add companyQ1.asl company agent definition in your project. Then, add the definition of the companyA
agent of type companyQ1
in the MAS definition file (initial.jcm
). The companyQ1
agent has two clients and a plan to satisfy the goal needDelay
. The goal is triggered by an agent responsible for inspecting the resource availability and request adjustments to the scheduled activities.
Q8. Update the companyQ1.asl
file so that the company
-
requests to the client what it is its acceptable delay (i.e.,
delay_limit
belief) to perform the assigned task -
if the delay limit is greater than the delay needed by the company, then request the delay to the client
-
if the delay limit is less than the delay needed by the company, print an error message informing failure in completing the task
Q9. Update the clientQ1a.asl
and clientQ1b.asl
files so that the clients update their delay_limit
belief based on the delay requested by the company
Q10. Execute the use case. Send the message below as agent director
to companyA
.send(companyA, achieve, needDelay(plumbing, 10)).
Q11. Update the companyQ1.asl
file so that the company sends a delay request to all clients and choose the client with greatest delay_limit
Note
|
|