2016-12-05 3 views
2

J'ai commencé mon problème à partir de l'exemple MeetingScheduling.Optaplanner: comment gérer une PlanningVariable pour une liste?

je Les participants en groupes et chaque participant une liste des emplacements où il est disponible:

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

Je rencontres entre les groupes, pour chaque réunion, le planificateur doit attribuer: - un créneau horaire - pour chaque groupe, un participant disponible pour ce créneau sélectionné

@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; 
    } 
} 

L'objectif est de maximiser le nombre de réunions assignées.

La liste des participants à la réunion doit être une variable de planification. J'ai lu dans d'autres questions sur stackOverflow qu'il n'est pas possible d'avoir PlanningVariable sur List.

Comment puis-je gérer ce problème?

+0

Voir la réponse de Ondrej, mais aussi [lire ce guide] (https://www.optaplanner.org/blog/2016/10/26/DomainModelingGuide.html) pour mieux comprendre la modélisation. –

Répondre

2

Créez une classe MeetingAssignment, dans laquelle vous affecterez un participant unique à une réunion. Et puis laissez la réunion seulement avoir la liste de groupe et la pièce.

diagramme UML Brève:

Brief UML diagram

+0

Je ne peux pas affecter un participant à une réunion. J'ai besoin de maximiser le nombre de réunions en laissant le planificateur assigner le participant disponible pour chaque groupe d'une réunion. – supertanuki

+1

Créez N MeetingAssignments pour chaque réunion (où N = le nombre de groupes nécessaires pour assister à une réunion). Ensuite, laissez OptaPlanner affecter une personne du groupe à MeetingAssignment. – oskopek

+0

Dans ce cas, Meeting et MeetingAssignment sont tous les deux PlanningEntity? Désolé je suis un noob dans OptaPlanner. C'est un outil puissant, mais difficile pour un débutant. – supertanuki