遗传算法的matlab实现

function [xv,fv]=myGA(fitness,a,b,NP,NG,Pc,Pm,eps)
% fitness:待优化的目标函数
% a:自变量的下界
% b:自变量的上界
% NP:种群个体数20-100
% NG:最大进化代数100-500
% Pc:杂交概率0.4-0.99
% Pm:变异概率0.0001-0.1
% eps:自变量离散精度
% xm:目标函数取最小值时的自变量值
% fv:目标函数的最小值
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 i=1:NG
    sumfx=sum(fx);          %所有个体适应值之和
    Px=fx/sumfx;            %所有个体适应值的平均值
    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&#
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值