第 6 章 配置 OptaPlanner solver


您可以使用以下方法配置 OptaPlanner solver:

  • 使用 XML 文件。
  • 使用 SolverConfig API。
  • 在域模型中添加类注解和 JavaBean 属性注解。
  • 控制 OptaPlanner 用来访问域的方法。
  • 定义自定义属性。

6.1. 使用 XML 文件配置 OptaPlanner solver

每个项目都有一个可以编辑的 solver 配置文件。& lt;EXAMPLE>SolverConfig.xml 文件位于 org.red_hat_build_of_optaplanner-red_hat_build_of_optaplanner-8.29.0.Final-redhat-00009/red_hat_build_of_optaplanner-examples/src/main/resources/org/optaplanner/examples/<EXAMPLE > 目录,其中 < EXAMPLE > 是 OptaPlanner 示例项目的名称。或者,您可以从带有 Solver Factory.createFromXmlFile () 的文件创建 SolverFactory。但是,出于可移植性的原因,建议使用 classpath 资源。

SolverSolverFactory 都有一个名为 Solution_ 的通用类型,这是代表规划问题和解决方案的类。

OptaPlanner 通过更改配置使其相对容易地切换优化算法。

流程

  1. 使用 Solver Factory 构建 Solver 实例。
  2. 配置 solver 配置 XML 文件:

    1. 定义模型。
    2. 定义 score 功能。
    3. 可选:配置优化算法。

      以下示例是 NQueens 问题的解析器 XML 文件:

      <?xml version="1.0" encoding="UTF-8"?>
      <solver xmlns="https://www.optaplanner.org/xsd/solver" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="https://www.optaplanner.org/xsd/solver https://www.optaplanner.org/xsd/solver/solver.xsd">
        <!-- Define the model -->
        <solutionClass>org.optaplanner.examples.nqueens.domain.NQueens</solutionClass>
        <entityClass>org.optaplanner.examples.nqueens.domain.Queen</entityClass>
      
        <!-- Define the score function -->
        <scoreDirectorFactory>
          <scoreDrl>org/optaplanner/examples/nqueens/optional/nQueensConstraints.drl</scoreDrl>
        </scoreDirectorFactory>
      
        <!-- Configure the optimization algorithms (optional) -->
        <termination>
          ...
        </termination>
        <constructionHeuristic>
          ...
        </constructionHeuristic>
        <localSearch>
          ...
        </localSearch>
      </solver>
      Copy to Clipboard Toggle word wrap
      注意

      在某些环境中,如 192.168.1.0/24 和 JBoss 模块,在 JAR 文件中的 resolver 配置、分数 DRL 和域类等类路径资源可能不适用于 optaplanner-core JAR 文件的默认 ClassLoader。在这些情况下,为您的类的 ClassLoader 作为参数提供:

             SolverFactory<NQueens> solverFactory = SolverFactory.createFromXmlResource(
                     ".../nqueensSolverConfig.xml", getClass().getClassLoader());
      Copy to Clipboard Toggle word wrap
  3. 使用解析器配置 XML 文件配置 SolverFactory,作为 ClassLoader.getResource () 定义的类路径资源提供:

           SolverFasctory<NQueens> solverFactory = SolverFactory.createFromXmlResource(
                   "org/optaplanner/examples/nqueens/optional/nqueensSolverConfig.xml");
           Solver<NQueens> solver = solverFactory.buildSolver();
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat