Optaplanner ChangeMove 过滤

Optaplanner ChangeMove filtering

我正在为 ChangeMoves 编写过滤器以解决调度问题,其中规划实体是由多个整数变量定义的班次。 SelectionFilter 接口非常简单,但是,我无法获取有关移动将更改哪个变量的详细信息。就我而言,该信息对于检查是否应过滤此举至关重要。

虽然 changeMove 具有 getPlanningValue() 方法,但我没有找到任何方法来检查哪个变量将被分配该值(它们在我的解决方案中都是整数)。还有 getSimpleMoveDescriptor() 方法,它 returns 包含变量名称的字符串描述,但文档不鼓励解析它返回的值。

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

谢谢:)!

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

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

我得到了想要的行为。不过,可能无法保证移动描述格式将在未来版本的 optaplanner 中保留变量名称。

已修复 7.0 this jira