📄 selection.m
字号:
function [evo_gen,best_indiv,max_fitness,weizhi]=selection(bin_gen,fitness)
popsize=length(fitness);
[max_fitness,weizhi]=max(fitness);
[min_fitness,index2]=min(fitness);
best_indiv=bin_gen(weizhi,:);
index=[1:popsize];
index(weizhi)=0;
index(index2)=0;
index=nonzeros(index);
evo_gen=bin_gen(index,:);
danyuan=ones(1,popsize);
danyuan(weizhi)=0;
danyuan(index2)=0;
fitness1=danyuan.*fitness;
fitness1=nonzeros(fitness1);
evo_fitness=fitness1;
evo_popsize=popsize-2;
ps=evo_fitness/sum(evo_fitness);%求选择概率p(x)=f(x)/sumf(x)
pscum=cumsum(ps);%求累计概率(详见遗传算法工具箱第17至21页)
r=rand(1,evo_popsize);
selected=sum(pscum*ones(1,evo_popsize)<ones(evo_popsize,1)*r)+1;
evo_gen=evo_gen(selected,:);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -