我正在阅读文档中的矛盾内容。
一方面,这段经文似乎表明连续的计划变量是可能的:
计划值范围是a的可能计划值的集合 规划变量。该集合可以是离散的(例如,行1,2,3 或4)或连续的(例如0.0和1.0之间的任何双倍)。
另一方面,在定义计划变量时,必须在字段上指定ValueRangeProvider
注释以用于值集:
Solution实现具有返回Collection的方法。任何 该集合的价值是一个可能的计划价值 规划变量。
这两个片段都在文档的相同部分(http://docs.jboss.org/drools/release/latest/optaplanner-docs/html_single/#d0e2518)
那么,这是什么?我可以使用完整的double
作为我的计划变量,还是需要将其范围限制为特定Collection
中的值?
看一下实际的算法,我没有看到任何实际上适合优化连续变量的算法,所以我怀疑它是否可行,但是明确澄清并明确这一点会很好。
答案 0 :(得分:5)
我们正在努力全力支持连续变量。但目前(在6.0.0.CR2中)尚未得到支持。
值范围确实可以是连续范围,但实际使用它们的管道还没有。我们最近取得了很好的进展,请参阅https://issues.jboss.org/browse/PLANNER-160。
以下是它的工作原理:
您将能够在返回@ValueRangeProvider
(而不是ValueRange
)的方法上使用Collection
注释。
ValueRange
将是一个支持选择随机值,获取大小,...的接口
开箱即用,我们将支持IntValueRange
,DoubleValueRange
,BigDecimalValueRange
,...
(实现细节:我们将这些Collection-returns方法改编为CollectionValueRange
。)
然后ValueSelector实现将直接使用它。
至于优化连续变量的适用性: