Model.addVars ()


Model.addVars ()

addVars(*指数,lb=0.0,ub=GRB.INFINITY,obj=0.0,vtype=GRB.CONTINUOUS,name=”“)

向模型中添加多个决策变量。

返回一个古罗比图普莱迪克对象,该对象包含新创建的变量图普莱迪克是从指数参数(s)。这个方法的参数可以采用几种不同的形式,下面将对此进行描述。

第一个参数提供将用作键的索引,以访问返回的图普莱迪克. 在其最简单的版本中,您可以指定一个或多个整数值,此方法将创建一个多维变量数组的等价物。例如x =模型。addVars(2, 3)将创建六个变量,按如下方式访问x[0,0],x[0,1],x[0,2],x[1,0],x[1,1]x[1,2].

在更复杂的版本中,可以指定不可变对象的任意列表,此方法将为这些列表的叉积的每个成员创建变量。例如x=model.addVars([3,7],'a','b','c'])将创建六个变量,按如下方式访问x[3,'a'],x[7,'c']

您还可以提供自己的元组列表作为索引。例如x=model.addVars([(3,'a'),(3,'b'),(7,'b'),(7,'c')]))将以与上一个示例相同的方式访问(x[3,'a'],x[7,'c']等),但并非所有组合都会出现。这通常是处理稀疏索引的方式。

请注意,虽然索引可以作为多个对象列表或元组列表提供,但特定索引的成员值必须始终是标量(int,浮动,一串, ...). 例如x=model.addVars([(1,3,7],“a']))不允许,因为第一个成员的第一个参数是(1, 3).同样,x=model.addVars([((1,3),'a'),(7,'a'))也是不允许的。

命名参数(,obj等)可以采取多种形式。如果提供标量值(或使用默认值),则每个变量都将使用该值。所以比如说,,磅=1.0将为每个创建的变量指定1.0的下限。请注意,name参数的标量值具有特殊含义,将单独讨论。

您还可以提供一个Python脚本字典作为参数。在这种情况下,每个变量的值将从dict中提取,使用indices参数来构建键。例如,如果此方法创建的变量被索引为x[i,j],然后字典为参数提供的每个选项都应该有一个条目(i,j)价值

最后,如果你的指数参数是单个列表,您可以提供一个Python列表命名参数的长度相同。对于每个变量,它将从列表中相应的位置提取值。

如前所述名称争论是特殊的。如果为名称提供标量参数,则该参数将被转换为具有与关联变量的索引相对应的下标。例如,如果你x=model.addVars(2,3,name=“x”),变量将获得名称x[0,0],x[0,1]

论据:

指数:用于访问新变量的索引。

磅(可选):新变量的下限。

ub(可选):新变量的上限。

obj(可选):新变量的目标系数。

vtype(可选):新变量的变量类型。

名称(可选):新变量的名称。给定的名称将下标为生成器表达式的索引,因此如果索引是整数,C将成为c[0],c[1]请注意,生成的名称将存储为ASCII字符串,因此应避免使用包含非ASCII字符的名称。此外,强烈建议不要使用包含空格的名称,因为它们不能写入LP格式的文件。

返回值:

刚出现的图普莱迪克对象,该对象使用提供的索引作为键,将新变量作为值包含。

使用示例:

#二元变量的三维数组x=model.addVars(3,4,5,vtype=GRB.binary)#变量索引按元组列表l=tuplelist([(1,2),(1,3),(2,3)])y=model.addVars(l,ub=[1,2,3])