Итак, у меня есть класс 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.