2026a

# 优化变量和表达式支持的运算


# 支持的运算符号

优化变量和表达式是基于问题的优化工作流的基本元素。对于优化变量和表达式的合法运算:

  • x 和 y 表示任意大小的优化数组(通常大小相同);

  • x2D 和 y2D 代表二维优化数组;

  • a 是一个标量数字常数;

  • M 是一个常数数字矩阵;

  • c 是一个与 x 大小相同的数字数组。

警告

基于问题的方法不支持目标函数、非线性等式或非线性不等式中使用复数值。如果某函数计算具有复数值,即使是作为中间值,最终结果也可能不正确。

# 返回优化表达式的运算

这些对优化变量或表达式的运算返回一个优化表达式。

# 算术

运算 示例
加上常数 x+c 或 c+x
加上变量 x+y
一元加法 +x
减去一个常数 x-c
减去变量 x–y
一元减法 -x
乘以常数标量 a*x 或 x*a
除以常数标量 x/a
矩阵乘以变量 x2D*y2D,或 x*y(当 x 或 y 为标量时)
矩阵乘以变量和矩阵 M*x2D 或 x2D*M
变量与数组的点积 dot(x,c) 或 dot(c,x) 或 dot(x,M,x)
变量的线性组合 sum(x)、sum(x,dims=k)
数组元素的乘积 prod(x)、prod(x,dims=k)
矩阵的迹 tr(x2D)
累计和或乘积 cumsum(x)、cumprod(x)、cumsum(x,dims=k)、cumprod(x,dims=k)
差分 diff(x)、diff(x,dims=k)
转置 x' 或 adjoint(x)
重构 reshape(x,2,2)
创建对角矩阵或获取矩阵的对角元素 diag(x)、diag(x,k)

提示

在使用部分数学库函数之前,您需要通过 using TyMath 来实现加载。

# 初等函数

运算 示例
方阵的幂 x2D^a
平方根 sqrt(x)
范数(欧几里得) norm(x) 或 norm(x,p),其中 p 为正实数或 Inf
正弦 sin(x)
余弦 cos(x)
正割 sec(x)
余割 csc(x)
正切 tan(x)
反正弦 asin(x)
反余弦 acos(x)
反正割 asec(x)
反正割 acsc(x)
反正切 atan(x)
指数 exp(x)
对数 log(x)
双曲正弦 sinh(x)
双曲余弦 cosh(x)
双曲正割 sech(x)
双曲余割 csch(x)
双曲正切 tanh(x)
反双曲正弦 asinh(x)
反双曲余弦 acosh(x)
反双曲正割 asech(x)
反双曲余割 acsch(x)
反双曲正切 atanh(x)

提示

优化变量或表达式的逐点运算不受支持,请使用 @fcn2expr 将不受支持的函数转换为优化表达式。

# 返回优化变量的运算

运算 示例
N 维数字索引(包括冒号) x[4,1:3]
N 维字符串索引 x[str1,str2],其中 str1 和 str2 是字符串
N 维混合索引(数值索引、冒号和字符串的组合) x[str1,1:3]
线性数字索引(包括冒号) x[1:4]
线性字符串索引 x[str1]

# 优化表达式的运算

优化表达式支持优化变量支持的所有运算,并返回优化表达式。此外,您可以使用数值索引、字符串索引或线性索引(包括用于数值索引或线性索引的冒号)对优化表达式进行索引或分配。

# 返回约束表达式的运算

约束是任意两个可比较的表达式,其中包含以下比较运算符之一: ==、<= 或 >=。可比较的表达式具有相同的大小。

# 不支持的函数和运算需要使用 @fcn2expr 生成

如果您的目标函数或非线性约束函数不受支持,请使用 @fcn2expr 将 Syslab 函数转换为优化表达式。有关示例请参见 @fcn2expr

# 另请参阅

OptimizationExpression | OptimizationVariable | @fcn2expr