手机版 | 登陆 | 注册 | 留言 | 设首页 | 加收藏
当前位置: 网站首页 > 最新快讯 > 文章 当前位置: 最新快讯 > 文章

GEP中的轮盘赌选择程序(MATLAB)

时间:2019-11-14    点击: 次    来源:网络    作者:佚名 - 小 + 大

GEP中的轮盘赌选择程序(MATLAB)

GEP中的轮盘赌选择程序(MATLAB)  


GEP中考虑了遗传算法中常用的选择算子,包括轮盘赌选择(roulette wheel selection),确定性选择(deterministic)和竞标赛选择(tournament selection)。Ferreira分析了这三种不同的选择算子对算法性能的影响,最后得出初步结论,选择算子的使用对算法性能影响不大,但轮盘赌选择表现更加稳定。也因此,Ferreira的所有实验都是采用轮盘赌选择。同时,由于轮盘赌有可能失去上一代最佳个体,因而GEP算法采用了简单精英策略(simple elitism)(即复制最佳个体直接进入新一代种群),以防止通过遗传操作而导致种群中的最优个体消失。又因为算法中使用了轮盘赌选择,所以GEP算法的选择策略又称为“保留精英的轮盘赌策略(roulette-wheel sampling with simple elitism)”。

轮盘赌选择,基本思想就是个体被选中的概率与该个体的适应度值成正比,适应度值越大,该个体被选中的几率就越大。具体可参考:

注意:轮盘赌选择并不要求对个体先按适应度值从大到小或者从小到大排列。

另外,在GEP中,经常会出现适应度值为0的染色体,对于这种情况,我个人采取了以下处理方式:①如果种群中所有个体适应度值为0,则对这些个体采取随机抽取的方式来选择。②如果种群中个体的适应度值不全为0,则先将适应度为0的个体删除,不考虑在选择范围内,然后从剩余的个体中进行轮盘赌选择进行挑选。

需要注意的是,对于情况①即适应度值全0的情况,该情况多出现在种群进化初期的随机初始化初始种群时候,而Ferreira指出,如果出现这种情况,则重新初始化,直至种群中至少有一个个体适应度值不为0为止。同时,由于采取了简单精英策略,只有种群中有了适应度值不为0的个体,则在后续进化过程中,种群至少会有一个精英个体的存在来保证种群适应度值不全为0。

为了程序的可移植性,本人的轮盘赌选择matlab程序采取了①②所述的情况,具体如下:

function index=RouletteWheelSelection(V,m)
%用Roulette Wheel Selection法选择m个个体
% Input:
%      V           -----待挑选种群中每个个体的重要性指标(如适应度等)
%      m           -----选择的个体数
% Output:
%      index       -----挑选的m个体的位置索引

%Tips:当V为全零向量时,该算法无效,将随机选择个体;否则算法将从重要性指标不为0的个体中选择。

n=size(V,2);%待挑选的个体数
    if max(V)==0&min(V)==0%如果V是全零向量,随机选择
        index=ceil(rand(1,m)*n);
    else
        %将适应度为0的个体驱逐出待选择范围
        temindex=find(V~=0);
        n=length(temindex);%待挑选的个体数目降低
        V=V(temindex);

        index=zeros(1,m);
        %[V,I]=sort(V,'descend');
        V=cumsum(V)/sum(V);

        pp=rand(1,m);
        for i=1:m,
            for j=1:n,
                if pp(i)<V(j)
                    index(i)=j;
                    break
                end
            end
        end
        index=temindex(index);
    end

上一篇:遗传算法-锦标赛选择法

下一篇:清扫机器人罗比与遗传算法,轮盘赌算法(算法)

 别浪费都给你吧懒得弄电脑来到宁波懒得弄便利店内懒得弄 哪来的呢懒得弄老地方能力的看法卡积分换员不是卡八VB不不大好说是 时空金币是那伤口局部深V不睡觉 100是开放道具卡类风湿VB你没收到是是你
备案5589485-ICP编号  |   QQ:微信:SL49568  |  地址:北京市东城区  |  电话:186-5901-6237  |