1- # GA seclections
1+ # GA selections
22# ==============
33
44# Rank-based fitness assignment
@@ -7,12 +7,24 @@ function ranklinear(sp::Float64)
77 @assert 1.0 <= sp <= 2.0 " Selective pressure has to be in range [1.0, 2.0]."
88 function rank (fitness:: Vector{Float64} , N:: Int )
99 λ = length (fitness)
10+ <<<<<< < Updated upstream
11+ rank = sortperm (fitness)
12+
13+ prob = Vector {Float64} (undef, λ)
14+ ====== =
1015 idx = sortperm (fitness)
11- ranks = zeros (λ)
16+
17+ ranks = Vector {Float64} (undef, λ)
18+ >>>>>> > Stashed changes
1219 for i in 1 : λ
13- ranks [i] = ( 2.0 - sp + 2.0 * (sp - 1.0 )* (idx [i] - 1.0 ) / (λ - 1.0 ) ) / λ
20+ prob [i] = ( 2.0 - sp + 2.0 * (sp - 1.0 )* (rank [i] - 1.0 ) / (λ - 1.0 ) ) / λ
1421 end
22+
23+ <<<<<< < Updated upstream
24+ return pselection (prob, N)
25+ ====== =
1526 return pselection (ranks, N)
27+ >>>>>> > Stashed changes
1628 end
1729 return rank
1830end
2133function uniformranking (μ:: Int )
2234 function uniformrank (fitness:: Vector{Float64} , N:: Int )
2335 λ = length (fitness)
24- idx = sortperm (fitness, rev = true )
36+ <<<<<< < Updated upstream
2537 @assert μ < λ " μ should be less then $(λ) "
26- ranks = zeros (fitness)
27- for i in 1 : μ
28- ranks[idx[i]] = 1 / μ
29- end
38+
39+ prob = fill (1 / μ, μ)
40+ return pselection (prob, N)
41+ ====== =
42+ @assert μ < λ " μ should equal $(λ) "
43+
44+ ranks = fill (1 / μ, μ)
45+
3046 return pselection (ranks, N)
47+ >>>>>> > Stashed changes
3148 end
3249 return uniformrank
3350end
4057
4158# Stochastic universal sampling (SUS)
4259function sus (fitness:: Vector{Float64} , N:: Int )
60+ selected = Vector {Int} (undef, N)
61+
4362 F = sum (fitness)
4463 P = F/ N
64+
4565 start = P* rand ()
4666 pointers = [start+ P* i for i = 0 : (N- 1 )]
47- selected = Vector {Int} (undef, N)
4867 i = c = 1
4968 for P in pointers
5069 while sum (fitness[1 : i]) < P
@@ -53,6 +72,7 @@ function sus(fitness::Vector{Float64}, N::Int)
5372 selected[c] = i
5473 c += 1
5574 end
75+
5676 return selected
5777end
5878
0 commit comments