1. 概述

在本教程中,我们将学习遗传算法中常用的轮盘赌选择(Roulette Wheel Selection)方法。该方法是一种基于个体适应度的概率选择策略,广泛应用于遗传算法的进化过程中。

2. 遗传算法简介

在遗传算法中,染色体的选择是进行重组(crossover)的关键步骤。遗传算法本身是一种受生物进化过程启发的优化算法,广泛应用于机器学习、路径规划、参数优化等多个领域。

例如,在强化学习中用于策略选择,在深度学习中用于参数优化,或在组合优化问题(如子集和问题、路径搜索问题)中也有广泛应用。遗传算法在材料科学、计算生物学、医学等领域也发挥着重要作用。

要使遗传算法正常工作,必须首先解决染色体之间的重组问题。

3. 重组机制

在遗传算法中,个体通常由固定长度的染色体表示,染色体的每一位代表一个参数或特征:

Rendered by QuickLaTeX.com

通过这种方式,一个个体可以用一个二进制染色体表示。整个种群最多可表示 2^n 个不同个体。

在强化学习策略中,染色体通常表示智能体的感知系统或运动控制器,或两者结合。每个个体在环境中运行后会获得一个适应度值 f_i,用于衡量其表现。

之后,我们进入重组阶段,从种群中选出表现较好的个体作为父母进行交叉操作。

4. 基于适应度的选择

为了选出合适的父母,我们需要一种基于适应度值的选择机制:

Couple

选择方法主要分为两类:

  • 确定性方法:例如选择适应度最高的前 n 个个体。但容易导致种群陷入局部最优。
  • 随机性方法:完全随机选择个体,不考虑适应度,缺乏方向性。

轮盘赌选择是一种折中方案,它根据适应度值赋予每个个体被选中的概率,从而在保持多样性的同时推动种群向更优方向进化。

5. 轮盘赌选择的基本原理

轮盘赌选择是一种基于适应度的概率选择方法,其核心思想是:

个体适应度越高,被选中的概率越大

它的灵感来源于现实中的轮盘游戏:

roulette 1

但与真实轮盘不同的是,这里的每个“槽”代表一个个体,其宽度与其适应度成正比:

roulette2

轮盘赌选择的两个关键点是:

  1. 适应度与被选中概率成正比
  2. 所有个体的概率之和为 1,因此需要对适应度进行归一化处理

6. 轮盘赌选择算法实现

在一个包含 n 个个体的种群中,对于每个个体 x,其适应度为 f_x,计算其被选中的概率如下:

p_x = \frac {f_x} {\sum_{i=1}^{n} f_i}

然后,我们使用这个概率分布进行随机抽样,选出若干个体作为父母用于交叉操作。

示例代码(Java)

public class RouletteWheelSelection {

    public static int select(double[] fitness) {
        double totalFitness = Arrays.stream(fitness).sum();
        double[] probabilities = Arrays.stream(fitness)
                                       .map(f -> f / totalFitness)
                                       .toArray();

        double randomValue = Math.random();
        double cumulative = 0.0;

        for (int i = 0; i < probabilities.length; i++) {
            cumulative += probabilities[i];
            if (randomValue <= cumulative) {
                return i;
            }
        }

        return -1; // fallback
    }

    public static void main(String[] args) {
        double[] fitness = {10, 20, 30, 40};
        int selected = select(fitness);
        System.out.println("Selected individual index: " + selected);
    }
}

✅ 示例说明:

  • fitness 数组表示每个个体的适应度值
  • select 方法模拟轮盘转动过程
  • 每次调用返回一个被选中的个体索引

⚠️ 注意事项:

  • 适应度不能为负数,否则会导致概率计算错误
  • 如果所有个体适应度都为 0,则所有个体被选中的概率相同
  • 该方法容易受适应度差异过大影响,可能需要引入平滑策略

7. 小结

在本篇文章中,我们详细介绍了轮盘赌选择方法在遗传算法中的应用。它是一种基于适应度的随机选择策略,能够在保持种群多样性的同时推动进化过程向更优解方向发展。

虽然它不是唯一的选择策略,但在大多数情况下,它是一个简单且有效的选择方式,尤其适合初学者理解和实现。后续我们还可以介绍其他选择策略如锦标赛选择、排名选择等,并对比它们的优劣。


原始标题:Roulette Selection in Genetic Algorithms