首页 > 解决方案 > 在 gurobi 中创建具有多个索引的二进制变量

问题描述

我对 Python 和 Gurobi 很陌生。我想为几个“维度”添加一个二进制变量:

A = [1,2,3,4]
B = [1,2,3,4]
C = [1,2,3,4,5]
D = [1,2,3]

我需要带有索引 A、B、C、D 的二进制变量 x。

我不确定如何使用该命令:

m.addVars()

标签: pythonvariablesoptimizationgurobi

解决方案


这是从给定索引列表创建变量的方式:

import gurobipy as gp

A = [1,2,3,4]
model = gp.Model()
variables = model.addVars(A, name='A', vtype='B')

调用后model.update(),您会看到这些变量名称/类型:

{1: <gurobi.Var A[1]>,
 2: <gurobi.Var A[2]>,
 3: <gurobi.Var A[3]>,
 4: <gurobi.Var A[4]>}

这也在文档中进行了说明。您只需对其他列表BC和重复此过程D

编辑

将所有索引组合成一个变量结构的另一种方法如下:

A = [1,2,3,4]
B = [1,2]
C = [1,2,3]
model = gp.Model()
variables = model.addVars(A, B, C, vtype='B')

您可以像这样访问这些变量:

variables[1,2,1]

推荐阅读