光滑功能的光滑配方GydF4y2Ba
为了平滑否则的非现场问题,您有时可以添加辅助变量。例如,GydF4y2Ba
FGydF4y2Ba(GydF4y2BaXGydF4y2Ba)= max(GydF4y2BaGGydF4y2Ba(GydF4y2BaXGydF4y2Ba),GydF4y2BaHGydF4y2Ba(GydF4y2BaXGydF4y2Ba))GydF4y2Ba
即使在什么时候也可以是一个非现状GydF4y2BaGGydF4y2Ba(GydF4y2BaXGydF4y2Ba) 和GydF4y2BaHGydF4y2Ba(GydF4y2BaXGydF4y2Ba)光滑,如以下功能所示。GydF4y2Ba
FGydF4y2Ba(GydF4y2BaXGydF4y2Ba)是在点的非本地GydF4y2BaXGydF4y2Ba=GydF4y2Baπ.GydF4y2Ba/ 4.GydF4y2Ba和GydF4y2BaXGydF4y2Ba= 5GydF4y2Baπ.GydF4y2Ba/ 4.GydF4y2Ba。GydF4y2Ba
这种缺乏平滑可能会导致优化工具箱™求解器的问题,所有这些都假设客观函数和非线性约束函数是连续可微分的。所以,如果你试图解决GydF4y2Ba
XGydF4y2Ba= min.GydF4y2BaT.GydF4y2Ba(GydF4y2BaFGydF4y2Ba(GydF4y2BaT.GydF4y2Ba))GydF4y2Ba从点开始GydF4y2BaX0.GydF4y2Ba
= 1,GydF4y2Ba
您没有获得1的出口标志,因为解决方案在局部最小化点处不分辨率GydF4y2BaXGydF4y2Ba=GydF4y2Baπ.GydF4y2Ba/ 4.GydF4y2Ba。GydF4y2Ba
fun1 = @sin;fun2 = @cos;fun = @(x)max(fun1(x),fun2(x));[x1,fval1,eflag1] = fminunc(有趣,1)GydF4y2Ba
地方最低可能。Fminunc停止,因为它无法沿当前搜索方向降低目标函数。<停止标准详细信息> X1 = 0.7854 FVAL1 = 0.7071 EFLAG1 = 5GydF4y2Ba
有时,您可以使用辅助变量将NONSMOOTH问题变为平滑问题。对于前面的示例,请考虑辅助变量GydF4y2BayGydF4y2Ba具有平稳的约束GydF4y2Ba
考虑优化问题,受这些约束,GydF4y2Ba
由此产生的解决方案GydF4y2BaXGydF4y2Ba
那GydF4y2BayGydF4y2Ba
是原始问题的解决方案GydF4y2Ba
该配方使用基于问题的方法。GydF4y2Ba
myvar = Optimvar(GydF4y2Ba“myvar”GydF4y2Ba);auxvar = Optimvar(GydF4y2Ba“auxvar”GydF4y2Ba);SMPROB = OptimProblem(GydF4y2Ba“客观的”GydF4y2Ba,auxvar);smprob.constraints.cons1 = auxvar> = sin(myvar);smprob.constraints.cons2 = auxvar> = cos(myvar);x0.myvar = 1;x0.auxvar = 1;[Sol2,FVAL2,EFLAG2] =求解(SMPROB,X0)GydF4y2Ba
使用Fmincon解决问题。发现满足约束的局部最小值。优化完成,因为目标函数在可行的方向上是非减小的,以便在最优耐受性的值内,并且对约束公差的值满足约束。sol2 =带字段的struct:auxvar:0.7071 myvar:0.7854 fval2 = 0.7071 eflag2 = OptimalsolutionGydF4y2Ba
同样的概念是制定的制定GydF4y2Bafminimax.GydF4y2Ba
功能;看GydF4y2Ba目标达到方法GydF4y2Ba。GydF4y2Ba
也可以看看GydF4y2Ba
FgoalattainGydF4y2Ba
|GydF4y2Bafminimax.GydF4y2Ba