Я добавил логическое значение в класс Task и активная BoolVar для класса TaskType
Код: Выделить всё
public class Task {
int machine;
int[] duration;
String name;
boolean optional;
Task(int machine, int[] duration, String name, boolean optional) {
this.machine = machine;
this.duration = duration;
this.name = name;
this.optional = optional;
}
}
public class TaskType {
IntVar start;
IntVar end;
IntervalVar interval;
BoolVar active;
}
В той части, где мы создаем TaskTypes в ссылке выше мой код (часть) выглядит следующим образом:
Код: Выделить всё
if(task.optional) {
taskType.active = model.newBoolVar(task.name + "_activeStatus");
}
taskType.interval = model.newIntervalVar(
taskType.start,
model.newIntVar(task.duration[0], task.duration[1], task.name + "_duration"),
taskType.end,
"interval" + suffix);
Код: Выделить всё
task.durationПри этом Я, честно говоря, не знаю, как поступить. Я подумал об установке длительности TaskType.duration равной нулю, если TaskType.active == true, возможно, с помощью onlyEnforceIf() , чтобы это не влияло на конечную продолжительность все задачи, а затем отфильтровать их в выходных данных. Но опять же, я не нашел способа использовать onlyEnforceIf() таким образом.
Моя проблема по сути заключается в том, что я хочу сделать TaskType «нерелевантным», если он BoolVar active верен, возможно, путем изменения существующих границ IntVars (но я также не выяснил, возможно ли это вообще).
Может быть, у кого-то из вас есть подсказка от меня заранее спасибо.
Подробнее здесь: https://stackoverflow.com/questions/787 ... tng-intvar
Мобильная версия