Drools Planner(第1.2章节)

来源:互联网 发布:windows 8.1原版镜像 编辑:程序博客网 时间:2024/04/29 05:43

第一章 Planner introduction(规划师介绍第1.2章节)

版本:5.5.0.Final

1.2 什么是规划问题?

1.2.1 规划问题是NP-complete
上述所有的用例可能是NP-complete[http://en.wikipedia.org/wiki/NP-complete].通俗地说,
这儿意味着:
a.在合理的时间内很容易用一个给定的解决方案去验证一个问题。
b.没有灵丹妙药在河里的时间内去找到一个最佳解决问题的方案。
注意:
   (*)至少现在,世界上没有一个聪明的计算机科学家发现这样的灵丹妙药。但是为
了找到一个NP-complete问题,他们将为每一个NP-complate问题工作。目前,如果有这样的灵丹妙药存在或者不存在[http://en.wikipedia.org/wiki/P_%3D_NP_problem],那么宁可用很高的报酬来换取这个证明。言下之意非常严峻:解决你的问题可能比你预期的还要困难。因为第二项常用的技术室不够的:
a.强大的算法(即使是一个很聪明的变体),也将花很长时间。
b.快捷算法,例如在大包之前,首先要投入很大的物品,然后返回一个尚未达到理想状态的解决
方案。通过采用先进的优化算法,规划师是不能在合理的时间内找到一个像这样的规划问题的解决方案的。


1.2.2 规划问题是有硬软限制的
通常情况下,一个规划问题是至少有两个方面的限制的:
a.A(负面的)硬约束是不能被打破的。例如:一个老师是不能同时上两个不同的课的。
b.A(负面的)软约束如果能够避免是不应该被打破的。例如:一个老师是不喜欢在星期一下午上
课的。
许多问题都有正面的约束:
c.A一个积极的软约束(或者奖励)可能的话应该满足,例如:老师A喜欢在星期一上午上课。

有些问题只有一个硬约束,还有有些问题有两个,甚至多个方面的约束,例如:硬约束,中性约
束和软约束。
这些约束条件定义了规划问题的计算分数(AKA fitness function)。每一个解决方案规划问题都
可以分级得分。对于规划师来说,得分约束被写在一个面向对象的语言中,例如Java代码或Drools规则。这样的代码是很容易的,灵活的和可扩展的。


1.2.3 一个规划问题有一个很大的搜素空间。
一个规划问题有很多歌解决方案。有几类解决方案:
a.一个可能的解决方案可以是任意的,无论是否打破怎样的约束。规划问题往往有一个令人难以
置信的大量的可能的解决方案。许多这些解决方案是毫无价值的。
b.一个可行的解决方案是不会打破任何一个硬约束(负面)的.很大数量的可行解决方案关联到一些可能的解决方案。有时候没有可行的解决方案,每一个可行的解决方案就是一个可能的解决方案。
c.最佳的解决方案是得分最高的。规划问题有一个或者多个最佳方案。总是会至少有一个最佳的
解决方案,即使没有可行的解决方案和最佳的解决方案不可用。

d.一个最好的解决方案是得分最高的,是在一段时间的实施才发现的。最好的解决方案要成为可行的,需要花费足够的时间,那就是一个最佳的解决方案。


与直觉上相反,可能的解决方案计算的数量是巨大的,即使使用的是较小的数据集。在例子中可以看到。大多数情况下有很多更可行的解决方案都比已知的宇宙(10^80)中原子数还小。就是因为没有灵丹妙药去找到最佳的方案。许多措施来强制评估所有那些可能的解决方案中至少一个子集。


Drools规划师支持多种优化算法,有效地解决令人难以执行大量的可能的解决方案。根据使用情况,一些优化算法的性能优于其他,但提前告知这是不可能的。规划师中很容易转换优化算法。
原创粉丝点击