您现在的位置:首页 >> ★免费资源 >> 源码下载 >> 内容

基于智能算法遗传算法matlab源码程序

时间:2017-12-30 2:41:27 点击:

  核心提示:基于智能算法遗传算法matlab源码程序...

基于智能算法遗传算法matlab源码程序

可在此算法基础上进行改进,优化算法,简单易懂

function [xv,fv] = SBOGA(fitness,a,b,NP,NG,q,Pc,Pm,eps)
%顺序选择遗传算法
L = ceil(log2((b-a)/eps+1));       %根据离散精度,确定二进制编码需要的码长

x = zeros(NP,L);

for i=1:NP
    
    x(i,:) = Initial(L);                %种群初始化         
    
    fx(i) = fitness(Dec(a,b,x(i,:),L));  %个体适应值
    
end

for k=1:NG
    
    [sortf,sortx] = sort(fx);            %适应值排序
    
    x = x(sortx,:);
    
    fx = fx(sortx);
    
    for i=1:NP                           %固定选择概率
        
        Px(i) = (1-q)^(NP-i)*q/(1-(1-q)^NP);
        
    end
    
    PPx = 0;
    
    PPx(1) = Px(1);
    
    for i=2:NP                        %用于轮盘赌策略的概率累加
        
        PPx(i) = PPx(i-1) + Px(i);
        
    end

    for i=1:NP
        
        sita = rand();
        
        for n=1:NP
            
            if sita <= PPx(n)
                
                SelFather = n;           %根据轮盘赌策略确定的父亲
                
                break;
                
            end
            
        end
        
       Selmother = floor(rand()*(NP-1))+1;  %随机选择母亲
        
        posCut = floor(rand()*(L-2)) + 1;     %随机确定交叉点
        
        r1 = rand();
        
        if r1<=Pc                                     %交叉
            
            nx(i,1:posCut) = x(SelFather,1:posCut);
            
            nx(i,(posCut+1):L) = x(Selmother,(posCut+1):L);
            
            r2 = rand();
            
            if r2 <= Pm                               %变异
                
                posMut = round(rand()*(L-1) + 1);
                
                nx(i,posMut) = ~nx(i,posMut);
                
            end
            
        else
            
            nx(i,:) = x(SelFather,:);
            
        end
        
    end

    x = nx;
    
    for i=1:NP
        
        fx(i) = fitness(Dec(a,b,x(i,:),L));   %子代适应值
        
    end
    
end

fv = -inf;

for i=1:NP
    
    fitx = fitness(Dec(a,b,x(i,:),L));
    
    if fitx > fv
        
        fv = fitx;                                %取个体中的最好值作为最终结果
        
        xv = Dec(a,b,x(i,:),L);
        
    end
    
end

function result = Initial(length)         %初始化函数

for i=1:length 

    r = rand();

    result(i) = round(r);  

end

function y = Dec(a,b,x,L)         %二进制编码转换为十进制编码

base = 2.^((L-1):-1:0);

y = dot(base,x);

y = a + y*(b-a)/(2^L-1);

作者:基于智能算法遗传算法matlab源码程序 来源:基于智能算法遗传算法matlab源码程序
  • 您是如何找到本站的?
  • 百度搜索
  • Google搜索
  • 查阅资料过程中
  • 论坛发现
  • 百度贴吧发现
  • 朋友介绍
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
  • matlab代做|matlab专业代做|matlab淘宝代做(www.hslogic.com) © 2018 版权所有 All Rights Reserved.
  • Email:highspeed_logic@163.com 站长QQ: 1224848052

    专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科毕业设计、课题设计、论文,毕业论文,Coursework、Eassy、Assignment