资讯动态

highspy 完整指南:四步在 Python 中解出 LP、MIP、QP

发布时间:2026/10/23 6:00:47 来源:尧图企业网站定制
highspy 完整指南四步在 Python 中解出 LP、MIP、QP【免费下载链接】HiGHSLinear optimization software项目地址: https://gitcode.com/GitHub_Trending/hi/HiGHShighspy 是开源数学规划求解器 HiGHS 的 Python 接口可在 Python 脚本里直接求解 LP、MIP 与 QP 模型适合想把优化能力嵌进自己项目、又不想碰 C 的开发者。一条 pip 命令装好 HiGHS 的 Python 求解环境HiGHS 主体是 C 工程用 highspy 时则不必进入编译链pip install highspypip 会顺带装齐 numpy 依赖不用下载头文件、手动链接求解库或折腾 CMake。装完import highspy即可开工接口命名与 C 版本基本一一对应查资料时两边文档可以互通。建模只要四步从 Highs() 到 getInfo() 拿到最优解核心用法是固定四步Highs()建实例addVars()加变量、addRows()加约束run()求解getModelStatus()与getInfo()读出模型状态和目标值。以最小化 x1约束 -x0x1 ≥ 2 且 x0x1 ≥ 0为例import numpy as np import highspy inf highspy.kHighsInf h highspy.Highs() h.addVars(2, np.array([-inf, -inf]), np.array([inf, inf])) # 2 个变量,范围自由 h.changeColsCost(2, np.array([0, 1]), np.array([0, 1], dtypenp.double)) # 目标系数 (0, 1) h.addRows(2, np.array([2, 0]), np.array([inf, inf]), 4, # -x0x12, x0x10 np.array([0, 2]), np.array([0, 1, 0, 1]), np.array([-1, 1, 1, 1], dtypenp.double)) h.run() info h.getInfo() print(h.modelStatusToString(h.getModelStatus()), info.objective_function_value)addRows()用压缩稀疏格式接收约束矩阵starts 指向每条约束的起点indices 与 value 存变量列号和系数。上面只是两条约束真实项目里模型可能有几十万行写法不变。已有 MPS 文件用 readModel() 直接加载求解模型已经以 MPS 格式给出时不必逐行逐列重新搭建h highspy.Highs() h.readModel(check/instances/avgas.mps) # 仓库自带算例 h.run() lp h.getLp() print(lp.num_col_, lp.num_row_, h.getNumNz()) # 变量数、约束数、非零元数路径 check/instances/avgas.mps 是仓库里真实存在的实例官方示例脚本也从头到尾演示了读取—求解—取模型信息这一整套流程。用回调和 options 接管求解过程Highs 暴露了两个干预求解的入口。其一是回调setCallback()注册自定义函数再startCallback()打开 kCallbackLogging 开关求解日志就会直接流经你的代码可以顺手做进度展示或在中途做出干预。其二是 options先getOptions()取出当前配置修改字段后再passOptions()生效例如options h.getOptions() options.presolve off # 关闭预处理,调试时复现原始模型 options.solver ipm # 改用内点法 h.passOptions(options) h.run()presolve 是求解前化简模型的预处理关掉它便于排查问题solver ipm把引擎换成内点法对部分大规模稠密问题比单纯形法更稳。两个落地场景与三个提速旋钮应用端最常见的是两类生产计划——把原料用量、工序产能排进一组线性约束目标函数是总成本金融组合优化——把风险与收益写成二次目标交给 QP 求平衡点。两者流程都是建模、求解、读结果差别只在规模。提速有三个抓手模型保持压缩稀疏格式百万级变量的矩阵不撑爆内存上一轮算出的基或可行解可以当热启动后续求解通常快得多参数别照抄固定模板按模型结构挑引擎和数值容差单纯形与内点引擎怎么取舍可参考官方文档的求解器介绍。从几十个变量的小 LP 到百万行的 MIPhighspy 的接口始终是建模、求解、读结果这几步。跑一条pip install highspy开始写你的第一个优化脚本。【免费下载链接】HiGHSLinear optimization software项目地址: https://gitcode.com/GitHub_Trending/hi/HiGHS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑