select.m

来自「Roulette Wheel Selection」· M 代码 · 共 36 行

M
36
字号
function [selectedparent1 selectedparent2]= select(fitness,totpop)
rand('state',sum(100*clock));
%selection of new generation by roulette wheel selection
disp('selection of new generation');

sumfitness=sum(fitness);
slotvalue(1:totpop)=fitness(1:totpop);
roulettevalue=sumfitness*rand(1);

totalslots=slotvalue(1);
index=2;
while roulettevalue>totalslots
    totalslots=totalslots+slotvalue(index);
    index=index+1;
end
selectedparent1=index-1;

roulettevalue=sumfitness*rand(1);
totalslots=slotvalue(1);
index=2;
while roulettevalue>totalslots
    totalslots=totalslots+slotvalue(index);
    index=index+1;
end
selectedparent2=index-1;
% while selectedparent2==selectedparent1
%     disp('selectedparents are equal')
%     roulettevalue=sumfitness*rand(1);
%     totalslots=slotvalue(1);
%     index=2;
%     while roulettevalue>totalslots
%         totalslots=totalslots+slotvalue(index);
%         index=index+1;
%     end
%     selectedparent2=index-1;
% end

⌨️ 快捷键说明

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