• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: Matlab
  • 标签: 遗传算法  

资源简介

自己写的一个遗传算法的matlab实现,有注释,实现了基本的遗传算法思想,用于求解函数极大值,初学者可以借鉴,相信有很大帮助价值。缺点是算法难收敛,搞懂算法思想后,大家可自行改进。

资源截图

代码片段和文件信息

clc
clear
%第一步:初始化,产生初始种群
%初始种群数n
%迭代次数itr
%杂交概 率pc
%变异概率pm 
%最优化问题:maxf(x1x2)=21.5+x1*sin(4*pi*x1)+x2*sin(20*pi*x2)
n=40;
itr=200;
pc=0.25;
pm=0.2;
for i=1:n
    for j=1:33
        if(rand(1)>0.5)
            p(ij)=1;
        else p(ij)=0;
        end
    end
end
%计算父体的适应值
for i=1:n
    dec1=bin2dec(int2str(p(i1:18)));
    x1=-3+dec1*15.1/(2^18-1);
    dec2=bin2dec(int2str(p(i19:33)));
    x2=4.1+dec2*1.7/(2^15-1);
    F(i)=fun1(x1x2);
end
%进入遗传算法,进化itr代
for itr=1:itr
  
    [G(itr)g]=max(F);
    p2(itr:)=p(g:);
    
    for j=1:n                                %父体选择,轮盘赌选择
        Ps(j)=F(j)/sum(F(:));
        Pcn(j)=sum(Ps(1:j));
    end

    for l=1:n
        for k=1:n
            r=rand(1);
            if r<=Pcn(1)
                p1(l:)=p(k:);
            else if r<=Pcn(k)&r>Pcn(k-1)
                    p1(l:)=p(k-1:);
                end
            end
        end
    end
    %父体选择结束
    %杂交,产生下一代。遗传算子,包括杂交算子和变异算子

    k=0;
    for i=1:n                                %杂交
        if rand(1)<=pc
            if  k==0
        

评论

共有 条评论