首页 理论教育 规划图的启发式估计

规划图的启发式估计

时间:2023-02-11 理论教育 版权反馈
【摘要】:然而这个估计可能不是很好,因为规划图允许每一阶段有数个行动,而启发式只对阶段而不对行动数进行计数。由于这个原因,使用串行规划图计算启发式是常见的。串行规划图坚持在任何给定的时间步只能有一个行动实际发生;这是通过在除了持续行动之外的每对行动间添加互斥连接而实现的。根据串行规划图提取的阶段耗散往往是对实际耗散的一个相当合理的估计。对于我们的问题,目标合取式Have∧Eaten的启发式估计是0+1 = 1,而正确的答案是2。

一个规划图一旦被构建,它就是关于问题的信息的丰富来源。例如,一个没有在图的最后阶段出现的文字不可能被任何规划获得。这个观察结果可以在后向搜索中如下使用:任何包含不可获得文字的行动的耗散h(n) =∞。类似地,在偏序规划中,任何包含不可获得的开放条件的规划有h(n) =∞。

这个思想能够变得更加通用。我们可以用规划图中任何目标文字首次出现的阶段估计获得该目标文字的耗散。我们把这称为目标的阶段耗散。在图11.12中,Have(Cake)的阶段耗散为0,Eaten(Cake)的阶段耗散为1。很容易说明这些估计对单独目标是可采纳的(习题11.9)。然而这个估计可能不是很好,因为规划图允许每一阶段有数个行动,而启发式只对阶段而不对行动数进行计数。由于这个原因,使用串行规划图计算启发式是常见的。串行规划图坚持在任何给定的时间步只能有一个行动实际发生;这是通过在除了持续行动之外的每对行动间添加互斥连接而实现的。根据串行规划图提取的阶段耗散往往是对实际耗散的一个相当合理的估计。

为了估计目标合取式的耗散,有3种简单的方法。最大阶段启发式简单地选取任何目标的最大阶段耗散值;这是可采纳的,但是不一定很准确。阶段总和启发式,根据子目标独立假设,返回目标的阶段耗散的总和;这是不可采纳的,但是在实际中对那些很大程度上可以分解的问题很有效。它比第11.2节中的不可满足目标数启发式精确得多。对于我们的问题,目标合取式Have(Cake)∧Eaten(Cake)的启发式估计是0+1 = 1,而正确的答案是2。此外,如果我们消除行动Bake(Cake),估计值仍然是1,但是目标合取式是不可能的。最后,固定阶段启发式找到一个阶段,在这个阶段目标合取式中的所有文字都出现在规划图中,而且其中不存在任何一对是互斥的。这个启发式对我们的原始问题给出了正确的值 2,对没有 Bake(Cake)的问题给出无穷大。它优于最大阶段启发式,在子规划之间有很多相互作用的任务中起到极好的效果。

作为产生精确启发式的工具,我们可以把规划图视为一个高效可解的松弛问题。为了理解松弛问题的特性,我们需要确切理解文字g在规划图中Si阶段出现的含义。理想地,我们希望它能保证存在一个获得g的有i个行动阶段的规划,同时希望当g不出现时也就没有这样的规划。不幸的是,要得到这个保证与求解原始规划问题一样困难。所以规划图能够提供后一半保证(如果g不出现,就没有这样的规划),但是如果g真的出现了,那么规划图能承诺的全部是有一个规划可能获得g而且没有“明显的”缺陷。明显缺陷是这样定义的:在某个时刻通过考虑两个行动或两个文字就能检测出的缺陷——换句话说,通过观察互斥关系。可能有涉及三个、四个或更多行动的复杂缺陷,但是经验表明不值得为了明确这些可能的缺陷而耗费计算努力。这与从约束满足问题中学到的经验类似,通常在搜索解之前计算二元一致性是值得的,但通常计算三元或更高一致性就不值得了。(参见第5.2节。)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈