gurobipy.MConstr#

class MConstr#

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

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

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

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

fromlist(constrlist)#

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

Parameters:

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

Returns:

MConstr 对象对应于输入约束。

Example:
constrs = model.getConstrs()
mc = MConstr.fromlist(constrs)  # 1-D MConstr
getAttr(attrname)#

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

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

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

Parameters:

attrname – 被查询的属性。

Returns:

ndarray 请求属性的当前值。

Example:
mc = model.addConstr(A @ x <= b)
rhs = mc.getAttr("RHS")
setAttr(attrname, newvalue)#

设置矩阵约束属性的值。

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

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

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

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

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

Example:
mc = model.addConstr(A @ x <= b)
mc.setAttr("RHS", np.arange(A.shape[0]))
mc.setAttr(GRB.Attr.RHS, 0.0)  # broadcast
tolist()#

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

Returns:

Constr 对象的列表。

Example:
mc = model.addConstr(A @ x <= b)
constrlist = mc.tolist()
# Do something with the Constr corresponding to mc[3]
print(constrlist[3])