【问题标题】:Is OptaPlanner able to model stochastic programs?OptaPlanner 是否能够对随机程序进行建模?
【发布时间】:2016-07-10 13:03:42
【问题描述】:

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

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

所以我们的问题是:OptaPlanner 能否对这类问题进行建模并有效地解决它们?

【问题讨论】:

  • 为了更好地理解用例和潜在的痛点(修复它们),我已经开始a developer discussion here
  • 太棒了!当我们产生一些结果时,我们一定会参与这个讨论。

标签: mathematical-optimization optaplanner stochastic


【解决方案1】:

这类用例不是开箱即用的示例,也没有经过充分研究,但可以使用一些自定义代码

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

例如,假设下雨的概率是:周一 50%,周二 10%,周三 20%。现在假设我们有车辆路线问题,需要在那一周运送 100 个包裹,有 2 辆卡车:卡车 A 可以运载 20 个包裹并且不受雨水影响,而卡车 B 可以运载 40 个包裹但受雨影响:雨水造成它的维护成本和 1 周内的太多雨会破坏它。

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

  • 当 B 上累积降雨概率的“总和”过高时,将硬分降低多少过多(因此该解决方案不可行)
  • 使用 B 时下雨的概率会造成软成本(=> 会降低软分数)
  • 使用 A 或 B 会产生每行驶距离的软成本

话虽如此,OptaPlanner 并未提供任何概率算术方法,例如对概率​​求和(这很重要)。但是,您可以插入任何提供该功能的 Java 框架,为 drools DRL 调用这些函数。此外,drools-chance 应该提供该功能,但该项目目前处于非活动状态(但我们迟早会重新启动它)。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 2020-05-23
      • 2017-04-08
      相关资源
      最近更新 更多