manbet体育手机客户端


兆乏

古洛比矩阵变量对象。一个兆乏是Gurobi变量的NumPy ndarray。变量总是与特定的模型相关联。您通常使用Model.addMVar

您通常使用兆乏对象来构建矩阵表达式,通常使用重载操作符。您可以构建线性矩阵表达式二次矩阵表达式

expr1 = A @ x @ x + B @ y + z expr3 = x @ A @ x + y @ B @ y
前两个表达式是线性的,而第三个表达式是二次的。

维度和数据类型必须始终兼容。在上面的例子中,矩阵< span > < /美元跨度> < span > < / span >美元必须是NumPy ndarray与两个维或SciPy稀疏矩阵(将总是有两个维),和< span > < /美元跨度> x < span > < / span >美元一定是一维的吗兆乏.在expr1的尺寸< span > < /美元跨度> < span > < / span >美元必须等于< span > < /美元跨度> x < span > < / span >美元.同样的道理也适用于< span > < / span > B < span >美元< / span >< span > < / span > y < span >美元< / span >expr2.另外,尺寸的第一个维度< span > < /美元跨度> < span > < / span >美元expr2一定等于?的第一个维度的大小< span > < / span > B < span >美元< / span >,也为长度< span > < / span > z < span >美元< / span >

expr3,尺寸的第一个维度< span > < /美元跨度> < span > < / span >美元必须等于兆乏在左边,第二个维度的大小必须等于兆乏在右边。这同样适用于< span > < / span > B < span >美元< / span >

然后通常将表达式传递给setObjective(设定优化目标)或addConstr(添加约束)。

变量对象有许多属性。完整的列表可以在属性本文档的一部分。有些变量属性只能查询,有些可以设置。回想一下,Gurobi优化器使用了惰性更新方法,因此对属性的更改直到下一次调用时才生效Model.updateModel.optimize,或Model.write在相关模型上。

我们应该指出一些关于变量属性的事情。考虑到属性。可以通过以下方式查询var.lb.Gurobi库忽略了属性名称中的字母大小写,因此也可以将其查询为var.LB.它可以使用标准赋值语句来设置(例如,var.lb = 0).但是,正如前面提到的,属性修改是以惰性方式完成的,因此您不会立即看到更改的效果。并且一些属性不能被设置(例如x属性),因此尝试给它们赋新值将引发异常。

你也可以使用MVar.getAttr/MVar.setAttr访问属性。属性名可以作为字符串传递给这些例程,也可以使用伽马射线爆发。Attr类(例如,GRB.Attr.LB).



部分