前瞻性规划启发式 - hmax、hadd、hff
Posted
技术标签:
【中文标题】前瞻性规划启发式 - hmax、hadd、hff【英文标题】:Forward planning heuristics - hmax, hadd, hff 【发布时间】:2014-05-15 13:20:36 【问题描述】:我正在研究前瞻性规划启发式 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 的一篇科学论文,发表在 German Converence on AI 2009 上,标题为“Planning with h+ in Theory and Practice”,与其他三篇密切相关。)
https://cw.felk.cvut.cz/wiki/_media/courses/a4m36pah/07_relaxation.pdf (另一个教程(来源不明),也是关于启发式 hmax、hadd、hff。)
你能用更简单的方式解释它们是如何工作的吗? 谢谢
【问题讨论】:
【参考方案1】:我假设您已经了解规划的基本概念。 hMax、hAdd 和 hFF 算法用于计算规划图上给定状态相对于当前占用状态的启发式值.
所有三种算法都通过考虑问题的松弛版本来工作;具体来说,是通过删除每个适用操作的删除列表来放宽的版本。这样做的效果可以总结为一旦实现(实现)原子,它就会保持实现。
hMax 和 hAdd 的工作方式非常相似。这两种算法的工作原理是考虑规划图中的一个状态,并使用所有适用的动作来使该状态下的每个原子为真。使所有原子为真所需的操作成本是它们产生的启发式价值的基础。
对于 hAdd,给定状态的启发式方法是在该状态下实现每个原子的组合成本。
对于 hMax,给定状态的启发式方法是该状态中最昂贵原子的成本。
请注意,这两种算法都不能真正解决轻松的问题,它们只是计算一个给定状态相对于当前状态实现难度的估计值。
hMax 是允许的,而 hAdd 是不允许的。
hFF 是不同的,因为它实际上解决了轻松的问题。它并不试图找到一个最佳解决方案(见下文†),而是一个合理的解决方案。
为了确定给定状态的启发式(我们称其为 s),hFF 在松弛计划中找到从当前状态到给定状态的解,即通常被称为π(s)。一旦找到该解决方案,给予状态 s 的启发式值就是 宽松解决方案中的操作数。这可以写成:
h(s) = |π(s)|
hFF 有时也称为宽松计划 h。它不可接受,但它信息丰富。
根据hFF算法的实现,用于在宽松计划中寻找解决方案的方法有所不同。
† hFF 不会尝试找到最佳解决方案,因为虽然比规划原始问题更容易,但计算最佳解决方案仍然太难使用作为启发式,因为它必须为每个状态计算。相反,它会尝试找到一个合理的计划,该计划的计算成本要低得多。
我真的希望这对您有所帮助,并且我没有进一步混淆您。
我也真的希望我是对的 - 我相对有信心我是对的,但我完全愿意接受纠正。经过 AI 讲师的检查,我现在确信这是正确的。
【讨论】:
谢谢,这证实了我对他们的看法! 关于 hFF 的次优性的一些额外细节:hFF 只是计算 some 宽松计划的启发式值,而 optimal的启发式值> 放松计划总是用 h^+ 表示。正如 Mark Ormesher 所提到的,计算 h^+ 比仅仅计算一些轻松的计划更难。更准确地说:计算 hFF 可以在 P(多项式时间)内完成,而计算 h^+ 已知是 NP 完全的(非确定性多项式,即目前解决任何问题的最著名算法这个类需要输入大小的指数时间)。以上是关于前瞻性规划启发式 - hmax、hadd、hff的主要内容,如果未能解决你的问题,请参考以下文章