This project is a framework for AI planning in Python, dedicated to implementing the GraphPlan algorithm. The codebase provides the fundamental class structures for modeling domains, states, and actions. It serves as an excellent sandbox for understanding automated planning, building layered planning graphs, evaluating mutual exclusions, and recursively extracting valid action sequences to achieve specific goals.
-
GraphPlan Algorithm: A complete implementation of the GraphPlan search logic (
GraphPlanner.py). It orchestrates the expansion of the planning graph and searches for a valid plan once the goal conditions are met without being mutually exclusive. -
Planning Graph Structure: Constructs a comprehensive
PlanningGraphconsisting of alternating state and action levels. It handles the core complexity of computing and tracking mutual exclusions (mutexes) between competing actions and state propositions. -
State and Action Modeling: Uses modular classes (
Action,Predicate,State,Entity) to define the preconditions, positive/negative effects, and rules that dictate how the environment changes when actions are applied. -
Modular Domains & Problems: The project includes ready-to-use environments representing classic AI planning scenarios:
- Blocks World Domain
- Satellite Domain
- Tire/Mechanic Domain
- Cake Domain
-
Graph Visualization: Includes visualization tools (
GraphPlot.py) to map out and plot the structure of the generated planning graph, making it easier to visualize the graph's expansion, levels, and connections over time.