

You need to implement a trust mechanism so that your artificial agent can form beliefs regarding human teammates’ trustworthiness, specifically, competence and willingness. The behaviour of a teammate is not deterministic, therefore, an agent cannot assume what another teammate is going to do. Thus, your agent needs a mechanism to predict the behaviour of its teammates. With such mechanism, your agent can assess its trust in its teammates at any point and, consequently, decide on how to act.
Agents with such mechanism can create beliefs of trust based on direct experiences. This way, they can then decide how much they should rely on another agent for a certain task. These trust beliefs can be divided into competence and willingness beliefs.
More specifically, an artificial agent $A$ trusts another agent $B$ (human, in this case) depending on how much $A$ believes $B$ to be competent and willing to do a certain task. Since trust evolves over time, your agent should update its trust beliefs throughout the interactions with its human teammates. Depending on the amount of interactions, it is possible that the agent also changes its level of confidence regarding the trust assessment of a teammate.
To accommodate this, your agent implementation should contain the following components:
You should implement a mechanism that updates the trust beliefs of RescueBot regarding other human teammates’ trustworthiness. These trust updates should be based on new information acquired during each task. This information comes from the direct experiences of observing human behaviour and processing human messages.
RescueBot can use these direct experiences to update its competence and willingness beliefs of human teammates. The beliefs should be restricted to a range of -1 (for distrust) and 1 (for complete trust).
As mentioned before, the confidence of your agent regarding its assessment of a teammate’s trustworthiness will probably increase with time. Therefore, you can take this confidence into account when adapting the behaviour of the agent. In addition, you can update the confidence levels throughout the task rounds.
The starter code on GitHub contains a very basic example of a trust mechanism. Here, RescueBot increases the competence belief with 0.1 whenever its human teammate communicates that he/she will rescue a victim. However, in this basic trust mechanism, RescueBot does not check whether the human really rescued the victim or lied about it.
To get you started, here we provide a very basic example of behaviour adaptation based on the trust mechanism. For example, if the agent has a high competence belief regarding a teammate, the agent might intuitively be inclined to ask this teammate for help whenever the help can improve efficiency. However, if the agent has a super low willingness belief regarding this same teammate, the agent might ultimately decide to execute such actions independently anyway.
Your agent should load and save its trust beliefs regarding all teammates it collaborated with in a memory file (.csv format). In the starter code, we provided an example to load and save trust beliefs as .csv files, but you are free to alter the specific loading and saving functions to your liking.
However, the underlying mechanism and final trust belief file (with all human teammates as rows) should stay the same. That is, the RescueBot should read the trust beliefs in the beginning of the task and use it to form initial trust beliefs regarding its human teammate.
For example, if RescueBot already worked with this human teammate, it can retrieve the trust belief values that were saved after the previous collaboration. During the task, your agent should update the competence and willingness beliefs. At the end of the task, your agent should save the updated values using the memory file. You can initialize the trust beliefs with the values you prefer, as long as the initial values are the same for all teammates (e.g., you cannot initialize a competence belief for Alice higher than for Ben).