轮盘赌算法的实现
(1)基本原理
占比越大被选中的可能性就越大;各个个体被选中的概率与其适应度函数值大小成正比,它是为了防止适应度数值较小的个体被直接淘汰而提出的。
①个体选择概率:
适应度数值越高,它被选中的概率就越大。P=f/Σf
②累积概率:
把各个个体的概率使用不同长度的线段来表示,这些线段组合成一条直线,直线的长度为1。
(2)保留精英的轮盘赌策略
因为轮盘赌算法可能会失去上一代中的最优个体,通过复制最佳个体直接进入新一代种群,以防止通过遗传操作而导致种群中的最优个体消失。
轮盘赌选择并不要求对个体先按适应度值从大到小或者从小到大排列。
(3)实例1
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);
in

最低0.47元/天 解锁文章
1155

被折叠的 条评论
为什么被折叠?



