[算法学习]模拟退火算法(SA)、遗传算法(GA)、布谷鸟算法(CS)、人工蜂群算法(ABC)学习笔记---附MATLAB注释代码_模拟退火算法和遗传算法区别在哪-程序员宅基地

技术标签: matlab  算法学习笔记  算法  深度学习  

参考资料:智能优化算法及其Matlab示例第2版.pdf
链接: https://pan.baidu.com/s/1CSKZWBJNs4ybAJWTfnm5lw
密码: 6jut
如果代码链接失效,评论给我,我几乎当天都能回复

1.模拟退火算法(Simulated Annealing,SA)

1.1 本质:

  • 是一种通用的随机搜索算法,是对局部搜索算法的扩展。以一定的概率选择邻域中目标值相对较小的状态,一种理论上的全局最优算法。
  • 在一定的初始温度下,通过缓慢下降温度参数,使得算法能够在多项式时间内给出一个近似最优解。

1.2 算法思想

  • 思想:在搜索区间随机游走,再利用Metropolis抽样准则,使得随机游走逐渐收敛于局部最优解。 从某个初始解出发,经过大量解的变化后,可以求得给定控制参数值时组合优化问题的相对最优解,然后减小控制参数T的值,重复执行Metropolis算法,就可以在控制参数T趋于零时,最终求得组合优化问题的整体最优解。
  • 形象比喻:兔子喝醉了。它随机地跳了很长时间。这期间,它可能走向高处,也可能踏入平地。但是,它渐渐清醒了并朝最高方向跳去。这就是模拟退火。
  • Metropolis准则
    系统从一个能量状态变化到另一个状态时,相应的能量从旧的E1变化到新的E2,如果新的能量较低,就是E1<E2,系统接受此状态;否则,以一个随机的概率接受或者丢弃此状态。如公式所示:
    在这里插入图片描述
    由于后面P的概率越来越小,接受差解的概率就越来越小,就越来越接近最优解。这样经过一定次数的迭代,系统会逐渐趋于一个稳定的分布状态。

1.3 SA流程图

在这里插入图片描述

1.4 模拟退火过程

  • 加温过程
  • 等温过程:相当于物理退火的等温过程,通过物理学的知识得知,对于周围环境交换热量而温度不变的封闭系统,系统状态的自发变化总是朝着自由能够减少的方向进行,当自由能达到最小时,系统达到平衡状态。是指在一个给定温度下,SA用特殊的抽样策略进行随机搜索,最终达到平衡状态的过程,这是SA算法的内循环过程。
  • 冷却过程:降温函数,相当于物理退火的冷却过程,用来控制温度的下降方式,这是SA的外循环过程,常用的降温函数是Tnew=Told × r,其中r是温度衰退因子,r∈(0.95,0.99)。

1.5 SA解决TSP问题

参考学习:模拟退火算法
使用模拟退火算法可以比较快的求出TSP的一条近似最优路径。模拟退火解决TSP的思路:

  1. 产生一条新的遍历路径Pi+1,计算路径Pi+1的长度L( Pi+1))
  2. 若L(Pi+1) < L(Pi),则接受Pi+1为新的路径,否则以模拟退火的那个概率接受Pi+1 ,然后降温
  3. 重复步骤1,2直到满足退出条件
    产生新的遍历路径的方法有很多,下面列举其中3种:
    • 随机选择2个节点,交换路径中的这2个节点的顺序。
    • 随机选择2个节点,将路径中这2个节点间的节点顺序逆转。
    • 随机选择3个节点m,n,k,然后将节点m与n间的节点移位到节点k后面。

代码下载链接: https://pan.baidu.com/s/1md1QInQ5dgQ4zSkrfoqEPg
密码: tfuj

1.6 SA改进方向

选择

  • 选择合适的初始状态
  • 设计合适的状态产生函数,使得根据搜索进程的需要表现出状态的全空间分散性或局部区域性
  • 设计高效的退火过程
  • 改进对温度的控制方式
  • 采用并行搜索结构
  • 设计合适的算法终止准则

增加

  • 增加记忆功能,将目前为止最好哦啊的状态存储下来
  • 增加升温或重升温过程。在算法进程的适当时机,将温度适当提高,从而可激活各状态的接受概率,以调整搜索进程中的当前状态,避免算法在局部极小解处停滞不前。
  • 对每一当前状态,采用多次搜索策略,以概率接受区域内的最优状态,而不是标准SA算法的单次比较方式。
  • 与其他搜索机制的算法相结合。

1.7 SA算法的特点

  • 使用范围广,求的全局最优解的可靠性高,算法简单,便于实现
  • 该算法的搜索策略有利于 避免搜索过程因陷入局部的缺陷
  • 优点是 局部搜索能力强,运行时间较短;
  • 缺点 是全局搜索能力差,容易受参数的影响.

1.8 模拟退火算法经典案例MATLAB源码详细解析

1.8 MATLAB经典SA算法代码下载

链接: betterbench.top/#/42/detail
请添加图片描述

2. 遗传算法(Genetic Algorithm ,GA)

遗传算法基本原理和方法
选择算子的c语言实现
遗传算法-课本

2.1 本质

  • 是适应算法,应用最多的是系统最优化的研究。
  • 用途:解决优化类问题

2.2 算法思想

  • 按照适者生存的原理,逐代演化产生越来越好的近似解。使用遗传算法三个步骤:编码与解码、计算个体适应度、遗传操作(选择、交叉、变异)借助于自然遗传学 的遗传算子进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。末代种群中的最优个体经过解码,可以作为问题近似最优解。
    在这里插入图片描述

第一步

1、随机产生初始种群,个体数目一定,个体表示为染色体的基因编码
在这里插入图片描述
2、二进制编码缺点+浮点数编码特点

  • 优点是编码简单、解码操作简单、交叉、变异等遗传操作便于实现
  • 缺点是存在连续函数离散化的映射误差、当个体编码串较短,可能达不到精度要求。当个体编码较长,虽然能够提高精度,但是会使得算法的搜索空间急剧扩大。

在这里插入图片描述

第二步

计算个体的适应度(把自变量带入适应度函数计算),判断是否符合优化准则,若符合 ,输出最优解,结束计算,否则进入第三步
1、适应度函数的尺度变换
适应度函数的选取直接影响了遗传算法的收敛速度以及能否找到最优解。因为遗传算法在进化搜索众基本不利用外部信息,仅以适应度函数为依据,利用种群每个个体的适应度来进行搜索。
1.1 几种常见的适应度函数

  • 第一种:直接以待求解的目标函数转化为适应度函数
    • 最大化问题: Fit(f(x)) = f(x)
    • 最小化问题: Fit(f(x)) = -f(x)
  • 第二种:
    在这里插入图片描述
  • 第三种:
    在这里插入图片描述

1.2 适应度函数设计原则

  • 单值、连续、非负、最大化
  • 合理、一致性
  • 计算两小
  • 通用性强

1.3 适应度函数的尺度变换

  • 线性变换
  • 线性拉伸变换
  • 动态线性变换
  • 幂函数变换
  • 指数变换

第三步

** 依据适应度选择再生个体,适应度高的个体被选中的概率高,适应度低的个体可能被淘汰 **
在这里插入图片描述
1、选择之前进行适应度的计算:

  • 按比例的适应度(proportional fitness assignment)
  • 基于排序的适应度计算(rank-based fitness assignment)

2、按照适应度进行父代个体的选择算子

  • 轮盘赌选择(Roulette Wheel Selection):是一种回放式随机采样方法。每个个体进入下一代的概率等于它的适应度值与整个种群中个体适应度值和的比例。选择误差较大。
  • 排序选择(Stochastic Tournament)
    在这里插入图片描述
  • 最优保留选择:首先按轮盘赌选择方法执行遗传算法的选择操作,然后将当前群体中适应度最高的个体结构完整地复制到下一代群体中。
    在这里插入图片描述

第四步

  • 按照一定的交叉概率和交叉方法,生成新的个体
    在这里插入图片描述
    1、 二进制交叉
  • 单点交叉
  • 两点交叉与多点交叉
  • 均匀交叉
  • 算术交叉
  • 洗牌交叉
  • 缩小代理交叉

第五步

  • 按照一定的变异概率和变异方法生成新的个体。
    在这里插入图片描述
    变异的方式

  • 基本位变异

  • 均匀变异

  • 边界变异

  • 非均匀变异

  • 高斯近似变异

第六步

  • 由交叉和变异产生新一代的种群,返回第二步。

2.3 优化准则(选其一)

  • 种群中个体的最大适应度超过预订设定值
  • 种群中个体的平均适应度超过预定设定值
  • 世代数超过预定设定值

2.4 优缺点

  • **优点是 ** 能很好的处理约束,能很好的跳出局部最优,最终得到全局最优解,全局搜索能力强;
  • GA算法作为现代最优化的手段,实践证明,它应用于大规模、多峰多态函数、、含离散变量等情况下的全局优化问题是合适的,在求解速度和质量上远超过常规方法,因而是一高速近似算法。
  • 对于组合最优化问题,与常规方法比较,可以认为遗传算法处于随机方法与启发式方法之间,它在引入随机搜索的同时,在解的构成法和演算过程中考虑了问题的原有构造。
  • 缺点是 收敛较慢,局部搜索能力较弱,运行时间长,且容易受参数的影响.

2.5 处理遗传算法的约束问题:

  • 显性约束
    一是把带约束的变成自由的:当约束是等式时,利用代换;约束是不等式,利用三角、指数函数化作等式;二是遗传出子代时,利用约束条件进行先天淘汰。第一个方法把运算量放在子代产生之前,第二个方法把运算量放在产生子代后。
  • 隐形约束
    选择符合条件的染色体进行交叉;淘汰不符合条件的变异子代;

2.6 约束条件处理

  • 搜索空间限定法:对遗传算法的搜索空间的大小加以限制,使得搜索空间中表示一个个体的点与解空间中的表示一个可行解的点有一一对应关系。
  • 可行解变换法:在由个体基因型向个体表现型的变换中,增加使其满足约束条件的处理过程,即寻找个体基因型与个体表现型的多对一变换关系,扩大了搜索空间,使进化过程中所产生的个体总能通过这个变换而转化成杰空间中满足约束条件的一个可行解。
  • 函数法:对在解空间中无对应可行解的个体计算其适应度时,处以一个惩罚函数,从而降低该个体的适应度,使该个体被遗传到下一代群体中的概率减小

2.7 遗传算法的应用

  • 函数优化:我的另一篇博客源码讲解
  • 组合优化
    • 研究的对象可以看作是在有限集合上定义的函数在各种条件下的极值问题。
    • 根据计算复杂性的理论,一个好的算法,其计算时间作为输入数据量的函数应该有一个多项式作为上界,这样的算法被称为多项式时间算法,简称有效算法。在组合优化中,至今还没有似乎也不可能发现普遍使适用的多项式时间算法。一个多项式时间算法问题被称为多项式时间可解问题(P问题)。组合优化中多数问题属于一类不知道是否为P问题的问题,其中包括所谓的NP(Nondeterminitic Polynomial Completeness)问题。在这类问题中,只要有一个被证明是P问题,,那么它们全部是P问题。
    • 对NP问题,既然没有准确的多项式时间算法,比较现实的妥协方法是采用多项式时间近似算法。
  • 生产调度问题
  • 自动控制
  • 机器人智能控制
  • 图像处理和模式识别
  • 人工生命
  • 遗传程序设计
  • 机器学习

2.7 遗传算法应用于机器学习

与最优化问题的应用不同,最优化问题强调搜索收敛到一个近似最优解,而GBML(Genetic-based machine learning)不仅要获得一条规则的好的个体,而且更加强调最佳协调的规则组合。一般而言,GBML应具备以下机能

  • 新规则生成,遵循优胜劣汰的规则
  • 学习过程中不破坏已获得的优良规则
  • 规则数目不预先给定
  • 相似的或者相互包含的规则,进行适当的取舍,规则集合不过分冗余

2.8 matlab中GA工具箱的使用

matlab中GA工具箱的配置方法

2.9遗传算法的改进

2.9.1 算法改进的途径

  • 改变遗传算法的组成成分和使用技术,如选用优化控制参数、适合问题特性的编码技术
  • 采用混合遗传算法
  • 采用动态自适应技术,在进化过程中调整算法控制参数和编码粒度
  • 采用非标准的遗传操作算子
  • 采用并行遗传算法
    2.9.2 改进的算法
  • 分层的遗传算法
    对于一个问题,随机生成N×n个样本,然后将它们分成N个子种群,每个子种群包含n个样本,对每个子种群独立地运行各自的遗传算法。这N个遗传算法最好在设置特性上有较大的差异,这样可以为将来的高层遗传算法产生更多种类的优良模式。
    在这里插入图片描述
  • 与梯度法结合的混合遗传算法
    梯度下降算子主要进行的是传统最速下降法中的线性搜索运算。
    混合算法众的遗传算子包括交叉算子、变异算子和选择算子的作用是宏观搜索,处理的是大范围的搜索问题,而最速下降算子的线性搜索过程的作用是极值局部搜索,微观搜索,处理的是小范围搜索和搜索加速问题。
    在这里插入图片描述

2.10 遗传算法资料

  • 遗传算法-函数优化案例完整代码(Matlab):
    链接: betterbench.top/#/43/detail请添加图片描述

3.布谷鸟算法(Cuck Search,CS)

3.1 概念和本质

本质

  • 寻找最小值的算法

概念

  • 概念:布谷鸟以寄生的方式养育幼鸟,不筑巢,而是将自己的蛋产在其他鸟巢中代为孵化,然而这些外来鸟蛋被宿主发现,宿主便会抛弃这些鸟蛋.

3.2算法思想

  1. 布谷鸟一次只产一个蛋,,并随机选择鸟窝来孵化它

  2. 在随机选择的一组鸟窝中,最好的鸟窝将会保留到下一代。

  3. 可选择的寄生巢的数量是固定的,寄生巢发现外来鸟蛋的概率为pa,其中0<=pa<=1。接下来采用Levy飞行进行鸟巢位置X的更新:

    X=X+ α \alpha α *Levy( λ \lambda λ

    对下一代鸟巢位置进行更新,计算目标函数的适应度值,如果该值优于上一代的目标函数值,则更新鸟巢位置,否则保持原来位置不变。通过位置更新后,用随机产生的服从0-1均匀分布的数值R与鸟巢主人发现概率pa相比较,若R>pa,则对X位置进行随机改变,反之不变,最后保留测试值较好的一组鸟窝位置Xnew

  4. 判断算法是否满足设置的最大迭代次数,若满足,结束迭代寻优,输出Fmin,否则继续迭代。
    在这里插入图片描述

3.3算法流程图

在这里插入图片描述

3.4 算法优缺点

  • 优点是 全局寻优能力强,参数少且易于实现,易与其他算法相结合等综合优势,
  • 缺点是 存在收敛速度慢、进化后期种群多样性差等不足。CS算法收敛速度偏慢、求解精度较低:CS算法通过莱维飞行机制寻找鸟巢,莱维飞行是一种由小步长的短距离飞行和偶尔大步长的长距离飞行组成的随机游走过程,因此布谷鸟的寻窝路径容易在不同的搜索区域间跳跃,导致布谷鸟算法的局部精细搜索能力较差,在算法迭代后期容易在全局最优解附近的区域出现震荡现象,造成算法效率偏低群多样性差等不足
  • 参考-CS算法介绍

3.5CS算法经典应用MATLAB源码讲解

布谷鸟算法(Cuckoo Search,CS)MATLAB案例详细解析

4.人工蜂群算法(Artificial Bee Colony, ABC)

4.1 本质和基本思想

  • 本质是模拟蜂群通过个体分工和信息交流,相互协作完成采蜜任务。
  • 仅应用在组合优化问题

4.2 三种蜜蜂的分工

  • 雇佣蜂(Employed Bees):利用先前的蜜源信息寻找新的蜜源并与观察蜂分享蜜源信息
  • 观察蜂(Onlooker Bees):在蜂房中等待并依据雇佣蜂分享的信息寻找新的蜜源
  • 侦查蜂(Scout Bees):寻找一个新的有价值的蜜源,它们在蜂房附近随机的寻找蜜源

4.3 搜索蜜源步骤

  • 引领蜂发现蜜源并通过8字舞的方式共享蜜源信息
  • 跟随蜂根据引领蜂所提供的信息,进行采蜜
  • 引领蜂多次搜索找到的蜜源质量未有改善时,放弃现有的蜜源,转变成侦查蜂在蜂巢附近继续寻找新的蜜源。当搜索到高质量的蜜源时,其角色又将转变为引领蜂。
  • 通过三种蜂类的转换寻找高质量的蜜源。引领蜂用于维持优良解;跟随蜂用于提高收敛速度;侦查蜂用于增强摆脱局部最优的能力。

4.3 算法步骤

  • 1.雇佣蜂根据公式更新蜜源信息
    X i d = x i d + φ ( x i d − x j d ) φ ∈ ( − 1 , 1 ) X_{id} = x_{id} + \varphi (x_{id}-x_{jd}) \varphi \in(-1,1) Xid=xid+φ(xidxjd)φ(1,1)

  • 2.观察蜂根据雇佣蜂提供的信息,采取一定的适应度函数,计算每个蜜源的选择概率
    p i = f i t i / ∑ i = 1 N f i t i p_i = fit_i/\sum_{i=1}^N fit_i pi=fiti/i=1Nfiti
    (N表示雇佣蜂的数量),然后采用轮盘赌选择一个蜜源。
    根据公式 X i d = x i d + φ ( x i d − x j d ) φ ∈ ( − 1 , 1 ) X_{id} = x_{id} + \varphi(x_{id}-x_{jd}) \varphi \in(-1,1) Xid=xid+φ(xidxjd)φ(1,1)更新蜜源信息,同时确定蜜源量

  • 3.侦查蜂判断某一个蜜源在指定步骤内是否提高,若没有提高,则丢弃该蜜源,重新初始化一个蜜源再搜索

4.4 ABC算法经典应用MATLAB源码讲解

人工蜂群算法(Artificial Bee Colony, ABC)MATALAB代码详细解析

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43935696/article/details/107045716

智能推荐

学习Linux/UNIX的Windows软件 _uwin什么意思-程序员宅基地

文章浏览阅读1.3k次。原文地址:http://blog.csdn.net/iyanglian/archive/2004/08/11/71858.aspxhttp://www.linuxaid.com.cn/tips/4/2/42197743.shtmlhttp://www.hacker.com.cn/article/list.asp?id=2512可以用以下Windows软件学习Linux/UNIX:(1)_uwin什么意思

Django笔记:常见故障排除-程序员宅基地

文章浏览阅读358次。Django框架下MySQLdb模块在python3中无法使用的问题的解决方案  由于python3环境下目前还没有官方的mysqldb模块,Django框架中又强制要求使用mysqldb,为了解决这个问题,可以按照以下方法:  原文链接:http://www.cnblogs.com/xwang/p/3727741.html  在应用下的__init__中加入以下两行即可..._django.db.utils.operationalerror: (1130, "adapter_midware' is not allowed to

声音的录制(VC)(保存为WAV文件) (转)_vc waveinstart 声音采集 保存wav-程序员宅基地

文章浏览阅读2.5k次。|举报|字号 订阅这里只录制了最原始的声音,格式PCM,未作任何处理,未压缩,(要压缩可能需要用到其它库)本文用的是回调函数方式waveInOpen(&m_hWaveIn,0,&m_soundFormat,(DWORD)(waveInProc),0,CALLBACK_FUNCTION);最后一个参数就是回调类型如果是CALLBAC_vc waveinstart 声音采集 保存wav

机器学习 | MATLAB实现BP神经网络模型答疑(适应度函数)_神经网络中的适应函数是什么-程序员宅基地

文章浏览阅读1k次。机器学习 | MATLAB实现BP神经网络模型答疑(适应度函数)_神经网络中的适应函数是什么

如何理解互斥锁、条件锁、读写锁以及自旋锁-程序员宅基地

文章浏览阅读303次,点赞4次,收藏7次。作为一名即将求职的程序员,面对一个可能跟近些年非常不同的 2019 年,你的就业机会和风口会出现在哪里?在这种新环境下,工作应该选择大厂还是小公司?已有几年工作经验的老兵,又应该如何保持和提升自身竞争力,转被动为主动?就目前大环境来看,跳槽成功的难度比往年高很多。一个明显的感受:今年的面试,无论一面还是二面,都很考验Java程序员的技术功底。最近我整理了一份复习用的面试题及面试高频的考点题及技术点梳理成一份“Java经典面试问题(含答案解析).pdf和一份网上搜集的“Java程序员面试笔试真题库.pdf。

堪比Focal Loss!解决目标检测中样本不平衡的无采样方法-程序员宅基地

文章浏览阅读886次。训练目标检测模型的一个难点是样本不均衡,特别是正负样本比例严重失衡。目前解决这类问题主要是两种方案(见综述Imbalance Problems in Object Detection: A Review):一是hard sampling方法,从所有样本中选择一定量的正样本和负样本,只有被选择的样本才计算loss,一般会倾向选择一些难负例样本,比如OHEM;另外一类方法是soft sampling方法,选择所有样本计算loss,但是不同的样本赋给不同的权重值,比如focal loss。这些基于采样的策略虽然有_无采样方法

随便推点

php内核分析(四)-do_cli-程序员宅基地

文章浏览阅读113次。php内核分析(四)-do_cli 2016-11-25 11:47 by 轩脉刃, ... 阅读, ... 评论, 收藏, 编辑 这里阅读的php版本为PHP-7.1.0 RC3,阅读代码的平台为linux# main把剩下的代码增加了下注释全部贴出来了(这个是简化后的main函数,去掉了一些无关紧要的代码段):int ma..._do_cli do_cli_server

Requestprocessing failed; nested exception isorg.mybatis.spring.MyBatisSystemException_request processing failed; nested exception is org-程序员宅基地

文章浏览阅读2.4k次。HTTP Status 500 - Requestprocessing failed; nested exception isorg.mybatis.spring.MyBatisSystemException: nested exception isorg.apache.ibatis.builder.BuilderException: Error evaluating expression'con_request processing failed; nested exception is org.mybatis.spring.mybatissys

mathpix安装和使用详细教程-程序员宅基地

文章浏览阅读3.6w次,点赞13次,收藏126次。mathpix安装和使用详细教程这里写自定义目录标题mathpix安装和使用详细教程一、下载二、安装三、启动四、 注意事项一、下载软件网址:https://mathpix.com下载页面如图1,根据系统类型点击不同下载按钮. 下载完成后直接安装软件!安装过程中为了随时调用软件在图3的选择界面中勾选两个选项,即在桌面上生成一个启动快捷键图标和开机自动启动软件(自动启动后可以随时调用Mathpix识别转换公式)。二、安装安装简便,一路Next完成安装后,在最后的窗口建议也保持安装完成后启动软件,需要_mathpix

未来五年数字中国建设路线图出炉-程序员宅基地

文章浏览阅读182次。关注ITValue,看企业级最新鲜、最价值报道!“十四五”规划纲要草案将“加快数字发展 建设数字中国”作为独立篇章,从打造数字经济新优势到加快数字社会建设步伐,从提高数字政府建设水平再到..._数字中国建设架构规划

可以免拆机刷openwrt_Newifi mini 刷 breed 不死和老毛子 Padavan 固件-程序员宅基地

文章浏览阅读5.4k次。前言闲鱼 50 元包邮入手了一个 Newifi mini 路由器,因为没有 Windows 电脑一直没有刷老毛子系统,记录一下刷机过程。步骤首先要根据路由器型号选择相应的 Breed 版本和路由器系统版本。 Newifi mini 对应的版本如下:Breed:breed-mt7620-lenovo-y1.binPadavan 固件:RT-AC54U-GPIO-11-newifimini-128M_..._newifimini刷openwrt固件

java/php/node.js/python英语词汇量测试系统【2024年毕设】-程序员宅基地

文章浏览阅读742次,点赞20次,收藏22次。除了以上作品下面是2023-2024年最新100套计算机专业原创的毕业设计源码+数据库,是近期作品,如果你的题目刚好在下面可以文末领取java源码参考。springboot基于springboot的游戏交易网络无忧。springboot基于springboot的汽车租赁系统。springboot基于Android的天气预报及推荐系统。springboot一种基于微信小程序的校园鞋服购物平台。springboot基于生物技术的智能安全管理系统。ssm基于微信小程序的农产品销售平台的设计与实现。

推荐文章

热门文章

相关标签