8.7.18. MQuadExpr¶
- class MQuadExpr¶
代表由多个QuadExpr组成的多维数组。 一般通过常数,Var,MVar,LinExpr, QuadExpr等类型对象通过算数运算产生。 例如:
# 多维数组线性表达式乘以一个变量 mLinExpr * x # 两个多维数组变量的矩阵乘法 * mvar1 @ mvar2
属性
ndim
获取MQuadExpr的维度个数
shape
获取MQuadExpr的shape
size
获取QuadExpr包含的表达式个数
方法
zeros()
返回一个指定shape的MQuadExpr,它包含的所有表达式都是空表达式
对所有包含的二次表达式,执行clear操作,即所有包含的二次表达式都将变成空表达式
返回MQuadExpr的一个拷贝
在问题求解以后,返回所有二次表达式的值
获取当前MQuadExpr唯一包含的表达式
将包含的所有表达式求和,返回求和后的表达式
- 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)