www.gusucode.com > matlab编程求解机器人的正逆解 采用遗传算法对机器人进行路径规划源码程序 > code/遗传算法/Genetic_cross.m
function P = Genetic_cross(vecpop) %此为遗传算法的杂交函数 %参数初始化 Genetic_init P = cell(1,1); len = length(vecpop); CrossRadom = randperm(len); for i=1:len/2 P{P_k} = vecpop{CrossRadom(i)}; P{P_k+1} = vecpop{CrossRadom(i*2)}; if rand<crossoverRate b = rand; b1 = 0.5+b; b2 = 0.5-b; tempA = P{P_k}; tempB = P{P_k+1}; P{P_k} = b1*tempA+b2*tempB; P{P_k+1} = b1*tempB+b2*tempA; if min(P{P_k})<-1/1000 || min(P{P_k+1})<-1/1000 || max(P{P_k})>1/1000 || max(P{P_k+1})>1/1000 bita = rand; P{P_k} = bita*tempA+(1-bita)*tempB; P{P_k+1} = bita*tempB+(1-bita)*tempA; end end P_k = P_k+1; end disp('完成一次基因交叉');