Optimization OptaPlanner是否支持对连续变量进行优化和约束?

Optimization OptaPlanner是否支持对连续变量进行优化和约束?,optimization,rule-engine,constraint-programming,drools-planner,optaplanner,Optimization,Rule Engine,Constraint Programming,Drools Planner,Optaplanner,我正在阅读文档中相互矛盾的东西 一方面,这篇文章似乎表明连续的计划变量是可能的: 计划值范围是一组可能的计划值 计划变量。该集合可以是离散的(例如第1、2、3行 或4)或连续(例如0.0和1.0之间的任何双精度) 另一方面,在定义计划变量时,必须在字段上指定一个ValueRangeProvider注释以用于值集: 解决方案实现具有返回集合的方法。任何 该集合中的值可能是此集合的计划值 计划变量 这两个代码段位于文档的同一部分() 那么,是哪一个?我可以使用完整的double作为计划变量,还是需要

我正在阅读文档中相互矛盾的东西

一方面,这篇文章似乎表明连续的计划变量是可能的:

计划值范围是一组可能的计划值 计划变量。该集合可以是离散的(例如第1、2、3行 或4)或连续(例如0.0和1.0之间的任何双精度)

另一方面,在定义计划变量时,必须在字段上指定一个
ValueRangeProvider
注释以用于值集:

解决方案实现具有返回集合的方法。任何 该集合中的值可能是此集合的计划值 计划变量

这两个代码段位于文档的同一部分()

那么,是哪一个?我可以使用完整的
double
作为计划变量,还是需要将其范围限制为特定
集合中的值


查看提供的实际算法,我看不到任何真正适合优化连续变量的算法,因此我怀疑这是可能的,但如果能够澄清并明确这一点,那就太好了。

我们正在努力完全支持连续变量。但是目前(在6.0.0.CR2中)它还没有得到适当的支持

值范围确实可以是连续的范围,但实际使用它们的管道还不存在。我们最近取得了良好的进展,请参阅

以下是它的工作原理: 您将能够在返回
值范围
(而不是
集合
)的方法上使用
@ValueRangeProvider
注释

ValueRange
将是一个支持选择随机值、获取大小、。。。 开箱即用,我们将支持
IntValueRange
DoubleValueRange
BigDecimalValueRange
。。。 (实现细节:我们将把这些集合返回方法重新装配到
CollectionValueRange
中)

然后ValueSelector实现将直接使用它

关于优化连续变量的适用性:

  • JIT随机选择将非常快速,并且非常节省内存
  • 如果你有一个NP完全/NP难的问题,那么OptaPlanner将是一个很好的匹配。如果你只有连续变量(而不是单个离散变量),那么你的问题就不太可能是NP完全问题(除非你的约束条件证明了这一点),在这种情况下,你最好还是使用定制的、手工制作的多项式算法(因为它不是NP完全问题,所以有一个“简单”的解决方案)