Un algorithme génétique en Julia - partie 5
Aujourd’hui je cherche à faire une fonction crossover
, pour effectuer un
croisement entre deux chromosomes.
Soit les deux chromosomes suivants:
julia> a = [1, 2, 3, 4, 5]
julia> b = [6, 7, 8, 9, 0]
Pour obtenir la taille d’un tableau:
julia> length(a)
5
Pour obtenir le point de croisement, on tire au hasard:
julia> cut_point = rand(1:length(a))
4
Le nouveau chromosome sera composé du début du premier, jusqu’au point de croisement:
julia> cut_point = 3
3
julia> a[1:cut_point]
3-element Array{Int32,1}:
1
2
3
Puis de la fin du second chromosome:
julia> a[cut_point + 1:end]
2-element Array{Int32,1}:
4
5
Si on rassemble tout ça dans un tableau, on obtient notre nouveau chromosome:
julia> [ a[1:cut_point], b[cut_point + 1:end] ]
5-element Array{Int32,1}:
1
2
3
9
0
Il ne reste plus qu’à en faire une fonction:
À demain.
/ / / / / / / / / /
« Un algorithme génétique en Julia - partie 4 ---//---
Un algorithme génétique en Julia - partie 6 »