OptaPlanner:具有多个计划变量的Sequal构造启发式,这些变量全部为null或全部为非null

问题描述 投票:1回答:1

根据文档,对于我的实体上的多个规划变量,我需要在构造启发式中使用顺序方式,以便它不会失控。但根据文档,

顺序:一次分配一个变量....

这对我来说是一个问题,因为我有一个严格的约束,即讲座不能有一个时间表但没有空间,反之亦然但是如果它没有被分配(过度约束)也没关系。发生的事情是没有任何分配,因为这不会破坏任何硬约束只有中等约束。解决这个问题的任何方式/模式?

drools optaplanner
1个回答
0
投票

啊,我明白了:因为顺序首先分配一个句点,然后在尝试分配房间之前进行分数计算,它将选择不分配该句号因为它在period != null && room == null时打破了一个硬约束。

有趣。我能想到的一个解决方法是在顺序配置中为句点选择器(这是第一个)的规划值添加一个过滤器。该过滤器过滤掉“空”值,这会强制CH将句点分配给非空值。

另一种方法是在自定义阶段使用自定义CH。在示例中查找“Initializer”类。一些较旧的示例可能仍然使用一个。

© www.soinside.com 2019 - 2024. All rights reserved.