evo-pddl-solver
Core PDDL planning solver that parses domain/problem files, invokes pyperplan with optimal search configuration (GBFS + hFF), handles timeouts and fallbacks, and returns a plan as a list of action str
SKILL.mdtasks-evolved/virtualhome-agent-planning/environment/skills/evo-pddl-solver/SKILL.md
GitHubevo-pddl-solver
Solves PDDL planning problems using unified_planning with pyperplan backend, with direct pyperplan fallback.
Key Functions
solve_pddl_task(domain_path, problem_path, timeout=300)- Main entry pointsolve_with_unified_planning(domain_path, problem_path, timeout=300)- UP-based solvingsolve_with_pyperplan_direct(domain_path, problem_path, timeout=300)- Direct pyperplansolve_with_fallback_strategies(domain_path, problem_path, timeout=300)- Try all strategies
Usage
import sys
sys.path.insert(0, '/app/environment/skills/evo-pddl-solver/scripts')
from utils import solve_pddl_task
plan = solve_pddl_task('domain.pddl', 'problem.pddl', timeout=300)
# Returns list of strings like: ["action_name(param1, param2, ...)", ...]
Strategy
- Uses unified_planning PDDLReader to parse PDDL files
- Invokes pyperplan via UP with GBFS + hFF (fastest satisficing config)
- Falls back to default pyperplan config if GBFS+hFF fails
- Falls back to direct pyperplan invocation if UP integration fails
- Returns plan as list of "action_name(param1, param2, ...)" strings
Airport Domain Notes
- Airport domain files must be STRIPS versions (not ADL)
- Uses not_blocked/not_occupied predicates instead of negation
- Large instances may cause memory issues - pyperplan is pure Python
- GBFS + hFF is the recommended strategy for satisficing planning
- unified_planning lowercases all names during parsing