第 10 章 Red Hat build of OptaPlanner on Red Hat build of Quarkus: a ute Timetable quick Start Guide


本指南指导您使用 Red Hat build of OptaPlanner 的约束解决人为智能(AI)来创建红帽构建的 Quarkus 应用程序的过程。您将构建可针对学生和教师优化时的 REST 应用程序

timeTableAppScreenshot

通过使用 AI 遵循以下硬和软 调度限制,您的服务会将 Lesson 实例分配给 TimeslotRoom 实例:

  • 房间最多可以有一节时间。
  • 教师可以指导大多数课程同时进行学习。
  • 学员最多可以同时参加一门课程。
  • 教师更喜欢在单一房间教授。
  • 教员更喜欢教授在课程之间的顺序课程和分解。

以数学方式讲,中立时间是 NP-hard 问题。这意味着很难扩展。只需通过与 brute 强制实现所有可能的组合迭代将花费数以百万计的数据集,即使在超级计算机上也是如此。需要的是,AI 约束解决者(如红帽构建的 OptaPlanner)具有在合理的时间内提供近优化型解决方案的高级算法。认为是合理的时间,取决于问题的目标。

先决条件

  • OpenJDK 11 或更高版本已安装。红帽构建的 Open JDK 可从红帽客户门户中的 Software Downloads 页面获得(需要登录)。
  • 已安装 Apache Maven 3.6 或更高版本。Maven 可从 Apache Maven Project 网站获取。
  • 提供了 IDE,如 IntelliJ IDEA、VSCode、Ecli 或 NetBeans。

10.1. 使用 Maven 插件创建 OptaPlanner Red Hat build of Quarkus Maven 项目

您可以使用 Apache Maven 和 Quarkus Maven 插件,通过红帽构建的 OptaPlanner 和 Quarkus 应用程序来获取和运行。

先决条件

  • OpenJDK 11 或更高版本已安装。红帽构建的 Open JDK 可从红帽客户门户中的 Software Downloads 页面获得(需要登录)。
  • 已安装 Apache Maven 3.6 或更高版本。Maven 可从 Apache Maven Project 网站获取。

流程

  1. 在命令终端中,输入以下命令来验证 Maven 是否使用 JDK 11,并且 Maven 版本是否为 3.6 或更高版本:

    mvn --version
    Copy to Clipboard
  2. 如果前面的命令没有返回 JDK 11,请将到 JDK 11 的路径添加到 PATH 环境变量中,然后再次输入前面的命令。
  3. 要生成 Quarkus OptaPlanner quickstart 项目,请输入以下命令:

    mvn com.redhat.quarkus.platform:quarkus-maven-plugin:2.2.3.Final-redhat-00013:create \
        -DprojectGroupId=com.example \
        -DprojectArtifactId=optaplanner-quickstart  \
        -Dextensions="resteasy,resteasy-jackson,optaplanner-quarkus,optaplanner-quarkus-jackson" \
        -DplatformGroupId=com.redhat.quarkus.platform
        -DplatformVersion=2.2.3.Final-redhat-00013 \
        -DnoExamples
    Copy to Clipboard

    这个命令在 ./optaplanner-quickstart 目录中创建以下元素:

    • Maven 结构
    • src/main/docker中的 Dockerfile 文件示例
    • 应用程序配置文件

      表 10.1. mvn io.quarkus:quarkus-maven-plugin:2.2.3.Final-redhat-00013:create 命令中使用的属性
      属性描述

      projectGroupId

      项目的组 ID。

      projectArtifactId

      项目的工件 ID。

      extensions

      以逗号分隔的 Quarkus 扩展列表,用于此项目。如需 Quarkus 扩展的完整列表,请在命令行中输入 mvn quarkus:list-extensions

      noExamples

      创建一个具有项目结构的项目,但没有测试或类。

      projectGroupIDprojectArtifactID 属性的值用于生成项目版本。默认项目版本为 1.0.0-SNAPSHOT

  4. 要查看您的 OptaPlanner 项目,将目录改为 OptaPlanner Quickstarts 目录:

    cd optaplanner-quickstart
    Copy to Clipboard
  5. 检查 pom.xml 文件。内容应类似以下示例:

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>io.quarkus.platform</groupId>
          <artifactId>quarkus-bom</artifactId>
          <version>2.2.3.Final-redhat-00013</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
        <dependency>
          <groupId>io.quarkus.platform</groupId>
          <artifactId>quarkus-optaplanner-bom</artifactId>
          <version>2.2.3.Final-redhat-00013</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-resteasy</artifactId>
      </dependency>
      <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-resteasy-jackson</artifactId>
      </dependency>
      <dependency>
        <groupId>org.optaplanner</groupId>
        <artifactId>optaplanner-quarkus</artifactId>
      </dependency>
      <dependency>
        <groupId>org.optaplanner</groupId>
        <artifactId>optaplanner-quarkus-jackson</artifactId>
      </dependency>
      <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-junit5</artifactId>
        <scope>test</scope>
      </dependency>
    </dependencies>
    Copy to Clipboard
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat