第 8 章 Red Hat build of OptaPlanner on Red Hat build of Quarkus: 一个 IANA timetable 快速开始指南
本指南指导您使用 Red Hat build of OptaPlanner 智能智能(AI)创建 Red Hat build of Quarkus 应用程序的过程。您将构建 REST 应用程序,该应用程序针对领导和专业者进行了优化。
您的服务将通过 AI 遵循以下硬和软 调度限制,自动将附件实例分配给 Timeslot 和 Room 实例:
- 空间最多可以同时有一个小时间。
- 一个架构师可以同时参与一个小时间。
- 每天最多可同时参与一个小时间。
- 交互式人员更喜欢在单个房间参与。
- 指导人员更喜欢参与较少的活动,并排解少量间的差距。
mathematly 认为是 NP 硬性问题。这意味着难以扩展。只需将所有可能的组合与括号一起进行迭代,在非平量数据集中,即使是超级计算器,则需要几十年的时间。AI 的约束程序(如红帽构建的 OptaPlanner)具有以合理的时间提供接近优化解决方案的高级算法。认为是合理的时间,这取决于您的问题的目标。
先决条件
- 已安装 OpenJDK 11 或更高版本。Red Hat build of Open JDK 位于红帽客户门户网站中的 Software Downloads 页面中(需要登录)。
- 已安装 Apache Maven 3.6 或更高版本。Maven 可从 Apache Maven 项目网站 获得。
- 提供了 IDE,如 IntelliJ IDEA、VSCode、Ecli 或 NetBeans。
8.1. 创建 IANA timetable 项目 复制链接链接已复制到粘贴板!
Evolution timetable 项目可让您使用 Apache Maven 和 Quarkus Maven 插件构建 OptaPlanner 和 Quarkus 应用程序来启动和运行。
如果您希望,您可以创建一个 Quakus OptaPlanner 项目,如 第 7 章 OptaPlanner 和 Quarkus 入门 所述。
流程
在命令终端中,输入以下命令验证 Maven 是否使用 JDK 11,并且 Maven 版本是否为 3.6 或更高版本:
mvn --version- 如果上述命令没有返回 JDK 11,请将 JDK 11 的路径添加到 PATH 环境变量中,然后再次输入上述命令。
要生成项目,请输入以下命令之一:
注意不支持 Apple macOS 和 Microsoft Windows。
如果您使用 Linux 或 Apple macOS,请输入以下命令:
mvn io.quarkus:quarkus-maven-plugin:1.11.6.Final-redhat-00001:create \ -DprojectGroupId=com.example \ -DprojectArtifactId=optaplanner-quickstart \ -Dextensions="resteasy,resteasy-jackson,optaplanner-quarkus,optaplanner-quarkus-jackson" \ -DplatformGroupId=com.redhat.quarkus \ -DplatformVersion=1.11.6.Final-redhat-00001 \ -DnoExamples这个命令在
./optaplanner-quickstart目录中创建以下元素:- Maven 结构
-
src/main/docker中的Dockerfile文件示例 应用程序配置文件
Expand 表 8.1. mvn io.quarkus:quarkus-maven-plugin:1.11.6.Final-redhat-00001:create 命令中使用的属性 属性 描述 projectGroupId项目的组 ID。
projectArtifactId项目的工件 ID。
extensions用于此项目的 Quarkus 扩展列表。如需 Quarkus 扩展的完整列表,请在命令行中输入
mvn quarkus:list-extensions。platformGroupId目标平台的组 ID。
platformVersion要使用的平台版本。
noExamples创建带有项目结构的项目,但没有测试或类。
projectGroupID和projectArtifactID属性的值用于生成项目版本。默认项目版本为1.0.0-SNAPSHOT。platformGroupId和platformVersion属性的值供quarkus-universe-bom用于管理项目依赖项。
创建目录结构后,在文本编辑器中打开
optaplanner-quickstart/pom.xml文件,并检查文件的内容以确保它包含以下元素:<properties> ... <quarkus-plugin.version>1.11.6.Final-redhat-00001</quarkus-plugin.version> <quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id> <quarkus.platform.group-id>com.redhat.quarkus</quarkus.platform.group-id> <quarkus.platform.version>1.11.6.Final-redhat-00001.Final-redhat-00001</quarkus.platform.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>${quarkus.platform.group-id}</groupId> <artifactId>${quarkus.platform.artifact-id}</artifactId> <version>${quarkus.platform.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <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-resteasy-jackson</artifactId> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-resteasy</artifactId> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-arc</artifactId> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-junit5</artifactId> <scope>test</scope> </dependency>Quarkus BOM 导入到
pom.xml文件中。因此,您不需要在pom.xml文件中列出单个 Quarkus 依赖项的版本。查看
pom.xml文件中的quarkus-resteasy依赖项。通过这个依赖项,您可以开发 REST 应用程序:<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-resteasy</artifactId> </dependency>