主要内容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

马克斯正弦和余弦的非光滑是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停止,因为它不能减少目标函数在当前的搜索方向。<停止标准细节> 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。cons1 = auxvar > =罪(myvar#);smprob.Constraints。cons2 = auxvar > = cos (myvar#);x0。myvar = 1;x0。auxvar = 1;[sol2, fval2 eflag2] =解决(x0 smprob)gydF4y2Ba
使用fmincon解决问题。局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。sol2 =结构体字段:auxvar: 0.7071 myvar#: 0.7854 fval2 = 0.7071 eflag2 = OptimalSolutiongydF4y2Ba

同样的概念构成的配方gydF4y2BafminimaxgydF4y2Ba函数;看到gydF4y2Ba目标实现方法gydF4y2Ba。gydF4y2Ba

另请参阅gydF4y2Ba

|gydF4y2Ba

相关的话题gydF4y2Ba