HiGHS完整指南用开源线性优化求解器快速求解线性、二次与整数规划【免费下载链接】HiGHSLinear optimization software项目地址: https://gitcode.com/GitHub_Trending/hi/HiGHS解一个线性规划非得申请许可证、装一套庞大的商业套件吗HiGHS 是 MIT 许可证、完全免费的开源线性优化求解器线性规划、混合整数规划、凸二次规划一个包全搞定pip 装一行、一分钟开解。 30秒快跑6行代码解出第一个LP让开源线性优化求解器 HiGHS 跑起来的最短路径是一条 pip 命令安装它的 Python 包 highspynumpy 会一并装好pip install highspy。下面 6 行代码就能解一个两变量 LP取自仓库的 examples/minimal.pyimport 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) # 目标最小化 x2 h.run() # 求解 print(h.getObjectiveValue()) # 输出最优目标值习惯命令行的话源码构建后会得到highs可执行文件两条命令解决模型文件# 源码构建只需 cmake -S . -B build cmake --build build highs check/instances/avgas.mps --presolveon --time_limit60 一个求解器接住的三类问题这个开源线性优化求解器覆盖三类模型run()一次调用背后会自动派发到对应引擎LP 线性规划原始/对偶修正单纯形法适合中小规模问题沿约束多面体顶点走稳定大规模稀疏问题可切solveripmIPX 内点法或hipo为十万行量级实例设计。MIP 混合整数规划分支定界 割平面 启发式搜索v1.15 起提供并行 MIPparallelon让节点搜索跑满多核。凸 QP 二次规划主动集法求解要求目标里的 Hessian 矩阵半正定保证是凸问题。配套工具箱presolve 预处理——把能直接推导的部分先算掉、缩小问题规模IIS 在不可行时定位最小冲突约束集合ranging 敏感性分析——约束右端项动 1 个单位目标会怎么变字典序多目标优化。内核是 C无第三方依赖Linux/macOS/Windows 都能跑。️ 真实场景走一遍读模型文件与求解背包整数规划真实场景走一遍先看最常见的入口模型文件已经在手。HiGHS 支持.mps和.lp两种格式按扩展名自动识别。拿仓库自带的 check/instances/avgas.mps 为例一个 8 变量 11 约束的汽油调配经典题import highspy h highspy.Highs() h.readModel(check/instances/avgas.mps) # 按扩展名自动识别 MPS h.run() # 预处理 默认引擎求解 print(h.getModelStatus()) # 模型状态kOptimal 即最优 print(h.getInfo().objective_function_value) # 输出最优目标值场景二纯 Python 建整数模型。背包问题5 件物品、重量 [4,3,1,5,4]、利润 [8,5,3,11,7]、容量 11。用addBinaries一行建出 0-1 变量import highspy h highspy.Highs() h.silent() # 关闭日志输出 x h.addBinaries(5) # 5 个 0-1 变量选或不选 h.addConstr((x * [4, 3, 1, 5, 4]).sum() 11) # 重量约束 h.maximize((x * [8, 5, 3, 11, 7]).sum()) # 利润最大 h.run() print(h.getObjectiveValue()) # 最优利润 22 print(h.vals(x)) # 选法 [1, 0, 1, 1, 0]场景三图论问题挂上 networkx。examples/network_flow.py 把每条边变成一个 0-1 变量、加流量守恒约束5 条边的图里几行代码就找出 A→D 的最短路 A-C-D代价 2.5。⚙️ 开源线性优化求解器的坑与参数速查新手用这个开源线性优化求解器第一周最常踩的坑有 4 个按「现象 → 原因 → 解法」排模型被判不可行但模型明明有解多半是约束互相矛盾。别肉眼找调getIis()输出最小不可行子集IIS直接指出冲突的那几行哪个变量。大稀疏 LP 单纯形迭代太久默认引擎选择偏保守且presolve默认值是 choose 而非强制开。改solveripm走 IPX 内点法十万行量级实例内点法通常更快预处理记得保持开启。MIP 分支定界半天不收敛time_limit卡上限兜底把mip_rel_gap放到 1e-3 接受近似最优大 MIP 开parallelon多线程v1.15 并行 MIP。同一模型两次运行结果对不上部分启发式内部用随机数random_seed不设就是随机的。固定一个种子值即可复现如 examples/branch-and-price.py 里random_seed100。 深入文档、示例与测试用例的路径导航示例跑通之后用这几条路径做深入导航docs/src/guide/basic.md定义模型 → 求解 → 提取结果的三段式基础流程docs/src/guide/advanced.md热启动、回调等进阶用法docs/src/options/definitions.md全部参数定义presolve、solver、time_limit 等examples/Python/C/C#/Fortran 示例含背包、网络流、多目标、branch-and-pricecheck/instances/90 来个测试问题从 8 变量的 avgas.mps 到 egout.mps 这类经典 MIPhighs/interfaces/highs_c_api.hC 接口头文件其他语言接口同目录check/sample_options_file选项文件写法示例HiGHS 默认参数开箱即用碰到性能问题先查参数列表而不是重写模型。下一步把上面 9 行背包代码里的数字换成你自己的分配问题跑起来。【免费下载链接】HiGHSLinear optimization software项目地址: https://gitcode.com/GitHub_Trending/hi/HiGHS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考