无约束优化中的应用2007/06/02 23:56
求在-5 当n=2时,
[x1,x2] = meshgrid(-5:0.1:5);
f=-20*exp(-0.2*sqrt(0.5*(x1.^2+x2.^2)))-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)))+22.71282;
mesh(x1,x2,f);
xlabel('x1');
ylabel('x2');
zlabel('f(x1,x2)');
如图
遗传算法的参数设置如下:
种群大小 pop_size=10
最大代数 gen_max=1000
变异率 pm=0.1
交叉率 pc=0.3
function [eval]=griewangk(sol)
numv = size(sol,2);
x=sol(1:numv);
eval=-20*exp(-0.2*sqrt(sum(x.^2)/numv))-exp(sum(cos(2*pi*x))/numv)+22.71282;
function [sol,eval]=Ackleymin(sol,options)
numv = size(sol,2)-1;
x=sol(1:numv);
eval=griewangk(x);
eval=-eval;
%维数n=2
%设置参数边界
bounds = ones(2,1)*[-5 5];
%遗传算法优化
[p,endPop,bestSols,trace]=ga(bounds,'Ackleymin');
%性能跟踪
plot(trace(:,1),trace(:,3),'b-')
hold on
plot(trace(:,1),trace(:,2),'r-')
xlabel('Generation');
ylabel('Fittness');
legend('解的变化','种群平均值的变化');
p =
0.0000 -0.0000 0.0055
即最优解围p=0.0000 0.0000
最小值为:
Ackley(p)=0.0055