gusucode.com > matlab优化的遗传算法来优化支持向量机的参数源码程序 > 优化的遗传算法来优化支持向量机的参数/遗传优化向量机/Select.m

    function ret=Select(individuals,sizepop)
% 该函数用于进行选择操作
% individuals input    种群信息
% sizepop     input    种群规模
% ret         output   选择后的新种群
%% 无回放余数随机选择算子
N=floor(sizepop*individuals.fitness/sum(individuals.fitness));
new_fitness=individuals.fitness-N*sum(individuals.fitness)/sizepop;%新适应度
fitness1=new_fitness; 

%个体选择概率
sumfitness=sum(fitness1);
sumf=fitness1./sumfitness;

%采用轮盘赌法选择新个体
index=[]; 
for i=1:(sizepop-sum(N))   %sizepop为种群数
    pick=rand;
    while pick==0    
        pick=rand;        
    end
    for i=1:sizepop    
        pick=pick-sumf(i);        
        if pick<0        
            index=[index i];            
            break;  
        end
    end
end

%% 汇总所有选择出的新的个体
%赌博轮盘选择出的个体
temp1=individuals.chrom(index,:);   
f1=individuals.fitness(index);
if size(f1,2)==1
else
f1=f1';
end
% 按比例选择出的个体
for i=1:length(N)
    if N(i)==0
    else
  temp1=[temp1;repmat(individuals.chrom(i,:),N(i),1)];
  f1=[f1;repmat(individuals.fitness(i),N(i),1)]; 
    end
end
individuals.chrom=temp1;individuals.fitness=f1;
ret=individuals;
end