在工作中,我们正在努力优化生产的商品数量以满足不确定的需求。我们通过分析之前发生的需求来知道需求的概率分布。
用数学术语来说,这个问题是一个多阶段随机整数规划。我们现在正在研究 OptaPlanner 来解决它。但是,OptaPlanner 似乎不提供建模和解决此类问题的能力。一种可能性是将程序转换为确定性问题,这可能是可以解决的,但这需要很多时间来转换和解决。
所以我们的问题是:OptaPlanner 能否对这类问题进行建模并有效地解决它们?
在工作中,我们正在努力优化生产的商品数量以满足不确定的需求。我们通过分析之前发生的需求来知道需求的概率分布。
用数学术语来说,这个问题是一个多阶段随机整数规划。我们现在正在研究 OptaPlanner 来解决它。但是,OptaPlanner 似乎不提供建模和解决此类问题的能力。一种可能性是将程序转换为确定性问题,这可能是可以解决的,但这需要很多时间来转换和解决。
所以我们的问题是:OptaPlanner 能否对这类问题进行建模并有效地解决它们?
这些用例不是开箱即用的示例并且经过充分研究,但可以使用一些自定义代码:
Score
,它本质上是 a Comparable
。Score
(请参阅文档),但在下面的示例中,我将使用一个标准HardSoftScore
,这样就可以了。AHardSoftScore
基本上是2个int
变量。例如,假设下雨的概率是:周一 50%,周二 10%,周三 20%。现在假设我们有车辆路线问题,需要在那一周运送 100 个包裹,有 2 辆卡车:卡车 A 可以运载 20 个包裹并且不受雨水影响,而卡车 B 可以运载 40 个包裹但受雨水影响:雨水造成它的维护成本和 1 周内过多的雨水会破坏它。
现在我们可以编写一个分数计算函数来在我们的分数规则中考虑这些事情:
话虽这么说,OptaPlanner 没有提供任何概率算术方法,例如对概率求和(这很重要)。但是,您可以插入任何提供该功能的 Java 框架,为 drools DRL 调用这些函数。此外,drools-chance 应该提供该功能,但该项目目前处于非活动状态(但迟早我们会重新启动它)。
这是使用 OptaPlanner 进行随机优化的示例:投资组合优化。