-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathF_mating.m
36 lines (33 loc) · 1.08 KB
/
F_mating.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function MatingPool = F_mating(Population,FrontValue,CrowdDistance,number)
%슥토넥朞嶝
[total,D] = size(Population);
N = total/number;
%랗禱젬힙朞嶝
MatingPool = zeros(total,D);
Rank = randperm(N);
Pointer = 1;
for i = 1 : 2 : N
%朞嶝만캡
k = zeros(1,2);
for j = 1 : 2
if Pointer >= N
Rank = randperm(N);
Pointer = 1;
end
p = Rank(Pointer);
q = Rank(Pointer+1);
if FrontValue(p) < FrontValue(q)
k(j) = p;
elseif FrontValue(p) > FrontValue(q)
k(j) = q;
elseif CrowdDistance(p) > CrowdDistance(q)
k(j) = p;
else
k(j) = q;
end
Pointer = Pointer+2;
end
MatingPool((1+number*((i)-1)):(number*(i)),:) = Population((1+number*((k(1))-1)):(number*(k(1))),:);
MatingPool((1+number*((i+1)-1)):(number*(i+1)),:) = Population((1+number*((k(2))-1)):(number*(k(2))),:);
end
end