第 11 章 Red Hat build of OptaPlanner on Red Hat build of Quarkus: a vaccination appointment scheduler quick start Guide


您可以使用 OptaPlanner vaccination appointment 调度程序快速开始开发高效且公平的 vaccination 调度。vaccination appointment 调度程序使用人工智能(AI)来优先选择人员并根据多个约束和优先级分配时间插槽。

先决条件

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

调度点的方法主要有两种。系统可以让个人选择一个代表插槽(用户选择)或者系统分配一个插槽,并告知个人何时和在哪里参加(系统自动分配系统)。OptaPlanner vaccination appointment 调度程序使用 system-automaticly-assigns 方法。使用 OptaPlanner vaccination appointment 调度程序,您可以创建一个应用程序来向系统提供信息,系统会分配 appointment。

这种方法的特性:

  • Appointment 插槽根据优先级分配。
  • 系统根据预先配置的规划限制分配最佳分点时间和位置。
  • 对于有限数量的点点,系统不会给大量用户带来负担。

这种方法通过使用规划限制为每个人创建分数来解决尽可能多的人问题。个人分数决定了它们何时获得代表。个人分数越大,他们获得较早收到的成效几率就越好。

OptaPlanner vaccination appointment 调度程序限制是 hard、medium 或 soft :

  • 硬约束不能中断。如果有任何硬约束,则计划不可避免,且无法执行:

    • 容量 :在任何位置,不要随时进行手册 vaccine 容量。
    • Vaccine max age:如果一个 vaccine 具有最长期限,请不要将其管理给首次执行 vaccine 最长期限旧的人。确保向人们提供适合其年龄的 vaccine 类型。例如,不要为 vaccine 分配 75 年旧人,其最长期限限制为 65 年。
    • 所需的 vaccine 类型 :使用所需的 vaccine 类型。例如,第二个 vaccine 的作用必须是与第一个操作相同的 vaccine 类型。
    • ready date:管理指定日期或之后的 vaccine。例如,如果个人收到第二个目的,请不要在特定 vaccine 类型的推荐可能 vaccination 日期前管理它,例如 26 天。
    • 到期日期:管理指定日期之前或之前的 vaccine。例如,如果个人收到第二个操作,请在特定 vaccine 的具体 vaccine 的最终到期日期前管理它,例如在第一个操作后 3 个月。
    • 限制最大差差:将每个人分配给最接近一组 vaccination 中心之一。这通常是三个中心中的一个。这个限制通过旅行时间而不是距离计算,因此位于uran 区域中的个人通常比 rural 区域的旅行减少最大的距离。
  • Medium 约束决定在没有足够容量来为所有人分配点时没有获得点点。这在限制的规划中称为:

    • schedule second dose vaccinations:除非理想日期超出计划窗口外,不要留下第二个不准确的 vaccination appointments。
    • 根据优先级评级调度人员:每个人具有优先权评级。这通常是其年龄,但如果它们是健康的 worker,则可能会有更高的值。仅使优先级最低评级的人保留为未分配。它们将在下一次运行中考虑。这个约束比之前的约束软,因为第二个操作始终优先于优先级评级。
  • 软限制不应中断:

    • 首选 vaccination 中心:如果个人有一个首选的 vaccination 中心,请为他们提供该中心的提示。
    • 距离:减少个人必须前往其分配的 vaccination 中心的距离。
    • 理想日期:管理 vaccine on 或以尽可能接近指定日期。例如,如果某人收到第二个操作,则根据特定 vaccine 的高级日期对其进行管理,例如在第一次做后 28 天。这个约束比距离距离的软约束,以避免在国家/地区发送半年,只是接近其理想日期的一天。
    • 优先级评级:调度在规划窗口中之前具有较高优先级评级的人。这个约束比 distance 约束软,以避免在国家(地区)发送一半。这个约束也比理想的日期约束软,因为第二个操作的优先级高于优先级评级。

硬限制会根据其他硬限制加权。软限制会根据其他软限制加权。但是,硬限制总是优先于中型和软限制。如果硬约束出现问题,则计划不可行。但是,如果没有硬限制,则考虑软和中型限制来确定优先级。因为用户通常比可用的 appointment 插槽更多,所以您必须优先选择。第二个问题总是被首先分配,以避免创建以后系统造成过大的积压。之后,根据优先级评级分配人员。每个人都以优先级评级开始,是其年龄。这样做可优先选择旧的人员。之后,特定优先级组中的人员会收到,例如几百个额外点。这因组的优先级而异。例如,nurses 可能会收到额外的 1000 个点。这样一来,旧的 nurses 的优先级高于年轻的 nurses,而年轻的日子则优先选择那些不是紧张的人。下表描述了这个概念:

Expand
表 11.1. 优先级评级表
年龄作业(job)优先级评级

60

nurse

1060

33

nurse

1033

71

弃用

71

52

办公室工作者

52

11.1.2. OptaPlanner solver

在 OptaPlanner 的核心是解决者,使用问题数据集并覆盖计划限制和配置引擎。问题数据集包括有关人员、vaccines 和 vaccination 中心的所有信息。解决者通过各种数据组合进行工作,最终决定使用分配给特定中心 vaccination appointments 的人员优化点时间表。以下图显示了解决者创建的调度:

11.1.3. 持续规划

持续规划是同时管理一个或多个即将进行的计划周期的技术,并重复每个进程每月、每周、每天、每小时甚至更频繁的计划周期。计划窗口按指定间隔逐步推进。以下图显示了每日更新的两周规划窗口:

两周的规划窗口被分为一半。第一周处于 published 状态,第二周处于草案状态。人们在规划窗口的已发布和草案部分被分配。但是,只有发布的计划窗口部分中的人员才会通知其标点。其它声明仍可在下一次运行时轻松更改。这样做可让 OptaPlanner 在再次运行解决方案时更改草案部分(如有必要)。例如,如果需要第二个确实有一周的准备日期,并且是星期三的理想日期,OptaPlanner 不必为下称,如果您可以证明 OptaPlanner 可以演示它可以在稍后的星期几内给出一个草案。

您可以确定计划窗口的大小,但只了解问题空间的大小。问题空间是创建调度的所有各种元素。您提前规划的天数越大,问题空间越大。

11.1.4. 固定规划实体

如果您每天都不断规划,则在分配给用户的两周内将出现代表性。要确保 appointments 不是双引号的,OptaPlanner 会标记通过固定点来分配的现有 appointments。固定用于定位一个或多个特定分配,并强制 OptaPlanner 计划这些固定分配。在解决过程中,固定计划实体(如 appointment)不会改变。

实体是否被固定,由 appointment 状态决定。一个代表可以有五个状态: 打开、拒绝、接受拒绝 或重新计划。

注意

您实际不会在快速启动演示代码中直接看到这些状态,因为 OptaPlanner 引擎只对 appointment 没有被固定。

您需要能够规划已经调度的点。带有 InvitedAccepted 状态的指示会被固定。OpenRescheduleRejected 状态的代表没有固定,并可用于调度。

在本例中,当解决者在已发布和草案范围内搜索两周规划窗口时。除了未调度的输入数据外,解决者还考虑任何未固定实体、与 OpenReschedule 或拒绝状态相关的实体,以查找最佳解决方案。如果解决者每天运行,您会在运行 solver 前看到一个新的日期添加到调度中。

请注意,新日上的要点已被分配,之前在计划窗口的草案中调度了 Amy 和 Edna,现在在窗口的已发布部分调度。这是因为 Gus 和 Hugo 请求重新调度。这不会引起混淆,因为 Amy 和 Edna 从未通知其草案日期。现在,因为它们在规划窗口的 published 部分有点点,所以会通知它们并被要求接受或拒绝其意见,并且它们现在会被固定。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat