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