kentzhang

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

近两年来的冠疫情使得社会工作生活备受影响。接种疫苗是其中一种有效减缓疫情的途径之一,但病毒的传染性,疫苗接种的规律性,及接种人群数量及分布等特性,对接种活动的计划安排提出了巨大挑战。面对大量的接种数据和复杂的接种安排,人工编制接种计划明显会影响工作效率,并降低接种安排的合理性。本文将接种计划视作一个规划问题,通过开源规划引擎OptaPlanner,自动生成一个符合接种规范、提高工作效率、降低社会运行成本的接种计划方案。

本文章译自Paul Brown先生,一位开源社区的资深贡献者。以下为原文:https://www.optaplanner.org/blog/2021/03/04/OptimizingCovid19VaccinationScheduling.html

  事实证明,COVID-19 疫苗接种预约安排是一项全球性挑战。尽管多次尝试,有资格接种疫苗的人仍无法获得预约。那些预定和接种疫苗的人,有时到达疫苗接种中心后才得知他们的预约已被取消。有些人发现,与他们同在一个疫苗接种时间窗口的有数百人,必须排队等候数小时才能接种。但是,情况并非必须如此混乱。你可以参考 OptaPlanner快速入门案例中的【疫苗接种预约】程序,来开发排程系统,从而生成一个既高效又公平的接种时间表。【疫苗接种预约调度程序】使用人工智能 (AI) 来确定人员的优先级,并根据多个约束和优先级分配时间段。该示例是OptaPlanner 快速入门系列的一部分,在 GitHub 上提示。

系统自动分配预约调度系统的好处

  安排预约有两种主要方式,一种是预约者从系统中选择一个预约空档(即用户选择),另一种是系统分配一个档期并告诉这个人何时何地参加(即由系统自动分配)。
以下是两种方法的快速比较:

用户选择

  这种方法类似于用于音乐会票务网站(如 Ticketmaster™)的方法。这是大多数音乐会门票的销售方式。人们相互竞争固定数量的门票或预约。


该方法的特点:

  • 预约以先到先得的方式提供.
  • 一个人从一系列可用的约会中选择心仪的约会时间和地点.

这种方法的挑战:

  • 先到先得的方式可能不公平.
  • 当过多人同时进行预约时,系统过载反复让将网速较慢的人无法预约.
  • 当多人尝试同时预约同一个时段时,只有一个人预约成功其他人都无法预约,导致用户体验不佳。有些人可能会彻底放弃尝试预约;而另一方面,一些非黄金时间的空档无人问津.
  • 根据优先级、年龄或第二次剂量状态等标准进行排序变得很棘手.
  • 用户选择的预约内,可能无法提供所需的疫苗类型(辉瑞™、Moderna™、阿斯利康™).


  可以说,用户选择方式不是疫苗接种计划的最有效方法。人们可以选择最近的疫苗接种中心,但该中心的容量可能不是最大的。对于个人有利方式,对于整个群体来说并不一定是最佳的。系统无法将每一个人引导同时满足个人需求,同时容量可满足所有人需求的中心。此外,这种方法很容易让系统出现过载。

系统自动分配

  使用这种基于推送的方法,人们将他们的信息提供给系统,由系统来分配一个预约。


这种方法的特点:

  • 预约的空档是根据优先级分配的.
  • 系统根据预先设定的计划约束,分配最佳预约时间和地点。

这种方法的挑战:

  • 人们分得的时间段可能不可行(例如时间冲突)。
  • 人们可能更偏向重新预约。

  系统自动分配方式比用户选择方式更易于人们使用,更公平;并且对于疫苗接种预约安排更高效。

第二剂挑战

  大多数 COVID-19 疫苗需要接种两剂。为了获得最佳效果,第二剂必须在与第一剂相隔特定时间范围内接种,并使用相同的疫苗类型。最重要的是,不同的疫苗有不同的第二剂时间间隔。在这些时间范围内,有一个最早可接种日期(可以接种第二剂的第一天)、一个理想日期(接种第二剂的最佳日期)和一个最后期限(接种第二剂的最后日期)。例如,辉瑞第二剂的理想日期是第一剂后 21 天,但 Moderna 疫苗第二剂的理想日期是第一剂后 28 天。
  因此,假设你从人们接种 Moderna 疫苗开始算,4 周后你仍在给人们接种第一剂;但此时已经是一些接种了辉瑞疫苗第一剂的人接种第二剂的时候了。您必须决定是预约需要第二剂的人还是预约人接受第一剂。这可能看起来很简单,但这种情况有潜在的复杂性。假设在接种疫苗的第一周,你为高优先级的人接种了疫苗,同时也为普通优先级的人们也接种了,因为你会发现在这个时间你完成了高优先级人群接种后,还有额外剩余的疫苗,而你又不能浪费掉这个时间。四个星期后,你必须决定,预约此时的预约优先分给第一剂高优先级的人,还是分配给需要接种第二剂的低优先级的人。
  一种解决方案是在接受第一剂和第二剂的人之间平等地共享预约,但这样做可能会导致需要第二剂的人积压。如果你继续给予接种第一剂的人预约,而不优先给需要第二剂的人预约,最终等待接种第二剂的需求量将出现滚雪球式的积压;从而导致第二剂疫苗实际接种日期将与理想日期相距甚远,甚至可能超过接种窗口期,这将使第一剂疫苗接种的效果大大降低。
因此,无论首剂患者的优先级高低,都应优先提供给第二剂接种者预约。

解决疫苗接种预约调度问题

  OptaPlanner 疫苗接种预约调度程序使用系统自动分配的方法,通过使用规划约束为每个人创建一个接种分值来解决尽可能多的人的疫苗接种问题。各人的接种分值决定了他们何时获得预约。一个人的接种分值越高,他们获得更早约会的机会就越大。约束分为硬约束、中等约束的或软约束的:

  • 硬约束不能被打破。如果任何硬约束被破坏,则计划不可行且无法执行。包含以下硬约束:
  1. 接种能力(容量):在任何时间、任何地点,发放的预约量均不可超疫苗可用量。
  2. 疫苗最大年龄:如果一种疫苗有最大年龄限制,不能将它分配给接种第一针时,年龄已超过限制的接种者;以确保为人们提供适合其年龄的疫苗类型。例如,不要为 75 岁的人分配最高年龄限制为 65 岁的疫苗预约。
  3. 所需的疫苗类型限制:限制所使用的疫苗类型。例如,第二剂疫苗必须与第一剂的疫苗类型相同。
  4. 准备日期:确保在指定日期或之后接种疫苗。例如,如果一个人接受了第二剂疫苗,请不要在针对特定疫苗类型的建议最早可能的疫苗接种日期之前(例如第一剂疫苗后 26 天)进行接种。
  5. 截止日期:在指定日期或之前接种疫苗。例如,如果一个人接受了第二剂疫苗,需要在特定疫苗的推荐疫苗接种最终到期日之前接种(例如第一剂疫苗后三个月)。
  6. 限制最大旅行距离:将每个人分配到离他们住所最近的一组疫苗接种中心之一。这通常是三个中心之一。此限制是根据旅行时间而非距离计算的,因此居住在城市地区的人通常比农村人的最大旅行距离更短。
  • 当没有足够的能力为每个人分配约会时,中等约束决定谁没有得到约会。这称为过度约束规划:
  1. 安排第二剂疫苗接种:除非理想的接种日期不在计划时间段内,否则不要遗漏任何未分配的第二剂疫苗接种预约。
  2. 根据优先级安排人员:每个人都有一个优先级。通常是以年龄作为参考,但如果是医疗工作者,则可能会更高。只留下优先级最低的人未分配,他们将在下一次规划中被分配。此约束比先前的(第二剂约束)更低,因为第二剂接种的重要性高。
  • 不违反坏软约束(除非逼不得已):
  1. 首选的疫苗接种中心:如果某人有首选疫苗接种中心,则将其分配到该中心。
  2. 距离:最小化一个人必须前往指定的疫苗接种中心的距离。
  3. 理想日期:尽可能在指定日期或接近指定日期接种疫苗。例如,如果某人接受了第二剂疫苗,请在特定疫苗的理想日期(例如第一剂疫苗后 28 天)进行接种。注意:这个约束应比距离约束要软,以避免将人们到处分配全国各地,只是为了离他们的理想约会更近一天。即为了更接近理想接种一天时间,而将一个人分配到跨省接种,是不可取的。
  4. 优先级:越接近(第二针)理想接种时间的人员的优先越高。此约束级别比距离约束更低,以避免将人们到处分配全国各地,因为他们只是接近理相接种日期,并未到达该日期。该约束也比理想的日期约束更低,因为第二剂的优先级高于优先级。

  在相同的约束类型里,有些硬约束与其它硬约束进行对比里,需要一定的加权。软约束亦然。然而,无论它们各自的权重如何,在进行评分运算时,硬约束高于中等约束,中等约束高于软约束。当排队预约的人多于预约可分配量时,所以你需要做出艰难的决定。必须首先分配第二剂预约,以避免形成后续时间里,这些第二剂的预约积累,对后面的工作形成压力。然后才根据优先级分配预约。每个人都以他们的年龄作为优先级,这样可以令老年人优先于年轻人接种。之后,处于特定优先级组中的人会获得几百个额外优先级积分,以提高他们的优先级,积分多少取决于他们组的优先级。例如,护士可能会获得额外的 1000 分;在此基础上,年长护士又优先于年轻护士,年轻护士优先于非护士。下表说明了这个概念:

年龄工作优先级
60 护士 1060
33 护士 1033
71 退休 71
52 办公室职员 53

表 1. 优先等级表

(译者:第一篇先完成该安全的业务分配部分,在第二篇将会翻译其技术实现部分,敬请期待)

 

 

 

本系列文章在公众号不定时连载,请关注公众号(让APS成为可能)及时接收,二维码:

 


如需了解更多关于Optaplanner的应用,请发电邮致:kentbill@gmail.com
或到讨论组发表你的意见:
若有需要可添加本人微信(13631823503)或QQ(12977379)实时沟通,但因本人日常工作繁忙,通过微信,QQ等工具可能无法深入沟通,较复杂的问题,建议以邮件或讨论组方式提出。(讨论组属于google邮件列表,国内网络可能较难访问,需自行解决)

posted on 2022-04-19 10:56  kentzhang  阅读(174)  评论(0编辑  收藏  举报