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

PDDL潜艇移动规划问题:多位置目标报错排查求助

错误信息解读与问题解决

先拆解你收到的规划器输出

  1. Suspected timeout:这是误报,实际搜索仅耗时微秒级(2.5e-05秒=0.025毫秒),远低于60秒的时间预算,搜索很快就终止了。
  2. IW搜索结果:{2/1/0}:IW(1) -> [2][3][4];; NOT I-REACHABLE ;;
    • 格式{#goals, #UNnachieved, #Achieved}代表总共有2个目标,当前状态下1个未达成、0个已达成(核心是目标未全部满足)。
    • NOT I-REACHABLE说明迭代宽度搜索(IW)在最大宽度为1的情况下,找不到能满足所有目标的可行路径。
  3. BFS搜索结果:Plan found with cost: 2.8026e-45
    • 这个极小的异常cost值是无效结果,并非真正的可行计划——规划器在目标不可行时,会返回这类异常值而非明确的"目标不可达"提示。

核心问题根源

你的目标本身逻辑不可行:潜艇是单一实体,不可能同时处于loc1和loc2两个不同位置。此外,你的PDDL领域可能缺少关键约束:

  • 移动动作未定义位置排他性:即潜艇移动到新位置后,未移除旧位置的(at submarine ?old-loc) fluent,导致规划器误以为潜艇可以同时存在于多个位置,但实际物理上不可能实现。

针对性解决方法

根据你的实际需求,分两种场景处理:

场景1:需要潜艇先后到达loc1和loc2(非同时)

修改问题目标为"标记已访问过两个位置",而非同时处于两个位置:

  1. 在领域文件中添加visited谓词,用于记录潜艇到达过的位置:
(:predicates
  ; 保留你原有的谓词,新增以下内容
  (visited ?sub - submarine ?loc - location)
)
  1. 更新移动动作,添加标记已访问位置的效果,同时确保位置排他性:
(:action move
  :parameters (?sub - submarine ?from - location ?to - location)
  :precondition (and 
                  (at ?sub ?from) 
                  (adjacent ?from ?to) 
                  (water-depth ?to deep) 
                  (has-pilot ?sub)
                )
  :effect (and 
            (at ?sub ?to) 
            (not (at ?sub ?from))  ; 关键:移除旧位置的状态
            (visited ?sub ?to)     ; 标记已访问目标位置
          )
)
  1. 修改问题文件的目标,要求潜艇已访问过两个位置,且最终停在其中一个:
(:goal (and 
         (visited submarine loc1) 
         (visited submarine loc2) 
         (at submarine loc2)  ; 可选:指定最终位置
       ))

场景2:确实需要同时有潜艇在两个位置(多潜艇场景)

如果是需要多艘潜艇分别占据不同位置,修改领域和问题定义:

  1. 在问题文件中定义多艘潜艇实例:
(:objects
  sub1 sub2 - submarine
  command-centre loc1 loc2 - location
  ; 保留你原有的其他对象
)
  1. 设置初始状态中各潜艇的位置:
(:init
  (at sub1 command-centre)
  (at sub2 command-centre)
  ; 保留你原有的其他初始状态(如相邻关系、水域深度、飞行员状态等)
)
  1. 修改目标为不同潜艇处于对应位置:
(:goal (and 
         (at sub1 loc1) 
         (at sub2 loc2)
       ))

必须修复的基础问题

无论哪种场景,都要确保移动动作包含(not (at ?sub ?from))的效果——这是保证潜艇位置排他性的核心,否则会导致状态逻辑混乱,后续所有规划都可能出现异常。

验证步骤

  1. 先测试原始可行目标(潜艇从command-centre到loc1),确认动作逻辑正常。
  2. 再测试修改后的目标,查看规划器是否返回有效计划。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:20:31