You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已部分求解的Gurobi MIP模型如何设置SolutionLimit获取新增解?

解决MIP模型获取恰好一个新增解的方法

针对你遇到的问题,这里有两种可靠的处理方式:

方法一:解锁解存储上限,直接获取实际解数

  • 首先修改参数,让Gurobi存储所有找到的可行解,突破默认10个的上限:
    model.Params.PoolSolutions = 1000000  # 设置一个足够大的数值,覆盖你可能找到的解数量
    
  • 此时model.SolCount会返回模型实际已找到的解的总数,接着设置求解的解限制:
    model.Params.SolutionLimit = model.SolCount + 1
    
  • 重新调用求解方法,模型就会恰好找到一个新增的可行解。

方法二:不存储所有解,通过约束排除已有解

如果担心存储大量解占用内存,可以用这种方式:

  • 每次求解时只要求找1个解:
    model.Params.SolutionLimit = 1
    model.Params.PoolSearchMode = 2  # 让模型专注于寻找不同的可行解
    
  • 每次找到一个解后,添加一个约束来排除这个解(以整数变量为例):
    # 假设x是模型中的整数变量集合,var.X是当前解的变量取值
    expr = gp.LinExpr()
    for var in x:
        expr += var * (1 - var.X) + (1 - var) * var.X
    model.addConstr(expr >= 1, name=f"exclude_sol_{model.SolCount}")
    
  • 再次求解时,模型就会返回下一个和已有解不同的可行解,实现每次只获取一个新增解的需求。

内容的提问来源于stack exchange,提问作者johk95

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:10:03