我试图为我的链式实体实施不可移动的计划实体。我的计划问题类似于optaplanner示例中的项目作业调度示例。以前我在这里发布了一个关于锁定我的链式实体的问题的问题:How to add Immovable feature in Project Job Scheduling solution? 项目负责人已经从jira给我一些解决方法:https://issues.jboss.org/browse/PLANNER-239。现在我试图编写解决方法的代码,但卡住了。请有人帮我完成这些变通方法代码。
来自jira:
解决方法:添加自定义移动过滤器,如果是getNextEntity 变化和交换动作不是不可移动的。至于子链动作...... 不允许倒车。至于2opt移动,不允许内部移动 (因为他们逆转)。在任何情况下,解决方法都是笨拙的 问题很重要。
我只是想了解解决方法,所以在这里,请有人帮我完成此解决方法:
自定义移动过滤器,如果getNextEntity不可移动以进行更改和交换移动:
public boolean accept(ScoreDirector scoreDirector, Allocation allocation) {
JobType jobType = allocation.getJob.getJobType();
boolean isLocked = false;
for(Allocation nextAllocation : allocation.getSuccessorAllocationList()) {
isLocked = nextAllocation.isLocked();
}
return !isLocked && jobType != JobType.SOURCE && jobType != JobType.SINK;
}
下一句话不清楚,所以我不明白该怎么做:
对于2opt移动,不允许内部移动(因为它们反转)。
如果有人想帮我完成此代码,我将非常感谢,谢谢。