📄 ga.asv
字号:
%function [ymax,x1,x2]=ga()
% 求两个自变量参数的函数的极大值的遗传算法
format long
M=20; % 群体规模
x1min=-3.0;
x1max=12.0;
x2min=4.1;
x2max=5.8; % 以上四句为自变量x1,x2的变化范围
jingdu=1/10000; % 精度要求
pr=0.2; % pr为复制率
pc=0.25; % 交叉率
pm=0.01; % 突变率
N=1000; %最大迭代次数
gen=0; % 迭代次数
[L,L1,L2]=codelength(x1min,x1max,x2min,x2max,jingdu); % 确定字符串长度
% L为个体编码总长度; L1为x1编码长度; L2为x2编码长度
population=init(M,L); % 产生初始群体
bestfitness=0; % 记录最好的适应度值
bestx1=0;
bestx2=0; % 最优值点
% 迭代过程
for gen=1:N
[fitness,x1,x2]=fit(population,M,L,L1,L2,x1min,x1max,x2min,x2max); % 计算群体中各个体适应度值
%z=zeros(M,1);
%z=21.5+x1*sin(4*pi*x1)+x2*sin(20*pi*x2);
%mesh(z)
%axis(x1,x2,x1min,x1max,x2min,x2max)
if (bestfitness<max(fitness))
[bestfitness,index]=max(fitness);
bestx1=x1(index);
bestx2=x2(index);
end % 更新最好的适应度值
sub
plot3(bestx1,bestx2,bestfitness,'gs','LineWidth',10)
%text(bestx1,bestx2,bestfitness,'i')
grid on
hold on
population=reproduction(population,pr,M,fitness); % 复制
population=crossover(population,pc,M,L,fitness); % 交叉
population=mutation(population,pm,M,L); % 变异
end % 迭代结束
% 输出最优值
ymax=bestfitness
x1m=bestx1
x2m=bestx2
%画函数图形
figure
%X=x1min:(x1max-x1min)/100:x1max;
%Y=x2min:(x2max-x2min)/100:x2max;
%[X,Y] = meshgrid(x1min:(x1max-x1min)/100:x1max,x2min:(x2max-x2min)/100:x2max);
%Z=obj(X,Y);
%mesh(Z)
%plot3(X,Y,Z)
%subplot(1,2,1);
%surf(X,Y,Z)
%mesh(X,Y,Z,'EdgeColor','blue')
%axis([x1min x1max x2min x2max 0 40])
ezmesh('obj')
grid on
hold on
%subplot(1,2,2),
plot3(bestx1,bestx2,bestfitness,'gs','LineWidth',10)
hold off
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -