GEP中的轮盘赌选择程序(MATLAB)
2012-11-07 23:22
1056 查看
GEP中的轮盘赌选择程序(MATLAB)
2011-04-02 22:49:34GEP中考虑了遗传算法中常用的选择算子,包括轮盘赌选择(roulette wheel selection),确定性选择(deterministic)和竞标赛选择(tournament selection)。Ferreira分析了这三种不同的选择算子对算法性能的影响,最后得出初步结论,选择算子的使用对算法性能影响不大,但轮盘赌选择表现更加稳定。也因此,Ferreira的所有实验都是采用轮盘赌选择。同时,由于轮盘赌有可能失去上一代最佳个体,因而GEP算法采用了简单精英策略(simple elitism)(即复制最佳个体直接进入新一代种群),以防止通过遗传操作而导致种群中的最优个体消失。又因为算法中使用了轮盘赌选择,所以GEP算法的选择策略又称为“保留精英的轮盘赌策略(roulette-wheel sampling with simple elitism)”。
轮盘赌选择,基本思想就是个体被选中的概率与该个体的适应度值成正比,适应度值越大,该个体被选中的几率就越大。具体可参考:http://hi.baidu.com/wangxiaoliblog/blog/item/d7ee698bafeef8739f2fb451.html
注意:轮盘赌选择并不要求对个体先按适应度值从大到小或者从小到大排列。
另外,在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
来源:http://winsonman.blog.163.com/blog/static/1040091082010112492549840/
相关文章推荐
- 分享五个关于特征选择的MATLAB实现程序
- 用Matlab编写GEP程序
- matlab练习程序(生成黑白网格)
- MATLAB 2012 "查找安装程序类时出错,查找类时出现异常"的解决方法
- 脱离matlab运行可执行程序
- Unscented kalman Filtering 无损卡尔曼滤波的matlab程序
- matlab练习程序(中值滤波)
- 24点游戏的Matlab程序
- 计算图片的hsv值matlab程序
- Struts2中允许用户自行选择程序语言
- 在程序中粗粒度和细粒度方法的选择权衡
- matlab图像显示程序模板
- C程序调用matlab (Win8 64 bit + VS 2013 + Matlab R2014a)
- 打开方式-选择默认程序里面-无法添加程序
- 用matlab实现完全重建两通道滤波器组的程序详解
- matlab:从参考二维矩阵中选择出指定的元素
- (iOS)iPhone手机程序源码:全代码实现选择视图界面NSArray
- Matlab程序 转C++/Opencv基于Mat 不可不知的17个函数
- 第四章逻辑运算和选择结构程序(上)
- 选择安全远程接入程序的十点建议