2017-10-05 66 views
0

我正在嘗試進行自定義構建啓發式階段。階段配置擴展了AbstractPhaseConfig,XStream無法弄清楚它應該添加到phaseConfigList中。它試圖將類分配給它自己的類變量。 LocalSearchPhaseConfig完美地工作。未添加到階段配置列表的自定義階段

XML

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

我從Optaplanner

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

回答

0

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

}

本地搜索相類如果你是業務集中:

爲什麼不使用定製階段取而代之?

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

升級到新版本時,延長AbstractPhaseConfig威力這不會讓你陷入困境。

如果你的學術重點:

是,破解它。那很好。以後再考慮促進回來:)調用此所以你CustomConstructionHeuristicPhaseConfig類是由XStream的認可:

XStreamXmlSolverFactory.addXStreamAnnotations(CustomConstructionHeuristicPhaseConfig.class); 
+0

感謝您指出我在正確的方向,我一定會看一看。 特別是我想要做的是將自定義值選擇器注入當前的構造啓發式。有沒有簡單的方法來做到這一點? – designatedDragoon