OptaPlanner:ValueSelector无法使用ValueRangeType.FROM_PLANNING_ENTITY_PROPERTY

我在ConstructionHeuristic阶段使用MoveSelector配置。 它在EntitySelector中配置filterClass和comparatorClass时工作正常。

但是,在ValueSelector会话中,我无法使用“ValueRangeType.FROM_PLANNING_ENTITY_PROPERTY”计划变量。 它抛出此exception: java.lang.IllegalArgumentException :具有resolvedCacheType(PHASE)和resolvedSelectionOrder(SORTED)的valueSelectorConfig(ValueSelectorConfig(row))需要基于EntityIndependentValueSelector(FromEntityPropertyValueSelector(row))。 检查@ValueRangeProvider注释。

示例NQueen配置:…

    row PHASE SORTED ..RowWeightStrength   

….

**我需要使用valueRange取决于我的计划实体,以便为每个女王使用PossibleRowList(为了性能)任何建议请? 提前致谢。

valueSelector是SORTED,因此它需要缓存(以便能够对它们进行排序)。 但是如果我没记错的话,不支持每个实体使用@ValueRangeProvider进行缓存。

这意味着每个实体的带有@ValueRangeProvider的CH仅支持FIRST_FIT和FIRST_FIT_DECREASING,但不支持WEAKEST_FIT或STRONGEST_FIT。 我相信已经有了这个jira(如果你找到的话,请把它链接到这里)。 我们需要解决这个问题。

同时:解决方法是不使用SORTED,但已经在每个实体的值范围列表中对它们进行排序。