Aims and overview
The aim of this project is to improve your understanding and design of model-based planning problems. In the assignment, you will be asked to model a few small problems in the PDDL language and test your solution using a planning tool.
Domain
The domain of the problem is an abstract security task. Individual agents within a network share secret information.
Each agent represents a node in a network. A pair of agents can be connected via a communication channel. Communication channels are one way. Agents can share secrets via the communication channel.
An agent knows a secret if they are shared a secret by another agent in the network, or if they know the secret initially.
Tasks
Complete the tasks below.
Task 1 [4 marks]
In the file “share_secret_domain.pddl”, there is a skeleton file with types called “agent” and “secret”.
Model an action called “tell” that takes three parameters: the agent telling the secret; the agent receiving the secret; and the secret. You will need to add new predicates to achieve this.
An agent can only tell the secret if it knows the secret. An agent can only tell a secret to another agent if they are connected on the network. After the action is executed, the receiving agent knows the secret. All other agents who do not know the secret before should not know it after.
Marking criteria:
• Actions parameters and precondition correctly model the
behaviour [1 mark]
• Action effects correctly model the behaviour [1 mark]
• Model is at a suitable level of abstraction [1 mark]
• Model is readable and clear [1 mark]
Task 2 [1 mark]
In the problem file “share_secret_task2_problem.pddl”, there is a model with three agents: a1, a2, and a3, and one secret s1.
Your task is to extend this to model the network with the structure:
Initially, only agent a1 knows the secret.
The goal of the problem is that a3 knows secret s1.
Model the initial state, the network (as part of the initial state), and the goal.
Marking criteria: The problem file correctly models the structure and generates a correct plan [1 mark]
Task 3 [1 mark]
In the problem file “share_secret_task3_problem.pddl”, models six agents: a1 to a6, and two secrets s1 and s2.
Model the network with the following structure (note that a3 and a5 can both tell each other secrets)
Initially, only agent a1 knows the secret s1 and only agent a2 knows the secret s2.
The goal of the problem is that a5 knows secret s1 and a6 knows secret s2. Model the initial state, the network (as part of the initial state), and the goal.
Depending on how you model the problem and the way that the planner searches, there are several correct plans. What is important is that the secrets are shared in the correct order.
Marking criteria: The problem file correctly models the structure and generates a correct plan [1 mark]
Task 4 [2 marks]
In this task, we model how to share information across a network between a source and destination agent while not letting other agents know all of the information.
In this problem file “share_secret_task4_problem.pddl”, create a model with the same agents, secrets, and network structure as in Task 3, that models the following situation: agent a1 knows a comprising two parts: secret s1 and s2. Agent a1 wants to communicate s1 and s2 to agent a5, but does not want any other agent to know both parts s1 and s2. That is, all other agents can know either s1 or s2, but not both.
Model the initial state, the network (as part of the initial state), and the goal.
Hint: For this question, you may want to use disjunctive goals; that is, goals that are “or” conditions. For example, if I want to specify a goal where block E is on block C and block B is on block D or on block E, I would write:
(:goal (and
(onEC)
(or(onBD)(onBE))
)
)
A satisfying plan would be any plan in which either “(on B D)” is true or “(on B
E)” is true; or both.
Note that if you use disjunctive goals, the final action in your plan may be the action named REACH-GOAL, which can safely be ignored. This is just a modelling trick used by some planners.
Marking criteria:
• The problem file correctly models the structure and generates a
plan for agent a1 to communicate s1 and s2 to agent a5 [1 mark]
• The model generates a plan such that agents a2, a3, a4, and a6 do
not know both s1 and s2 [1 mark]
Task 5 (Challenge task) [2 marks]
Consider a situation in which agents can deceive other agents by telling another agent that a secret is false when it is true, and true when it is false.
In the original file “share_secret_domain.pddl”, model an action “share_belief” that follows the same requirements as the “tell” action from Task 1, but in which some agents can be deceivers, while others are honest. If an agent is a deceiver, it will tell any other agent that the secrete is true when it is false, and it is false when it is true. If an agent believes a secret is true and is told it is false, it must forget the true belief and then hold the false belief. If an agent believes a secret is false and is told it is true, it must forget the false belief and then hold the true belief.
In the problem file “share_secret_task5_problem.pddl”, model the same agents, secrets, and network structure as in Task 3 and 4. Create a model in which agent a5 is a deceptive agent; all other agents are honest.
Initially, only agent a1 believes that secret s1 is true. All other agents neither believe the secret is true nor believe it is false.
The goal of the problem is that agent a3 believes the secret s1 is false, while agent a6 believes the secret s1 is true.
Model the “share_belief” actions, the initial state, the network (as part of the initial state), and the goal.
Hint: To model this action, you may want to use conditional effects in PDDL. These are a special type of effect that only fire when certain conditions hold. For example, if I want to model the action “load” in lift domain, but a person only gets into the elevator if they are not scared of elevators, we could model that as a precondition, or we could model it as a conditional effect,:
:effect (and
(when (and (not (scared ?person)))
(and (not(at ?person ?floor)) (inLift ?p
erson))
)
(when (and (scared ?person))
(and (not(at ?person ?floor)))
)
)
In this case, the semantics are that if the person and lift are both at the floor
(as in the precondition), then this action can be applied. If the person is not
scared, the effect will be that they are in the lift and not at the floor. If the
person is scared, the effect will be that they leave the lift area (so are no
longer on the floor), but are also not in the lift; the latter not modelled
because it is already true.
Marking criteria:
• The action correctly models the deceptive behaviour [0.5 mark]
• The action correctly models that agents’ belief can change [0.5
mark]
• The problem file correctly models the deceptive behaviour [0.5
mark]
• A correct plan is generated [0.5 mark]
Checking your submission
You can check that your submission generates a suitable plan for each task using http://editor.planning.domains/ (Links to an external site.), which runs a search-based planning algorithm for solving PDDL tasks.
Submission requirements
Ensure that you have pushed your files to the repository and completed the form in the ’Getting Started’ section before the due date. The main branch on your repository will be cloned at the due date and time. From this repository, we will copy only the files that are our original source repository: share_secret_domain.pddl and share_secret_taskX_problem.pddl, for tasks 2-5. No other files will be copied, so any additional files that are added will be ignored, meaning that you can create over versions for
experimentation. Breaking these instructions breaks our marking scripts, delays marks being returned, and more importantly, gives us a headache!
Note: Submissions that fail to follow the above will be penalised.