主要内容gydF4y2Ba

非光滑函数的光滑公式gydF4y2Ba

为了平滑一个不平滑的问题,有时可以添加辅助变量。例如,gydF4y2Ba

fgydF4y2Ba(gydF4y2BaxgydF4y2Ba) = max (gydF4y2BaggydF4y2Ba(gydF4y2BaxgydF4y2Ba),gydF4y2BahgydF4y2Ba(gydF4y2BaxgydF4y2Ba))gydF4y2Ba

可以是一个非光滑函数甚至在什么时候gydF4y2BaggydF4y2Ba(gydF4y2BaxgydF4y2Ba),gydF4y2BahgydF4y2Ba(gydF4y2BaxgydF4y2Ba)是平滑的,如下面的函数所示。gydF4y2Ba

ggydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba =gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba hgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba =gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba fgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba =gydF4y2Ba 马克斯gydF4y2Ba (gydF4y2Ba ggydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba ,gydF4y2Ba hgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba )gydF4y2Ba .gydF4y2Ba

fgydF4y2Ba(gydF4y2BaxgydF4y2Ba)在点上是不光滑的gydF4y2BaxgydF4y2Ba=gydF4y2BaπgydF4y2Ba/ 4gydF4y2Ba而且gydF4y2BaxgydF4y2Ba= 5gydF4y2BaπgydF4y2Ba/ 4gydF4y2Ba.gydF4y2Ba

sin和cos的最大值在x = /4时是非光滑的,x = 5* /4gydF4y2Ba

创建图的代码gydF4y2Ba

这种光滑性的缺乏会给优化工具箱™求解器带来问题,所有这些求解器都假设目标函数和非线性约束函数是连续可微的。如果你想解gydF4y2Ba

xgydF4y2Ba=敏gydF4y2BatgydF4y2Ba(gydF4y2BafgydF4y2Ba(gydF4y2BatgydF4y2Ba))gydF4y2Ba从这一点开始gydF4y2Bax0gydF4y2Ba= 1,gydF4y2Ba

你不会得到一个出口标志为1,因为解在局部最小值点是不可微的gydF4y2BaxgydF4y2Ba=gydF4y2BaπgydF4y2Ba/ 4gydF4y2Ba.gydF4y2Ba

fun1 = @sin;fun2 = @cos;有趣= @ (x)马克斯(fun1 (x) fun2 (x));(x1, fval1, eflag1) = fminunc(有趣,1)gydF4y2Ba
局部最小值。Fminunc停止是因为它不能沿当前搜索方向减小目标函数。<停止标准details> x1 = 0.7854 fval1 = 0.7071 eflag1 = 5gydF4y2Ba

有时,可以使用辅助变量将一个非光滑问题变成光滑问题。对于前面的例子,考虑辅助变量gydF4y2BaygydF4y2Ba光滑约束条件下gydF4y2Ba

ygydF4y2Ba ≥gydF4y2Ba ggydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba ygydF4y2Ba ≥gydF4y2Ba hgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba .gydF4y2Ba

考虑优化问题,在这些约束条件下,gydF4y2Ba

最小值gydF4y2Ba xgydF4y2Ba ygydF4y2Ba .gydF4y2Ba

最终的解决方案gydF4y2BaxgydF4y2Ba,gydF4y2BaygydF4y2Ba解决方案是最初的问题吗gydF4y2Ba

最小值gydF4y2Ba xgydF4y2Ba fgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba =gydF4y2Ba 最小值gydF4y2Ba xgydF4y2Ba 马克斯gydF4y2Ba (gydF4y2Ba ggydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba ,gydF4y2Ba hgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba )gydF4y2Ba .gydF4y2Ba

这个提法使用基于问题的方法。gydF4y2Ba

myvar# = optimvar (gydF4y2Ba“myvar#”gydF4y2Ba);auxvar = optimvar (gydF4y2Ba“auxvar”gydF4y2Ba);smprob = optimproblem (gydF4y2Ba“客观”gydF4y2Ba, auxvar);smprob.Constraints。con1 = auxvar >= sin(myvar);smprob.Constraints。con2 = auxvar >= cos(myvar);x0。myvar = 1;x0。auxvar = 1;[sol2, fval2 eflag2] =解决(x0 smprob)gydF4y2Ba
使用fmincon解决问题。找到了满足约束条件的局部极小值。由于目标函数在可行方向上不减少,优化完成,在最优性公差的值内,约束满足在约束公差的值内。sol2 = struct with fields: auxvar: 0.7071 myvar: 0.7854 fval2 = 0.7071 eflag2 =优化方案gydF4y2Ba

的表述是基于同样的概念gydF4y2BafminimaxgydF4y2Ba函数;看到gydF4y2Ba目标实现方法gydF4y2Ba.gydF4y2Ba

另请参阅gydF4y2Ba

|gydF4y2Ba

相关的话题gydF4y2Ba

Baidu
map