如何通过scipy.optimize.linprog禁用highs-ipm求解器的crossover迭代?
回答
是的,你可以通过scipy.optimize.linprog的options参数传递原生HiGHS求解器的配置来禁用crossover,即使scipy官方文档没有明确列出这个参数。
具体来说,linprog允许通过嵌套的highs_options字典传递HiGHS原生参数,这些参数会直接被底层的HiGHS库解析处理。对应独立版HiGHS的--run_crossover参数,你可以在highs_options中设置run_crossover为'off'(或0)来禁用crossover。
代码示例
from scipy.optimize import linprog # 定义简单线性规划问题 c = [-1, -2] A_ub = [[1, 2], [3, 1]] b_ub = [4, 6] # 配置禁用crossover solver_options = { 'highs_options': { 'run_crossover': 'off' } } # 调用求解器 result = linprog(c, A_ub=A_ub, b_ub=b_ub, method='highs-ipm', options=solver_options)
补充说明
run_crossover的可选取值和独立版HiGHS一致:'auto'(默认)、'on'(或1)、'off'(或0),还支持'force'等更细粒度的控制。- 如果需要验证crossover是否被禁用,可以查看求解结果的
message字段,或者开启HiGHS的日志输出(通过添加'log_to_console': True到highs_options),观察日志中是否有crossover相关的执行记录。
内容的提问来源于stack exchange,提问作者rafexiap
相关产品推荐
相关产品推荐

