manbet体育手机客户端
兆乏
古洛比矩阵变量对象。一个兆乏
是Gurobi变量的NumPy ndarray。变量总是与特定的模型相关联。您通常使用Model.addMVar.
您通常使用兆乏
对象来构建矩阵表达式,通常使用重载操作符。您可以构建线性矩阵表达式或二次矩阵表达式:
expr1 = A @ x @ x + B @ y + z expr3 = x @ A @ x + y @ B @ y前两个表达式是线性的,而第三个表达式是二次的。
维度和数据类型必须始终兼容。在上面的例子中,矩阵必须是NumPy ndarray与两个维或SciPy稀疏矩阵(将总是有两个维),和一定是一维的吗兆乏
.在expr1
的尺寸必须等于.同样的道理也适用于和在expr2
.另外,尺寸的第一个维度在expr2
一定等于?的第一个维度的大小,也为长度.
为expr3
,尺寸的第一个维度必须等于兆乏
在左边,第二个维度的大小必须等于兆乏
在右边。这同样适用于.
然后通常将表达式传递给setObjective(设定优化目标)或addConstr(添加约束)。
变量对象有许多属性。完整的列表可以在属性本文档的一部分。有些变量属性只能查询,有些可以设置。回想一下,Gurobi优化器使用了惰性更新方法,因此对属性的更改直到下一次调用时才生效Model.update,Model.optimize,或Model.write在相关模型上。
我们应该指出一些关于变量属性的事情。考虑到磅
属性。可以通过以下方式查询var.lb
.Gurobi库忽略了属性名称中的字母大小写,因此也可以将其查询为var.LB
.它可以使用标准赋值语句来设置(例如,var.lb = 0
).但是,正如前面提到的,属性修改是以惰性方式完成的,因此您不会立即看到更改的效果。并且一些属性不能被设置(例如x
属性),因此尝试给它们赋新值将引发异常。
你也可以使用MVar.getAttr/MVar.setAttr访问属性。属性名可以作为字符串传递给这些例程,也可以使用伽马射线爆发。Attr类(例如,GRB.Attr.LB
).
部分