OptiCL:基于数据驱动的混合整数优化框架
项目介绍
OptiCL 是一个端到端的混合整数优化(MIO)框架,专注于通过数据驱动的学习约束来优化决策。在实际应用中,我们常常面临一个挑战:如何在没有任何已知函数关系的情况下,根据某些目标和约束来优化决策。OptiCL 通过机器学习技术学习预测模型,并将这些模型嵌入到更大的 MIO 公式中,从而实现决策的优化。
OptiCL 的完整方法论在 我们的论文 中有详细介绍,题为“Mixed-Integer Optimization with Constraint Learning”。
项目技术分析
OptiCL 的核心技术在于其独特的优化流程:
- 模型训练与选择:使用交叉验证技术,从训练数据中学习预测模型。
- 可行决策空间的高效表征:通过观察数据的凸包来表征可行决策空间,即“信任区域”。
- 模型嵌入与优化:将学习到的模型和信任区域嵌入到 MIO 公式中,并使用 Pyomo 支持的 MIO 求解器(如 Gurobi)进行求解。
OptiCL 不需要手动指定训练好的 ML 模型,但用户可以选择性地限制在选择管道中考虑的模型类型。此外,OptiCL 还提供了对底层训练模型的透明访问,允许外部评估预测模型。
项目及技术应用场景
OptiCL 适用于多种需要混合整数优化的场景,特别是在以下情况下:
- 食品篮优化:例如,世界粮食计划署(WFP)的食品篮优化问题,通过 OptiCL 可以有效地优化食品选择,确保营养均衡的同时控制成本。
- 供应链优化:在供应链管理中,OptiCL 可以帮助企业优化库存、运输和生产计划,降低成本并提高效率。
- 金融决策优化:在金融领域,OptiCL 可以用于投资组合优化、风险管理和资本配置等决策问题。
项目特点
OptiCL 具有以下显著特点:
- 端到端优化:从数据收集、模型训练到最终的优化决策,OptiCL 提供了一站式的解决方案。
- 数据驱动:通过机器学习技术自动学习约束条件,减少了对领域知识的依赖。
- 灵活性与透明性:用户可以选择性地限制模型类型,并且可以访问和评估底层训练模型。
- 高效性:通过凸包技术高效表征可行决策空间,加速优化过程。
如何使用 OptiCL
你可以通过克隆仓库并在仓库的主目录下运行 pip install . 来本地安装 OptiCL 包。安装完成后,你可以在 Python 中加载 opticl,并通过示例笔记本了解具体的使用方法。
示例与案例研究
OptiCL 提供了三个详细的示例笔记本,涵盖了从食品篮优化到模型验证的多个应用场景:
- 食品篮优化案例研究:展示了如何训练和选择单个学习结果的模型,定义具有已知目标和约束的概念模型,并使用附加的学习约束解决 MIO 问题。
- 通用管道概述:演示了管道的通用功能,包括为多个结果训练和嵌入模型的过程,将每个结果指定为约束或目标项,以及结合上下文特征和领域驱动约束。
- 模型验证:展示了单个模型的训练和嵌入,并比较了 sklearn 预测与 MIO 预测,以验证 MIO 嵌入。分类笔记本还详细介绍了如何在二分类设置中线性化约束。
联系我们
OptiCL 正在积极开发中,我们欢迎任何问题或建议。请在 Github 上提交问题,或通过电子邮件联系我们:d.maragno@uva.nl 和 hwiberg@mit.edu。
引用
如果你使用了 OptiCL,请引用我们的软件:
@misc{OptiCL,
author = "Donato Maragno and Holly Wiberg",
title = "OptiCL: Mixed-integer optimization with constraint learning",
year = 2021,
url = "https://github.com/hwiberg/OptiCL/"
}
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



