对话式在线排AI课系统

0. 说明

之前用自己建模的方式帮老婆进行过高中复杂排课,支持硬约束和软约束

  • 硬约束:如A老师一定不上星期一上午的课
  • 软约束:如A老师尽量不上星期一上午的课;老师的课尽量连续紧凑等等

当时写过一篇文章进行介绍:https://pangruitao.com/post/4739

通过 OR-Tools 数学建模的方式进行求解。

之前有的时候问题规模很大(各个老师的个性化要求和偏好非常多)。

会用家里台式机跑一晚上去求解(满足硬约束)和优化(进一步找尽量满足软约束的排课方案)。

但整套方案最麻烦的地方是建模,即如何把老师的自然语言需求变成建模代码。

最近几天在 Codex 帮助下,新做了一个在线排课系统,,可以通过直接和AI聊天的方式,把模型建好,然后在我的服务器上求解/优化。

会更方便老婆和其他当老师的朋友使用。顺手也公开出来给更多需要的朋友。

网站链接:https://aischedulab.com/

1. 排课系统介绍

可以跟随AI的指导,一步步通过自然语言聊天的方式去设定排课的需求。

每次设置AI都会理解后进行确认。

如果不对/想修改/想补充,可以随机告诉AI进行调整。

一些复杂的输入也可以带上 excel 或者 截图等等附件,比如几十个老师各自负责哪些课和哪些班的 Excel 表

所有的设置都会展示在右边各个STEP内,包括

STEP1 基本空间

考虑排课的基础空间如:

  • 有多少班(如高中固定班级的排课则主要对象就是班级)
  • 有多少教室(如果需要考虑才考虑,比如大学的排课班级就不重要,教室才重要,且可能需要根据人数考虑不同的大小的教室资源)
  • 有哪些课程
  • 需要考虑哪些天(如周一到周五)
  • 每天需要考虑哪些课时(如早自习、上午四节课、下午四节课、晚自习四节课等等)

如果输入有漏或者有误也没关系,可以随时告诉AI进行调整、补充。即使到后面STEP也可以修改补充

STEP2 基础要求

每个班每周需要上哪些课各自多少节,每个老师负责哪些班的哪些课

这一步通常最格式化,所以可以上传 Excel 之类的,让 AI 快速理解大批量数据。

STEP3 设置一定要做到的个性化约束

接下来可以设置各种个性化约束,如:

  • A老师周一上午不能上课
  • 各个班每天的上下午正课时间内,同科目至多2节
  • 各个班每天的上下午正课时间内,同科如果有多节,必须连堂
  • 早自习只能是英语或者语文

等等

STEP4 设置尽量做到的个性化软需求

由于往往老师的要求比较多,但如果把这些要求全部设置为硬要求会导致无解。

但不考虑老师们的需求又会导致老师工作体验差,或者不满意。

这种情况下则适合把很多要求放到软需求中,如:

  • A老师尽量不上早上第一节和第二节课
  • B老师尽量一周只用来3天(2天没课)
  • 所有老师的课尽量集中,不要早上第一节,同天晚上最后一节,导致在学校呆太久
  • 等等

以及每个优化是可以有一个权重的(满足的必要性),实际建模求解是会最大化总权重。

所以重要的需求权重高一些,次一些的需求权重低一些。

STEP5 计算求解

所有设置完以后就可以运行求解,看看结果,有可能出现:

  1. 最优(当前方案能证明一定是最好的优化结果(总权重分最高))
  2. 可行(所有硬约束都满足,但还没有能在数学上证明权重分最高,当软约束很多的情况下,一般有限时间内很难最优,但相对优的解往往已经很不错了)
  3. 不可行(能证明没有方案能满足目前设定的所有基本设定以及硬约束)
  4. 超时未知(过于复杂,没有在限定时间内找到解,但也没证明无解)

如果超时或者想得到更好的优化结果(更高分),可以设置更高的求解时间重新运行。

STEP6 查看和下载

对于得到了方案的计算结果,可以在线查看和下载方案的 excel

下载时,会默认按高中的排课思路,压缩包会默认包含班级视图(各个班的课表)和老师视图(各个老师的课表)

大学的无固定班,但固定教室的排课方式会有一些区别

2. 其他

网站地址:https://aischedulab.com/

目前支持手机验证登录。

且可以免费使用。

但由于大模型API调用还是有一些成本,如果周对话次数过多会限制一下。如果额外需要可以联系我调整。

以及计算解需要用我的服务器资源。所以做了限时单次20分钟上限(对大部分排课完全足够)。如果需要更长的优化时间也可以联系我。

微信 pangrt

发表评论