在gurobi中创建具有多个索引的二进制变量

时间:2020-02-01 15:15:46

标签: python variables optimization 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()

1 个答案:

答案 0 :(得分:0)

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

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]>}

documentation中也对此进行了说明。您只需对其他列表BCD重复此过程。

编辑

将所有索引合并为一个变量结构的另一种方法是:

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]