链式实体的不可移动规划实体

时间:2015-01-15 20:03:50

标签: java optaplanner drools-planner

我试图为我的链式实体实施不可移动的计划实体。我的计划问题类似于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移动,不允许内部移动(因为它们反转)。

如果有人想帮我完成此代码,我将非常感谢,谢谢。

0 个答案:

没有答案