Single-Agent Planner is a complete epistemic planner without the epistemic closed world assumption for single agent which is logic-based.
This programme is a part of the reasearch on single-agent planner, and the research paper was published on IJCAI 2015.
Intuitively, the planner provide an agent with a series of algorithms so that the agent can interact with the enviroment, tack actions and get to the goal. BTW, all these are done in your copmuter, instead of entity.
This planner could be divided into three parts:
This part, also called preprocess, contains three subtasks:
Parser
is to parse the input files in epddl language(based on pddl, which contains the infos of defined actions that agent can do, initial state and goal state), and save the tokens from parser to our final data structure, stored in Initial
. The intermediate structure Reader
aims to simplify the code in Initial
and make the transformation of structure more clear.
Reasoning part contatins some reasoning algorithms of EDNF and ECNF(EDNF and ECNF both are epistemic formulas defined in that paper), those algorithms help agent to tell whether it can do any actions based on its current knowledge base.
Progression part helps agent update its knowledge base after an action completed.
The main planning algorithm is PrAO algorithm To et al., 2011. The algorithm is based on progression and entailment which have been introduced in the last section.
boost c++ libraries - EPK uses class: dynamic_bitset
Consider the following example. There is a room with a light in it. The agent stands out of the room, and it has a intial knowledge base which are some reasoning rules, such as if door open, then somebody in room, light off means nobody in room, and so on... The agent can do three actions defined as senseL
(sense if the light on), senseD
(sense if door open) and knock
(knock the door). Its goal is to get to know if there any people in room.