有没有一种方法可以编写一个求解器配置文件,其中包含Optaplanner中其他xml文件中的配置部分插入?
我尝试使用部分完全不同的求解器配置(例如不同)执行一些相当复杂的基准测试运行>
因为此benchmark constraints salvation video中显示的模板方式不足。
由于XML具有DTD实体插入,我考虑过将复杂的配置模式模块化并在不同的集合中重用它们,但是不幸的是,Optaplanner在读取求解器配置文件时似乎不支持此功能。
java.lang.IllegalArgumentException: Unmarshalling of benchmarkConfigResource (path/to/my/benchmarkConfig.xml) fails.. ... ---- Debugging information ---- cause-exception : com.thoughtworks.xstream.io.StreamException cause-message : class : org.optaplanner.core.config.solver.SolverConfig required-type : org.optaplanner.core.config.solver.SolverConfig converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter line number : 42 class[1] : org.optaplanner.benchmark.config.SolverBenchmarkConfig class[2] : org.optaplanner.benchmark.config.PlannerBenchmarkConfig version : 1.4.10 ------------------------------- ...
示例
想法是拥有一个类似这样的配置文件目录:
|--- benchmarkConfig.xml |--- header.xml |--- scoreDirectorFactory_1.xml |--- scoreDirectorFactory_2.xml |--- ... |--- localSearch_tabuSearch.xml |--- localSearch_hillClimber.xml |--- ...
以及
benchmarkConfig.xml
的形式
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plannerBenchmark [ <!ENTITY header SYSTEM "header.xml"> <!ENTITY scoreDirectorFactory_1 SYSTEM "scoreDirectorFactory_1.xml"> <!ENTITY scoreDirectorFactory_2 SYSTEM "scoreDirectorFactory_2.xml"> <!ENTITY localSearch_tabuSearch SYSTEM "localSearch_tabuSearch.xml"> <!ENTITY localSearch_hillClimber SYSTEM "localSearch_hillClimber.xml"> ]> <plannerBenchmark> ... <inheritedSolverBenchmark> ... <solver> &header; </solver> </inheritedSolverBenchmark> <solverBenchmark> <name>SDF1-TabuSearch</name> &scoreDirectorFactory_1; <localSearch> &localSearch_tabuSearch; </localSearch> </solverBenchmark> <solverBenchmark> <name>SDF1-TabuSearch-HillClimber</name> &scoreDirectorFactory_1; <localSearch> &localSearch_tabuSearch; </localSearch> <localSearch> &localSearch_hillClimber; </localSearch> </solverBenchmark> <solverBenchmark> <name>SDF1-HillClimber</name> &scoreDirectorFactory_1; <localSearch> &localSearch_hillClimber; </localSearch> </solverBenchmark> <solverBenchmark> <name>SDF2-TabuSearch</name> &scoreDirectorFactory_2; <localSearch> &localSearch_tabuSearch; </localSearch> </solverBenchmark> ... </plannerBenchmark>
就像Optaplanner基准系统的使用一样强大,恕我直言。
问题是:有没有一种方法可以编写一个求解器配置文件,其中包含Optaplanner中其他xml文件中的配置部分插入?说明:我尝试执行一些......>
不支持直接,但鉴于: