Un algorithme génétique en Julia - partie 17
Aujourd’hui j’ai envie de faire une version récursive de la fonction
run
. Voici la version actuelle:
function run(population_size, genes_size, generations, fight_rate)
current = create_population(population_size, genes_size)
for i in 1:generations
scores = score(current)
best = maximum(scores)
println("Generation $i Best $best")
selection = tournament(scores, fight_rate)
current = reproduction([], current, selection, population_size)
end
end
Et en voici une version récursive (avec un helper):
function run(population_size, genes_size, generations, fight_rate)
current = create_population(population_size, genes_size)
run_helper(current, population_size, fight_rate, generations)
end
function run_helper(current, population_size, fight_rate, generations,
generation = 1)
scores = score(current)
best = maximum(scores)
println("Generation $generation Best $best")
if generation < generations
selection = tournament(scores, fight_rate)
current = reproduction([], current, selection, population_size)
run_helper(current, population_size, fight_rate, generations, generation + 1)
end
end
Alors je me doute que je suis sûrement assez maladroit avec Julia, que j’apprend, et avec le style récursif, qui ne coule pas de source chez moi, mais j’ai quand même l’impression que ça n’apporte rien du tout au programme !
Pour l’instant, je pense que je vais me limiter souvent à des boucles
for
;)
À demain.
/ / / / / / / / / /