📄 findmaxusinges.asv
字号:
% findMaxUsingES.m
% Find max. of sinc(x)sinc(y) in -5 to 5 in x,y using
% Evolution strategy.
%% PenChen Chou, 2004-5-11
rand('state',sum(100*clock)); % Seed
% Initial popu
genSize=1500; popuSize=50;
range=[-5 -5
5 5];
[junk,var_n]=size(range);
for i=1:var_n
popu(1:popuSize,i)=rand(popuSize,1)*(range(2,i)-range(1,i))+...
range(1,i);
end
% Fitness calculation
fit=sinc(popu(:,1)).*sinc(popu(:,2));
globalFit=0;
figure;
hold on
% Generation begins
for loop=1:genSize
% Best Fitness
[bestFit, indx]=max(fit);
if bestFit>globalFit,
globalFit=bestFit;
bestX=popu(indx,1);
bestY=popu(indx,2);
end
fprintf('#Gen=%4d; bestFit=%15.8f; x=%10.6f; y=%10.6f\n',...
loop,globalFit,bestX,bestY);
if loop==1
plot(bestX,bestY,'+');
elseif loop==genSize
plot(bestX,bestY,'o');
else
plot(bestX,bestY,'.');
end
% Selection
popu=GA_wheel(fit, popu);
% Mutation
sigma=0.1;
popu=GA_evolutionStrategy(popu,range,sigma);
% Fitness calculation
fit=sinc(popu(:,1)).*sinc(popu(:,2));
end
grid
axis([-5 5 -5 5])
title('Trajectory,+=start; o=endPoint')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -