📄 findminusinges2.m
字号:
% findMinUsingES2.m
% Find min. of xsin(4x)+1.1ysin(2y) in 0 to 10 in x,y using
% Evolution strategy and Roulette-wheel selection.
% For comparison, see GA_ex21.m file.
%% PenChen Chou, 2004-5-11
clear
fprintf('<<< Execution of findMinUsingES2.m file>>>\n');
rand('state',sum(100*clock)); % Seed
% Initial settings
genSize=15500; popuSize=50; MIN_offset=25; globalFit=0;
sigma=0.1;
range=[0 0
10 10];
[junk,var_n]=size(range);
% Inital population
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=popu(:,1).*sin(4*popu(:,1))+1.1*popu(:,2).*sin(2*popu(:,2));
fit=MIN_offset-fit;
figure;
hold on
% Generation begins
for loop=1:genSize
% Best Fitness stored
[bestFit, indx]=max(fit);
if bestFit>globalFit,
globalFit=bestFit;
bestX=popu(indx,1);
bestY=popu(indx,2);
end
% Print out
fprintf('#Gen=%4d; bestFit=%15.8f; x=%10.6f; y=%10.6f\n',...
loop,MIN_offset-globalFit,bestX,bestY);
if loop==1
plot(bestX,bestY,'+');
elseif loop==genSize
plot(bestX,bestY,'o');
else
plot(bestX,bestY,'.');
end
% Roulette-wheel Selection
popu=GA_wheel(fit, popu);
% Mutation used for Evolution Strategy
popu=GA_evolutionStrategy(popu,range,sigma);
% Fitness calculation
fit=popu(:,1).*sin(4*popu(:,1))+1.1*popu(:,2).*sin(2*popu(:,2));
fit=MIN_offset-fit;
end
% Fix the diagram
grid
axis([0 10 0 10])
title('Trajectory,+=start; o=endPoint')
% End of this program
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -