深度学习4遗传算法家族

遗传算法(Genetic   Algorithm,GA)是模拟达尔文生物进化论的自然选择和突变重组的 模型,是一种探索最优解的方法。

1.遗传算法

        传算法是为了解决最优化问题的。假设有一个目标函 y=x²-x,  为了求这个函数的极小值,采用求导方法,函数的导数y'=2x-1=0,   x=0.5,    所以,最小值就是x  为0 .5时,y 为一0.25。现实中,有很多函数是不可导的,这样 的函数如何求其最优值呢?

        遗传算法求取最优解并不要求目标函数可导。遗传算法是模拟达尔文生物进化论的模型,所以这个模型遵从的思想就是:物竞天择。只要有了目标函数(假设要求最小值),目标  函数值越小的个体,存活下去的概率就越大。目标函数就是天,就是选择依据,再加上繁衍、 基因重组和突变,求导解决不了的最优化问题,GA 可以解决。

GA的优点有以下几点:

(1)可以求取连续或不连续变量的最优解;

(2)目标函数不要求可导;

(3)有能力解决大量变量的最优解问题,比如一个函数y 它有100个自变量;

(4)可以最优化极其复杂的目标函数

(5)不容易陷入局部最优,大概率找到全局最优点。

注意:只要记住在遇到最优化问题、无法求解的时候,考虑一下遗传算法就行了。

            整个遗传算法的大致流程分为5步:初始化种群、评价适应性、自然选择、基因重组和 基因突变。编码严格来说不算遗传算法的内容,编码是把数学问题展现成遗传算法的过程。

在创建完种群、自然选择、基因重组、基因突变,整个流程走一遍了之后,算是一代结束。 然后从评价适应性开始,再来一轮,这称为第二代、第三代,直到达到停止条件。遗传算法采用最多的就是二进制编码。

初 始 化 种 群

        如果存在很多的个体或者很多的染色体,就把整体称为种群(Population)  种群的初始化就是随机生成0和1。假设种群数量是Npop, 每一个染色体(个体)的比特数是Nbits, 这个种群可以想象为Npop×Nbit的数组,每一行是一个个体,数组随机生成0和1就可以了。

自 然 选 择   

        在选择之前,对生成的种群进行评价,就是把xy带入到目标函数中。假设有 一个要求取极小值的目标函数 f(x,y), 每个自变量用7位二进制编码。生成一个4个个 体的种群,如图所示。计算每一个个体目标函数的函数值(Cost) 的过程就是评价种群适应性的过程。Cost可以是任意一个函数。 

         自然选择就是决定种群中谁生存谁死亡,生态中强壮的会生存,弱者就死亡。在遗传算法中,Cost  越小的生存,Cost  越大的死亡。

这里有两种决定生死的方法:

(1)第一种是Xrate, 就是这个种群中有百分之几的个体可以存活;

(2)第二种是阈值(Threshold)法,比某一个事先给定的阈值小的个体才能存活,如果无人存活,则重新初始化种群。

注意Threshold方法要求的计算量小,因为不需要对种群的Cost进行排序。

当种群中的一部分个体已经被无情地淘汰掉后,就可以在存活个体中选择可以繁衍的个体。并不是每一个存活的个体都可以繁衍,这里要求:繁衍之后的种群数量与初始种群数量相同。繁衍的方式也有多种:

(1)从最优的个体开始选择能够繁衍的个体;

(2)在存活的个体中完全随机选择能够繁衍的个体;

(3)加权随机选择,即在存活个体中加权随机选择能够繁衍的个体,越优秀的个体被复制的概率就越大;

(4)锦标赛选择(Tournament     Selection),每次从存活个体中随机选择2个或者3个个 体,然后这2个或者3个个体中最优秀的可以繁衍。

        一般使用第3种和第4种繁衍方式。对于加权随机,有两种常用的加权方式,排名加权(通过排名来计算被复制的概率)和花费加权(根据投入的资源或成本来赋予权重的方法)

交 叉 重 组

        交叉(Crossover) 就是交换两个染色体中的一部分。此时种群已经淘汰掉一部分个体 了,剩下也已得到能够繁衍的个体。繁衍就是交叉重组的过程,交叉重组主要有3种方法。

(1)单点交叉。从存活个体中,选择两个繁衍个体,将其染色体中随机选择一处,进行交换。

(2)双点交叉。从存活个体中,选择两个繁衍个体,将其染色体中随机一段进行交换

(3)均匀交叉。每一比特都可能被随机选中,进行交换。存活个体中,可能有不参与繁衍的个体,也可能有参与多次繁衍的个体。

 因 突 变

        突变(Mutation)  就是按照一定的概率,将个体的某些二进制数反转,从0变成1或者从1变成0。

 

        遗传算法一代一代进行,怎么才算收敛呢?遗传算法的收敛条件包括以下几类:

(1)迭代的次数超过设定值;

(2)染色体没有任何变化;

(3)每个染色体的Cost 没有任何变化;

(4)种群的Cost 的均值和方差不再下降。

2.蚁群算法

      蚁群算法蚁群算法(Ant  Colony  Optimization,ACO)与遗传算法都属于智能优化算法,但是ACO  有一定的记忆性,而遗传算法没有。在自然界中,蚂蚁总能找到 一条从巢穴到食物的最优路径,这个算法就是模拟这样的过程。与遗传算法都属于智能优化算法,但是ACO 有一定的记忆性,而遗传算法没有。在自然界中,蚂蚁总能找到 一条从巢穴到食物的最优路径,这个算法就是模拟这样的过程。  

   

        蚁群算法的提出是为了解决旅行商问题(Travel   Salesperson    Problem,TSP),并且表现 出了较好的效果,也有人称其为中国邮递员问题。有很多城市,城市之间彼此相连,从一个城市到另外一个城市需要耗费一定 的成本,且不能多次经过同一个城市,TSP 问题就是如何最节省地走完所有的城市。所以在每一只蚂蚁的脑子里,都假设有一个已经到达过的城市表和未到达的城市表。蚂蚁走到的地方会释放信息素,所以每一个蚂蚁还存储了它所经过的路径的信息素的信息,信息可 以存储在矩阵中,称为个体信息素矩阵。

可以用下面的流程模拟蚂蚁系统:

(1)开始,个体信息素矩阵是空的,所有蚂蚁都在随机位置,Tabu  (禁忌)表中只有起始节点, Allowed(允许)包括除了起始节点的其他所有节点。

(2)蚂蚁从Allowed 表中按照某项规则找到一个节点,然后将该节点从Allowed 表中 删去,添加在Tabu 表中,这个过程重复n—1 (n 是地方的总数)。最后,将起始节点再次 加入Tabu 表中,表示该蚂蚁最终回到出发点。

(3)此时Tabu 表中记录的是蚂蚁行走的路线,根据 Tabu 表计算蚂蚁的个体信息素 矩阵。

(4)通过所有蚂蚁的个体信息素矩阵更新全局信息素矩阵。

(5)从第一步开始重新迭代,唯一不同的是蚂蚁的个体信息素矩阵的初始化不再是空 的,而是全局信息素矩阵。

        在大量实验中发现,蚂蚁系统在解决 小规模的TSP 问题时性能尚可,但是随着问题规模的扩大,蚂蚁系统的算法收敛时间越来越长,甚至出现了停滞现象。因此,后来出现了大量的针对其缺点改进的算法。

精英蚂蚁系统

        精英蚂蚁系统是对基本 AS 算法的第一次改进。基本思想是在每次迭代之后,给予最优路径额外的信息素量,并且将找出这个解的蚂蚁称为精英蚂蚁。在每一次迭代中,所有蚂蚁可以得到一个最优路径Ts(best-so-far tour),向 Ts 中的每一条边,增加e/L⁶⁵  的信息  素,其中e 是预先设定好的参数。简单地说,每一次迭代增加一个步骤,就是强化最优路径  的信息素浓度,就可以从AS变成精英AS了。经过实验证明,精英AS 可以更快地得到解。

 最大最小蚂蚁系统    

 最大最小蚂蚁系统(Max-Min  Ant  System,MMAS)是目前为止解决TSP  最好的ACO 算法。其做了一下改进:

(1)避免算法收敛于局部最优解。为了实现这个目的,将每一条路上的信息素浓度限 制在一个区间,记作[rmin,tmax]。超过界限就改成Tmax,小于界限了就改成Tmin。

(2)强化对最优解的利用。每次更新信息素矩阵的时候,仅更新最优解的路径的信息。

(3)信息素的初始值被设定为信息素浓度的上限,也就是tmax

综上所示,MMAS修改了信息素更新矩阵的计算方法。

从最初的蚂蚁系统到后面的精英蚂蚁系统,再到最大最小蚂蚁系统,统称蚁群算法。不过相对遗传算法,蚁群算法以了解为主。遗传算法和蚁群算法虽然都是智能算法,也都是受 大自然所启发,但是两者体现了不同的思想:遗传算法是基于个体竞争;蚁群算法是基于信息素传导机制下的群体合作。

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值