策略引擎-jboss Drools Planner
fmms
13年前
jboss drools不光想做规则库,而且还做策略库,高智商的东西。jboss Drools Planner。
planner是干什么的?
一句话,planner是通过联合drools规则引擎和搜索算法实现自动规划的。一些常见的场景有:
- 员工排班
- 车辆路径选择、货物路径选择、交通路径选择
- 教育时间表:排课表、考试日程安排、会议日程安排
- 背包问题:在一个背包(或盒子)里面放尽可能多的东西。
一个规划通常都包含了一系列的约束、限制或条件。这些约束一般包括如下三类:
- 硬约束(负面的):不能违反的条件。比如一个老师同时只能教一节课。
- 软约束(负面的):尽量不要违反的条件。比如,A老师不喜欢在周五下午上课。
- 奖励(正面的):尽量优先满足的条件。比如,B老师喜欢在周一上午上课。
上述约束说明了规划方案的打分方法。可以通过drools规则引擎来完成灵活的增减打分规则。
一个规划问题,可以有很多解决办法,每个解决办法都会根据上面的约束(打分规则)获得一个分数。一般有三种类型的方案:
- 可能方案:这种方案,可以遵从也可以违反上述约束。因此数量很大(可能是不是笛卡尔积这样的情况,那太恐怖了,如果是这样,问题复杂时的可能方案(备选方案)过多,会不会导致planner崩溃呢?)。
- 可行方案:这种方案,不会违反硬约束,所以是可行的。数量较少,是可能方案的一个子集。但是有些规划问题可能没有可行方案。
- 优化方案:这种方案,是所有可能方案中得分最高的一个或多个方案。它,可能不是一种可行方案。
drools planner 支持几种搜索算法可以有效地评估计算各种可能方案,并且,通过修改配置,可以简单方便的更换搜索算法。
planner的现状
drools planner 是基于ASL(apache软件许可)的开源软件。
planner的安装配置
到http://jboss.org/drools/downloads下载,解压到一个目录,即可完成安装。
在安装目录,运行 runExamples.bat
---------------------
Drools and jBPM consist out of several projects:
Drools Guvnor (Business Rules Manager)
Drools Expert (rule engine)
jBPM 5 (process/workflow)
Drools Fusion (event processing/temporal reasoning)
Drools Planner (automated planning)