根据文档,对于我的实体上的多个规划变量,我需要在构造启发式中使用顺序方式,这样它就不会失控。但根据文档,
顺序:一次分配一个变量....
这对我来说是一个问题,因为我有一个硬约束说,一个讲座不能有一个时间表但没有空间,反之亦然,但如果它没有被分配(过度约束)也没关系。发生的事情是没有任何分配,因为这不会破坏任何硬约束只有中等约束。解决这个问题的方法/模式是什么?
答案 0 :(得分:0)
啊,我明白了:因为顺序首先指定一个句点,然后在尝试分配房间之前进行分数计算,它将选择不分配该句号,因为它在period != null && room == null
时打破了一个硬约束。 / p>
有趣。我能想到的一个解决方法是在顺序配置中为句点选择器(这是第一个)的规划值添加一个过滤器。该过滤器过滤掉" null"值,强制CH将句点分配给非空值。
另一种方法是在自定义阶段使用自定义CH。寻找"初始化器"示例中的类。一些较旧的示例可能仍然使用一个。