对于OptaPlanner (= Drools Planner)6.0.0.Beta1,我已经用更优雅的ConstraintMatch系统替换了ConstraintOccurrence。 结果是您的DRL评分文件为:

  • 快多了
  • 更容易读写
  • 错误的发生率要低得多,因为它们使分数损坏变得更加困难

让我们先看一下结果,然后再看一下代码可读性的改进。

快点

“给我看基准!”

平均计算计数 (即OptaPlanner每秒计算的分数数)已急剧增加。

  • N个皇后:256个皇后的+ 39%计算数量
  • 云平衡:平均计算量为+ 27%
  • 车辆路线:平均+ 40%计算次数
  • 课程安排:平均+ 20%计算数量
  • 考试安排:平均+ 23%计算次数
  • 护士花名册:平均Calc计数+ 7%

但是,这不一定意味着结果会得到显着改善,尤其是如果旧结果已经(接近)最佳的话。 这意味着您可以在更少的时间内获得完全相同的结果 。 但是-与所有其他性能改进一样- 无法保证在同一时间显着改善结果。 向外扩展时确实有帮助。

  • 云平衡:5分钟内平均软得分+ 0.58%
  • 车辆路线:5分钟内平均+ 0.14%可行软评分
  • 课程安排:7分钟内平均+ 2.28%可行软评分
  • 考试安排:7分钟内平均考试软得分+ 0.53%

30分钟的车辆路线数据集中的几个已经在5分钟内得到了最佳求解,因此尽管车辆路线加快的速度很高,但它们拖累了平均值。 所有基准测试都使用完全相同的Drools和OptaPlanner版本,因此这些数字仅显示ConstraintMatch更改的改进。 6.0中还有其他一些改进。

平均值如何计算计数范围?

这是一些图表,将旧的ConstraintOccurrence与新的ConstraintMatch进行了比较。 新的ConstraintMatch的当前实现尚未完全优化,因此有时将其称为“慢速”模式(即使速度更快)。

CloudBalance:

车辆路线:

课程安排:

考试名册:

更轻松

“给我看代码!”

对于初学者,将删除accumulateHardScore和accumulateSoftScore规则。 更少的样板。 接下来,每个计分规则的RHS(= then side)都更简单:

之前:

rule "conflictingLecturesSameCourseInSamePeriod"when...theninsertLogical(new IntConstraintOccurrence("conflictingLecturesSameCourseInSamePeriod", ConstraintType.HARD,-1,$leftLecture, $rightLecture));end

后:

rule "conflictingLecturesSameCourseInSamePeriod"when...thenscoreHolder.addHardConstraintMatch(kcontext, -1);end

请注意,您不需要重复ruleName或原因(讲座)。 OptaPlanner通过kcontext变量自行计算。 Drools自动在RHS中公开kcontext变量,因此您不需要任何其他代码。 此外,受限的ConstraintType枚举已由特定于Score类型的方法代替,以允许OptaPlanner更好地支持多级得分类型,例如HardMediumSoftScore和BendableScore。 您也不再需要修改API来获取所有ConstraintOcurrence的列表:ConstraintMatch对象(及其每个约束的总数)可直接在ScoreDirector API上使用。

参考: DRL评分: Drools&jBPM博客上来自我们JCG合作伙伴 Geoffrey De-Smet的OptaPlanner更快,更轻松 。

翻译自: https://www.javacodegeeks.com/2013/04/score-drl-faster-and-easier-in-optaplanner.html

分数DRL:在OptaPlanner中更快,更轻松相关推荐

  1. YOLOv5全面解析教程③:更快更好的边界框回归损失

    作者|Fengwen.BBuf 边界框回归是目标检测的关键步骤,在现有方法中,虽然被广泛用于边界框回归,但它不是针对评估指标量身定制的,即 Intersection over Union (IoU). ...

  2. 使用现场总线更快更远

    使用现场总线更快更远 Going faster and further with Fieldbus PROCENTEC等行业专家表示,基于RS-485的现场总线技术(PROFIBUS®)和工业以太网( ...

  3. 实用的it知识学习_怎样能更快更好的学习好书法?分享一些比较实用的理论知识...

    如何能更快更高效的学习书法?首先了解一些书法理论知识是很有必要的!它能让你在学习书法的过程中不至于迷茫 !能助你更快学好书法! 一.书论在实践中产生 我们大部分人都觉得学习书法可以没有理论,但不可无技 ...

  4. IEEE ICIP 2019 | 更快更好的联邦学习:一种特征融合方法

    目录 前言 Abstract 1.Introduction 2.Related Work 3.Methods 3.1 Feature Fusion Modules 3.1.1 Conv operato ...

  5. 更快更安全,HTTPS 优化总结

    在网站升级到 HTTPS 之后,我们还可以有很多玩意可以折腾,优化 HTTPS,让它更快更安全.这里是一篇 HTTPS 优化的总结,也包含问题的解决方法,不过不仅仅包括 HTTPS 的优化,也包含 H ...

  6. 极智Paper | YOLOv7 更高 更快 更强

      欢迎关注我的公众号 [极智视界],获取我的更多笔记分享   大家好,我是极智视界,本文解读一下 更高.更快.更强的 YOLOv7:Trainable bag-of-freebies sets ne ...

  7. 与阿里云整个生态体系共同成长,更快更好的为房地产行业客户提供高价值的服务。...

    免费开通大数据服务:https://www.aliyun.com/product/odps "最早是新业务要做,但是买服务器来不及,管理员没到位,而且新业务的成本很高,是否能成功也是未知,因 ...

  8. 与阿里云整个生态体系共同成长,更快更好的为房地产行业客户提供高价值的服务。

    免费开通大数据服务:https://www.aliyun.com/product/odpsyu "最早是新业务要做,但是买服务器来不及,管理员没到位,而且新业务的成本很高,是否能成功也是未知 ...

  9. MesaLink v0.7.0发布 | 迎接TLS 1.3时代 更快更安全

    MesaLink是百度安全实验室研发的一个内存安全并且兼容OpenSSL C API的传输层安全(TransportLayer Security, TLS)协议栈.近年来TLS漏洞频发,以2014年的 ...

  10. 清华大学丁霄汉:深度网络重参数化——让你的模型更快更强

    不到现场,照样看最干货的学术报告! 嗨,大家好.这里是学术报告专栏,读芯术小编不定期挑选并亲自跑会,为大家奉献科技领域最优秀的学术报告,为同学们记录报告干货,并想方设法搞到一手的PPT和现场视频--足 ...

最新文章

  1. python怎么实现检验_python 怎么实现数据串进行 BCC 校验 (Block Check Character/ 信息组校验码)?...
  2. 搭建linux软件仓库,创建自己的YUM仓库
  3. Tomcat配置及原理文章
  4. JsonHelper(Json帮助类)
  5. Ubuntu的LTS 18.04 安装FRR
  6. win10使用命令提示符启用/关闭远程桌面
  7. 备战BAT面试-死磕mysql|mysql 是如何做到存储两千万数据毫无压力的?
  8. 微信小程序:使用普通链接二维码跳转到小程序,解析二维码携带参数(微信扫普通普通链接二维码和小程序里扫二维码解析参数方法)
  9. TCP RTT测量妙计
  10. Wampserver修改默认浏览器、默认编辑器的解决办法
  11. python有什么特点有什么应用方向_你知道吗?python特点+可以做什么+就业前景(附30G学习资料)...
  12. 计算神经科学简介~【整理自】类脑计算背后的计算神经科学框架
  13. Android 9,安卓开发项目实战
  14. Poi 导出excel单个sheet的内容
  15. [从源码学设计]蚂蚁金服SOFARegistry之时间轮的使用
  16. Android内部颜色转16进制颜色
  17. (20)typedef
  18. Windows便笺(win10,win7便笺存储位置,恢复便笺数据)
  19. 第二节 下载和安装ISM Web组态软件
  20. 香蕉派 android开发板,香蕉派R1之安卓体验篇

热门文章

  1. Linux ss命令 报错,ECS Linux中ss命令显示连接状态的使用说明
  2. mysql事务基础+基于innodb的行锁+间隙锁+如何锁定行
  3. cuba 平台_CUBA 7的新功能
  4. java私有属性和私有方法_Java接口–历年来Java 9之旅–默认方法和私有方法
  5. apache camel_使用Apache Camel进行负载平衡
  6. kite 使用 go_使用Apache Storm和Kite SDK Morphlines的可配置ETL处理
  7. aws上部署hadoop_在AWS Elastic MapReduce上运行PageRank Hadoop作业
  8. git maven 发布_Maven Git发布
  9. Java中带有NetSuite数据实体的对象关系映射(ORM)
  10. Java反射,但速度更快