8

我正在研究前瞻性规划启发式 hmax、hadd 和 hff,我在网上找到了一些资源,但我真的不明白它们是如何工作的。

这里是我到目前为止找到的资源:

http://icaps09.uom.gr/tutorials/tut1.pdf(2009
年 Emil Keyder 和 Blai Bonet 编写的关于“规划启发式”的 ICAPS(国际规划和调度会议)教程,其中解释了 hmax、hadd、hff 和h+。)

http://gki.informatik.uni-freiburg.de/papers/betz-helmert-icaps2009ws.pdf(Betz
和 Helmert 的科学论文,发表在 2009 年德国人工智能会议上,标题为“在理论和实践”,这与其他三个密切相关。)

https://cw.felk.cvut.cz/wiki/_media/courses/a4m36pah/07_relaxation.pdf
(另一个教程(来源不明),也是关于启发式hmax、hadd、hff。)

你能用更简单的方式解释它们是如何工作的吗?谢谢

4

1 回答 1

18

我假设你已经了解了规划的基本思想。hMax 、hAddhFF算法用于计算规划图上给定状态相对于当前占用状态的启发式值。

所有三种算法都通过考虑问题的宽松版本来工作;具体来说,是通过删除每个适用操作的删除列表来放宽的版本。这样做的效果可以总结为一旦实现了一个原子(实现了),它就会保持实现


hMaxhAdd以非常相似的方式工作。这两种算法的工作原理是考虑规划图中的一个状态,并使用所有适用的动作来使该状态下的每个原子为真。使所有原子为真所需的动作成本是它们产生的启发式价值的基础。

对于hAdd,给定状态的启发式方法是在该状态下实现每个原子的综合成本。

对于hMax,给定状态的启发式是该状态中最昂贵的原子的成本。

请注意,这两种算法实际上都没有解决松弛问题,它们只是计算相对于当前状态的给定状态实现难度的估计。

hMax 是可接受的,而hAdd 不是


hFF是不同的,因为它实际上解决了松弛问题。它并不试图找到一个最佳解决方案(见下文†),而是一个合理的解决方案。

为了确定给定状态的启发式(我们称其为s),hFF在松弛计划中找到从当前状态到给定状态的解,通常称为π(s)。一旦找到该解决方案,给予状态s的启发式值就是松弛解决方案中的动作数。这可以写成:

h(s) = |π(s)|

hFF有时被称为宽松计划 h。这是不可接受的,但它是信息丰富的。

用于在松弛计划中找到解决方案的方法取决于hFF算法的实现。

hFF不会尝试找到最佳解决方案,因为虽然比规划原始问题更容易,但计算最佳解决方案仍然很难用作启发式方法,因为它必须针对每个状态进行计算。相反,它试图找到一个合理的计划,这在计算上要便宜得多。


我真的希望这对您有所帮助,并且我没有进一步混淆您。

我也真的希望我是对的——我相对自信,但我完全愿意被纠正。由 AI 讲师检查后,我现在确信这是正确的。

于 2014-04-08T15:40:38.540 回答