В OptaPlanner, как ограничить количество назначений факта сущности? - PullRequest
0 голосов
/ 17 ноября 2018

На примере расписания курсов, скажем, инструктор может преподавать только n курсов.Чтобы добиться этого, я думаю найти все курсы, которые преподаются данным инструктором, и увеличить отрицательную разницу на половину, если ниже.Как мне поступить так (получить все курсы, которые преподаёт тот или иной профессор)?

1 Ответ

0 голосов
/ 17 ноября 2018

Если вы введете двунаправленную переменную List<Course> courseList (раздел 6.2. Двунаправленная переменная (теневая переменная обратной зависимости) в классе инструктора, у вас будет доступ ко всем его курсам:

@PlanningEntity
public class Course {
    @PlanningVariable(valueRangeProviderRefs = {"instructorRange"})
    private Instructor instructor;
}

@PlanningEntity 
public class Instructor {
    @InverseRelationShadowVariable(sourceVariableName = "instructor")
    private List<Course> courseList;
}

Что касается начисления очков, оштрафуйте жесткий балл, если инструктор назначил слишком много курсов, и мягкий балл, если их недостаточно.

...