博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
遗传算法 学习笔记
阅读量:6860 次
发布时间:2019-06-26

本文共 1087 字,大约阅读时间需要 3 分钟。

hot3.png

一.算法思想

       模拟达尔文进化论的自然选择和遗传学的生物进化过程形成的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。

       应用:   函数优化、组合优化(NP问题、TSP问题)自动控制、机器人智能控制、组合图像处理和模式识别,人工生命、遗传程序设计。

二、算法核心

       遗传算法从代表问题可能解的一个种群开始,种群由染色体编码表示,产生初始种群之后,按照适者生存和优胜劣汰的原则,逐代演化产生越来越好的解,在每一代的进化过程中,按照个体的适应度选择个体,借助遗传算子进行交叉变异产生新的种群,最终产生进化过程中的最优解。

150723_D3Lh_818523.png

遗传算法中用到的基本概念: 染色体 种群  个体 适应度 选择 交叉 变异 编码 解码

三、算法框架

a)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。

b)个体评价:计算群体P(t)中各个个体的适应度。

c)选择运算  :将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。 

      常用的选择算子有适应度比例方法,随机遍历抽样法、局部选择法,最常用的是轮盘赌的选择方法

d)交叉运算:将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。

    根据编码的不同,交叉算子有实值交叉和二进制交叉,二进制交叉又分为单点交叉和多点交叉和均匀交叉等。

e)变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。

    根据编码的不同,变异算子有实值变异和二进制变异,一般变异概率小,大多为染色体单点变异。

群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t+1)。

f)终止条件判断:若t=T,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。

150923_5m2k_818523.png

补充:

      轮盘赌选择算子

自然界中,越适应的个体就越有可能繁殖后代。但是也不能说适应度越高的就肯定后代越多,只能是从概率上来说更多。假设种群数目,某个个体其适应度为,则其被选中的概率为:

       

 比如我们有5条染色体,他们所对应的适应度评分分别为:5,7,10,13,15。

        所以累计总适应度为:

                                 150853_v0B7_818523.png

        所以各个个体被选中的概率分别为:

               150840_GJXX_818523.gif    

这个轮盘是按照各个个体的适应度比例进行分块的。你可以想象一下,我们转动轮盘,轮盘停下来的时候,指针会随机地指向某一个个体所代表的区域,那么非常幸运地,这个个体被选中了。(很明显,适应度评分越高的个体被选中的概率越大。)

150756_m9o4_818523.png

转载于:https://my.oschina.net/u/818523/blog/482316

你可能感兴趣的文章
我的友情链接
查看>>
linux笔记--磁盘基础管理
查看>>
KVM系列笔记(2)
查看>>
PHP中一个错误的一生
查看>>
『C#基础』多线程笔记「一」基本说明
查看>>
perl对于encode的用法
查看>>
StrongOD快捷键说明及其例子
查看>>
我的友情链接
查看>>
CVSACL 账号权限发生冲突时的权限判断方法
查看>>
忘记 ROOT 密码怎么办?
查看>>
android单元测试框架中的类
查看>>
C#遍历动态对象属性
查看>>
Mathematica中的尾递归优化
查看>>
Nginx+fastcgi+c语言+jQuery等技术实现设备端web登录
查看>>
QT学习资料
查看>>
Service Mesh:什么是Sidecar模式
查看>>
关于如何将安全意识带入企业的思考
查看>>
反射 注解的解析
查看>>
Docker | 搭建docker本地镜像仓库
查看>>
(转) Python 实现简单的Web服务器
查看>>