user is Number of OD pair; |
Node is all nodes in the network; |
Parents is the chromosomes which be selected; |
nKids is the numbers of chromosomes create by crossover; |
r1, r2 is the chromosomes which are crossover; |
coeC is the number of gene will be crossover; |
thisScore is the multi path score; |
thisGeneScore is the path score in the multi path; |
xoverPoint is genes in the chromosome which be select to crossover; |
lengthXP is length of xoverPoint; |
Begin |
for i = 1:nKids |
Pick chromosomes r1 and r2 from parents; |
coeC is decrease by generations from 1 to 0.2; |
Randomly select xoverPoint which probability small than coeC; |
if thisScore(r1) ≤ thisScore(r2) |
xoverKids(i) = thisPopulation(r1); |
for j = 1 to lengthXP |
if thisGeneScore(r2(j)) < thisGeneScore(r1(j)) |
Record path r1(j) as a; |
Record path r2(j) as b; |
if the route paths in a and b have the same intermediate node (m) |
Interchange the sub-routes (s, m) or (m, d) in a and b; |
else |
xoverKids(i, j) = r2(j); |
end if |
end if |
end for |
else |
xoverKids(i) = thisPopulation(r2); |
for j = 1 to lengthXP |
if thisGeneScore(r1(j)) < thisGeneScore(r2(j)) |
Record path r1(j) as b; |
Record path r2(j) as a; |
if the route paths in a and b have the same intermediate node (m) |
Interchange the sub-routes (s, m) or (m, d) in a and b; |
else |
xoverKids(i, j) = r1(j); |
end if |
end if |
end for |
end if |
end for |
End |