ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

锦标赛选择算法及 matlab 实现

2021-04-30 17:04:09  阅读:225  来源: 互联网

标签:种群 Fit 锦标赛 个体 选择 算法 适应度 matlab Sel


锦标赛选择(Tournament Selection)

每次从种群中取一定数量(n)的个体(放回抽样),选择其中适应度较好的进入子代种群。重复该操作直到种群规模到和原来的种群规模一样。几元锦标赛就代表一次性从总体中抽取几个个体,然后从中选择最优的个体保留到下一代种群。

步骤如下:

  1. 确定每次选择的个体数量N。(二元锦标赛选择即选择2个个体)

  2. 从种群中随机选择N个个体(每个个体被选择的概率相同) ,根据每个个体的适应度值,选择其中适应度值最好的个体进入下一代种群。

  3. 重复步骤(2)多次(重复次数为种群的大小),直到新的种群规模达到原来的种群规模。

优点:

  1. 更小的复杂度,无需对所有适应度进行排序处理
  2. 不易陷入局部最优点
  3. 易于并行化处理

代码如下:

% Tournament 本次使用二元锦标赛选择,即每次选择两个个体
clear
clc

% 设置种群大小为10,其适应度值Fit,使用随机函数生成,取值范围[0,1]
Fit = rand(10,1)
% 选择的个体索引
Sel = [];

for i = 1:length(Fit)

	% 随机选择两个个体
    temp = randi(10,1,2);    
    
    % 比较这两个个体的适应度值大小,选择大的
    if Fit(temp(1)) >= Fit(temp(2))
        Sel(i) = temp(1);
    else
        Sel(i) = temp(2);
    end
end

Sel = Sel'

结果分析:

Fit =
    0.3103
    0.3289
    0.2767
    0.3893
    0.2800
    0.4601
    0.3739
    0.4023
    0.4171
    0.6204
Sel =
     7
     7
     4
    10
     9
     6
     8
     3
     7
     9

选择最多的是第7个个体,其适应度值为 0.3739。

与轮盘赌选择结果不一样~~

标签:种群,Fit,锦标赛,个体,选择,算法,适应度,matlab,Sel
来源: https://blog.csdn.net/future12356/article/details/116306505

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有