繁体   English   中英

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

[英]Does OptaPlanner support optimizations and constraints on continuous variables?

我正在阅读文档中相互矛盾的内容。

一方面,这段话似乎表明可能存在连续的计划变量:

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

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

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

这两个片段都在文档的同一部分中( http://docs.jboss.org/drools/release/latest/optaplanner-docs/html_single/#d0e2518

那是什么呢? 我可以使用全double精度作为计划变量,还是需要将其范围限制为特定Collection的值?

查看提供的实际算法,我看不到任何实际上适合于优化连续变量的算法,因此,我怀疑是否有可能,但是将其弄清楚并明确表示会很好。

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

值范围确实可以是连续范围,但是实际使用它们的途径还不存在。 最近我们取得了良好的进展,请参阅https://issues.jboss.org/browse/PLANNER-160

它的工作方式如下:您也可以在返回ValueRange (而不是Collection )的方法上使用@ValueRangeProvider批注。

ValueRange将是一个接口,支持选择随机值,获取大小,...开箱即用,我们将支持IntValueRangeDoubleValueRangeBigDecimalValueRange ,...(实现细节:我们将对这些Collection进行改装-将方法返回到CollectionValueRange 。)

然后,ValueSelector实现将直接使用它。

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

  • JIT随机选择将迅速发展,并且具有很高的存储效率。
  • 如果您遇到NP完全/ NP困难的问题,那么OptaPlanner将是一个很好的选择。 如果您只有连续变量(而不是单个离散变量),那么您的问题就不太可能是NP完全的(除非您的约束反驳了这一点),在这种情况下,最好还是使用自定义的手工多项式算法(因为它不是NP完整的,所以有一个“简单”的解决方案)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM