OptaPlanner 这十年

十年前的一个假期,我开始开发一个小项目,没有太多意义,只是按照自己的兴趣爱好来,也没有打算做得很大很专业。在漫长开发中,我慢慢试图构建一些很酷的工具。今天,Java 规划引擎:optaplanner,应用在很多项目当中,与同领域软件相比处于领先地位。OptaPlanner 优化了商业资源调度和规划。

十年,让我们来看看,我的项目是如何成功的?期间,我做对了什么,我做错了什么?

需要说明的一点

2003毕业后,我曾当了2年的java顾问,负责Multi-Agent系统(MAS)的研究。我的同事,都是一些想改变世界的人,后来证明,他们没能做到。当时,我的一个同事正在优化护士排班问题(nurse rostering problem),对我们的研究小组提出了他的方法。他的解决方案是采用Tabu算法(一个优化算法在80年代发明的)。他的工作进展得很顺利。然而,他花了很多时间和精力去手工实现增量计算每个约束适应度函数。写代码很困难,耗时长且容易出错,但都会取得好成绩。

一年前,我曾在JavaPolis大会听过Mark Proctor的演讲(现在叫DevoxxBE),解释 Drools规则引擎和RETE算法。一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。

我提议在规则引擎中使用Tabu搜索算法,他们嘲笑我,那时候我没有一点算法优化经验。

不能空空其谈,所以,2006年暑假期间,我实现了一个简单课程调度问题的概念认证。我叫它Taseree,这是一个简化Tabu搜索规则引擎的规范。同年晚些时候,我添加了两个例子(N Queens and TTP) ,并且开源到SourceForge。

没有人用过Taseree,更不用说用它在生产环境中。事实证明,如果你不开源它,没有人使用它。

研究比赛

按理说,事情到这就应该结束了,就像我的许多其他项目一样。但是我听说过一些学术研究竞赛:给出一个优化问题,5分钟内找到最好的解决方案。所以在2007我参加了这个竞赛,在200参赛者中,我第四个完成了。

所以我确定我是在做正确的事。但是我也做错了很多事情。我们开源了各自代码,我们开始讨论和比较我们的实现,我们彼此学到了很多。其实有很多方法可以实现Tabu搜索。所以我开始采用替代算法实现。促使我(和Lukaš)写的基准工具包,比较这些算法统计,评估那个算法性能更好、更适合长足发展。理解这些算法需要一个小时,但10 000小时掌握它们,因此我花了很多时间。

动机是关键。找到一种方法来激励自己构建下一个特性,特别是在没有工资的情况下。爱好驱动我继续前进。

另一个优势是,每场比赛都会诞生一个新的例子。我最终做了很多框架改变对我来说更容易实现这些用例。这是一个重要的、旧的项目管理原则:那些创造了痛苦,应该感到疼痛。

没有人是一座孤岛

大约在同一时间我联系到Drools的团队,通过加入他们的IRC频道。我开始发表我的看法,同时,一边学习。2007年9月,马克邀请我让Taseree成为Drools的一个子项目,我们称之为Drools Solver。所以我清理代码,删除了spring核心依赖和写第一章的参考手册。它被作为Drools 5.0的一部分释放。

到2007年12月,在JavaPolis大会上,我给20开发人员第一次讲解了Drools Solver。

在2008年,我听说第一个使用Drools Solver的产品。

毅力

也正是2008年,我开始有了较多的业余时间,我可以在每周花几个小时在Drools Solver上。然而,我和我妻子也买了一所旧房子,我必须得花时间在房子翻修的事情上,因此,项目开始停滞,几乎一个月只能更新一次。

在这期间,我萌生了好几次放弃该项目的想法。不知何故,我觉得我不能。因此我坚持了下来。最后,一切稳步推进。

具有讽刺意味的是,项目开始变得受欢迎,下载量逐渐变多,论坛也变得活跃,我收获越来越多的建议。也正是这样,越来越多的Bug也随之而来。所以,我投入大量的时间进行单元测试、集成测试。到了2009年底,项目改名为Drools Planner。

幸运的是,Red Hat - Drools项目发起人已经注意到我对项目源源不断的贡献。他们很早邀请我为Drools工作,但在2013年才分配我全权负责。Red Hat开始支付工资给项目的贡献者,并且支持该项目进行业务销售、咨询。

产品化:走向企业

到了2012年底,Drools Planner已经不在是一个小项目,变得很庞大。它包括具有较高覆盖率的单元测试、集成和压力测试,完整的参考手册,完备的典例,JavaDocs和不断壮大的社区。当一家世界500强的企业考虑将它应用在重要的生产环境中时,我们发现它的服务是跟不上的。技术上的卓越还是远远不够的。

因此,Red Hat建立了一个专门的QA团队,支持团队,顾问团队,保障团队和产品化建设/文档团队。这使客户能够在大规模生产的情况下,自信地部署我们的开源软件。2013,我们开始这个过程,称为产品化。

通过各个服务团队的加入,产品化日趋成熟。项目成为一个顶级项目,所以我们又重命名了一次,也是最后一次,叫OptaPlanner。同时,也创立了optaplanner.org 。

2014年3月,在红帽的支持下,我们发布了第一个技术预览版本,作为BRMS订阅的一部分。2015年3月,我们全面升级企业支持,销售量增长。今年早些时候,我们雇佣一些核心工程师开发OptaPlanner工作台。与此同时,我们所有的代码仍然是开源的,在Apache许可下,成千上万的项目正使用它。一个双赢的局面。

我们坚信,未来是光明的。

文章转载自 开源中国社区[http://www.oschina.net]

时间: 2024-10-30 11:57:57

OptaPlanner 这十年的相关文章

网页动画的十二原则

  作为前端的设计师和工程师,我们用 CSS 去做样式.定位并创建出好看的网站.我们经常用 CSS 去添加页面的运动过渡效果甚至动画,但我们经常做的东西不会超过这些. 动效是一个有助于访客和消费者理解我们设计的强有力工具.这里有些原则能最大限度地应用在我们的工作中. 迪士尼经过基础工作练习的长时间累积,在 1981 年出版的 The Illusion of Life: Disney Animation 一书中发表了动画的十二个原则 (12 Principles of Animation) .这些

十款提高开发效率的Firefox插件

  Firefox浏览器能成为Web开发者和设计者最喜欢的浏览器,一个重要原因就是它有着丰富的插件可以用来辅助我们完成Web开发工作.下面给大家分享十款在Web开发工作中经常会用到的插件,利用好它们可以大大提高工作效率. 1. FireBug 在众多插件中Firebug无疑是大家最熟悉用的最多的了.Firebug集成在Firefox中,提供了一套开发辅助工具,诸如页面HTML.CSS.Javascript的浏览.编辑.调试.网络监控等等-- 2. FireShot FireShot是一款具有完备

Swift语法专题十二——方法

Swift讲解专题十二--方法 一.引言         方法只是一个术语,其实就是将函数与特定的类型结合,类.结构体.枚举都可以定义方法,方法又分为实例方法和类型方法,类型方法类似于Objective-C中的类方法.Swift和Objective-C的一大不同是,Objective-C只有在类中可以定义方法. 二.实例方法基础         实例方法的语法和函数完全一致,其和具体类型的实例所关联,实例方法在调用时由类型的实例点语法进行调用来完成一些功能模块.示例如下: class Math

Python:十年语言之冠

最近我发现了这个PYPL--编程语言流行指数.它对各种语言的流行指标进行了二次发掘.作者指出TIOBE指数很可能不能反映出真实情况,归咎于一些编程语言的名称会导致误解.他引入了一些新术语,利用谷歌趋势得出来不同的结论. 通过作者的研究,我们可以得知,在过去的十年里,Python语言获得了最大的增长幅度.从图片上我们可以看到10年内它的非常漂亮的线性增长,恭贺Python语言! 这个图表的数据非常的有意思,没有大起大浮并不是件坏事,这表明不断的有群体(来自Java和PHP--一个大部落)希望学习这

[算法系列之十]大数据量处理利器:布隆过滤器

[引言] 在日常生活中,包括在设计计算机软件时,我们经常要判断一个元素是否在一个集合中.比如在字处理软件中,需要检查一个英语单词是否拼写正确(也就是要判断 它是否在已知的字典中):在 FBI,一个嫌疑人的名字是否已经在嫌疑名单上:在网络爬虫里,一个网址是否被访问过等等.最直接的方法就是将集合中全部的元素存在计算机中,遇到一个新 元素时,将它和集合中的元素直接比较即可.一般来讲,计算机中的集合是用哈希表(hash table)来存储的.它的好处是快速准确,缺点是费存储空间.当集合比较小时,这个问题

数据挖掘十大经典算法(详解)

数据挖掘十大经典算法  一. C4.5  C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3 算法.   C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:  1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足:  2) 在树构造过程中进行剪枝:  3) 能够完成对连续属性的离散化处理:  4) 能够对不完整数据进行处理.  C4.5算法有如下优点:产生的分类规则易于理解,准确率较高.其缺点是:在构造树的过程中,需要对数据

[Qt教程] 第20篇 2D绘图(十)图形视图框架(下)

[Qt教程] 第20篇 2D绘图(十)图形视图框架(下) 楼主  发表于 2013-5-4 15:43:02 | 查看: 861| 回复: 0 图形视图框架(下) 版权声明 该文章原创于Qter开源社区(www.qter.org),作者yafeilinux,转载请注明出处! 导语 环境:Windows Xp + Qt 4.8.4+QtCreator 2.6.2 目录 三.场景(QGraphicsScene) (一)场景层 (二)索引算法 (三)边界矩形 (四)图形项查找 (五)事件处理和传播 (

金融安全资讯精选 2017年第十四期:十大顶级终端安全提供商报告,Uber承认数据泄露,微软“11月周二补丁日”发布53个漏洞补丁

[行业动态] 1.Gartner报告:十大顶级终端安全提供商 点击查看原文 点评:Gartner的<2017年终端安全魔力象限>报告为该行业中的公司排了个序,分为"领导者"."挑战者"."特定领域厂商"或"远见厂商".前十名包括趋势科技,Sophos,卡巴斯基实验室,赛门铁克,McAfee,微软,Cylance, SentinelOne,Carbon Black,CrowdStrike. [行业动态] 2.Uber

移动网络能“接管”生活?2014十大猜想

本文讲的是 :   移动网络能"接管"生活?2014十大猜想 ,1994年4月20日,通过一条64K的国际专线,中国全功能接入国际互联网,刻下了进入互联网时代的起始点.今天,我们已无法想象曾经发出第一封电子邮件历时7天的曲折,而当今中国互联网所正在发生的一切,也远远超出了20年前"中国互联网之父"钱天白教授的料想.新技术层出不穷,新应用应接不暇,新设备眼花缭乱--20年时间,中国互联网从边缘落后到奋起追赶,并开始在世界舞台崭露头角. 站在中国互联网发展的第二十个年头