爬山算法改进狮群算法优化测试函数Eggholder
Eggholder函数是一个难以优化的函数,因为存在大量的局部极小值,并且波峰波谷陡峭,比较容易陷入局部最优,是测试各种算法的一个较好的函数,测试效果好就能说明算法性能优异,参数设置合理,同时能检验一个程序员是否真正掌握算法的精髓。狮群算法对初值的要求不高,算法的寻优速度较快,有较强的全局寻优能力,因为狮群的更新方式,如果最优解在搜寻区域的偏中间位置,更容易找到最优解,如果在搜寻区域的变异部分,搜寻比较困难,所以,本文用爬山算法改进狮王的更新方式,通过爬山和跳跃来更新狮王位置,爬山算法改进的狮群算法对Eggholder进行优化求解,其中,测试函数Eggholder图像如下:
Eggholder函数MATLAB编程代码如下:
function [y] = eggholderfun(x1,x2)
term1 = -(x2+47) * sin(sqrt(abs(x2+x1/2+47)));
term2 = -x1 * sin(sqrt(abs(x1-(x2+47))));
y = term1 + term2;
end
clc
clear
close all
clc
clear
close all
[x,y]= meshgrid(-500:2:500);
[mx,my] = size(x);
z = zeros(size(x));
for ii = 1:mx