2017-10-05 1 views
0

Ich versuche, eine benutzerdefinierte Konstruktion Heuristikphase zu machen. Die phase config erweitert AbstractPhaseConfig, XStream kann nicht herausfinden, dass es zur phaseConfigList hinzugefügt werden soll. Es versucht, die Klasse einer eigenen Klassenvariablen zuzuordnen. Die LocalSearchPhaseConfig funktioniert perfekt.Benutzerdefinierte Phasen nicht zu phaseConfigList hinzugefügt

XML

<solver> 
    <customConstructionHeuristic></customConstructionHeuristic> 
    <localSearch></localSearch> 
</solver> 

meine Klasse

@XStreamAlias("customConstructionHeuristic") 
public class CustomConstructionHeuristicPhaseConfig extends PhaseConfig<CustomConstructionHeuristicPhaseConfig> { 
    @Override 
    public ConstructionHeuristicPhase buildPhase(int phaseIndex, HeuristicConfigPolicy solverConfigPolicy, BestSolutionRecaller 
      bestSolutionRecaller, Termination solverTermination) { 
     return null; 
} 

}

Local Search Phase Klasse von Optaplanner

@XStreamAlias("localSearch") 
public class LocalSearchPhaseConfig extends PhaseConfig<LocalSearchPhaseConfig> { 
} 

Antwort

0

Wenn Sie Geschäft sind konzentriert:

Warum nicht eine Benutzerdefinierte Phase stattdessen verwenden?

<customPhase> 
    <customPhaseCommandClass>org.optaplanner.examples.machinereassignment.solver.solution.initializer.ToOriginalMachineSolutionInitializer</customPhaseCommandClass> 
    </customPhase> 
    <localSearch/> 

Das wird nicht Sie in Schwierigkeiten geraten, wenn auf eine neue Version aktualisieren, AbstractPhaseConfig Macht erstreckt.

Wenn Sie akademischen konzentriert:

Ja, es hacken. Das ist gut. Betrachten Sie es als einen Beitrag später wieder :) Rufen Sie diese so Ihre CustomConstructionHeuristicPhaseConfig Klasse von XStream erkannt wird:

XStreamXmlSolverFactory.addXStreamAnnotations(CustomConstructionHeuristicPhaseConfig.class); 
+0

Dank für den Hinweis mich in die richtige Richtung, ich nehme auf jeden Fall einen Blick. Insbesondere was ich tun möchte, ist eine benutzerdefinierte Wertauswahl in die aktuelle Konstruktion Heuristiken injizieren. Gibt es einen einfachen Weg, das zu tun? – designatedDragoon

Verwandte Themen