gurobipy.MQConstr#
- class MQConstr#
Gurobi矩阵二次约束对象。一个
MQConstr
对象是一个类似数组的数据结构,表示多个二次约束(与QConstr
对象不同,后者表示单个二次约束)。它的行为类似于NumPy的ndarray
,例如,它具有形状并且可以被索引和切片。矩阵二次约束总是与特定模型相关联。通常,您可以使用Model.addConstr
创建这些对象,通过在matrix variables
、matrix linear expressions
和matrix quadratic expressions
上使用重载的比较运算符。二次约束对象具有许多属性。完整的列表可以在本文档的属性部分找到。一些约束属性只能查询,而其他属性也可以设置。请记住,Gurobi优化器采用延迟更新方法,因此对属性的更改在下次调用
Model.update
、Model.optimize
或Model.write
之前不会生效。我们应该指出一些关于二次约束属性的内容。 考虑QCRHS属性。矩阵二次约束
mqc
的值可以使用mc.QCRHS
查询。Gurobi库忽略属性名称中的字母大小写,因此也可以查询为mc.qcrhs
。属性值以NumPyndarray
的形式返回,其形状与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
对象形状相同的NumPyndarray
形式返回。- 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