news 2026/10/23 4:07:22

从一条命令到四类求解器:HiGHS 优化求解器的落地路径

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从一条命令到四类求解器:HiGHS 优化求解器的落地路径

从一条命令到四类求解器:HiGHS 优化求解器的落地路径

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

HiGHS 是一款面向大规模稀疏模型的高性能优化求解器,MIT 协议开源,核心以 C++ 实现。它把线性规划(LP)、混合整数规划(MIP)、凸二次规划(QP)放进同一个接口,并内建内点法、并行求解与 GPU 加速路径,覆盖从脚本原型到生产调用的场景。

数学上,HiGHS 统一处理的问题形式是:

$$ \min \quad \dfrac{1}{2}x^TQx + c^Tx \qquad \textrm{s.t.}~ \quad L \leq Ax \leq U; \quad l \leq x \leq u $$

其中 Q 须半正定;Q 为零时退化为线性规划,部分变量再加整数约束即为 MIP。

四类求解器:LP、MIP、QP 的能力与选型

同一套模型输入,背后由四类算法按规模切换,模型文件本身不用动:

  • 原对偶修正单纯形法:覆盖绝大多数 LP,对偶单纯形支持并行。
  • 内点法(Interior Point Method, IPM):IPX 承担默认 LP 路径;HiPO 是 GPU 加速的内点法,编译时默认不开启。
  • PDLP 一阶法:面向特定稀疏结构的 LP。
  • QP 主动集法与 MIP 分支定界:分别处理二次目标与整数变量。

预处理约简、IIS(最小不可行子集)分析、敏感性分析是内建默认能力;求解器可经--solver选项或选项文件显式指定。

源码三步编译与 Python 包安装

部署分两条路:编译源码,或直接装 Python 包。CMake 构建要求版本不低于 3.15,无第三方依赖,当前版本为 1.15.x:

cmake -S . -B build cmake --build build cd build && ctest

前两条命令产出bin/highs可执行文件与lib/highs库,第三条在 build 目录里做回归验证。需要 C# 或 Fortran 接口时,在配置阶段追加-DCSHARP=ON或-DFORTRAN=ON,并备好对应工具链。

脚本用户装一行即可:

pip install highspy

从源码本地构建可用根目录的pip install .,numpy 依赖会自动补齐。HiPO(GPU 内点法)走独立的构建开关HIPO=ON,Python 侧则通过 highspy 的 extras 额外包提供。

最小可运行示例:CLI 与 highspy 两条路径

用仓库自带实例验证 CLI

最短验证路径是命令行。仓库check/instances/目录存放现成的 MPS 与 LP 测试文件,挑一个直接跑:

bin/highs check/instances/25fv47.mps

HiGHS 读入模型文件即输出求解报告,无需任何建模代码。

highspy 最小调用脚本

Python 示例对应仓库的examples/minimal.py,完整文件仅十余行:

import highspy h = highspy.Highs() x1 = h.addVariable(lb = -h.inf) x2 = h.addVariable(lb = -h.inf) h.addConstrs(x2 - x1 >= 2, x1 + x2 >= 0) h.minimize(x2) h.run() print(h.getInfo().objective_function_value) print(h.getSolution().col_value)

它求解约束 x2 - x1 >= 2、x1 + x2 >= 0 下的 min x2,运行后输出目标值 2.0 与变量取值 [0.0, 2.0]。取目标、变量值与基分别用getInfo()、getSolution()、getBasis();C、C#、Fortran 接口在highs/interfaces/目录。

性能调优与常见报错的排查

症状:在源码目录内构建被直接拒绝

原因:CMake 明确禁止在已存在 CMakeLists.txt 的目录里做源内构建。对策:固定用独立 build 目录做源码外构建,即-B build;若此前误配过,清掉 CMakeCache.txt 与 CMakeFiles 后重新配置。

症状:大规模模型求解慢,或并行未生效

原因:并行由两个独立选项控制——--parallel on打开并行框架,--threads N限定线程上限;另外 LTO(跨模块优化)在静态库与 Debug 模式下默认关闭,会削弱 Release 版速度。对策:--parallel on --threads 8,必要时加--time_limit 300设时限;追求极致速度时显式传CMAKE_INTERPROCEDUTORIAL_OPTIMIZATION=ON。

症状:模型报 infeasible(不可行)

原因:部分约束互相冲突,约束多时逐条排查不现实。对策:启用 IIS 功能求最小不可行子集,只在该子集内修正;模型含二次项时,先核对 Q 矩阵半正定性与变量边界方向,再动数值精度参数。完整选项定义见 docs/src/options/definitions.md,求解器细节见 docs/src/solvers.md。

延伸入口:文档、示例与测试实例

仓库内三类入口对应三种深入程度:

  • docs/src/:文档源文件,安装、选项、并行各有一章,可直接对照排障。
  • examples/:各语言调用样例,minimal.py是最短入口。
  • check/instances/:现成测试模型,可当回归数据直接跑批。

下一步建议先复现minimal.py,再把自己项目里的一个真实模型写成 MPS,用 highs 命令行做基线对比。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 4:06:37

【日拱一卒,三省吾身】2024.12.14随想

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/23 4:04:07

Codex-X 故障转移全解析:3个开关让请求熬过供应商故障

Codex-X 故障转移全解析:3个开关让请求熬过供应商故障 【免费下载链接】Codex-X OpenAI Codex 桌面端/CLI 的可视化管理工具,具有Provider/API 切换、会话同步、提示词注入、Skills/MCP 管理、TOML 配置可视化的跨平台工具。 项目地址: https://gitcod…

作者头像 李华