HiGHS 求解器文档
HiGHS 是开源的高性能线性规划(LP)和混合整数规划(MIP)求解器,由英国爱丁堡大学等机构主导开发,基于 MIT 开源许可证,可免费用于学术和商业用途。
引言
HiGHS 是一款面向大规模 LP 和 MIP 的高性能开源求解器。它集成了单纯形法(Simplex)、内点法(Interior Point Method)以及 MIP 分支定界(Branch-and-Bound)算法。
主要特点:
- 快速:经过深度优化的数值线性代数内核和稀疏矩阵处理技术
- 开源免费:MIT 许可证,无任何使用限制
- 支持 LP 和 MIP:线性规划和混合整数线性规划
- 可大规模并行:内点法和 MIP 均支持多线程
- GAMS 集成:通过 GAMS 求解器接口无缝集成
使用方法
在 GAMS 中调用 HiGHS:
OPTION LP = HIGHS;
OPTION MIP = HIGHS;
设置完成后,GAMS 会在 SOLVE 语句中自动调用 HiGHS 求解。
MODEL transport /ALL/;
OPTION LP = HIGHS;
SOLVE transport USING LP MINIMIZING z;
选项规格
GAMS/HiGHS 支持 GAMS 标准参数:ResLim(时间限制)、IterLim(迭代限制)、OptCA(绝对间隙)、OptCR(相对间隙)。
选项可通过 HiGHS 选项文件(highs.opt)指定,使用 OPTION HIGHS = "选项名=值" 进行设置。
highs.opt 文件示例:
parallel on
time_limit 3600
solver ipm
presolve on
output_level 1
MIP 部分求解
HiGHS 可以基于 GAMS 提供的初始变量值尝试为 MIP 寻找可行解。通过 GAMS 选项 partialsol 控制:
- 0:不传递任何变量值
- 1:传递所有二值和整数变量值,锁定后寻找可行解
- 2(默认):如果解可行,传递所有变量值尝试改进;否则传递整数变量值后求解
- 3:传递所有变量值,让 HiGHS 尝试寻找改进的解
- 4:传递所有二值和整数变量值(不锁定),依据这些值寻找可行解
不可约不可行子集(IIS)
如果 LP 不可行,HiGHS 能够识别导致不可行的约束和变量子集(不可约不可行子集,IIS)。通过 GAMS 选项 iis 启用:
- 0(默认):不计算 IIS
- 1:求解后若不可行则计算 IIS
- 2:不求解原问题直接计算 IIS
启用后,HiGHS 会在输出中标识导致不可行的约束和变量,帮助用户诊断模型问题。
选项列表
HiGHS 提供了丰富的求解控制选项。常见选项包括:
| 选项名 | 描述 | 默认值 |
| solver | 求解算法:simplex(单纯形法)、ipm(内点法)、choose(自动选择) | choose |
| presolve | 启用/关闭预处理(on/off) | on |
| parallel | 启用/关闭并行计算(on/off) | off |
| time_limit | 求解时间上限(秒) | 无限制 |
| output_level | 输出详细程度(0=无, 1=简要, 2=详细, 3=极详细) | 1 |
| mip_gap | MIP 相对最优性间隙 | 0.0001 |
| mip_abs_gap | MIP 绝对最优性间隙 | GAMS optca |
| dual_feasibility_tolerance | 对偶可行性容差 | 1e-07 |
| ipm_optimality_tolerance | 内点法最优性容差 | 1e-08 |
| ipm_iteration_limit | 内点法迭代限制 | GAMS iterlim |
| simplex_strategy | 单纯形策略(0=原始, 1=对偶, 4=自动) | 4 |
| iis | IIS 计算(0=不计算, 1=求解后计算, 2=不求解计算) | 0 |
| infinite_bound | 视为无穷大的约束边界阈值 | 1e+20 |
| large_matrix_value | 视为无穷大的矩阵元素阈值 | 1e+15 |
| use_implied_bounds | 是否使用隐含边界 | 0 |
更多选项及详细说明请参考 GAMS 官方 HiGHS 文档。
|