我正在为ChangeMoves编写一个过滤器,以解决计划问题,其中计划实体是由多个Integer变量定义的班次。
SelectionFilter接口非常简单明了,但是,我很难获得有关将通过移动更改哪个变量的详细信息。在我的情况下,信息对于检查是否应过滤举动至关重要。

虽然changeMove具有getPlanningValue()方法,但我没有找到任何方法来检查要为哪个变量分配该值(它们在我的解决方案中都是Integers)。还有一个getSimpleMoveDescriptor()方法,该方法返回包含变量名称的String描述,但是文档不鼓励解析由其返回的值。

关于如何找出ChangeMove要更改哪个变量的任何想法?我在这里做错什么了吗?
在将来的版本中,是否有可能从移动的variableDescriptor中公开getVariableName()方法?

谢谢 :) !

编辑:查看getSimpleMoveDescriptor()代码并测试不鼓励的解析后,例如

if(move.getSimpleMoveTypeDescription().contains("startQuantum")) {
    return false;
}


我得到了想要的行为。仍然不能保证移动描述格式会在optaplanner的未来版本中保留变量名。

最佳答案

使用this jira固定为7.0。

关于java - Optaplanner ChangeMove过滤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39322716/

10-10 20:20