如何为Optaplanner解算器实例化EasyScoreCalculator?

如何为Optaplanner解算器实例化EasyScoreCalculator?,optaplanner,Optaplanner,列出了以下示例代码: 或者,在运行时构建EasyScoreCalculator实例,并使用编程API进行设置: solverFactory.getSolverConfig().getScoreDirectorFactoryConfig.setEasyScoreCalculator(easyScoreCalculator); 我假设它是:(缺少函数调用) 但是,无法设置实例化的EasyScoreCalculator,只能指定类。我想在运行时改变一些参数,在我看来,构造一个EasyScoreCal

列出了以下示例代码:

或者,在运行时构建EasyScoreCalculator实例,并使用编程API进行设置:

solverFactory.getSolverConfig().getScoreDirectorFactoryConfig.setEasyScoreCalculator(easyScoreCalculator);
我假设它是:(缺少函数调用)

但是,无法设置实例化的
EasyScoreCalculator
,只能指定类。我想在运行时改变一些参数,在我看来,构造一个
EasyScoreCalculator
似乎是一种合理的方法。它似乎是为了得到支持,但实际上不是


我应该如何在运行时的解算器运行之间更改分数计算器的参数?

setEasyScoreCollector()
故意不可用,因为在多线程解算中以及在其他用例中(如“解释分数”-参见文档),将有多个EasyScoreCalculator实例并行活动,因此我们需要能够实例化它们

我应该如何在不同的解算器之间更改分数计算器的参数 在运行时运行

元素(请参见
CustomPhaseConfig.java
)支持
映射customProperties
以改变自定义阶段的参数
PartitionedSearchPhaseConfig.java
也支持这一方面,与其他功能类似。在我们的问题跟踪器中创建一个问题(请参阅optaplanner.org上的“获取帮助”),以便在EasyScoreCalculator、IncrementalCoreCalculator和Drools上支持此功能。对于Drools,它会将这些属性注入全局字段


在pull请求中实现它应该相当简单。在ScoreDirectorFactoryConfig.java中添加这样的映射,并将其传递给ScoreDirectorFactory,后者调用ConfigUtils在计算器实例上进行设置。

谢谢。我理解能够构建多个实例的基本原理。您是否会反对允许提供
供应商
的请购单,或要求提供
可克隆的
EasyScoreCollector
而不是通过类引用的请购单。。在
easyScoreCalculatorClass
周围保留向后兼容性有点难看。
solverFactory.getSolverConfig().getScoreDirectorFactoryConfig().setEasyScoreCalculator(easyScoreCalculator);