www.gusucode.com > matlab编程求解机器人的正逆解 采用遗传算法对机器人进行路径规划源码程序 > code/遗传算法/Genetic_select.m
function P = Genetic_select(vecpop) %此为遗传算法的自然选择函数 %参数初始化 Genetic_init %定义适应度 Fitness = zeros(1,popSize); FitnessRate = zeros(1,popSize); P = cell(1,popSize); P_k = 1; bestFitness = 0; bestFitness_num = 0; for i=1:popSize Fitness(i) = 1/evaluate(vecpop{i}); if Fitness(i) > bestFitness bestFitness = Fitness(i); bestFitness_num = i; end totalFitness = totalFitness+Fitness(i); end for i=1:popSize for j=1:i FitnessRate(i) = Fitness(j)/totalFitness+FitnessRate(i); end end select_num = rand(1,popSize); for k=1:popSize for i=1:popSize if i == 1 if select_num(k)<FitnessRate(i) P{P_k} = vecpop{i}; end else if i == popSize if select_num(k)>FitnessRate(i-1) P{P_k} = vecpop{i}; end else if select_num(k)>=FitnessRate(i-1) && select_num(k)<=FitnessRate(i) P{P_k} = vecpop{i-1}; end end end end P_k=P_k+1; end bestGeneration = vecpop{bestFitness_num}; P{popSize+1} = bestGeneration; P{popSize+2} = bestFitness; disp('完成一次自然选择');