gurobipy.MQConstr#

class MQConstr#

Gurobi矩阵二次约束对象。一个MQConstr对象是一个类似数组的数据结构,表示多个二次约束(与QConstr对象不同,后者表示单个二次约束)。它的行为类似于NumPy的ndarray,例如,它具有形状并且可以被索引和切片。矩阵二次约束总是与特定模型相关联。通常,您可以使用Model.addConstr创建这些对象,通过在matrix variablesmatrix linear expressionsmatrix quadratic expressions上使用重载的比较运算符。

二次约束对象具有许多属性。完整的列表可以在本文档的属性部分找到。一些约束属性只能查询,而其他属性也可以设置。请记住,Gurobi优化器采用延迟更新方法,因此对属性的更改在下次调用Model.updateModel.optimizeModel.write之前不会生效。

我们应该指出一些关于二次约束属性的内容。 考虑QCRHS属性。矩阵二次约束mqc的值可以使用mc.QCRHS查询。Gurobi库忽略属性名称中的字母大小写,因此也可以查询为mc.qcrhs。属性值以NumPy ndarray的形式返回,其形状与qmc相同。可以使用标准赋值语句(例如,mqc.qcrhs = b)设置属性,其中b可以是具有适当形状的ndarray,也可以是应用于所有相关二次约束的标量。然而,如前所述,属性修改是以惰性方式完成的,因此您不会立即看到更改的效果。并且某些属性无法设置(例如,QCPi属性),因此尝试为它们分配新值将引发异常。

你也可以使用MQConstr.getAttr/ MQConstr.setAttr来访问属性。属性名称可以作为字符串传递给这些例程,或者你可以使用GRB.Attr类中定义的常量(例如,GRB.Attr.QCRHS)。

fromlist(qconstrlist)#

将二次约束列表转换为MQConstr对象。形状是从列表内容推断出来的 - 一个QConstr对象列表生成一个一维MQConstr对象,一个QConstr对象列表的列表生成一个二维MQConstr对象,等等。

Parameters:

constrlist – 一个用于填充返回的MQConstr的QConstr对象列表。

Returns:

MQConstr 对象对应于输入约束。

Example:
qconstrs = model.getQConstrs()
mqc = MQConstr.fromlist(qconstrs)  # 1-D MQConstr
getAttr(attrname)#

查询矩阵二次约束的属性的值。完整的可用属性列表可以在属性部分找到。

如果请求的属性不存在或无法查询,则引发AttributeError。如果MQConstr对象存在问题(例如,它已从模型中移除),则引发GurobiError

结果以与MQConstr对象形状相同的NumPy ndarray形式返回。

Parameters:

attrname – 被查询的属性。

Returns:

ndarray 请求属性的当前值。

Example:
mqc = model.addConstr(x**2 + y <= 1)
qcrhs = mc.getAttr("QCRHS")
setAttr(attrname, newvalue)#

设置矩阵二次约束属性的值。

请注意,由于我们采用了延迟更新的方法,更改实际上不会生效,直到您更新模型(使用Model.update)、优化模型(使用Model.optimize)或将模型写入磁盘(使用Model.write)。

可用属性的完整列表可以在 属性 部分找到。

如果指定的属性不存在或无法设置,则引发AttributeError。如果MQConstr对象存在问题(例如,它已从模型中移除),则引发GurobiError

Parameters:
  • attrname – 正在修改的属性。

  • newvalue – 属性的期望新值的ndarray。 形状必须与MQConstr对象相同。或者, 你可以传递一个标量参数,它将自动提升为 具有正确的形状。

Example:
mqc = model.addConstr(x * y - x - y <= 0)
mqc.setAttr("QCRHS", np.arange(x.size))
mqc.setAttr(GRB.Attr.RHS, 1.0)  # broadcast scalar
tolist()#

返回与此矩阵二次约束相关的二次约束,作为单独的QConstr对象的列表。

Returns:

QConstr 对象的列表。

Example:
mqc = model.addConstr(x * y <= b)
qconstrlist = mqc.tolist()
# Do something with the QConstr corresponding to mqc[3]
print(qconstrlist[3])