ICode9

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

遗传算法介绍

2021-08-07 18:57:39  阅读:242  来源: 互联网

标签:交叉 变异 介绍 个体 选择 适应度 遗传算法


博主之前学习了遗传算法的原理内容,为了防止忘记,写了这篇博客,也可供初学者参考一二,如有不正确的地方,还望指正,希望和各位共同进步。      

遗传算法是一种经典的优化算法,说白了就是找最值,基本的原理就是通过在规定的区间内不断地搜索解方案,比较挑选出其中的最值。

0 绪论

        首先说明遗传算法的一些专业名词:

        以解决h=x2+y2-lgz为例来进行说明,求最大或最小的h值

        1、个体:个体是用式子中的变量来表示的,例如可以用[x,y,z]来表示某个个体,x,y,z这三个变量可以用二进制或者是实数编码。

        2、种群:许多个个体组成的群体,比如[1,2,3],[2,1,3],[2,4,3]这三个个体就组成一个种群。

        3、适应度:也就是说某个个体对于最优解的适应程度,一般是用函数值来表达就行,比如此处的h就可以作为适应度。

        4、编码、解码:针对个体而言,比如在使用二进制编码时,对x,y,z编成二进制,或者从二进制解码成实数再来计算目标函数值,即适应度。

1 步骤简介

(1)选择

选择操作模仿自然界中的“优胜劣汰”法则,若个体的适应度高则其有更大概率被遗传到下一代,反之则概率较小。进行选择操作的方法有许多,比如轮盘赌选择、排序选择、最优个体保存、随机联赛选择等。

a. 轮盘赌选择:将种群中所有个体的适应度值加和,并把每个个体的适应度值与和的比值作为该个体选择的选择概率,从而个体适应度越高被选中概率越高。

b. 排序选择:按照适应度值大小对所有个体进行排序,并根据排序确定个体被选中的概率。

c. 最优个体保存:会将父代群体中的最优的个体直接保存入子代个体中,保证了优秀个体能够遗传到下一代。

d. 随机联赛选择:设置固定值k,每次随机取k个个体,将其中适应度最高的个体遗传入下一代。

这些选择方法各有优缺点,应根据不同场景、不同要求进行选择,本研究采用随机联赛选择方法。(2)交叉

交叉操作模拟自然界中染色体的交叉换位现象,用于生成新个体,决定了算法的全局搜索能力。

一般用的交叉操作有:单点交叉、多点交叉、均匀交叉、算数交叉等等

(3)变异

变异和交叉都是生成新的个体的重要办法,从而达到在规定的区间内进行搜索的目的。

对于二进制编码,就是在编码中随机改变几位的内容,例如:01011变异最后一位就变成了01010,实现了变异。

对于实数编码,可以每次改变小步长来变异,同样还有二项式变异、高斯变异等一系列变异方法。

2 整体框图

 

 

 

 该框图借鉴的是详解遗传算法(含MATLAB代码)_小草莓的魔法笔记-CSDN博客_遗传算法matlab程序这篇文章。

其中,GEN为遗传代数,M为种群中个体的数量。

1、首先随机初始化种群,计算每个个体的适应度

2、分别对种群中的个体进行选择、交叉、变异操作,直到每个个体都进行了相应的操作,则此时完成了一代种群的计算,代数GEN+1

3、当GEN等于给定的最大迭代代数时,遗传完毕,选出最新的种群个体中适应度最高的个体作为最终解。

注:对于是不是每个个体都要执行一遍交叉和变异的问题,并不一定,可以执行交叉但并不执行变异,或者反过来,当然也有两者都进行的,视情况而定。

3、程序

遗传算法程序.zip-深度学习文档类资源-CSDN下载

 亲测可用的遗传算法程序。

 

标签:交叉,变异,介绍,个体,选择,适应度,遗传算法
来源: https://blog.csdn.net/q15615725386/article/details/119463436

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

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

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

ICode9版权所有