⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 select.m

📁 简单遗传算法matlab文件?虻ヒ糯惴╩atlab文件
💻 M
字号:
function Ret=select(Individuals,SizePop,Opts)
% In this function,it fulfils a selection among chromosomes
% Individuals input  : set of Individuals
% SizePop     input  : size of population
% Opts        input  : tag for choosing method of selection
% Ret         output : new set of Individuals
switch Opts
    case 'roulette'  % roulette wheel model
        Sumf=Individuals.Fitness./sum(Individuals.Fitness);
        Index=[]; 
        for i=1: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
        Individuals.Chrom=Individuals.Chrom(Index,:);
        Individuals.Fitness=Individuals.Fitness(Index);
        Ret=Individuals;
case 'tournament'  % tourment model 
    AllIndex=[];    
    for i=1:SizePop
        Pick=rand(1,2);
        while prod(Pick)==0
             Pick=rand(1,2);
        end
        Index=ceil(Pick.*SizePop);
        if Individuals.Fitness(Index(1))>=Individuals.Fitness(Index(2))
             AllIndex=[AllIndex Index(1)];
        else
             AllIndex=[AllIndex Index(2)];
        end
    end
    Individuals.Chrom=Individuals.Chrom(AllIndex,:);
    Individuals.Fitness=Individuals.Fitness(AllIndex);
    Ret=Individuals;        
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -