Home Knowledge Base Classical planning

Classical planning is the AI approach to automated planning using formal action representations and search algorithms — typically using languages like STRIPS or PDDL to specify states, actions, and goals, then employing systematic search to find action sequences that achieve objectives with logical correctness guarantees.

What Is Classical Planning?

STRIPS (Stanford Research Institute Problem Solver)

STRIPS Example: Blocks World

State: on(A, Table), on(B, Table), on(C, B), clear(A), clear(C)

Action: pickup(X)
  Preconditions: on(X, Table), clear(X), handempty
  Effects: holding(X), ¬on(X, Table), ¬clear(X), ¬handempty

Action: putdown(X)
  Preconditions: holding(X)
  Effects: on(X, Table), clear(X), handempty, ¬holding(X)

Action: stack(X, Y)
  Preconditions: holding(X), clear(Y)
  Effects: on(X, Y), clear(X), handempty, ¬holding(X), ¬clear(Y)

Goal: on(A, B), on(B, C)

Plan:
1. pickup(A)
2. stack(A, B)
3. pickup(C)
4. putdown(C)
5. pickup(B)
6. stack(B, C)
7. pickup(A)
8. stack(A, B)

PDDL (Planning Domain Definition Language)

PDDL Example

(define (domain logistics)
  (:requirements :strips :typing)
  (:types truck package location)
  
  (:predicates
    (at ?obj - (either truck package) ?loc - location)
    (in ?pkg - package ?truck - truck))
  
  (:action load
    :parameters (?pkg - package ?truck - truck ?loc - location)
    :precondition (and (at ?pkg ?loc) (at ?truck ?loc))
    :effect (and (in ?pkg ?truck) (not (at ?pkg ?loc))))
  
  (:action unload
    :parameters (?pkg - package ?truck - truck ?loc - location)
    :precondition (and (in ?pkg ?truck) (at ?truck ?loc))
    :effect (and (at ?pkg ?loc) (not (in ?pkg ?truck))))
  
  (:action drive
    :parameters (?truck - truck ?from - location ?to - location)
    :precondition (at ?truck ?from)
    :effect (and (at ?truck ?to) (not (at ?truck ?from)))))

Planning Algorithms

Heuristics for Planning

Example: Forward Search with Heuristic

Initial: at(robot, A), at(package, B)
Goal: at(package, C)

Actions:
  move(robot, X, Y): robot moves from X to Y
  pickup(robot, package, X): robot picks up package at X
  putdown(robot, package, X): robot puts down package at X

Forward search with h = distance to goal:
1. move(robot, A, B) → at(robot, B), at(package, B)
2. pickup(robot, package, B) → at(robot, B), holding(robot, package)
3. move(robot, B, C) → at(robot, C), holding(robot, package)
4. putdown(robot, package, C) → at(robot, C), at(package, C) ✓ Goal!

Applications

Classical Planning Tools

Limitations of Classical Planning

Extensions

Classical Planning vs. LLM Planning

Benefits

Classical planning is a mature and rigorous approach to automated planning — it provides formal guarantees and optimal solutions, making it essential for applications where correctness and reliability are critical, though it requires careful domain modeling and may need augmentation with learning or heuristics for scalability.

classical planningai agent

Explore 500+ Semiconductor & AI Topics

From EUV lithography to CUDA optimization — search the full knowledge base or chat with our AI assistant.