主要内容

将替代优化与其他求解器进行比较

此示例比较代理到另外两个求解器:Fmincon,推荐的求解器,以解决平稳的问题,并且模式搜索,推荐的求解器,用于非平滑问题。该示例在二维区域使用非平滑函数。

类型非齿fcn
函数[f,g] = nonsmoothfcn(x)%nonsmoothfcn是一个非平滑目标函数%版权所有2005 Mathworks,Inc。i = 1:size(x,1)如果x(i,1)<-7 f(i)=(x(i,1))^2 +(x(i,2))^2;elseif x(i,1)<-3 f(i)= -2*sin(x(i,1)) - (x(i,1)*x(i,2)^2)/10 + 15;elseif x(i,1)<0 f(i)= 0.5*x(i,1)^2 + 20 + abs(x(i,2)) + patho(x(i,:));elseif x(i,1)> = 0 f(i)= .3*sqrt(x(i,1)) + 25 + abs(x(i,2)) + patho(x(x(i,:));端端%计算梯度g = nan;如果x(i,1)<-7 g = 2*[x(i,1);x(i,2)];elseif x(i,1)<-3 g = [-2*cos(x(i,1)) - (x(i,2)^2)/10;-x(i,1)*x(i,2)/5];elseif x(i,1)<0 [fp,gp] = patho(x(i,:)); if x(i,2) > 0 g = [x(i,1)+gp(1); 1+gp(2)]; elseif x(i,2) < 0 g = [x(i,1)+gp(1); -1+gp(2)]; end elseif x(i,1) >0 [fp,gp] = patho(x(i,:)); if x(i,2) > 0 g = [.15/sqrt(x(i,1))+gp(1); 1+ gp(2)]; elseif x(i,2) < 0 g = [.15/sqrt(x(i,1))+gp(1); -1+ gp(2)]; end end function [f,g] = patho(x) Max = 500; f = zeros(size(x,1),1); g = zeros(size(x)); for k = 1:Max %k arg = sin(pi*k^2*x)/(pi*k^2); f = f + sum(arg,2); g = g + cos(pi*k^2*x); end
mplier = 0.1;%缩放控制变量objfcn = @(x)nonsmoothfcn(mplier*x);%处理目标功能范围= [-6 6; -6 6]/mplier;用于绘制目标函数的%范围RNG默认%重置全局随机数生成器shownonsmoothfcn(objfcn,范围);标题(“非平滑目标功能”)查看(-151,44)

图包含一个轴对象。带有标题非平滑目标函数的轴对象包含4个类型表面的对象。

绘制

看看有多好代理在默认迭代次数中定位全局最小值。

lb = -6*一个(1,2)/mplier;ub = -lb;[XS,FVALS,EFLAGS,输出] = sermogateOpt(objfcn,lb,ub);

图优化图函数包含轴对象。具有标题最佳功能值的轴对象:13包含一个类型行的对象。该对象代表最佳功能值。

替代之所以停止,是因为它超过了“选项”设置的函数评估限制限制。
fprintf(“最低的值=%g。\ r”,fvals)
最低的值= 13。
图Showersmoothfcn(objfcn,范围);查看(-151,44)保持p1 = plot3(xs(1),xs(2),fvals,'om',,,,“标记”,15,“ MarkerfaceColor”,,,,'M');传奇(p1,{'解决方案'}) 抓住离开

图包含一个轴对象。轴对象包含5个类型表面,轮廓,线的对象。此对象代表解决方案。

与之比较模式搜索

模式搜索使用相同数量的函数评估的选项,从边界内的随机点开始。

RNG默认x0 = lb + rand(size(lb))。*(ub -lb);optsps = optimoptions(“模式搜索”,,,,“ maxfunction evaluations',200,'plotfcn',,,,'psplotbestf');[xps,fvalps,eflagps,outpoveps] = patternsearch(objfcn,x0,[],[],[],[],[],[],lb,ub,[],optsps);
优化终止:网格尺寸小于选项。

图模式搜索包含轴对象。具有标题最佳功能值的轴对象:13包含一个类型行的对象。

图Showersmoothfcn(objfcn,范围);查看(-151,44)保持p1 = plot3(x0(1),x0(2),objfcn(x0),'ob',,,,“标记”,12,“ MarkerfaceColor”,,,,'b');p2 = plot3(xps(1),xps(2),fvalps,'om',,,,“标记”,15,“ MarkerfaceColor”,,,,'M');传奇([P1,P2],{'起点',,,,'解决方案'}) 抓住离开

图包含一个轴对象。轴对象包含6个类型表面,轮廓,线的对象。这些对象代表起点,解决方案。

模式搜索找到与代理

限制功能评估的数量,然后重试。

optsurr = optimoptions(“代理”,,,,“ maxfunction evaluations',40);[XS,FVALS,EFLAGS,输出] = sermogateOpt(objfcn,lb,ub,optsurr);

图优化图函数包含轴对象。具有标题最佳功能值的轴对象:13.0009包含一个类型行的对象。该对象代表最佳功能值。

替代之所以停止,是因为它超过了“选项”设置的函数评估限制限制。
optsps.maxfunction evaluations = 40;[xps,fvalps,eflagps,outpoveps] = patternsearch(objfcn,x0,[],[],[],[],[],[],lb,ub,[],optsps);
超出功能评估的最大数量:增加选项。maxFunctionEvaluations。

图模式搜索包含轴对象。具有标题最佳功能值的轴对象:13.0983包含一个类型行的对象。

同样,两个求解器都很快找到了全球解决方案。

与之比较Fmincon

Fmincon在起点附近找到局部解决方案方面有效。但是,它很容易在非convex或非流动问题中远离全局解决方案。

Fmincon使用绘图函数的选项,与上一个求解器相同数量的函数评估,以及与模式搜索

opts = optimoptions('fmincon',,,,'plotfcn',,,,“ optimplotfval',,,,“ maxfunction evaluations',200);[fmsol,fmfval,eflag,fmoutput] = fmincon(objfcn,x0,[],[],[],[],[],[],lb,ub,[],opts);

图优化图函数包含轴对象。带有标题当前功能值的轴对象:30.1703包含一个类型行的对象。

当地的最低限度。满足的约束。FMINCON停止了,因为当前步骤的大小小于步骤尺寸公差的值,并且在约束公差的值之内满足了约束。
图Showersmoothfcn(objfcn,范围);查看(-151,44)保持p1 = plot3(x0(1),x0(2),objfcn(x0),'ob',,,,“标记”,12,“ MarkerfaceColor”,,,,'b');p2 = plot3(fmsol(1),fmsol(2),fmfval,'om',,,,“标记”,15,“ MarkerfaceColor”,,,,'M');传奇([P1,P2],{'起点',,,,'解决方案'}) 抓住离开

图包含一个轴对象。轴对象包含6个类型表面,轮廓,线的对象。这些对象代表起点,解决方案。

Fmincon被困在起点附近的当地最低限度。

也可以看看

||

相关话题