Xml 模块化optaplanner基准配置 问题是:

Xml 模块化optaplanner基准配置 问题是:,xml,optaplanner,Xml,Optaplanner,有没有一种方法可以编写一个包含从Optaplanner中的其他xml文件插入的配置部分的解算器配置文件? 说明: 我尝试使用部分非常不同的解算器来执行一些相当复杂的基准运行,例如 局部搜索阶段 过滤类 drool规则集 等等 因此,本文中显示的模板方式是不够的 由于XML具有DTD实体插入,我曾考虑将复杂的配置模式模块化并在不同的集合中重用它们,但不幸的是,Optaplanner在读取解算器配置文件时似乎不支持此功能 java.lang.IllegalArgumentException:取消

有没有一种方法可以编写一个包含从Optaplanner中的其他xml文件插入的配置部分的解算器配置文件?

说明: 我尝试使用部分非常不同的解算器来执行一些相当复杂的基准运行,例如

  • 局部搜索阶段
  • 过滤类
  • drool规则集
  • 等等
因此,本文中显示的模板方式是不够的

由于XML具有DTD实体插入,我曾考虑将复杂的配置模式模块化并在不同的集合中重用它们,但不幸的是,Optaplanner在读取解算器配置文件时似乎不支持此功能

java.lang.IllegalArgumentException:取消对benchmarkConfigResource(path/to/my/benchmarkConfig.xml)的编组失败。。
...
----调试信息----
原因异常:com.thoughtworks.xstream.io.StreamException
原因信息:
类:org.optaplanner.core.config.solver.SolverConfig
所需类型:org.optaplanner.core.config.solver.SolverConfig
转换器类型:com.thoughtworks.xstream.converters.reflection.ReflectionConverter
电话号码:42
类[1]:org.optaplanner.benchmark.config.SolverBenchmarkConfig
类[2]:org.optaplanner.benchmark.config.PlannerBenchmarkConfig
版本:1.4.10
-------------------------------
...

例子 其想法是有一个类似以下内容的conifg文件目录:

|--benchmarkConfig.xml
|---header.xml
|---scoreDirectorFactory_1.xml
|---scoreDirectorFactory_2.xml
|--- ...
|---localSearch\u tabuSearch.xml
|---localSearch\u hillClimber.xml
|--- ...
以及以下格式的
benchmarkConfig.xml


]>
...
...
&收割台;
SDF1 TabuSearch
&scoreDirectorFactory_1;
&localSearch_tabuSearch;
SDF1 TabuSearch HillClimber
&scoreDirectorFactory_1;
&localSearch_tabuSearch;
&本地搜索\u hillClimber;
SDF1山地车
&scoreDirectorFactory_1;
&本地搜索\u hillClimber;
SDF2 TabuSearch
&scoreDirectorFactory_2;
&localSearch_tabuSearch;
...

像这样,Optaplanner的基准系统的使用将非常强大,IMHO。

它不受直接支持,但考虑到:

  • (如果使用freemarker模板,则输出XML)
  • XML输入通过XStream直接转换为普通的旧java类。根类是
  • 您可以通过编程方式在这些java类上添加和删除元素等,而不是通过XML。您添加的某些元素也可以从xml中读取
  • 最后,您可以调用
    PlannerBenchmarkFactory.create(PlannerBenchmarkConfig benchmarkConfig)
    ,它返回一个PlannerBenchmarkFactory

这应该是可行的。我看不出它不起作用的原因。

它不受直接支持,但考虑到:

  • (如果使用freemarker模板,则输出XML)
  • XML输入通过XStream直接转换为普通的旧java类。根类是
  • 您可以通过编程方式在这些java类上添加和删除元素等,而不是通过XML。您添加的某些元素也可以从xml中读取
  • 最后,您可以调用
    PlannerBenchmarkFactory.create(PlannerBenchmarkConfig benchmarkConfig)
    ,它返回一个PlannerBenchmarkFactory

这应该是可行的。我看不出有什么理由不起作用。

PS:我喜欢你把我的视频称为拯救视频的方式。我想我在记住标题的时候把满足和拯救混淆了;I’谢谢你的回答。我会试试看。谢谢你的项目,PS:我喜欢你把我的视频称为拯救视频的方式。我想我在记住标题时把满足和拯救混淆了;I’谢谢你的回答。我会试试看。谢谢你的项目,DTD是脆弱的。XInclude可能会工作-这取决于XStream-但我从未尝试过。我也用XInclude尝试过,但没有成功。但我不是xml专家,所以…DTD很脆弱。XInclude可能会工作-这取决于XStream-但我从未尝试过。我也用XInclude尝试过,但没有成功。但我不是xml专家,所以。。。