You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PDDL患者转运场景代码无控制台报错但规划器无求解结果求助

PDDL代码问题排查结果

你的代码语法完全合规,所以调试控制台没有错误提示,所有问题都是业务逻辑层面的错误,导致规划器无法找到满足目标的动作序列,核心问题如下:

  • mover动作设计错误
    现有mover动作多了冗余的?p - paciente参数,且前置条件中(not (hospitalp ?p))的约束完全不符合业务逻辑:救护车移动不需要绑定特定病人,也和病人是否已送达医院无关。空车移动时规划器甚至无法找到合法的?p参数完成绑定,直接卡死动作生成。
  • subir动作的effect逻辑错误
    现有subir的effect里错误添加了(not (ambulancia ?l))语句,病人上车后救护车并不会消失,这一语句会直接删除救护车的位置事实。后续所有动作(mover、bajar)都需要(ambulancia ?l)作为前置条件,执行完subir后直接没有符合条件的动作可执行,规划自然无法推进。
  • bajar动作逻辑错误
    1. 前置条件缺失(hospital ?l)约束:你要求病人必须送到医院,但现有逻辑允许在任意位置放下病人,无法满足目标中病人需在l1(预设医院)的要求。
    2. effect里错误添加了(hospital ?l)语句:医院是初始状态就固定的设施,不是放下病人就会把当前位置变成医院,这条语句会破坏位置的属性定义。

修正后的核心代码片段

修正后的mover动作

(:action mover
    :parameters (?x - localizacion ?y - localizacion)
    :precondition 
       ( and (ambulancia ?x) 
             (adjacent ?x ?y))
    :effect
     (and (not (ambulancia ?x))   
          (ambulancia ?y))
)

修正后的subir动作

(:action subir
    :parameters (?p - paciente ?l - localizacion)
    :precondition 
        (and (vacia-ambulancia)
             (ambulancia ?l) 
             (ubicacion ?p ?l))
    :effect 
       (and (not (vacia-ambulancia))  
            (not (ubicacion ?p ?l))
            (llena-ambulancia)) 
)

修正后的bajar动作

(:action bajar
    :parameters (?p - paciente  ?l - localizacion)
    :precondition 
         (and (llena-ambulancia) 
              (ambulancia ?l)
              (not (hospitalp ?p))
              (hospital ?l))    
         
    :effect 
        (and  (vacia-ambulancia) 
              (not (llena-ambulancia)) 
              (ubicacion ?p ?l) 
              (hospitalp ?p))
)

修正后重新运行规划器即可生成可行的病人转运序列。

内容的提问来源于stack exchange,提问作者NICO POLIS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:06:04