OptaPlanner能够建模随机程序吗?

时间:2016-03-23 09:52:31

标签: mathematical-optimization optaplanner stochastic

在工作中,我们正在努力优化生产的商品数量,以满足不确定的需求。我们通过分析之前发生的需求来了解需求的概率分布。

在数学术语中,这个问题是多阶段随机整数程序。我们现在正在研究OptaPlanner来解决它。但是,似乎OptaPlanner不提供建模和解决此类问题的能力。一种可能性是将程序转换为可以解决的确定性问题,但这需要很长时间才能转换和解决。

所以我们的问题是:OptaPlanner可以模拟这类问题并有效地解决它们吗?

2 个答案:

答案 0 :(得分:1)

这些用例不是开箱即用的例子,经过深入研究,但可以使用一些自定义代码

  • OptaPlanner可以在任何分数计算功能之上进行优化。唯一真正的要求是它返回Score,基本上是Comparable
  • 您可以定义自定义Score(请参阅文档),但在下面的示例中,我将使用标准HardSoftScoreHardSoftScore基本上是2 int个变量。

例如,假设下雨概率为:周一为50%,周二为10%,周三为20%。现在假设我们有车辆路线问题,并且需要在那一周交付100个包裹,有2辆卡车:卡车A可以携带20个包裹并且不受雨和卡车B的影响,可以携带40个包裹但受雨水影响:雨水造成它的维护费用和1周的大雨会打破它。

现在我们可以写一个分数计算功能,在我们的分数规则中考虑这些因素:

  • 当"总和" B上积雨的概率太高,用多少来减少硬分(所以解决方案不可行)
  • 使用B时下雨的概率造成软成本(=>降低软成绩)
  • 使用A或B会造成每个距离驱动的软成本

话虽如此,OptaPlanner并没有提供任何概率算法的方法,例如做一个概率的总和(这是非平凡的)。但是,您可以插入任何提供该框架的Java框架,为drools DRL调用这些函数。此外,drools-chance被认为可以提供,但该项目目前处于非活动状态(但迟早我们会重启它)。

答案 1 :(得分:1)

以下是使用OptaPlanner进行随机优化的示例:Investment Portfolio Optimization