MLinExpr
MLinExpr
古罗比线性矩阵表达式对象。线性矩阵表达式由矩阵-向量乘积组成,其中矩阵是NumPy密集矩阵或SciPy稀疏矩阵,向量是Gurobi兆乏对象,加上一个可选的兼容维数的常量向量(即,).线性矩阵表达式用于建立线性目标和约束。它们是临时对象,通常寿命很短。
通常使用重载操作符构建线性矩阵表达式,通常是将一个二维矩阵(密集或稀疏)与一个一维矩阵相乘兆乏使用Python矩阵乘法(@
)操作符(例如,expr = A @ x
).你也可以提升一个兆乏
对象一个MLinExpr
使用算术表达式(例如,Expr = x + 1
).上支持大多数算术操作MLinExpr
对象,包括加法和减法(例如,expr = A @ x - B @ y
)和乘以一个常数(例如。expr = 2 * A @ x
).
一个MLinExpr
对象有形状
,与其他NumPy ndarray对象的定义类似。由于它的定义方式,形状将始终是一维的,其长度反映了相应的矩阵-向量结果的大小。给一个例子,形成@ x
在哪里一个
有形状(3) 10
和x
有形状(3)
给出形状的结果(10)
.
在处理MLinExpr
对象,你当然需要确保形状是兼容的。如果你想形成@ x
,然后一个
必须是二维数组x
必须是1-D数组,第2维的大小是一个
一定等于x
.类似地,将对象添加到MLinExpr
对象(包括另一个MLinExpr
)需要一个相同形状的物体。唯一的例外是常量,它会自动提升为具有兼容的形状。
上的重载操作符的完整列表MLinExpr对象如下:+
,+ =
,-
,- =
,*
,* =
,@
.按照Python的说法,我们已经定义了以下内容MLinExpr
功能:__add__
,__radd__
,__iadd__
,__sub__
,__rsub__
,__isub__
,__neg__
,__mul__
,__rmul__
,__imul__
,__matmul__
,__rmatmul__
.
我们还重载了比较操作符(==,< =,>=),以便更容易地从线性矩阵表达式构建约束。
注意,Python矩阵乘法运算符(@
)在Python 3.5版本中引入;它在Python 2.7中不可用。
部分