2017-10-05 79 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