Gurobi求解器参数

gp.setParam("LogToConsole", 0)

控制 日志是否输出到控制台

  • 0:不在控制台打印日志(常用于跑批、服务器后台)

  • 1:打印到控制台(默认通常是 1)

不影响写文件日志(LogFile),只管"屏幕上是否刷"。


m.Params.Heuristics

控制 **启发式(heuristics)**投入力度(主要影响 MIP)。

  • 范围通常 0.0 ~ 1.0(可以更大但一般不建议乱调)

  • 0:基本禁用启发式(可能更慢找到可行解/更差的上界)

  • 值越大:越积极找可行解、提升 incumbent(上界/下界中的"上界",取决于 min/max)

典型用途

  • 你很难找到第一个可行解:适当调高(如 0.2→0.5)

  • 你更想要"证明最优/收敛界"而不是早出解:可调低


m.Params.Threads

设置 并行线程数(多核并行)。

  • 1:单线程(更可复现)

  • 0:让 Gurobi 自己决定用多少线程(默认)

  • k:固定用 k 个线程

注意

  • 多线程速度通常更快,但结果路径(日志、节点顺序)会更不稳定。

  • 需要可复现/对比实验:常设 Threads=1 并配合 Seed


m.Params.MIPFocus

告诉求解器:在 MIP 中"更侧重什么"。

  • 0(默认):平衡

  • 1:更侧重 尽快找可行解(feasible solutions)

  • 2:更侧重 改进下界/证明最优(bound / optimality proof)

  • 3:更侧重 改进 incumbent(当前最好解)(在已有可行解基础上深挖)

经验用法

  • 你卡在"没有可行解"很久:MIPFocus=1

  • 你有不错的解但 gap 下不来:MIPFocus=2

  • 你想在固定时间内把解质量再压一压:MIPFocus=3


m.Params.PoolSolutions

解池大小:最多 存多少个不同的可行解(solution pool)。

  • 常见:PoolSolutions = N(如 10、100、1000)

  • 只对"你希望拿到多个候选方案"有意义

注意:存更多解会增加内存/管理开销。


m.Params.PoolSearchMode

解池搜索模式:为了"多找一些不同的解",求解器会额外做多少工作。

  • 0:默认(不特别为解池额外用力)

  • 1:中等强度,为了多样性多找解

  • 2:更强,会显著增加为寻找多解投入(可能变慢)

何时用

  • 你要"很多备选方案"(排班、路径、多方案评估):12

  • 你只要最优解:一般别开太高


m.Params.PoolGap

解池质量阈值:允许解池里存的解比最优解差多少(相对差距)。

  • 例如 PoolGap = 0.05:允许解池中解的目标值最多比最优差 5%(相对意义,按目标方向)

  • 如果设得很小:只保留很接近最优的解

  • 设得大:解池里会有更"多样/更差"的解


m.Params.SolutionLimit

找到多少个可行解就停止(包括解池里的解)。

  • SolutionLimit = k:一旦找到 k 个可行解就终止优化

  • 常见用法:你只要"任意可行解"或"前几个方案"就够了

TimeLimit 类似是停止条件之一。


m.Params.TimeLimit

时间上限(秒)。到时间就停止。

  • TimeLimit = 60:最多跑 60 秒

  • 停止时会返回当前最好结果(可能不是最优),并在 m.Status 里体现是时间限制终止。

相关推荐
微三云生态系统架构师-彭丹7 小时前
远方好物S2B2C系统架构:一级分销与保证金托管的合规技术实现
人工智能·算法
土司大王7 小时前
LeetCode hot100——34.在排序数组中查找元素的第一个和最后一个位置:Java 二分模板、边界分析
java·算法·leetcode
金金计较.7 小时前
Go语言-3
java·开发语言·golang
Logic1017 小时前
C语言/数据结构位运算题解:异或XOR找出飞行棋中的“独特颜色棋子“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
爱吃苹果的日记本8 小时前
数据结构第三课(时间复杂度)
数据结构·学习
Wang's Blog8 小时前
Java框架快速入门: Spring Security+OAuth2之元注解简化权限表达式
java·数据库·spring
罗西的思考8 小时前
机器人模型(WM / WAM / VLA)综合分析与对比:从「看」到「想」再到「做」
人工智能·算法·机器学习
xifangge20258 小时前
AGENTS.md 怎么写?涵盖 Java、Python、Vue、Go 的 8 套开箱即用模板
java·vue.js·python
Wang's Blog8 小时前
Java框架快速入门: Spring Security+OAuth2之云服务集成与多因子认证设计
java·开发语言·spring
Logic1019 小时前
C语言/数据动态规划题解:翻转一次子数组后的最大子数组和——四状态DP(O(n)时间O(1)空间)
c语言·数据结构·动态规划·时间复杂度·算法题·状态机dp·最大子数组和