我们可以在Springboot optaplanner中使用多个@PlanningSolution类和多个SolverManager吗?

问题描述

对于使用optaplanner-spring-boot-starter的Springboot应用程序,云平衡问题解决方案与一种计划解决方案和SolverManager类似,可以很好地工作 https://github.com/DuncanDoyle/optaplanner-sbs-cloud-balancing/tree/master/optaplanner-sbs,但是当定义了多个计划解决方案并使用SolverManager调用时,会引发错误

原因: org.springframework.beans.factory.UnsatisfiedDependencyException: 创建在类路径中定义的名称为“ solverFactory”的bean时出错 资源 [org / optaplanner / spring / boot / autoconfigure / OptaPlannerAutoConfiguration.class]: 通过方法“ solverFactory”表达的不满意的依赖关系 参数0;嵌套异常为 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径资源中定义的名称为“ solverConfig”的bean [org / optaplanner / spring / boot / autoconfigure / OptaPlannerAutoConfiguration.class]: 通过工厂方法实例化Bean失败;嵌套异常为 org.springframework.beans.BeanInstantiationException:失败 实例化[org.optaplanner.core.config.solver.solverConfig]:工厂 方法“ solverConfig”抛出异常;嵌套异常为 java.lang.IllegalStateException:多个类([class com.test.model.PRCaseAssignment,类 com.test.model.CaseAssignment])与 @PlanningSolution注释。

我们如何定义多个@PlanningSolution类并使用SolverManager进行调用,是否需要注释任何类型的限定符?任何帮助表示赞赏。谢谢。

解决方法

请问具有多个解决方案类的用例是什么?

optaplanner-spring-boot-starter仅支持单个求解器配置,因此仅支持单个解决方案类。 SolverManager API也是如此:您可以向SolverManager提交多个计划问题,但是它们必须具有相同的类型(解决方案类)并共享相同的求解器配置。要提交其他类型的计划问题,您必须创建SolverManager的新实例。有关如何手动创建SolverManager实例的信息,请参见documentation

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...