Optaplanner не видит мою переменную планирования - PullRequest
0 голосов
/ 09 января 2020

Итак, у меня есть класс Cycle:

@PlanningEntity
public class Cycle {
  private Integer START = 29;
  private Integer END = 42;
  private final int SUSTAIN_START = 29;
  private final int SUSTAIN_END = 72;

  @PlanningVariable(valueRangeProviderRefs = { "startRange" } )
  public Integer getStartIndex() {
    System.out.println("DEBUG: getStartIndex");
    return START;

  }

  public void setStartIndex(Integer i) {
    System.out.println("DEBUG: setStartIndex");
    START = i;
    END = i+13;
  }

  @ValueRangeProvider(id = "startRange")
  public List<Integer> getStartIndexes () {
    ArrayList<Integer> startRange = new ArrayList<Integer>();
    for(int i = SUSTAIN_START; i < SUSTAIN_END; i++) {
      startRange.add(i);
    }
    return startRange;
  }

}

, и Optplanner никогда не вызывает ни один из этих методов, и я понятия не имею, почему. Я попытался добавить аннотацию «@ProblemFactCollectionProperty» к методу getStartIndexes, но я прочитал в документации, что эта аннотация должна использоваться только в PlanningSolution.

Я также пытался использовать scanAnnotatedClasses и явно указывать entityClass в моей конфигурации решателя, но ни один из них, похоже, не имел значения.

Почему Optaplanner не видит мою переменную и почему Optaplanner не меняет ее?

Дополнительная информация: я использую Optaplanner версии 7.30.0. Наконец, у меня есть еще один объект планирования с двумя переменными планирования, которые отображаются и изменяются Optaplanner.

1 Ответ

0 голосов
/ 10 января 2020

Проблема, согласно комментарию @ yurlo c, заключалась в том, что мне не хватало PlanningEntityCollectionProperty для Cycles в моем классе PlanningSolution. Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...