Julia中的约束编程

JuliaConstraints 是一个支持 Julia 中约束编程包的组织。虽然它独立于 JuMP.jl,但它旨在随着时间的推移与 JuMP.jl 紧密集成。有关 Julia 中基本约束编程的详细概述,请查看我们来自 JuliaCon 2021 的视频 用 JuliaCon(straints) 为你的生活设定一些约束

JuliaConstraints 的总体目标

通常,解决问题涉及采取两个行动:建模和求解。通常,建模的便捷性和求解的效率之间存在权衡。因此,人们通常需要成为专家才能高效地建模和求解优化问题。我们研究自动化和构建优化框架的工具的理论基础和实现。一般用户应该专注于实际问题的模型,而不管可用的软件或硬件是什么。此外,我们旨在鼓励技术用户使用我们的工具来提高他们的求解效率。

导师: Jean-Francois Baffier (azzaare@github)

基于约束编程的 Kumi Kumi Slope 设计

该项目处于利用 Julia 编程语言的功能为 Kumi Kumi Slope 游戏开发关卡设计工具的最前沿。它优先考虑为用户创建交互式图形用户界面 (GUI),以便用户积极参与设计优化。虽然 (GL)Makie.jl 是此 GUI 的有力候选者,但该项目仍然对其他创新解决方案(例如基于 Genie.jl 的界面)持开放态度,以适应不同的开发偏好。本计划的关键在于处理任意域、为多目标优化生成解决方案池以及提供游戏设计的可视化输出。这项对约束编程 (CP) 的探索为设计效率奠定了基础,同时涵盖了用户定义的美学目标,并标志着在建筑设计中进行人机协作的开创性一步。

核心目标

  1. 多目标优化和任意域 (100-150 小时)

    • 多目标优化框架:建立一个强大的框架来同时处理多个目标,从效率和紧凑性到可玩性和美学。

    • 支持任意域:设计一种方法来定义和操作 CP 模型中的任意域,从而实现各种组件类型和设计约束。

  2. 解决方案池和交互式 GUI 开发 (150-200 小时)

    • 解决方案池的生成:设计算法来创建各种可行解决方案池,以满足不同的优化标准和用户偏好,培养在设计中进行人机协作的细致入微的方法。

    • 交互式 GUI 开发:使用 (GL)Makie.jl 或替代工具开始开发交互式 GUI,以促进 Kumi Kumi Slope 设计的可视化和操作,使用户能够在一个以用户为中心的环境中探索、选择和改进设计。

  3. 可视化输出和用户交互 (100-150 小时)

    • 设计的可视化表示:确保所有潜在解决方案都可以在 GUI 中以可视化方式表示,增强用户评估和对比不同设计的能力。

    • 设计改进的反馈机制:在 GUI 中集成反馈循环,允许用户交互来细化解决方案池,使其更符合用户偏好,并体现项目对人机协作设计的承诺。

本提案旨在在 GSoC 期间交付一个重要且有影响力的工具。它鼓励候选人深入研究特别感兴趣的领域,并在项目重点方面提供灵活性。通过强调诸如交互式 GUI 的开发以及处理任意域和多目标优化的基础工作的现实目标,该项目为未来游戏设计方面的进步树立了先例,并为需要复杂设计和优化工具的更广泛应用打开了大门。