主要内容

OptimizationExpression

用优化变量表示的算术或函数表达式

描述

一个OptimizationExpression是关于优化变量的算术或函数表达式。使用一个OptimizationExpression作为一个目标函数,或作为一个约束或方程中的不等式或等式的一部分。

创建

上执行操作创建优化表达式OptimizationVariable对象。使用标准的MATLAB®包括取幂、索引和连接优化变量以创建表达式的算法。看到万博1manbetx支持的变量和表达式优化操作例子

您还可以通过使用,从应用于优化变量的MATLAB函数创建优化表达式fcn2optimexpr.有关示例,请参见从非线性函数创建表达式具体问题具体分析非线性优化

使用创建空优化表达式optimexpr.通常,然后在循环中填充表达式。有关示例,请参见通过循环创建优化表达式optimexpr函数引用页面。

创建表达式后,将其用作目标函数,或作为约束或等式的一部分。例如,请参见解决函数引用页面。

属性

全部展开

索引名称,指定为字符串或字符向量的单元格数组。有关使用索引名的信息,请参见为优化变量命名索引

数据类型:细胞

该属性是只读的。

优化对象中的变量,指定为结构OptimizationVariable对象。

数据类型:结构体

对象的功能

评估 评估优化表达式
显示 显示优化对象信息
保存优化对象描述

例子

全部折叠

通过对优化变量的算术操作创建优化表达式。

x = optimvar (“x”3 2);expr =总和(sum (x))
expr = Linear OptimizationExpression x(1,1) + x(2,1) + x(3,1) + x(1,2) + x(2,2) + x(3,2)
f = (2 10 4);w = f * x;显示(w)
(1,1) 2 * x (1,1) + 10 * x(2, 1) + 4 *(3,1)(1、2)2 * x(1、2)+ 10 * x (2, 2) + 4 * (3 2)

通过转置优化变量创建优化表达式。

x = optimvar (“x”3 2);y = x '
y = 2x3 Linear OptimizationExpression array with properties: IndexNames: {{} {}} Variables: [1x1 struct] contains 1 OptimizationVariable参见expression formulation with show。

简单地索引到优化数组不会创建表达式,而是创建一个引用原始变量的优化变量。要看到这一点,请创建一个变量w这是第一行和第三行x.请注意,w是一个优化变量,而不是优化表达式。

w = x ([1,3],:)
w = 2x2 OptimizationVariable array with properties: Read-only array-wide properties: Name: 'x' Type: 'continuous' IndexNames: {{} {}} Elementwise properties: LowerBound: [2x2 double] UpperBound: [2x2 double]引用名称为'x'的OptimizationVariable的一个子集。使用show查看变量。使用showbounds查看bounds。

通过连接优化变量创建优化表达式。

y = optimvar (“y”4、3);z = optimvar (“z”4、7);f = [y, z]
f = 4x10 Linear OptimizationExpression array with properties: IndexNames: {{} {}} Variables: [1x1 struct] contains 2 OptimizationVariables参见expression formulation with show。

使用optimexpr创建一个空表达式,然后在循环中填充该表达式。

y = optimvar (“y”、6、4);expr = optimexpr (3,2);i = 1:3expr(i, J) = y(2*i, J) - y(i,2* J);结束结束显示(expr)
(1,1) (2,1) - y(1、2)(2,1)y (4,1) - y (2, 2) (1) (6,1) - y(3 2)(1、2)(2,2),y(1、4)(2,2)y (4,2) - y(2、4)(2)(6 2)- y(3、4)

创建一个与目标函数对应的优化表达式

f x x 2 / 1 0 + 经验值 - 经验值 - x

x = optimvar (“x”);x^2/10 + exp(-exp(-x))
f =非线性优化表达式((x.^2 ./ 10) + exp(-exp(-x)))

找到最小化的点有趣的从这一点开始x0 = 0

x0 =结构(“x”, 0);概率= optimproblem (“目标”f);[溶胶,fval] =解决(x0概率)
使用fminunc解决问题。局部最小值。优化完成,因为梯度的大小小于最优公差的值。
索尔=结构体字段:x: -0.9595
fval = 0.1656

如果f如果不是一个受支持的函万博1manbetx数,您将使用它转换吗fcn2optimexpr.看到万博1manbetx支持的变量和表达式优化操作将非线性函数转换为优化表达式

F = @(x)x^2/10 + exp(-exp(-x));有趣= fcn2optimexpr (f, x)
fun =非线性优化表达式anonymousFunction1(x) where: anonymousFunction1 = @(x)x^2/10+exp(-exp(-x));
概率= optimproblem (“目标”、有趣的);[溶胶,fval] =解决(x0概率)
使用fminunc解决问题。局部最小值。优化完成,因为梯度的大小小于最优公差的值。
索尔=结构体字段:x: -0.9595
fval = 0.1656

The MathWorks, Inc.版权所有

在两个变量中创建一个优化表达式。

x = optimvar (“x”3 2);y = optimvar (“y”、1、2);Expr = sum(x,1) - 2*y;

求表达式在某一点的值。

xmat = [3, 1;0, 1;2,6];sol.x = xmat;sol.y = [4 3];索尔val =评估(expr)
val =1×23 12

更多关于

全部展开

介绍了R2017b