在Devoxx演讲日程安排中,Timefold编写的代码超越了ChatGPT提供的解决方案

Stephan Janssen 与 Geoffrey de Smet 探讨 ChatGPT 与 Timefold 在会议日程安排中的应用

背景

Stephan Janssen,Java Champion 和 Devoxx 创始人,尝试使用 ChatGPT 来生成完美的会议日程。他成功为一天的活动生成了可行的日程,但无法为整个五天的会议提供完整的解决方案。Geoffrey de Smet,Timefold(前身为 OptaPlanner)的 CTO 和创始人,指出 ChatGPT 在处理软约束方面不如专门的规划库有效。

问题的复杂性

会议日程安排问题非常复杂:210 个演讲可以分配到 40 个时间段和 10 个房间中,每个演讲有 400 种可能性,总共产生 10^277 种组合。de Smet 称“找到理想的日程比大海捞针还难”。由于这是一个 NP 难问题,即使算法减少了 99% 的搜索空间,仍然需要处理 10^279 种组合,这在现有计算能力下是不可能完成的。

InfoQ 的采访内容

为什么日程安排问题如此难以解决?

Stephan Janssen 指出,安排 210 个提案时,首先要考虑演讲者的可用性以避免冲突。其次,为了避免相似主题在同一时间进行,需要提供多样化的体验。理想情况下,应该从入门级演讲开始,逐步过渡到与之前主题相关的更高级演讲。此外,最受欢迎的演讲应安排在较大的房间。

ChatGPT 能否提供合适的解决方案?

Janssen 表示,目前无法通过一次性提示让 ChatGPT 生成最佳日程,但它可以生成日程安排的代码,成功为一天的会议生成了可行日程。Geoffrey de Smet 补充说,Janssen 的方法生成了生产求解器的模型,并为一天的会议找到了可行解决方案。虽然这种方法有潜力,但生成的模型目前无法扩展,尤其是在处理软约束时。两人打赌,看看生成式 AI 方法是否能击败手写模型,目前手写模型显著领先。

Timefold 如何解决这个问题?

De Smet 解释,Timefold 接受代码形式的约束,而其他生产求解器通常需要数学方程作为输入。Timefold 使用函数式编程来处理约束,这使得编写和维护新约束更加容易。

Timefold 的硬件需求是什么?

De Smet 表示,Timefold 是 CPU 密集型的,求解过程中没有 I/O 操作,大多数情况下使用不到 2GB 内存。在生产环境中,通常使用 4 个 CPU,每个数据集花费 30 分钟。大型企业每晚运行 100 个数据集,跨 5 小时,使用 40 个 CPU。

目前有哪些开源选项?

Janssen 提到,Google 的 OR-Tools 和 Microsoft 的 Z3-Prover 等开源库主要支持 Python 或 C++。De Smet 补充说,Java 和 Kotlin 中有一些库如 Choco-Solver、JaCoP 和 JOpt,Python 中也有 CPLEX 和 COIN-OR 等求解器。

结论

尽管 LLMs 可以帮助开发者通过部分生成模型来找到更简单的解决方案,但目前还无法完全回答“如何为会议安排演讲”的问题。经验和使用 AI 助手等工具将提供最有效的解决方案,无论是从结果还是资源利用的角度来看。

阅读 25
0 条评论