主要内容

随机目标函数的优化

这个例子展示了如何用函数求随机目标函数的最小值patternsearch.它还展示了优化工具箱™求解器是如何不适合这类问题的。该示例使用一个简单的二维目标函数,然后受噪声干扰。

初始化

X0 = [2.5 -2.5];%的起点。Lb = [-5 -5];%下界Ub = [5 5];%上界range = [LB(1) UB(1);磅(2)乌兰巴托(2)];Objfcn = @smoothFcn;目标函数的句柄。绘制平滑目标函数无花果=图(“颜色”' w ');showSmoothFcn (Objfcn、范围);持有;标题(平滑的目标函数的);ph = [];ph值(1)= plot3 (X0 X0 (1), (2), Objfcn (X0) + 30,”或““MarkerSize”10“MarkerFaceColor”“r”);持有;甘氨胆酸ax =;斧子。摄像位置= [-31.0391 -85.2792 -281.4265];斧子。CameraTarget = [0 0 -50];斧子。CameraViewAngle = 6.7937;%添加图例信息legendLabels = {“起点”};legendLabels lh =传奇(ph值,“位置”“东南”);lp = lh.Position;lh。位置= [1-lp(3)-0.005 0.005 lp(3) lp(4)];

运行fmincon平滑目标函数

目标函数是光滑的(两次连续可微)。使用优化工具箱解决优化问题fmincon解算器。fmincon求一个多元函数的约束最小值。这个函数在这一点上有一个唯一的极小值x * = (5, 5)它在哪里有价值f (x) = -250

设置返回迭代显示的选项。

选择= optimoptions (@fmincon,“算法”“内点”“显示”“通路”);[Xop, Fop] = fmincon (X0 Objfcn ,[],[],[],[], 磅,乌兰巴托,[]选项)图(图);持有
Iter f -count f(x)可行性最优步骤03 -1.062500e+01 0.000e+00 5.478e+01 6.734e+00 2 9 -2.491310e+02 0.000e+00 6.672e+01 1.236e+00 2 -2.497554e+02 0.000e+00 2.397e-01 6.310e +00 3 12 -2.497554e+02 0.000e+00 2.397e-01 6.310e +00 4 15 -2.499986e+02 0.000e+00 5.065e-02 8.016e-03 5 18 -2.499996e+02 0.000e+00 9.708e-05 3.367e-05 6 21 -2.500000e+02 0.000e+00 1.513e-04 6.867e-06 7 24 -2.500000e+02 0.000e+00 1.161e-06 6.920e-08发现满足约束的局部最小值。由于目标函数在可行方向上不减少,优化完成,在最优性公差的值内,约束满足在约束公差的值内。Xop = -5.0000 -5.0000 Fop = -250.0000

画出最后一点

ph值(2)= plot3 (Xop (1), Xop (2), Fop,“糖尿病”“MarkerSize”10“MarkerFaceColor”“米”);在情节中添加一个图例legendLabels = [legendLabels,“| fmincon |解决方案”];legendLabels lh =传奇(ph值,“位置”“东南”);lp = lh.Position;lh。位置= [1-lp(3)-0.005 0.005 lp(3) lp(4)];持有

随机目标函数

现在通过添加随机噪声扰动目标函数。

rng (0,“旋风”重置全局随机数生成器peaknoise = 4.5;Objfcn = @(x) smoothFcn(x,peaknoise);目标函数的句柄。绘制目标函数(非光滑)无花果=图(“颜色”' w ');showSmoothFcn (Objfcn、范围);标题(“随机目标函数”) ax = gca;斧子。摄像位置= [-31.0391 -85.2792 -281.4265];斧子。CameraTarget = [0 0 -50];斧子。CameraViewAngle = 6.7937;

运行fmincon随机目标函数

摄动目标函数具有随机性和非光滑性。fmincon是一种利用目标函数的导数求局部最小值的一般约束优化求解器。如果你不提供目标函数的一阶导数,fmincon用有限差分逼近导数。在这个例子中,目标函数是随机的,因此有限差分估计导数是不可靠的。fmincon可能会停在一个不是最小值的点上。这可能是因为由于噪声的存在,最佳条件似乎在最终点得到了满足fmincon无法取得进一步进展。

[Xop, Fop] = fmincon (X0 Objfcn ,[],[],[],[], 磅,乌兰巴托,[]选项)图(图);持有;ph = [];ph值(1)= plot3 (X0 X0 (1), (2), Objfcn (X0) + 30,”或““MarkerSize”10“MarkerFaceColor”“r”);ph值(2)= plot3 (Xop (1), Xop (2), Fop,“糖尿病”“MarkerSize”10“MarkerFaceColor”“米”);为剧情添加传奇legendLabels = {“起点”“| fmincon |解决方案”};legendLabels lh =传奇(ph值,“位置”“东南”);lp = lh.Position;lh。位置= [1-lp(3)-0.005 0.005 lp(3) lp(4)];持有
Iter f -count f(x)可行性最优步骤0 3 -1.925772e+01 0.000e+00 2.126e+08 1 6 -7.107849e+01 0.000e+00 2.623e+08 8.773 e+00 2 11 -8.055890e+01 0.000e+00 2.401e+08 6.715e-01 3 20 -8.325315e+01 0.000e+00 7.348e+07 3.047e-01 4 48 -8.366302e+01 0.000e+00 1.762e+08 1.593e-07 5 64 -8.591081e+01 0.000e+00 1.569e+08 3.111e-10局部最小可能。约束满足。Fmincon停止,因为当前步长小于步长公差的值,并且约束满足在约束公差的值之内。Xop = -4.9628 2.6673 Fop = -85.9108

运行patternsearch

现在使用全局优化工具箱最小化随机目标函数patternsearch解算器。模式搜索优化技术是一类直接搜索优化方法。模式搜索算法不使用目标函数的导数来寻找最优点。

PSoptions = optimoptions (@patternsearch,“显示”“通路”);(Xps, Fps) = patternsearch (X0 Objfcn ,[],[],[],[], 磅,乌兰巴托,PSoptions)图(图);持有;ph值(3)= plot3 (Xps (1) Xps(2),帧,“直流”“MarkerSize”10“MarkerFaceColor”“c”);为剧情添加传奇legendLabels = [legendLabels,“模式搜索解决方案”];legendLabels lh =传奇(ph值,“位置”“东南”);lp = lh.Position;lh。位置= [1-lp(3)-0.005 0.005 lp(3) lp(4)];持有
Iter Func-count f (x) MeshSize方法-7.20766 0 1 1 1 3 -34.7227 - 2成功的调查2 3 -34.7227 1细化网格3 5 -34.7227 - 0.5细化网格4 8 -96.0847 - 1成功调查5 10 -96.0847 - 0.5细化网格6 13 -132.888 1成功调查7 15 -132.888 - 0.5细化网格8 17 -132.888 - 0.25细化网格9 20 -197.689 - 0.5成功的调查10 22 -197.689 - 0.25细化网格11 24 -197.689 - 0.125细化网格12 27日-241.344 - 0.25成功的调查13 29日-241.344 - 0.125改进网14日31日-254.624 - 0.25成功的调查1533 35 -254.624 - 0.0625 -254.624 - 0.125细化网格16细化网格17 37 -254.624 - 0.03125细化网格18 39 -254.624 - 0.01562细化网格19 41 20 42 -256.009 - 0.01562 -254.624 - 0.007812细化网格成功调查21 44 -256.009 - 0.007812细化网格22 47 -256.009 - 0.003906改进网23 50 -256.009 - 0.001953改进网24 53 25 56 -256.009 - 0.0004883 -256.009 - 0.0009766细化网格细化网26日59 -256.009 - 0.0002441改进网27 62 -256.009 - 0.0001221改进网28 65 -256.009 - 6.104 e-05细化Mesh 29 68 -256.009 3.052e-05 Refine Mesh 30 71 -256.009 1.526e-05 Refine Mesh Iter Func-count f(x) MeshSize Method 31 74 -256.009 7.629e-06 Refine Mesh 32 77 -256.009 3.815e-06 Refine Mesh 33 80 -256.009 1.907e-06 Refine Mesh 34 83 -256.009 9.537e-07 Refine Mesh Optimization终止:Mesh size小于optional . meshtolerance。Xps = -4.9688 -5.0000 Fps = -256.0095

模式搜索不受目标函数中随机噪声的影响。模式搜索只需要函数值而不需要导数,因此(某种均匀类型的)噪声可能不会影响它。然而,与基于导数的算法相比,模式搜索需要更多的函数求值才能找到真正的最小值,这是不使用导数的代价。

相关的话题

Baidu
map