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 January 12, 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

  1. What are the hidden hypothesis of coordination by messages like in this scenario?

  2. Discuss the pros and cons of this approach versus the agent-centric coordination approach.

  3. 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 and andrei of type clientQ1y) 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 in v time units (Initial belief)

    • delay(d): delay of d time units needed by the client (Received belief)

  • An agent Company (companyA of type companyQ1) 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 of d time units for the execution of a task (Received belief)

    • client(c, v): allocation of v time units to the client c (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