HiGHS 求解器实战手册:从 CMake 构建到参数调优

发布时间:2026/10/23 6:04:21
HiGHS 求解器实战手册:从 CMake 构建到参数调优
HiGHS 求解器实战手册从 CMake 构建到参数调优【免费下载链接】HiGHSLinear optimization software项目地址: https://gitcode.com/GitHub_Trending/hi/HiGHSHiGHS 求解器是一个开源的线性优化软件包用来求解线性规划LP、凸二次规划QP和混合整数规划MIP。它主要用 C 编写MIT 许可无第三方依赖在 Linux、macOS、Windows 上均可构建。适合做运筹学建模、供应链/排产/调参工具或想给项目嵌入一个不拖泥带水的求解内核的开发者。它适合解决什么问题HiGHS 针对的是标准稀疏优化问题形式$$\min \frac{1}{2}x^TQx c^Tx \quad \text{s.t.} \quad L \le Ax \le U,; l \le x \le u$$要求 Q 半正定Q 为零矩阵时就是普通 LP再要求部分变量取整数值则构成 MIP。它的定位是大而稀疏的模型——约束和变量达到数十万量级时依然有竞争力而不是追求小问题的花哨功能。最短上手路径HiGHS 安装步骤与构建验证源码构建只需 CMake 3.15 以上和一个 C11 编译器。在项目根目录执行git clone https://gitcode.com/GitHub_Trending/hi/HiGHS cd HiGHS cmake -S . -B build cmake --build build # 产出 build/bin/highs 与 build/lib/highs ctest # 在 build 目录内运行全绿即编译成功Windows 下ctest需要加-C Release。不想编译的 Python 用户一条命令即可装上highspy包会自动带上 numpypip install highspy构建细节和可选开关Fortran 接口、.NET 包等见 cmake/README.md。先跑通一个最小例子求解一个 MPS 文件构建完成后用仓库自带的测试实例直接验证命令行为主MPS 与 LP 格式都支持build/bin/highs check/instances/afiro.mps # 一个经典小型 LP 测试模型终端会依次输出预处理、求解器迭代、最优目标值与求解耗时。想换成 Python 接口最小 LP 长这样addRows用稀疏的 starts/indices/values 三元组描述约束矩阵 Aimport highspy import numpy as np h highspy.Highs() h.addVars(2, np.array([-np.inf, -np.inf]), np.array([np.inf, np.inf])) h.changeColsCost(2, np.array([0, 1]), np.array([0, 1], dtypenp.double)) h.addRows(2, np.array([2, 0], dtypenp.double), np.array([np.inf, np.inf], dtypenp.double), 4, np.array([0, 2]), np.array([0, 1, 0, 1]), np.array([-1, 1, 1, 1], dtypenp.double)) h.run() print(h.getModelStatus(), h.getInfo().objective_function_value)更完整的版本含打印基状态、单纯形迭代次数在 examples/call_highs_from_python_highspy.pyC/C#/Fortran 的调用示例同目录下都有。能力与边界LP原/对偶修正单纯形法默认走对偶鲁棒性更好内点法有两套——串行 IPX 与并行 HiPO一阶 PDLPcuPDLP-C 与 HiPDLP。QP主动集法QP 默认加 HiPO 内点法。MIPbranch-and-cut 框架含割生成、原对偶启发式、冲突分析等组件。语言接口C、C、Pythonhighspy、C#NuGet 包Highs.Native、Fortran入口文件在 highs/interfaces/。附加能力预处理与后处理、不可行子系统IIS分析、多目标、敏感性分析ranging、求解回调。边界说清楚它不处理非凸 QP求解时会报错终止PDLP 类求解器上 GPU 需要 NVIDIA 硬件纯 CPU 环境不建议选它MIP 求解器目前以单线程为主。进阶HiGHS 参数调优与提速手段 ⚙️选项文件命令行参数之外几乎所有选项都可写进文本文件批量覆盖highs --options_file my_options.txt --time_limit 60 check/instances/afiro.mps原因大规模模型动辄调几十个参数逐个敲命令行既慢又难复现。完整选项清单见 docs/src/options/definitions.md。线程控制--parallel on、--threads N0 表示自动。原因默认自动探测线程数在多租户机器上容易和别人抢核显式指定更可控。按问题规模选求解器--solver simplex|ipm或选项里指定ipx/hipo。原因小规模 LP 上 IPX 常更快问题变大后 HiPO 的优势可达一个数量级以上依据 docs/src/solvers.md。关掉 crossover内点法默认要跑交叉步骤输出顶点基解这可能很贵只要非基解就用--run_crossover off。排障速查cmake 直接报错→ 版本低于 3.15 → 升级 CMake 或改用官方预编译二进制。报 You cannot build in a source directory→ 在含CMakeLists.txt的目录里做了 in-source 构建 → 严格按cmake -S . -B build输出到独立目录见 cmake/README.md。Windows 上ctest失败→ Debug/Release 混用 → 用ctest -C Release或全程--config Release构建。求解结果显示不可行不知哪行约束冲突→ 模型本身无可行解 → 开启 IIS 分析定位最小冲突集说明见 highs/lp_data/Iis.md。QP 求解中途报错终止→ Hessian 非半正定 → 检查 Q 的对角与特征值HiGHS 只保证凸 QP。延伸导航文档源码含安装、求解器、回调、并行等章节docs/src/各语言调用示例examples/测试实例MPS/LP 模型文件check/instances/CMake 构建选项说明cmake/README.md建议先用命令行跑一个 MPS 文件、看一遍完整求解日志再进 Python 接口把它接进自己的工具链 【免费下载链接】HiGHSLinear optimization software项目地址: https://gitcode.com/GitHub_Trending/hi/HiGHS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考