2016-12-05 1 views
2

Я начал свою проблему с примера MeetingScheduling.Optaplanner: как управлять PlanningVariable для списка?

У меня есть участники в группах и каждый участник имеет список слотов, где он недоступен:

public class Participant { 
    private Group group; 
    private List<Slot> unavailabilityList; 
} 

Я встречи между группами, для каждой встречи, планировщик должен назначить: - временную интервал - для каждой Группы - доступный Участник для этого выбранного интервала

@PlanningEntity() 
public class Meeting { 
    private List<Group> groupList; 

    /** @PlanningVariable ? */ 
    private List<Participant> participantList; 

    private Slot slot; 

    @PlanningVariable(valueRangeProviderRefs = {"slotRange"}, nullable = true) 
    public Slot getSlot() { 
     return slot; 
    } 
} 

Целью является максимальное количество назначенных встреч.

Список участников на собрании должен быть переменной планирования. Я прочитал в других вопросах о stackOverflow, что невозможно иметь PlanningVariable в списке.

Как я могу решить эту проблему?

+0

знакомства Ондрей, но и [читать это руководство] (https://www.optaplanner.org/blog/2016/10/26/DomainModelingGuide.html) лучше понять моделирование. –

ответ

2

Создайте класс MeetingAssignment, в котором вы назначите одного участника на собрание. А затем позвольте Совещанию иметь только список групп и комнату.

Краткая UML диаграмма: ответ

Brief UML diagram

+0

Я не могу назначить участника собрания. Мне нужно максимизировать количество встреч, позволяя планировщику назначить доступного участника для каждой группы собрания. – supertanuki

+1

Создайте N MeetingAssignments для каждой встречи (где N = количество групп, необходимых для участия в собрании). Затем пусть OptaPlanner назначит Личность группы на MeetingAssignment. – oskopek

+0

В этом случае Meeting и MeetingAssignment являются PlanningEntity? Извините, я новичок в OptaPlanner. Это мощный инструмент, но сложный для дебютанта. – supertanuki

Смежные вопросы