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

如何将Gurobi决策变量的域限制为特定整数集合?

Gurobi中限制变量为特定整数集合的方法

当然可以实现这个需求,下面是两种常用的做法:

方法一:直接指定变量可选值(推荐)

Gurobi的addVar方法支持通过values参数直接定义变量的可选取值集合,代码如下:

x = model.addVar(vtype=GRB.INTEGER, values=[0, 4, 8, 12, 16, 20, 24])

这种方式最简洁,直接告知Gurobi变量只能取列表内的数值,无需额外添加约束。

方法二:通过二进制变量构建约束

如果需要更灵活的控制(比如后续要动态调整可选值),可以借助二进制变量建模:

  1. 定义与目标集合元素数量一致的二进制变量,每个变量对应一个可选值
  2. 添加约束确保仅有一个二进制变量为1(表示选中对应的值)
  3. 通过线性约束将目标变量与二进制变量关联

示例代码:

# 定义7个二进制变量,对应目标集合的每个值
y = model.addVars(7, vtype=GRB.BINARY, name="y")
# 定义目标变量x
x = model.addVar(vtype=GRB.INTEGER, name="x")

# 约束:仅选中一个可选值
model.addConstr(y.sum() == 1)
# 约束:x等于选中的对应值
target_values = [0, 4, 8, 12, 16, 20, 24]
for i in range(7):
    model.addConstr(x == target_values[i] * y[i])

这种方式代码量稍多,但适合需要动态修改可选值或结合其他业务逻辑的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:20:57