⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ga.asv

📁 在matlab环境下用人工智能算法--遗传算法求函数极植的matlab程序
💻 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 + -