为什么OptaPlanner给出“避免永无休止的选择器以避免无限循环”。我使用@PlanningPin时出错?

时间:2019-10-30 17:22:53

标签: java optaplanner

我已经用尽了optaplanner文档,并且@PlanningPin的用法非常简单。 我的PlanningEntity是:

@PlanningEntity()
public class CrewGroupAssignment extends AbstractPersistable {

我在这样的PlanningEntity内部使用了PlanningPin:

@PlanningPin
private Boolean pinned = true;
   public Boolean getPinned() {
      return pinned;
   }

   public void setPinned(Boolean pinned) {
      this.pinned = pinned;
   }

如果this.pinned为false则没有问题,算法可以完美运行,但是,当它为true时(此类中的PlanningVariable设置了一个值,它不为空)会给出错误:

  

[FilteringEntitySelector]警告-从neverEnding选择器中释放   (Filtering(FromSolutionEntitySelector(CrewGroupAssignment)))避免   无限循环。

如果此类中的PlanningVariable没有设置值,则它也不起作用。为什么会由于这个原因给出此错误?

谢谢!

1 个答案:

答案 0 :(得分:0)

我们之前已经看过了。这是因为您所有的实体都是固定的。有一个改进OptaPlanner行为的方法:当从没有可移动实体(它们都不是或全部都不移动(例如,因为它们被固定))的数据集开始时,应该立即结束求解。