Goal Oriented Action Planning


Goal Oriented Action Planning (GOAP for short) is an Artificial Intelligence system where a agent has a list of actions that they can perform, when given a goal the agent will find the best plan using those actions to acheive the goal.

Features

Templated world values

I needed a light weight Variant type so I could store a list of different typed values in my WorldState, for this I used inheritance with a interface and templating. Source File


Cyclic graph in planning stage

When planning the GOAP planner looks at every action that can be performed on the current world state and creates a graph node for that resulting world state, then adds an edge with the action performed.
This process is repeated on every resulting world state and for any reoccurring world states the a node is not added but the existing node with that world state is connected instead.


Dijkstra's to find the best plan

Once the graph is created I use Dijkstra's to search and find the path of actions that results in a goal meeting world state.


Source Code

Contact


Send me an email and I will get back to you as soon as possible!

genecollis12@gmail.com