遗传算法轮盘赌选择 - 返回 2 parent 条染色体

Genetic Algorithm roulette selection - returning 2 parent chromosomes

我想在我的 GA 算法中实现轮盘 selection。我尝试遵循指南 ,但它发回了新的人口而不是 2 个最好的 parent。假设我已经找到了初始种群的适应度分数,现在我需要 select 两条 parent 种群的染色体根据它们的适应度。更进一步,它适用于交叉和变异过程。在以下情况下,我如何根据轮盘 selection 找到 2 个最佳 parents 进行交叉?

population = [[text1],[text2],[text3],.....[textnum]]
fitnesses = [0.8057515980834005, 1.2151126619653638, 0.6429369518995411, ... 0.805412427797966]
num = 50

它不会送回新的人口,只是 num parents。如果你想要 2 parents 调用 roulette_select 这样:

roulette_select(population, fitnesses, 2)

通常 GA 交叉运算符需要两个 parents,但有许多 parents 的变化(例如 具有 multi-parent 重组的遗传算法 - A.E。 艾本,P-E。 Raué,Zs。鲁特凯).

还有 self-crossover 个运算符。

所以有一个 num 输入参数是有意义的。