2016-05-16 13 views
1

Ich möchte einen Employee entweder einer Reserve Periode oder Shift Periode zuweisen.Kann ich mehrere @ PlanningEntityCollectionProperty in OptaPlanner verwenden?

@PlanningSolution 
public class RosterSolution implements Solution<HardSoftScore> { 

    @PlanningEntityCollectionProperty 
    private List<Shift> shift = new ArrayList<Shift>(); 

    @PlanningEntityCollectionProperty 
    private List<Reserve> reserve = new ArrayList<Reserve>(); 
    .... 



} 

Jede Verschiebung und Reserve Einheit hat einen einzigen @PlanningVariable von

@PlanningVariable(valueRangeProviderRefs={"employees"}, nullable= true) 
    private Employee emp; 

Ist es möglich, mehrere @PlanningEntityCollectionProperty Anmerkungen in einer Lösung zu verwenden? Ich habe keine Beispiele für seine Verwendung gesehen. Die Dokumentation unter @PlaningSolution gibt an: "Jede Planungslösung muss über mindestens 1 PlanningEntityCollectionProperty oder PlanningEntityProperty -Eigenschaft" verfügen, aber ich bin nicht sicher, wie Sie es implementieren.

Ich versuche, die einzelne Liste der Planungseinheiten, die Typcodierung verwenden, zu vermeiden, es sei denn, ich kann Typcode durch Zustands-/Strategiemuster ersetzen (wenn das möglich ist).

+0

Java8 erlaubt mehrere Annotationen des gleichen Typs. Ich bin mir nicht sicher, ob sie tatsächlich mit OptaPlanner arbeiten würden, obwohl ... –

+0

Danke. Ich bin mehr daran interessiert, wie das Framework mit mehreren @ PlanningEntityCollectionProperty-Annotationen funktioniert. Ich weiß es kompiliert ok. – busdrivingtupperware

Antwort

0

Ja, Sie können. Das Beispiel CoachShuttleGatheringSolution und VehicleRoutingSolution tun es.

Dies ist nützlich, wenn Sie mehrere Planungselementklassen haben (von denen einige Schattenobjektklassen sein können). Aber geh nicht dort hin, es sei denn, du musst es wirklich tun.

+0

Danke Geoffrey. – busdrivingtupperware