8.6.20. MQuadExpr

class MQuadExpr

代表由多个QuadExpr组成的多维数组。 一般通过常数,Var,MVar,LinExpr, QuadExpr等类型对象通过算数运算产生。 例如:

# 多维数组线性表达式乘以一个变量
mLinExpr * x
# 两个多维数组变量的矩阵乘法
* mvar1 @ mvar2

属性

ndim

获取MQuadExpr的维度个数

shape

获取MQuadExpr的shape

size

获取QuadExpr包含的表达式个数

ndim

获取MQuadExpr的维度个数

shape

获取MQuadExpr的shape

size

获取QuadExpr包含的表达式个数

方法

zeros()

返回一个指定shape的MQuadExpr,它包含的所有表达式都是空表达式

clear()

对所有包含的二次表达式,执行clear操作,即所有包含的二次表达式都将变成空表达式

copy()

返回MQuadExpr的一个拷贝

getValue()

在问题求解以后,返回所有二次表达式的值

item()

获取当前MQuadExpr唯一包含的表达式

sum()

将包含的所有表达式求和,返回求和后的表达式

static zeros(shape)

返回一个指定shape的MQuadExpr,它包含的所有表达式都是空表达式

Parameters

shape – 需要指定的shape

example:

mQuadExpr = MQuadExpr.zeros((2, 2))
mQuadExpr += x * x
print(mQuadExpr[0, 0].item().size() == 1)
clear()

对所有包含的二次表达式,执行clear操作,即所有包含的二次表达式都将变成空表达式

example:

mQuadExpr.clear()
print(mQuadExpr[0, 0].item().size() == 0)
copy()

返回MQuadExpr的一个拷贝

example:

another = mQuadExpr.copy()
getValue()

在问题求解以后,返回所有二次表达式的值

example:

m.optimize()
print(mQuadExpr.getValue()[0, 0])
item()

获取当前MQuadExpr唯一包含的表达式

example:

mat = m.addMVar((2, 2))
mQuadExpr = mat * mat[0, 0].item()
first = mQuadExpr[0, 0]
print(type(first))
print(type(first.item()))

Note

如果当前MQuadExpr包含不止一个表达式将抛出异常

sum(axis=None)

将包含的所有表达式求和,返回求和后的表达式

Parameters

axis=None – 求和的沿轴

example:

mat = m.addMVar((2, 2))
mQuadExpr = mat * mat[0, 0].item()
print(mQuadExpr.sum().size == 1)