ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

HiGHS Python 快速教程:1 条命令、3 步写出线性与整数规划求解代码

HiGHS Python 快速教程:1 条命令、3 步写出线性与整数规划求解代码

HiGHS Python 快速教程:1 条命令、3 步写出线性与整数规划求解代码

【免费下载链接】HiGHSLinear optimization software项目地址: https://gitcode.com/GitHub_Trending/hi/HiGHS

想在 Python 里解线性规划(LP)、整数规划(MIP)或二次规划,highspy 就能直接起步。它是 HiGHS 的 Python 接口,几行代码建好模型,一次调用拿到最优解,不用碰底层 C++ 构建环境。

一行装好

pip install highspy

安装时会自动带上 numpy 依赖,PyPI 上提供 Python 3.9 到 3.14 的预编译 wheel,装完即可使用;用 conda-forge 的用户也能找到同名包。

跑起来的第一眼

先建一个两变量的线性规划,用 highspy 提供的数学表达式写法:

import highspy h = highspy.Highs() # 创建 HiGHS 实例 x1 = h.addVariable() # 决策变量 x1(连续、下界为 0) x2 = h.addVariable() # 决策变量 x2 h.addConstr(x1 + 2*x2 <= 80) # 第一条约束 h.addConstr(x1 + 4*x2 <= 120) # 第二条约束 h.maximize(10*x1 + 25*x2) # 声明目标函数并开始求解 print("x1 =", h.val(x1), "x2 =", h.val(x2))

运行后终端会打印两个变量在最优解处的取值(x1 = 40,x2 = 20),对应的最大目标值为 900。更完整的调用流程可以看仓库里的 examples/call_highs_from_python.py 🐍

特性深挖

三种建模方式

除了上面的数学表达式,highspy 还支持把模型写成HighsLp结构体一次性传入,或用矩阵式的addVars/addRows(约束矩阵按压缩列格式填写)。三种写法分别对应快速建模、批量导入数据和性能敏感的场景,按手头数据的形态挑一种即可。

直接从文件读入求解

模型如果已是 MPS 或 LP 文件,readModel()可以直接加载,不必把系数抄进代码。求解后用getSolution()取变量值,getInfo()取目标值、迭代次数等统计量。仓库自带的check/instances/avgas.mps是一个经典的汽油调和模型,拿来做文件读入验证正合适。

回调:在求解过程中插手

求解大型 MIP 时,可以用setCallback()注册回调函数,在目标值达到预设目标、或迭代次数超过阈值时中断搜索。做限时批量计算、或想自定义记录求解过程时,这个机制很实用。

用在哪些场景

  • 生产排产与配料:排产计划、原料配比,仓库里的 avgas 就是这类问题
  • 物流调度:运输成本最小化、仓库选址、车辆路径安排
  • 投资组合:在收益与风险约束下做资产配置
  • 电力调度:机组开停与能量分配,通常搭配整数变量

highspy 把 HiGHS 的单纯形、内点与 MIP 求解器收进一组好调用的方法里,真实业务里可以直接拿去用。参数细节、返回值状态码的完整说明,见 Python 接口文档。

【免费下载链接】HiGHSLinear optimization software项目地址: https://gitcode.com/GitHub_Trending/hi/HiGHS

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进