遗传算法中的轮盘赌选择法(Roulette Wheel Selection)

一、核心思想

  1. 每个个体适应度越高 ,分到的选择概率越大
  2. 把所有个体适应度拼成一个轮盘
  3. 随机转轮盘,指针落到哪个区间,就选中哪个个体;
  4. 概率 = 个体适应度 / 种群总适应度。

二、数学公式

设种群有 (N) 个个体,第 (i) 个个体适应度为 (f_i)

  1. 种群总适应度:

    F = \\sum_{i=1}\^N f_i

  2. 第 (i) 个个体被选中的概率:

    p_i = \\frac{f_i}{F}

  3. 累积概率(构造轮盘区间):

    P_i = \\sum_{k=1}\^i p_k


三、实现步骤(一步步流程)

  1. 计算种群每个个体适应度 (f_i)
  2. 总适应度 (F)
  3. 算每个个体选择概率 (p_i)
  4. 计算累积概率 (P_i),形成分段区间
  5. 生成一个 0~1 随机数 r
  6. 判断 r 落在哪个累积概率区间,对应个体被选中
  7. 重复多次,选出新种群

四、举个极简例子

种群4个个体,适应度:

(f_1=5,\ f_2=10,\ f_3=3,\ f_4=12)

总适应度 (F = 30)

概率:

  • (p_1 = 5/30 \approx 0.1667)
  • (p_2 = 10/30 \approx 0.3333)
  • (p_3 = 3/30 = 0.1)
  • (p_4 = 12/30 = 0.4)

累积概率:

  • (P_1 = 0.1667)
  • (P_2 = 0.5)
  • (P_3 = 0.6)
  • (P_4 = 1.0)

随机数举例:

  • 若 (r=0.2):在 (0.1667, 0.5) → 选个体2
  • 若 (r=0.7):在 (0.6, 1.0) → 选个体4

适应度越高,占区间越大,被选中概率越高。


五、Python 完整可运行代码实现

python 复制代码
import random
import numpy as np

# 轮盘赌概率分配选择法
def roulette_selection(population, fitness):
    # 1. 总适应度
    total_fit = sum(fitness)
    # 2. 每个个体选择概率
    prob = [f / total_fit for f in fitness]
    # 3. 累积概率
    cum_prob = np.cumsum(prob)
    
    # 4. 随机0~1,选择个体
    r = random.random()
    for i in range(len(cum_prob)):
        if r <= cum_prob[i]:
            return population[i]

# 测试
if __name__ == "__main__":
    pop = ['个体1','个体2','个体3','个体4']
    fit = [5, 10, 3, 12]
    selected = roulette_selection(pop, fit)
    print("本次选中个体:", selected)

六、关键特点 & 缺点

✅ 优点:

  • 完全按适应度概率分配,优胜劣汰直观
  • 实现简单、经典易懂

❌ 缺点:

  • 容易早熟收敛:超级优秀个体霸占轮盘,很快垄断种群
  • 适应度接近时,选择差异不大

👉 改进:排序选择、锦标赛选择(教学里常用轮盘赌作为基础原理)。


相关推荐
手写码匠5 分钟前
注意力机制全家桶:从 Multi-Head 到 GQA 再到 Flash Attention 的手写实现
人工智能·深度学习·算法·aigc
nuoxin1145 分钟前
HR4988替代A4988-富利威
网络·人工智能·嵌入式硬件·fpga开发·dsp开发
TMT星球7 分钟前
2026中国互联网大会医疗AI分论坛举办,轻松健康发布“证音”并落地多个战略合作
人工智能·搜索引擎·百度
达达尼昂8 分钟前
编码智能体中的模型选择与执行深度
人工智能·后端·程序员
得一录8 分钟前
如何讲解 Agent的架构
人工智能
东方佑14 分钟前
FRSMASH v3.7:当门控机制成为长上下文的枷锁——一个极简修复背后的架构洞见
人工智能·架构
志凌海纳SmartX19 分钟前
构建 Agent Ready 的企业云基础设施(白皮书下载)
人工智能·ai·agent·smartx·企业云·榫卯企业云
AI科技星25 分钟前
乖乖数学全域超复数统一场论:未来可能形成的历史地位
人工智能·机器学习·金融·乖乖数学·全域数学
惢雨26 分钟前
AI 开发技巧(实战技巧)
人工智能·ai编程
霸道流氓气质41 分钟前
Java 工程师 AI 智能体学习路线 · 阶段 1:AI / LLM 基础认知 详解
java·人工智能·学习