Это мой первый пост здесь, и я пишу для своей команды программистов, изучающих Java, для школьного проекта. Итак, мы плохие программисты. как я могу добавить ограничение, чтобы Optaplanner перемещал лекции в определенный тип комнаты. Например, я хочу перенести лекцию «Программирование» в компьютерный класс, а лекцию «Математика» в обычную комнату. Но с моим ограничением он объявляет жесткие ограничения, но не перемещает лекции в их комнату. Это должно быть отрицательное ограничение. Таким образом, отображается отрицательная оценка для этого жесткого ограничения, но оно все равно не будет разрешено / перемещено.
Вот ограничение:
rule "computerroom"
when
$room : Room($computerroom : computerroom)
$course : Course(computerroom == $computerroom)
then
scoreHolder.addHardConstraintMatch(kcontext, -1);
end
Мы добавили новую переменную в класс Room, которая выглядит так:
package org.optaplanner.examples.curriculumcourse.domain;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.optaplanner.examples.common.domain.AbstractPersistable;
@XStreamAlias("Room")
public class Room extends AbstractPersistable {
private String code;
private int capacity;
private boolean computerroom;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public boolean getComputerroom() {
return computerroom;
}
public void setComputerroom(boolean computerroom) {
this.computerroom = computerroom;
}
public int getCapacity() {
return capacity;
}
public void setCapacity(int capacity) {
this.capacity = capacity;
}
public String getLabel() {
return code;
}
@Override
public String toString() {
return code + " {C" + capacity + "}";
}
}
У тебя есть для нас совет?
Еще одна мелочь: Optaplanner получает много данных для работы: как мы можем увеличить максимальное количество секунд, затрачиваемое на разрешение? Потому что мы пробовали другие значения выше 1152, но это не сработало. Это всего лишь небольшой вопрос, ограничение важнее, но мы были бы счастливы запустить программу!
Приветствует SEP2014