遗传算法、模拟退火算法、蚁群算法介绍

启发式算法(heuristic algorithm)是相对于最优化算法提出的。一个问题的最优算法就是求得该问题每个实例的最优解。启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度一般不能被预计。现阶段,启发式算法以仿自然体算法为主。

模拟退火算法

       退火是一个物理过程,粒子可以从高能状态转换为低能状态,而从低能转换为高能则有一定的随机性,且温度越低越难从低能转换为高能。就是在物体冷却的过程中,物体内部的粒子并不是同时冷却下来的。因为在外围粒子降温的时候,里边的粒子还会将热量传给外围粒子,就可能导致局部粒子温度上升,当然,最终物体的温度还是会下降到环境温度的。

       先给出一种求最优解的方法,在寻找一个最优解的过程中采取分段检索的方式,在可行解中随机找出来一个,然后在这个解附近进行检索,找到更加优化的解,放弃原来的,在新得到的解附近继续检索,当无法继续找到一个更优解的时候就认为算法收敛,最终得到的是一个局部最优解。

       那当我们更想找到一个全局最优解的时候应该怎么做呢?人们想到在进行的优化问题的邻域搜索的时候引入退火规则,即当下一状态比当前状态更优时直接接受,反之则以一定概率接受较差解,此概率随着迭代进行不断减小,最后趋近零,这保证了算法是一定收敛的。

       接下来给出一个算法步骤:

简单解释一下这个吧,就像刚才说的,以一定概率接受较差解,并且这个概率随着迭代循环的次数增加而减少。就是当优化前的算法往局部最优解走的时候,有一点可能会退回来,再寻找相邻峰的最优解,这就有一定可能跳出局部最优的陷阱。但是这并不表示一定能够跳出局部最优,当p逐渐减小的时候还是会有可能被困在局部最优接,但是这比一股脑往上怼要灵活不少,不是吗?

遗传算法

遗传算法感觉不是很好讲清楚哇,试着跟着自己的理解说一点吧!

首先,要把问题的每一组可行解看作一个染色体(就是一段连续的二进制编码),从所有的可行解组中随机选择一部分当作起始搜索点的初始群体。

接下来就是要模仿生物进化中的选择,交配,变异过程了。

选择了初始群体之后,肯定要先选择一次了,找到更优的解组,这就需要一个选择标准,就是适应度计算。在实际中有很多标准,一般是将可行解在实际背景下的预报值计算出来,求每一个可行解占所有解预报值之和的频数。然后,随机生成0~1中的一个数,查看随机数落在哪个可行解对应的预报值中间,就留下此可行解,未被随机数选中的自然淘汰掉了。

然后就是交配过程,将上一步选择后的几组解两两配对,随机选择一个交叉点,将交叉点分成的段互换,就会得到新的一组解,然后再做适应度计算,选择更优解。

交配完成后就需要变异了,这很简单,将得到的借的二进制编码上的数字随机取反一次,再做适应度计算,选择更优。

然后就是上述的 选择交配变异过程循环,直到找到最优解。

蚁群算法

很显然,就是模仿蚂蚁寻找食物而发明的算法,主要用途就是寻找最佳路径。

先讲一下蚂蚁是怎么寻找食物,并且在寻找到了食物后怎么逐渐确定最佳路径的。

事实上,蚂蚁的目光很短,它只会检索它附近的很小一部分空间,但是它在寻路过程中不会去重复它留下信息素的空间,也就是它不会往回走。当一群蚂蚁遇到障碍物了之后,它们会随机分为两拨,一波往左一波往右,但是因为环境会挥发掉它们的信息素,于是,较短的路留下的信息素多,而较长的路因为挥发较多,也就留下得少了。接下来,蚁群就会趋向于行走信息素较多的路径,于是大部分蚂蚁就走了较短的路了。但是蚁群中又有一些特别的蚂蚁,它们并不会走大家走的路,而是以一定概率寻找新路,如果新路更短,信息素挥发更少,渐渐得蚁群就会走向更短的路径。

以上就是蚂蚁寻路的具体过程。

把这个过程映射到计算机算法上,计算机在单次迭代过程中,会在路径的节点上留下信息素(可以使用数据变量来表示)。每次迭代都做信息素蒸发处理,多次迭代后聚集信息素较多的路径即可认为是较优路径。

下面给出信息素更新公式

    原文作者:遗传算法
    原文地址: https://blog.csdn.net/weixin_38208741/article/details/83036994
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞