Gurobi在Python中建模的使用手册之添加变量

Gurobi添加变量addVar()和addVars()

addVar() 一次增加一个变量
addVars() 一次增加多个变量

addVar()

命令行:
addVar ( lb=0.0, ub=GRB.INFINITY, obj=0.0, vtype=GRB.CONTINUOUS, name=" ", column=None )
lb (可自行选择设置): 决策变量下界
ub (可自行选择设置): 决策变量上界
obj (可自行选择设置): 决策变量在目标函数中的因子系数
vtype (可自行选择设置): 决策变量类型,包括GRB.CONTINUOUS, GRB.BINARY, GRB.INTEGER,GRB.SEMICONT,GRB.SEMIINT
name (可自行选择设置): 变量名
column (可自行选择设置): Column object that indicates the set of constraints in which the new variable participates, and the associated coefficients.

addVars()

addVars( **indices, lb = 0.0, ub = GRB.INFINITY, obj = 0.0, vtype = GRB.CONTINUOUS, name = " " )
indices: 作为访问决策变量的索引.
lb (可自行选择设置): 决策变量的下界
ub (可自行选择设置): 决策变量的上界
obj (可自行选择设置): 决策变量在目标函数中的因子系数
vtype (可自行选择设置): 决策变量类型
name (可自行选择设置): 变量名。给定的名称将被生成器表达式的索引下标,因此如果索引是整数,c将变成c[0]、c[1]等等。
返回值:addVars() 返回一个tupledict对象。tupledict是python中dict的一个子类。indice的声明作为tupledict 的key

关于indices

如果未对可以自行选择设置的声明,则方法会直接选择默认值。
对indices的声明常常可以作为tupledict的key。常见的设置有三种。
第一种:设置整数值,创建多维数组的变量,例如

x = model.addVars(2, 3)

此时,关于x的变量一共有六个,分别为 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的变量一共有六个,分别为 x[3,‘a’],x[3,‘b’],x[3,‘c’], x[7,‘a’],x[7,‘b’],x[7,‘c’]。

第三种:设置元组列表,例如

x = model.addVars([(3,'a'), (3,'b'),(3,'c'), (7,'a'),(7,'b'), (7,'c')])

总结:可以看出indices*的声明可以是整数、多个列表、以元组为元素的一个列表。特定索引的成员值必须总是标量(int, float, string,…)

x = model.addVars([(1, 3), 7], ['a']) #错误的表达
x = model.addVars([((1, 3),'a'), (7,'a')]) #错误的表达

补充:
tupledict ( args, kwargs )
args: 位置参数
kwargs:命名参数.
返回值: 一个 tupledict对象
例如:

 d = tupledict([((1,2), 'onetwo'), ((1,3), 'onethree'), ((2,3), 'twothree')])
 print(d[1,2])   # prints 'onetwo'

后面会继续更新Gurobi在python中建模的使用手册。

你可能感兴趣的:(python,Gurobi)