?? 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 + -