Klotski滑动谜题PDDL问题文件语法错误排查请求
问题原因
你的PDDL文件语法错误源于坐标数字未被声明为合法对象:
PDDL是一阶逻辑规划语言,谓词的所有参数必须是:objects段中明确声明的对象类型。你直接使用的坐标值(0、1、2、3、4)没有被定义为对象,导致解析器在第14行遇到0时无法识别,误以为此处应该出现define关键字,从而抛出语法错误。
修复方案
1. 添加坐标对象声明
在:objects段中补充坐标值的对象声明,同时确保domain文件中at和empty谓词的参数类型包含对应的坐标类型(比如coordinate)。
2. 清理冗余目标条件(可选)
:goal段中存在重复的empty条件(如(empty 1 1)、(empty 1 3)重复出现),虽不影响语法,但会增加目标检查的冗余,建议移除重复项。
修改后的完整problem.pddl
(define (problem klotski) (:domain klotski) (:objects piece2x2 - piece piece2x1 - piece piece1x2-1 piece1x2-2 piece1x2-3 piece1x2-4 - piece piece1x1-1 piece1x1-2 piece1x1-3 piece1x1-4 - piece exit - piece 0 1 2 3 4 - coordinate ; 新增坐标对象声明 ) (:init (at piece2x2 0 0) (at piece2x1 0 2) (at piece1x2-1 0 4) (at piece1x2-2 2 0) (at piece1x2-3 2 2) (at piece1x2-4 2 4) (at piece1x1-1 3 0) (at piece1x1-2 3 1) (at piece1x1-3 3 3) (at piece1x1-4 3 4) (at exit 1 4) (empty 1 0) (empty 1 1) (empty 1 3) (empty 1 4) (empty 2 1) (empty 2 3) (empty 3 2) ) (:goal (and (at piece2x2 1 3) (empty 0 0) (empty 0 1) (empty 0 3) (empty 0 4) (empty 2 0) (empty 2 1) (empty 2 3) (empty 2 4) (empty 3 0) (empty 3 1) (empty 3 3) (empty 3 4) ) ) )
内容的提问来源于stack exchange,提问作者Munna Khandakar
相关产品推荐
相关产品推荐

