前言
易排平台发布之初,完全基于OptaPlanner 官方的一些示例进行开发。官网发布的众多示例呈现了各行各业各种场景下,通过OptaPlanner作为规划引擎的运筹优化场景。社区项目团队除了对引擎程序进行了完整且严格的测试外,还对所提供的示例程序进行了稳妥的测试。因此,这些示例是我们学习的重要资料。
在构思易排平台时,我基于当时参与过的若干行业的APS项目经历,拟出一个同时兼容流程制造与离散制造场景下的排程需求清单,并选择其中较为常见、典型的几个需求作为平台的内置需求。目标是构建一个具有APS最小功能子集的基础平台,以便最大程度提高各个行业、场景的兼容性。而一些行业相关性较大、特异性较强的需求,则计划在具体项目实施过程中,以特殊功能的形式提供。以防平台因特异性功能过多而降低了兼容性和适用范围。
而在与客户的具体项目合作过程中,确确实实出现了一些我之前未遇到过的需求,有涉及业务规则的,有优化目标相关的,更有对引擎核心模型产生具大挑战,甚至可以说对原来的规划模型产生颠覆的需求。甚至一度让我怀疑OptaPlanner能否实现这些,从业务角度看上去再也正常不过的需求。此过程中各种模型修改,反复建立、推翻、再建立修改新方案的过程,令我这个设计者、开发者心情,用跌宕起伏来形容并不为过。尽管如此,在这段时间的反复构思、实验过程中,对OptaPlanner有更深一层的认识。
目前易排平台的规划核心已有一个较大更新,无论在性能与兼容性,适用范围上均有了质的飞跃,一些以往无法实现的需求和特性,也已提供完善的解决方案。本文作为本次平台规划核心升级的一个纪念,以平台其一个需求的设计方案作为案例,分享一下该规划模型的设计。
注意:本文介绍到的方案是上一版本引擎核心中的一个模式与设计方案。本次升级过程中,这个方案已经进行了更有效的升级,基于技术保密,暂时未能公开最新设计方案。该方案虽然仍有一定的不足,但对于一些复杂度不高,特异性需求不多的场景,还是具有较高参考价值的。平台核心的设计,遵循更新一版、公开前一版的原则进行技术分享。若下一次引擎核心有重大升级,将会公布当前的设计方案,敬请期待。下面进入正题内容。
需求案例
在我们设计APS程序时,以下需求是无法逃避的。
-
设备的时间维度,有工作时间、休息时间与维保