HiGHS 线性规划求解器使用指南:安装、求解 LP、QP 与 MIP
【免费下载链接】HiGHSLinear optimization software项目地址: https://gitcode.com/GitHub_Trending/hi/HiGHS
HiGHS 是一款以 C++ 为主的开源线性规划求解器,能够求解线性规划(LP)、凸二次规划(QP)和混合整数规划(MIP)三类问题。
它同时提供串行与并行两种求解模式,支持直接读取 MPS 和 LP 模型文件,可以从 Python、C、C#、Fortran 等语言调用,适合变量与约束达到数千乃至上万规模的优化任务。
项目定位
HiGHS 定位于高性能数学规划求解器,面向大规模稀疏线性优化问题,采用 MIT 许可证发布。它的目标用户包括运筹与算法工程师、工业调度与物流金融等领域的应用开发者,以及从事优化研究的教学科研人员。
核心能力
- 多模型覆盖:一个引擎支持 LP、凸 QP(目标 Hessian 矩阵 Q 需半正定)与 MIP。问题类型混杂时无需切换工具。
- 多种求解算法:默认原始对偶修正单纯形法,稳定性好;另提供 HiPO、IPX 内点法应对大规模稀疏 LP,QP 走主动集法。
- 分支定界 MIP:内置 MIP 求解器,集成预处理、割平面分离与启发式搜索;v1.15 起首次提供并行分支定界版本。
- 多语言接口:除命令行外,提供 Python(highspy)、C、C#、Fortran 接口,C# 可通过 NuGet 直接使用。
- 跨平台构建:在 Linux、macOS、Windows 上开发测试,CMake 构建且不依赖第三方库。
适用场景
生产与运营调度
- 建立生产计划与产能平衡模型
- 最小化原料与加工成本
- 满足订单交期与设备约束
- 对比多种备选生产方案
物流与运输
- 规划车辆配送路线
- 处理载重与时间窗约束
- 协调多仓库出车顺序
- 优化货物装载组合
投资组合与金融
- 构建均值-方差模型(凸 QP)
- 设置风险与仓位约束
- 将交易成本计入目标函数
- 比较不同风险偏好下的收益
能源系统调度
- 安排发电机组出力组合
- 平滑可再生能源出力波动
- 规划储能充放电时段
- 压降单位发电成本
快速上手:HiGHS 安装步骤与第一个求解
主流路线是 Python:highspy已发布在 PyPI 上,会自动带上 numpy 依赖,一条命令完成安装。
pip install highspy最小 LP 示例(参照 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)已有模型文件时,可直接调用h.readModel("model.mps")读入后求解,不必手工拼装矩阵。如果想要命令行版本,用 CMake 构建即可:先执行cmake -S . -B build,再执行cmake --build build,得到bin/highs可执行文件后,一条highs model.mps就能求解。C# 用户可从 NuGet 安装Highs.Native包;Fortran API 未包含在默认构建里,需要单独处理。
技术要点
- 单纯形法:原始与对偶修正单纯形实现位于 highs/simplex/,对偶单纯形支持并行定价。
- 内点法:HiPO 实现在 highs/ipm/hipdlp/,面向大规模稀疏 LP;同目录族还提供基于 CUDA 的 GPU 版本 cupdlp。
- 分支定界:highs/mip/ 模块整合了分支定界、割平面(modk、no-good 等)与原始启发式;v1.15 首发并行 MIP 求解器。
- 预处理:highs/presolve/ 中的 HPresolve 在求解前做问题化简、变量定界与加强。
- QP 求解器:highs/qpsolver/ 用主动集法处理凸二次规划,支持热启动。
实用建议与常见坑
- 如果 LP 变量与约束数量很大,建议设置
solver=ipm切换到内点法;中小规模问题单纯形法通常更稳。 - 如果求解超出时间预期,建议设置
time_limit,并确认 presolve 处于开启状态(默认 on)。 - 如果需要结果可复现,建议通过
random_seed固定随机种子,避免并行求解带来的差异。 - 如果在 Python 中要用 HiPO 内点法,建议执行
pip install highspy[extras],该附加包包含 HiPO 依赖且为 Apache-2.0 许可。 - 如果 CMake 配置失败,建议确认 CMake 版本不低于 3.15、编译器支持相应 C++ 标准,构建细节见 cmake/README.md。
- 如果不确定命令行参数,建议先运行
bin/highs --help查看帮助,常用项包括--presolve、--solver、--parallel、--threads、--time_limit。
资源与下一步
- docs/src/:官方文档,含安装说明、使用指南、选项定义与各语言接口介绍
- examples/:Python、C、C#、Fortran 多语言示例,含背包、网络流、多目标等应用案例
- check/:测试用例,check/instances/ 内置数十个 MPS 与 LP 格式标准算例
- cmake/README.md:CMake 构建与配置项说明
- CONTRIBUTING.md:贡献指南,适合想参与开发或提交修复的读者
克隆仓库 https://gitcode.com/GitHub_Trending/hi/HiGHS 获取完整源码与测试用例。跑通 examples/minimal.py 这样的最小示例,就能得到你的第一个最优解。
【免费下载链接】HiGHSLinear optimization software项目地址: https://gitcode.com/GitHub_Trending/hi/HiGHS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考