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

资源简介

单目标最优化问题的遗传算法,可用与数学建模中,很方便快捷,matlab

资源截图

代码片段和文件信息

function[xvfv]=GA(fitnessabNPNGpcpmeps)
%待优化的目标函数:fitness
%自变量下界:a
%自变量上界:b
%种群个体数:NP
%最大进化代数:NG
%杂交概率:pc
%自变量概率:pm
%自变量离散精度:eps
%目标函数取最大值时的自变量值:xm
%目标函数的最大值:fv
L=ceil(log2((b-a)/eps+1));   %根据离散精度,确定二进制编码需要的码长
x=zeros(NPL);
for i=1:NP
    x(i:)=Initial(L);%种群初始化
    fx(i)=fitness(Dec(abx(i:)L));  %个体适应值
end
for k=1:NG
    sumfx=sum(fx);   %所有个体适应值之和
    px=fx/sumfx;   %所有个体适应值的平均值
    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(i1:posCut)=x(SelFather1:posCut);
            nx(i(posCut+1):L)=x(Selmother(posCut+1):L);
            r2=rand();
            if r2<=pm    %变异
                posMut=round(rand()*(L-1)+1);
                nx(iposMut)=~nx(iposMut);
            end
        else
            nx(i:)=x(SelFather:);
        end
    end
    x=nx;
    for i=1:NP
        fx(i)=fitness(Dec(abx(i:)L));%子代适应值
    end
end
fv=-inf;
for i=1:NP
    fitx=fitness(Dec(abx(i:)L));
    if fitx>fv
            fv=fitx;       %取个体中的最好值作为最终结果
            xv=Dec(abx(i:)L);
        end
    end
    function result=Initial(length)   %初始化函数
    for i=1:length
        r=rand();
        result(i)=round(r);
    end
        function y=Dec(abxL)  %二进制编码转换为十进制编码
            base=2.^((L-1):-1:0);
            y=dot(basex);
            y=a+y*(b-a)/(2^L-1);
            %[xvfv]=GA(@fitness030501000.90.040.01)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2021  2013-09-12 21:03  GA.m

----------- ---------  ---------- -----  ----

                 2021                    1


评论

共有 条评论