优化算法 订阅
《最优化理论与算法》是2005年由清华大学出版社出版的图书,作者是陈宝林。 展开全文
《最优化理论与算法》是2005年由清华大学出版社出版的图书,作者是陈宝林。
信息
作    者
陈宝林
定    价
¥38.00
又    名
最优化理论与算法(第2版)
书    名
最优化理论与算法
出版时间
2005年10月
出版社
清华大学出版社
ISBN
9787302113768 [十位:7302113769]
页    数
468
最优化理论与算法内容简介
本书是陈宝林教授在多年实践基础上编著的.书中包括线性规划单纯形方法、对偶理论、灵敏度分析、运输问题、内点算法、非线性规划KKT条件、无约束最优化方法、约束最优化方法、整数规划和动态规划等内容.本书含有大量经典的和新近的算法,有比较系统的理论分析,实用性比较强;定理的证明和算法的推导主要以数学分析和线性代数为基础,比较简单易学.本书可以作为运筹学类课程的教学参考书,也可供应用数学工作者和工程技术人员参考。
收起全文
精华内容
下载资源
问答
  • 优化算法
    万次阅读 多人点赞
    2020-07-24 13:29:56

    智能优化算法:鲸鱼优化算法-附代码


    摘要:鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提出的一种新的群体智能优化算法,其优点在于操作简单,调整的参数少以及跳出局部
    最优的能力强。

    1.算法原理

    鲸鱼优化算法(whale optimization algorithm,WOA)是模仿座头鲸的狩猎行为进而提出的一种新型启发式优化算法。在 WOA 算法中,每只座头鲸的位置代表一个可行解。在海洋活动中,座头鲸有
    着一种特殊的狩猎方法,这种觅食行为称为bubble-net 捕食策略 [27] ,其狩猎行为如图 1 所示。
    在这里插入图片描述

    图1.座头鲸狩猎行为

    1.1包围猎物

    座头鲸在狩猎时要包围猎物,为了描述这种行为,Mirjalili 提出了下面的数学模型:
    D = ∣ C X ∗ ( t ) − X ( t ) ∣ X ( t + 1 ) = X ∗ ( t ) − A D D=|CX^{*}(t)-X(t)|\\ X(t+1)=X^{*}(t)-AD D=CX(t)X(t)X(t+1)=X(t)AD
    式中: t t t是当前迭代次数; A A A C C C为表示系数, X ∗ ( t ) X^{*}(t) X(t)表示目前为止最好的鲸鱼位置向量, X ( t ) X(t) X(t)
    表示当前鲸鱼的位置向量,$A $和 C C C 由下式可得到
    A = 2 a r 1 − a C = 2 r 2 a = 2 − 2 t T m a x A=2ar_{1}-a\\ C=2r_{2}\\ a=2-\frac {2t}{T_{max}} A=2ar1aC=2r2a=2Tmax2t

    其中, r 1 r_{1} r1 r 2 r_{2} r2是(0,1)中的随机数,a 的值从 2到 0 线性下降, t t t 表示当前的迭代次数, T m a x T_{max} Tmax 为最大迭代次数。

    1.2 狩猎行为

    根据座头鲸的狩猎行为,它是以螺旋运动游向猎物,故狩猎行为的数学模型如下:
    X ( t + 1 ) = X ∗ ( t ) + D p e b l c o s ( 2 π l ) X(t+1)=X^{*}(t)+D_{p}e^{bl}cos(2\pi l) X(t+1)=X(t)+Dpeblcos(2πl)
    其中, D p = ∣ X ∗ ( t ) − X ( t ) ∣ D_{p} =|X^{*} (t)−X(t)| Dp=X(t)X(t)表示鲸鱼和猎物之间的距离, X ∗ ( t ) X^{*}(t) X(t)表示目前为止最好的位置向量, b b b 是一个常数,用来定义螺线的形状, l l l 是(−1,1)中的随机数。值得注意的是,鲸鱼以螺旋形状游向猎物的同时还要收缩包围圈。因此,在这种同步行为模型中,假设有 P i P_{i} Pi 的概率选择收缩包围机制和 1 − P i 1−P_{i} 1Pi的概率选择螺旋模型来更新鲸鱼的位置,其数学模型如下:
    X ( t + 1 ) = { X ∗ ( t ) − A D , p < P i X ( t ) = X ∗ ( t ) + D p e b l c o s ( 2 π l ) X(t+1)=\begin{cases} X^{*}(t)-AD, p<P_{i}\\ X(t)=X^{*}(t)+D_{p}e^{bl}cos(2\pi l) \end{cases} X(t+1)={X(t)AD,p<PiX(t)=X(t)+Dpeblcos(2πl)
    攻击猎物时,在数学模型上靠近猎物设定了减小 a a a 的值,这样 A A A 的波动范围也随$ a$ 下降。在迭代过程中当 a a a的值从2到0下降时, A A A是在 [ − a , a ] [−a,a] [a,a]内的随机值,当 A A A 的值在[−1,1]内时,鲸鱼的下一个位置可以是它现在的位置和猎物的位置之间的任意位置,算法设定当 A < 1 A<1 A<1 时,鲸鱼向猎物发起攻击。

    1.3 搜索猎物

    在搜索猎物时,其数学模型如下:
    D = ∣ C X r a n d − X t ∣ X ( t + 1 ) = X r a n d − A D D=|CX_{rand}-X{t}|\\ X(t+1)=X_{rand}-AD D=CXrandXtX(t+1)=XrandAD
    其中, X r a n d X_{rand} Xrand 是随机选择的鲸鱼位置向量,算法设定当 A ≥ 1 A≥1 A1 时,随机选择一个搜索代理,根据随机选择的鲸鱼位置来更新其他鲸鱼的位置,迫使鲸鱼偏离猎物,借此找到一个更合适的猎物,这样可以加强算法的勘探能力使 WOA 算法能够进行全局
    搜索。

    1.4 算法流程

    (1)初始化参数:即鲸鱼种群规模大小 S N SN SN,最大迭代次数 T m a x T_{max} Tmax
    (2)算法初始化鲸鱼种群的位置;
    (3)计算每一头鲸鱼相应的适应度值,根据适应度值的大小排序,并选取 S N SN SN 个作为初始种群;
    (4)计算出 S N SN SN个个体适应度值的大小,找出适应度值最小的个体位置作为最优位置;
    (5)更新下一代的位置;
    (6)若达到终止条件,则输出最优个体,即算法找到的最优解;否则,返回步骤(4)。

    2. 算法结果:

    在这里插入图片描述

    参考文献:

    [1]Seyedali Mirjalili,Andrew Lewis. The Whale Optimization Algorithm[J]. Advances in Engineering Software,2016,95.

    Matalb代码地址:

    鲸鱼优化算法

    改进算法matlab代码

    名称说明或者参考文献
    混合策略改进鲸鱼优化算法(IWOA)[1]徐航,张达敏,王依柔,宋婷婷,樊英.混合策略改进鲸鱼优化算法[J].计算机工程与设计,2020,41(12):3397-3404.
    基于高斯映射和小孔成像学习策略的鲸鱼优化算法(IWOA)[1]徐航,张达敏,王依柔,宋婷婷,王栎桥.基于高斯映射和小孔成像学习策略的鲸鱼优化算法[J].计算机应用研究,2020,37(11):3271-3275.
    一种非线性权重的自适应鲸鱼优化算法(NWAWOA)[1]赵传武,黄宝柱,阎跃观,代文晨,张建.一种非线性权重的自适应鲸鱼优化算法[J].计算机技术与发展,2020,30(10):7-13.
    一种基于精英反向和纵横交叉的鲸鱼优化算法(ECWOA)[1]刘琨,赵露露,王辉.一种基于精英反向和纵横交叉的鲸鱼优化算法[J].小型微型计算机系统,2020,41(10):2092-2097.
    一种全局搜索策略的鲸鱼优化算法(GSWOA)[1]刘磊,白克强,但志宏,张松,刘知贵.一种全局搜索策略的鲸鱼优化算法[J].小型微型计算机系统,2020,41(09):1820-1825.
    基于自适应决策算子的鲸鱼优化算法(IWOA)[1]徐航,张达敏,王依柔,宋婷婷,樊英.基于自适应决策算子的鲸鱼优化算法[J].智能计算机与应用,2020,10(09):6-11.
    基于混沌的正余弦鲸鱼优化算法(EWOA)[1]林杰,何庆,王茜,杨荣莹,宁杰琼.基于混沌的正余弦鲸鱼优化算法[J].智能计算机与应用,2020,10(09):43-48+52.
    一种基于交叉选择的柯西反向鲸鱼优化算法(QOWOA)[1]冯文涛,邓兵.一种基于交叉选择的柯西反向鲸鱼优化算法[J].兵器装备工程学报,2020,41(08):131-137.
    一种基于自适应策略的混合鲸鱼优化算法(HWBOA)[1]王廷元,何先波,贺春林.一种基于自适应策略的混合鲸鱼优化算法[J].西华师范大学学报(自然科学版),2021,42(01):92-99.
    一种改进的鲸鱼优化算法(IWOA)[1]武泽权,牟永敏.一种改进的鲸鱼优化算法[J].计算机应用研究,2020,37(12):3618-3621.
    基于阈值控制的一种改进鲸鱼算法(TIWOA)[1]黄飞,吴泽忠.基于阈值控制的一种改进鲸鱼算法[J].系统工程,2020,38(02):133-148.
    基于莱维飞行和自适应策略的正弦余弦算法[1]黄辉先,张广炎,陈思溢,胡拚.基于混沌权重和精英引导的鲸鱼优化算法[J].传感器与微系统,2020,39(05):113-116.
    基于自适应调整权重和搜索策略的鲸鱼优化算法(AWOA)[1]孔芝,杨青峰,赵杰,熊浚钧.基于自适应调整权重和搜索策略的鲸鱼优化算法[J].东北大学学报(自然科学版),2020,41(01):35-43.
    嵌入Circle映射和逐维小孔成像反向学习的鲸鱼优化算法(MWOA)[1]张达敏,徐航,王依柔,宋婷婷,王栎桥.嵌入Circle映射和逐维小孔成像反向学习的鲸鱼优化算法[J].控制与决策,2021,36(05):1173-1180.
    融合动态概率阈值和自适应变异的鲸鱼优化算法(PTMWOA)[1]毕孝儒,牟琦,龚尚福.融合动态概率阈值和自适应变异的鲸鱼优化算法[J].微电子学与计算机,2019,36(12):78-83+88.
    基于改进螺旋更新位置模型的鲸鱼优化算法(IMWOA)[1]吴泽忠,宋菲.基于改进螺旋更新位置模型的鲸鱼优化算法[J].系统工程理论与实践,2019,39(11):2928-2944.
    一种增强型鲸鱼优化算法(EWOA)[1]冯文涛,宋科康.一种增强型鲸鱼优化算法[J].计算机仿真,2020,37(11):275-279+357.
    混沌策略和单纯形法改进的鲸鱼优化算法(CSWOA)[1]张潮,冯锋.混沌策略和单纯形法改进的鲸鱼优化算法[J].中国科技论文,2020,15(03):293-299.
    精英反向黄金正弦鲸鱼算法(EGoldenSWOA)[1]肖子雅,刘升.精英反向黄金正弦鲸鱼算法及其工程优化研究[J].电子学报,2019,47(10):2177-2186.
    基于非线性收敛因子和局部扰动的鲸鱼算法(NPWOA)[1]于俊洋,高宁杰,李涵.基于非线性收敛因子和局部扰动的鲸鱼算法[J].计算机工程与设计,2019,40(10):2861-2866.
    混沌反馈自适应鲸鱼优化算法研究(CFAWOA)[1]涂春梅,陈国彬,刘超.混沌反馈自适应鲸鱼优化算法研究[J].统计与决策,2019,35(07):17-20.
    基于混沌搜索策略的鲸鱼优化算法(CWOA)[1]王坚浩,张亮,史超,车飞,丁刚,武杰.基于混沌搜索策略的鲸鱼优化算法[J].控制与决策,2019,34(09):1893-1900.
    基于反馈机制的鲸鱼优化算法(FWOA)[1]范家承,何杰光.基于反馈机制的鲸鱼优化算法[J].广东石油化工学院学报,2018,28(04):47-51.
    基于随机差分变异的改进鲸鱼优化算法(IWOA)[1]覃溪,龙文.基于随机差分变异的改进鲸鱼优化算法[J].中国科技论文,2018,13(08):937-942.
    收敛因子非线性变化的鲸鱼优化算法(IWOA)[1]龙文,伍铁斌,唐斌.收敛因子非线性变化的鲸鱼优化算法[J].兰州理工大学学报,2017,43(06):102-107.
    基于自适应权重和柯西变异的鲸鱼优化算法(WOAWC)[1]郭振洲,王平,马云峰,王琦,拱长青.基于自适应权重和柯西变异的鲸鱼优化算法[J].微电子学与计算机,2017,34(09):20-25.
    一种随机调整控制参数的鲸鱼优化算法(EWOA)[1]钟明辉,龙文.一种随机调整控制参数的鲸鱼优化算法[J].科学技术与工程,2017,17(12):68-73.

    算法相关应用matlab代码

    名称说明或者参考文献
    鲸鱼优化的BP神经网络(预测)https://blog.csdn.net/u011835903/article/details/112149776 (原理一样,只是优化算法为鲸鱼)
    鲸鱼优化的BP神经网络(分类)https://blog.csdn.net/u011835903/article/details/112149394(原理一样,只是优化算法为鲸鱼)
    基于鲸鱼优化的Elman神经网络数据预测https://blog.csdn.net/u011835903/article/details/111411129(原理一样,只是优化算法为鲸鱼)
    基于鲸鱼算法的极限学习机(ELM)分类算法https://blog.csdn.net/u011835903/article/details/111177850(原理一样,只是优化算法为鲸鱼)
    基于鲸鱼算法的极限学习机(ELM)回归预测https://blog.csdn.net/u011835903/article/details/111073635(原理一样,只是优化算法为鲸鱼)
    基于鲸鱼算法优化的广义回归神经网络(GRNN)预测https://blog.csdn.net/u011835903/article/details/110941139(原理一样,只是优化算法为鲸鱼)
    基于鲸鱼算法优化的SVM回归预测https://blog.csdn.net/u011835903/article/details/110630270(原理一样,只是优化算法为鲸鱼)
    基于鲸鱼算法优化的SVM数据分类https://blog.csdn.net/u011835903/article/details/110523352(原理一样,只是优化算法为鲸鱼)
    基于鲸鱼优化的最大熵多阈值分割https://blog.csdn.net/u011835903/article/details/108203775(原理一样,只是优化算法为鲸鱼)
    鲸鱼算法优化的otsu多阈值分割https://blog.csdn.net/u011835903/article/details/108019744(原理一样,只是优化算法为鲸鱼)
    鲸鱼优化的PID参数优化https://blog.csdn.net/u011835903/article/details/109306387(原理一样,只是优化算法为鲸鱼)
    基于鲸鱼算法的无线传感器网(WSN)覆盖优化https://blog.csdn.net/u011835903/article/details/109262039(原理一样,只是优化算法为鲸鱼)
    基于鲸鱼算法的3D无线传感器网(WSN)覆盖优化https://blog.csdn.net/u011835903/article/details/113834323(原理一样,只是优化算法为鲸鱼)

    Python代码地址:

    改进算法python代码

    名称说明或者参考文献
    混合策略改进鲸鱼优化算法(IWOA)[1]徐航,张达敏,王依柔,宋婷婷,樊英.混合策略改进鲸鱼优化算法[J].计算机工程与设计,2020,41(12):3397-3404.
    基于高斯映射和小孔成像学习策略的鲸鱼优化算法(IWOA)[1]徐航,张达敏,王依柔,宋婷婷,王栎桥.基于高斯映射和小孔成像学习策略的鲸鱼优化算法[J].计算机应用研究,2020,37(11):3271-3275.
    一种非线性权重的自适应鲸鱼优化算法(NWAWOA)[1]赵传武,黄宝柱,阎跃观,代文晨,张建.一种非线性权重的自适应鲸鱼优化算法[J].计算机技术与发展,2020,30(10):7-13.
    一种基于精英反向和纵横交叉的鲸鱼优化算法(ECWOA)[1]刘琨,赵露露,王辉.一种基于精英反向和纵横交叉的鲸鱼优化算法[J].小型微型计算机系统,2020,41(10):2092-2097.
    一种全局搜索策略的鲸鱼优化算法(GSWOA)[1]刘磊,白克强,但志宏,张松,刘知贵.一种全局搜索策略的鲸鱼优化算法[J].小型微型计算机系统,2020,41(09):1820-1825.
    基于自适应决策算子的鲸鱼优化算法(IWOA)[1]徐航,张达敏,王依柔,宋婷婷,樊英.基于自适应决策算子的鲸鱼优化算法[J].智能计算机与应用,2020,10(09):6-11.
    基于混沌的正余弦鲸鱼优化算法(EWOA)[1]林杰,何庆,王茜,杨荣莹,宁杰琼.基于混沌的正余弦鲸鱼优化算法[J].智能计算机与应用,2020,10(09):43-48+52.
    一种基于交叉选择的柯西反向鲸鱼优化算法(QOWOA)[1]冯文涛,邓兵.一种基于交叉选择的柯西反向鲸鱼优化算法[J].兵器装备工程学报,2020,41(08):131-137.
    一种基于自适应策略的混合鲸鱼优化算法(HWBOA)[1]王廷元,何先波,贺春林.一种基于自适应策略的混合鲸鱼优化算法[J].西华师范大学学报(自然科学版),2021,42(01):92-99.
    一种改进的鲸鱼优化算法(IWOA)[1]武泽权,牟永敏.一种改进的鲸鱼优化算法[J].计算机应用研究,2020,37(12):3618-3621.
    基于阈值控制的一种改进鲸鱼算法(TIWOA)[1]黄飞,吴泽忠.基于阈值控制的一种改进鲸鱼算法[J].系统工程,2020,38(02):133-148.
    基于莱维飞行和自适应策略的正弦余弦算法[1]黄辉先,张广炎,陈思溢,胡拚.基于混沌权重和精英引导的鲸鱼优化算法[J].传感器与微系统,2020,39(05):113-116.
    基于自适应调整权重和搜索策略的鲸鱼优化算法(AWOA)[1]孔芝,杨青峰,赵杰,熊浚钧.基于自适应调整权重和搜索策略的鲸鱼优化算法[J].东北大学学报(自然科学版),2020,41(01):35-43.
    嵌入Circle映射和逐维小孔成像反向学习的鲸鱼优化算法(MWOA)[1]张达敏,徐航,王依柔,宋婷婷,王栎桥.嵌入Circle映射和逐维小孔成像反向学习的鲸鱼优化算法[J].控制与决策,2021,36(05):1173-1180.
    融合动态概率阈值和自适应变异的鲸鱼优化算法(PTMWOA)[1]毕孝儒,牟琦,龚尚福.融合动态概率阈值和自适应变异的鲸鱼优化算法[J].微电子学与计算机,2019,36(12):78-83+88.
    基于改进螺旋更新位置模型的鲸鱼优化算法(IMWOA)[1]吴泽忠,宋菲.基于改进螺旋更新位置模型的鲸鱼优化算法[J].系统工程理论与实践,2019,39(11):2928-2944.
    一种增强型鲸鱼优化算法(EWOA)[1]冯文涛,宋科康.一种增强型鲸鱼优化算法[J].计算机仿真,2020,37(11):275-279+357.
    混沌策略和单纯形法改进的鲸鱼优化算法(CSWOA)[1]张潮,冯锋.混沌策略和单纯形法改进的鲸鱼优化算法[J].中国科技论文,2020,15(03):293-299.
    精英反向黄金正弦鲸鱼算法(EGoldenSWOA)[1]肖子雅,刘升.精英反向黄金正弦鲸鱼算法及其工程优化研究[J].电子学报,2019,47(10):2177-2186.
    基于非线性收敛因子和局部扰动的鲸鱼算法(NPWOA)[1]于俊洋,高宁杰,李涵.基于非线性收敛因子和局部扰动的鲸鱼算法[J].计算机工程与设计,2019,40(10):2861-2866.
    混沌反馈自适应鲸鱼优化算法研究(CFAWOA)[1]涂春梅,陈国彬,刘超.混沌反馈自适应鲸鱼优化算法研究[J].统计与决策,2019,35(07):17-20.
    基于混沌搜索策略的鲸鱼优化算法(CWOA)[1]王坚浩,张亮,史超,车飞,丁刚,武杰.基于混沌搜索策略的鲸鱼优化算法[J].控制与决策,2019,34(09):1893-1900.
    基于反馈机制的鲸鱼优化算法(FWOA)[1]范家承,何杰光.基于反馈机制的鲸鱼优化算法[J].广东石油化工学院学报,2018,28(04):47-51.
    基于随机差分变异的改进鲸鱼优化算法(IWOA)[1]覃溪,龙文.基于随机差分变异的改进鲸鱼优化算法[J].中国科技论文,2018,13(08):937-942.
    收敛因子非线性变化的鲸鱼优化算法(IWOA)[1]龙文,伍铁斌,唐斌.收敛因子非线性变化的鲸鱼优化算法[J].兰州理工大学学报,2017,43(06):102-107.
    基于自适应权重和柯西变异的鲸鱼优化算法(WOAWC)[1]郭振洲,王平,马云峰,王琦,拱长青.基于自适应权重和柯西变异的鲸鱼优化算法[J].微电子学与计算机,2017,34(09):20-25.
    一种随机调整控制参数的鲸鱼优化算法(EWOA)[1]钟明辉,龙文.一种随机调整控制参数的鲸鱼优化算法[J].科学技术与工程,2017,17(12):68-73.
    更多相关内容
  • 代码 多目标粒子群优化算法代码代码 多目标粒子群优化算法代码代码 多目标粒子群优化算法代码代码 多目标粒子群优化算法代码代码 多目标粒子群优化算法代码代码 多目标粒子群优化算法代码代码 多目标粒子群优化算法...
  • 粒子群优化算法(详细易懂-很多例子).pdf粒子群优化算法(详细易懂-很多例子).pdf粒子群优化算法(详细易懂-很多例子).pdf粒子群优化算法(详细易懂-很多例子).pdf粒子群优化算法(详细易懂-很多例子).pdf粒子群优化算法...
  • 本资源包含灰狼优化算法(GWO)代码以及粒子群算法(PSO),主函数为使用灰狼优化和粒子群优化对不同函数进行寻优并将两种算法的比较结果绘图显示
  • 代码 复杂网络中度分布优化算法程序代码 复杂网络中度分布优化算法程序代码 复杂网络中度分布优化算法程序代码 复杂网络中度分布优化算法程序代码 复杂网络中度分布优化算法程序代码 复杂网络中度分布优化算法程序...
  • 最原始的灰狼优化算法,全面解释了灰狼优化算法的来源和基础应用,适合初学者。群智能优化算法,灰狼优化算法
  • 内含附有详细代码注释的进化算法(遗传算法、差分进化算法、免疫算法)、群智能算法(蚁群算法、粒子群算法)、禁忌搜索算法、模拟退火算法、神经网络算法的MATLAB实现。以及用以上算法进行TSP问题、背包问题、函数...
  • SLAM优化算法 SLAM优化算法 SLAM优化算法 SLAM优化算法 SLAM优化算法 SLAM优化算法 SLAM优化算法 SLAM优化算法 SLAM优化算法 SLAM优化算法 SLAM优化算法 SLAM优化算法SLAM优化算法 SLAM优化算法 SLAM优化算法 SLAM...
  • 基于人工蜂群算法的函数优化分析 基于遗传算法的公交排班系统分析 基于GA优化的BP网络算法分析与MATLAB实现
  • 详细、透彻介绍粒子群算法比较好的PPT课件,适合初学者透彻理解粒子群算法的概念、原理和流程
  • 代码 普通多目标优化算法代码代码 普通多目标优化算法代码代码 普通多目标优化算法代码代码 普通多目标优化算法代码代码 普通多目标优化算法代码代码 普通多目标优化算法代码代码 普通多目标优化算法代码代码 普通多...
  • 所上传算法程序为非支配 排序遗传算法NSGA-II,包含主函数,初始变量函数,竞标选择,遗传操作,非支配排序程序,替换程序,以及目标函数程序。下载之后只需编写自己的目标函数及改变相应的输入变量相关参数即可使用...
  • PlatEMO平台是由课题组田野师兄进行开发的,里面包含了众多经典多目标优化算法的matlab代码,需要的自行下载(仅仅限粉丝下载)
  • 本次资源是从platEMO平台上抠出的NSGA3代码(MATLAB)
  • 此资源是在Seyedali Mirjalili鲸鱼优化算法matlab源代码上增加详细中文注释,方便阅读和学习
  • 代码 基于遗传算法的Bp神经网络优化算法代码代码 基于遗传算法的Bp神经网络优化算法代码代码 基于遗传算法的Bp神经网络优化算法代码代码 基于遗传算法的Bp神经网络优化算法代码代码 基于遗传算法的Bp神经网络优化...
  • 鲸鱼优化算法

    2018-07-06 19:33:23
    新型群智能优化算法,鲸鱼优化算法。新型群智能优化算法,鲸鱼优化算法
  • 优化算法详解

    千次阅读 2021-10-17 10:56:33
    对于几乎所有机器学习算法,无论是有监督学习、无监督学习,还是强化...在这篇文章中,SIGAI将对机器学习中所使用的优化算法做一个全面的总结,并理清它们直接的脉络关系,帮你从全局的高度来理解这一部分知识。 ...


       对于几乎所有机器学习算法,最后一般都归结为求解最优化问题。因此,最优化方法在机器学习算法的推导与实现中占据中心地位。模型优化算法的选择直接关系到最终模型的性能。有时候效果不好,未必是特征的问题或者模型设计的问题,很可能就是优化算法的问题。
       在这篇文章中,将对机器学习中所使用的优化算法做一个全面的总结,并理清它们直接的脉络关系,帮你从全局的高度来理解这一部分知识。

    1、机器学习要求解的数学模型

       几乎所有的机器学习算法最后都归结为求一个目标函数的极值,即最优化问题。
    (1)对于有监督学习
       我们要找到一个最佳的映射函数f(x),使得对训练样本的损失函数最小化(最小化经验风险或结构风险):
    在这里插入图片描述   N为训练样本数,L是对单个样本的损失函数,w是要求解的模型参数,是映射函数的参数,xi为样本的特征向量,yi 为样本的标签值。
       或是找到一个最优的概率密度函数p(x),使得对训练样本的对数似然函数极大化(最大似然估计):
    在这里插入图片描述   在这里,θ是要求解的模型参数,是概率密度函数的参数。
    (2) 1.2对于无监督学习
       以聚类算法为例,算法要是的每个类的样本离类中心的距离之和最小化:
    在这里插入图片描述   在这里k为类型数,x为样本向量,ui为类中心向量,Si为第i个类的样本集合。
       总体来看,机器学习的核心目标是给出一个模型(一般是映射函数),然后定义对这个模型好坏的评价函数(目标函数),求解目标函数的极大值或者极小值,以确定模型的参数,从而得到我们想要的模型。在这三个关键步骤中,前两个是机器学习要研究的问题,建立数学模型。第三个问题是纯数学问题,即最优化方法,为本文所讲述的核心。

    2、最优化算法

    2.1 分类

       对于形式和特点各异的机器学习算法优化目标函数,我们找到了适合它们的各种求解算法。除了极少数问题可以用暴力搜索来得到最优解之外,我们将机器学习中使用的优化算法分成三种类型:
       (1)公式解:给出一个最优化问题精确的公式解,也称为解析解,一般是理论结果。
       (2)数值优化:是在要给出极值点的精确计算公式非常困难的情况下,用数值计算方法近似求解得到最优点。
       (3)启发式优化:主要有如:遗传算法,模拟退火,粒子群算法等。除此外还有其他一些求解思想,如分治法,动态规划等。不需要聚合函数,也不需要导数信息。
       (4)除此外还有其他一些求解思想,如分治法,动态规划等。
       下图给出了除(3)外这些算法的分类与它们之间的关系

    2.2 通用的优化框架

       掌握了这个框架,可以设计自己的优化算法。各种玄乎其玄的优化算法在步骤3、4都是一致的,主要的差别就体现在1和2上。
    在这里插入图片描述

    3 公式解

    3.1 费马定理

       对于一个可导函数,寻找其极值的统一做法是寻找导数为0的点,即费马定理。微积分中的这一定理指出,对于可导函数,在极值点处导数必定为0:
    在这里插入图片描述
       对于多元函数,则是梯度为0:
    在这里插入图片描述
       导数为0的点称为驻点。需要注意的是,导数为0只是函数取得极值的必要条件而不是充分条件,它只是疑似极值点。是不是极值,是极大值还是极小值,还需要看更高阶导数。对于一元函数,假设x是驻点:
       1.如果 [公式] (x)>0,则在该点处去极小值
       2.如果 [公式] (x)<0,则在该点处去极大值
       3.如果 [公式] (x)=0,还要看更高阶导数
    对于多元函数,假设x是驻点:
       1.如果Hessian矩阵正定,函数在该点有极小值
       2.如果Hessian矩阵负定,函数在该点有极大值
       3.如果Hessian矩阵不定,则不是极值点
       在导数为0的点处,函数可能不取极值,这称为鞍点
       除鞍点外,最优化算法可能还会遇到另外一个问题:局部极值问题,即一个驻点是极值点,但不是全局极值。如果我们对最优化问题加以限定,可以有效的避免这两种问题。典型的是凸优化,它要求优化变量的可行域是凸集,目标函数是凸函数。
       虽然驻点只是函数取得极值的必要条件而不是充分条件,但如果我们找到了驻点,再判断和筛选它们是不是极值点,比之前要容易多了。无论是理论结果,还是数值优化算法,一般都以找驻点作为找极值点的目标。对于一元函数,先求导数,然后解导数为0的方程即可找到所有驻点。对于多元函数,对各个自变量求偏导数,令它们为0,解方程组,即可达到所有驻点。这都是微积分中所讲授的基础方法。幸运的是,在机器学习中,很多目标函数都是可导的,因此我们可以使用这套方法。

    3.2 拉格朗日乘数法

       费马定理给出的不带约束条件下的函数极值的必要条件。对于一些实际应用问题,一般还带有等式或者不等式约束条件。对于带等式约束的极值问题,经典的解决方案是拉格朗日乘数法。
    对于如下问题:
    在这里插入图片描述
    构造拉格朗日乘子函数
    在这里插入图片描述
    在最优点处对x和乘子变量λi的导数都必须为0:
    在这里插入图片描述
       解这个方程即可得到最优解。对拉格朗日乘数法更详细的讲解可以阅读任何一本高等数学教材。机器学习中用到拉格朗日乘数法的地方有:
       主成分分析
       线性判别分析
       流形学习中的拉普拉斯特征映射
       隐马尔可夫模型

    3.3 KKT条件

       KKT条件是拉格朗日乘数法的推广,用于求解既带有等式约束,又带有不等式约束的函数极值。对于如下优化问题:
    在这里插入图片描述
       和拉格朗日对偶的做法类似,KKT条件构如下乘子函数:
    在这里插入图片描述
       λ和 u 称为KKT乘子。在最优解处 [公式] 应该满足如下条件:
    在这里插入图片描述   等式约束和不等式约束是本该满足的条件,唯一多了关于gi(x)的条件:
    在这里插入图片描述
       KKT条件只是取得极值的必要条件而不是充分条件。在机器学习中用到KKT条件的地方有:支持向量机(SVM)

    4 数值优化算法

       前面讲述的三种方法在理论推导、某些可以得到方程组的求根公式的情况(如线性函数,正态分布的最大似然估计)中可以使用,但对绝大多数函数来说,梯度等于0的方程组是没法直接解出来的,如方程里面含有指数函数、对数函数之类的超越函数。对于这种无法直接求解的方程组,我们只能采用近似的算法来求解,即数值优化算法。这些数值优化算法一般都利用了目标函数的导数信息,如一阶导数和二阶导数。如果采用一阶导数,则称为一阶优化算法。如果使用了二阶导数,则称为二阶优化算法。
       工程上实现时通常采用的是迭代法,它从一个初始点 x0 开始,反复使用某种规则从 xk移动到下一个点 xk+1 ,构造这样一个数列,直到收敛到梯度为0的点处。即有下面的极限成立:
    在这里插入图片描述
       这些规则一般会利用一阶导数信息即梯度;或者二阶导数信息即Hessian矩阵。这样迭代法的核心是得到这样的由上一个点确定下一个点的迭代公式:
    在这里插入图片描述

    4.1 梯度下降法

       梯度下降法沿着梯度的反方向进行搜索,利用了函数的一阶导数信息。梯度下降法的迭代公式为:
    在这里插入图片描述
       根据函数的一阶泰勒展开,在负梯度方向,函数值是下降的。只要学习率 y 设置的足够小,并且没有到达梯度为0的点处,每次迭代时函数值一定会下降。需要设置学习率为一个非常小的正数的原因是要保证迭代之后的 xk+1 位于迭代之前的值xk 的邻域内,从而可以忽略泰勒展开中的高次项,保证迭代时函数值下降。
       梯度下降法及其变种在机器学习中应用广泛,尤其是在深度学习中。

    4.1.1 SGD、BGD、MBGD随机梯度下降法

       假设训练样本集有N个样本,有监督学习算法训练时优化的目标是这个数据集上的平均损失函数:
    在这里插入图片描述
       其中L(w, xi , yi )是对单个训练样本( xi , yi )的损失函数,w是需要学习的参数,r(w)是正则化项,λ是正则化项的权重。在训练样本数很大时,如果训练时每次迭代都用所有样本,计算成本太高,作为改进可以在每次迭代时选取一批样本M≤N,将损失函数定义在这些样本上,近似计算损失函数。随机梯度下降法在概率意义下收敛。
       BGD批量随机梯度下降:是最原始的形式,它是指在每一次迭代时使用所有样本来进行梯度的更新。
       SGD随机梯度下降:不同于批量梯度下降,随机梯度下降是每次迭代使用一个样本来对参数进行更新。使得训练速度加快。

    SGD with Momentum:SGD-M认为梯度下降过程可以加入惯性,在SGD基础上引入了一阶动量。
    SGD with Nesterov Acceleration:是在SGD、SGD-M的基础上的进一步改进,改进点在于步骤1。
    我们知道在时刻t的主要下降方向是由累积动量决定的,自己的梯度方向说了也不算,那与其看当前梯度
    方向,不如先看看如果跟着累积动量走了一步,那个时候再怎么走。因此,NAG在步骤1,不计算当前位
    置的梯度方向,而是计算如果按照累积动量走了一步,那个时候的下降方向。然后用下一个点的梯度方
    向,与历史累积动量相结合,计算步骤2中当前时刻的累积动量。
    

    Nesterov 的梯度项
    在这里插入图片描述
       MBGD小批量随机梯度下降:是对批量梯度下降以及随机梯度下降的一个折中办法。其思想是:每次迭代 使用 ** batch_size** 个样本来对参数进行更新。
    在这里插入图片描述

    4.1.2 动量项Momentum

       为了加快梯度下降法的收敛速度,减少震荡,引入了动量项。动量项累积了之前迭代时的梯度值,加上此项之后的参数更新公式为:
    在这里插入图片描述
       其中Vt+1是动量项,它取代了之前的梯度项。动量项的计算公式为
    在这里插入图片描述
       它是上一时刻的动量项与本次梯度值的加权平均值,其中a 是学习率,u是动量项系数。如果按照时间t进行展开,则第t次迭代时使用了从1到t次迭代时的所有梯度值,且老的梯度值按 u 的系数 t 指数级衰减:
    在这里插入图片描述
       动量项累积了之前迭代时的梯度值,使得本次迭代时沿着之前的惯性方向向前走。

    4.1.3 AdaGrad算法

       AdaGrad算法是梯度下降法最直接的改进。
       梯度下降法依赖于人工设定的学习率,如果设置过小,收敛太慢,而如果设置太大,可能导致算法那不收敛,为这个学习率设置一个合适的值非常困难。对于经常更新的参数,我们已经积累了大量关于它的知识,不希望被单个样本影响太大,希望学习速率慢一些;对于偶尔更新的参数,我们了解的信息太少,希望能从每个偶然出现的样本身上多学一些,即学习速率大一些。
       AdaGrad算法利用二阶动量(迄今为止所有梯度值的平方和),即根据前几轮迭代时的历史梯度值动态调整学习率,且优化变量向量x的每一个分量 xi 都有自己的学习率。参数更新公式为:
    在这里插入图片描述
       其中a 是学习因子, gt是第t次迭代时参数的梯度向量, ε是平滑项,是一个很小的正数,为了避免除0操作,下标i表示向量的分量。和标准梯度下降法唯一不同的是多了分母中的这一项,它累积了到本次迭代为止梯度的历史值信息用于生成梯度下降的系数值。
       根据上式,历史导数值的绝对值越大(参数更新越频繁)分量学习率越小,反之越大。虽然实现了自适应学习率,但这种算法还是存在问题:需要人工设置一个全局的学习率 a,随着时间的累积,上式中的分母会越来越大,导致学习率趋向于0,参数无法有效更新,可能会使得训练过程提前结束,即便后续还有数据也无法学到必要的知识。

    4.1.4 RMSProp

       RMSProp算法是对AdaGrad的改进,避免了长期累积梯度值所导致的学习率趋向于0的问题。具体做法是由梯度值构造一个向量RMS,初始化为0,按照衰减系数累积了历史的梯度平方值。更新公式为:
    在这里插入图片描述
       AdaGrad直接累加所有历史梯度的平方和,而这里将历史梯度平方值按照 [公式] 衰减之后再累加。参数更新公式为:δt,衰减之后再累加。参数更新公式为:
    在这里插入图片描述
       其中 δ是人工设定的参数,与AdaGrad一样,这里也需要人工指定的全局学习率a。

    4.1.5 AdaDelta算法

       AdaDelta算法也是对AdaGrad的改进,避免了长期累积梯度值所导致的学习率趋向于0的问题,另外,还去掉了对人工设置的全局学习率的依赖。而只关注过去一段时间窗口的下降梯度。这也就是AdaDelta名称中Delta的来历。
       假设要优化的参数为x,梯度下降法第t次迭代时计算出来的参数梯度值为 [公式] 。算法首先初始化如下两个向量为0向量:
    在这里插入图片描述
    其中前者是梯度平方(对每个分量分别平分)的累计值,更新公式为:
    在这里插入图片描述
    在这里g2 是向量每个元素分别计算平方,后面所有的计算公式都是对向量的每个分量进行。接下来计算如下RMS量:
    在这里插入图片描述
    这也是一个向量,计算时分别对向量的每个分量进行。然后计算参数的更新值:
    在这里插入图片描述
    分子的计算公式和这个类似。这个更新值同样通过梯度来构造,只不过学习率是通过梯度的历史值确定的。更新公式为:
    在这里插入图片描述
    参数更新的迭代公式为:
    在这里插入图片描述

    4.1.6 Adam算法

       Adam算法是前述方法的集大成者。它整合了自适应学习率与动量项。SGD-M在SGD基础上增加了一阶动量,AdaGrad和AdaDelta在SGD基础上增加了二阶动量。把一阶动量和二阶动量都用起来,就是Adam了——Adaptive + Momentum。
       算法用梯度构造了两个向量m和v,前者为动量项,后者累积了梯度的平方和(二阶动量),用于构造自适应学习率。它们的初始值为0,更新公式为:
    在这里插入图片描述
       其中β1 , β2是人工指定的超参数,i为向量的分量下标。依靠这两个值构造参数的更新值,参数的更新公式为:在这里,m类似于动量项,用v来构造学习率。
    在这里插入图片描述
       在这里,m类似于动量项,用v来构造学习率。

    4.1.7 Nadam

       最后是Nadam。Adam是集大成者,但遗漏了Nesterov,加上它。Nesterov + Adam = Nadam。

    4.1.8 SAG,SVRG,SAGA

       最常用的优化算法SGD(随机梯度下降算法),由于每次迭代方向都是随机选择的,所以产生了下降方向的噪音的方差。正是由于这个方差的存在,所以导致了SGD在每次迭代(使用固定步长)时,最终是收敛不到最优值的,最优间隔最终趋于一个和方差有关的定值。为了克服这一点,采取一种办法,想要让方差呈递减趋势下降,那么最终算法将会以线性速度收敛于最优值。根据这个想法,我们主要有SAG,SVRG,SAGA三种最常用的算法。
       SVRG(stochastic variance reduced gradient):SVRG相对于SGD来说在最优值附近几乎没有震荡,也没有噪音,SGD在最优值附近震荡明显。而且SVRG下降方向的方差最终趋于零,明显比SGD小。
       SAG(Stochastic Average Gradient):它既有SGD算法计算量小的特点,又具有像FGD一样的线性收敛速度。
       SAGA算法:SAGA算法是SAG算法的一个加速版本,和SAG一样,它既不在一个循环里面操作,也不计算批量梯度(除了在初始点),在每次迭代中,它都计算随机向量作为前期迭代中随机梯度的平均值。SAGA也减少了噪音的影响。(SAGA和SAG的区别就是一个是无偏估计,一个不是)

    4.2 牛顿法

       牛顿法是二阶优化技术,利用了函数的一阶和二阶导数信息,直接寻找梯度为0的点。牛顿法的迭代公式为:
    在这里插入图片描述
       其中H为Hessian矩阵,g为梯度向量。牛顿法不能保证每次迭代时函数值下降,也不能保证收敛到极小值点。在实现时,也需要设置学习率,原因和梯度下降法相同,是为了能够忽略泰勒展开中的高阶项。学习率的设置通常采用直线搜索(line search)技术。
    在实现时,一般不直接求Hessian矩阵的逆矩阵,而是求解下面的线性方程组:
    在这里插入图片描述
       其解d称为牛顿方向。迭代终止的判定依据是梯度值充分接近于0,或者达到最大指定迭代次数。
       缺点:牛顿法比梯度下降法有更快的收敛速度,但每次迭代时需要计算Hessian矩阵,并求解一个线性方程组,运算量大。另外,如果Hessian矩阵不可逆,则这种方法失效。对牛顿法更全面的介绍可以阅读SIGAI之前的公众号文章“理解牛顿法”。
       牛顿法在logistic回归,AdaBoost算法等机器学习算法中有实际应用。

    4.2.1 拟牛顿法

       牛顿法在每次迭代时需要计算出Hessian矩阵,并且求解一个以该矩阵为系数矩阵的线性方程组,Hessian矩阵可能不可逆。为此提出了一些改进的方法,典型的代表是拟牛顿法。
       拟牛顿法的思路是不计算目标函数的Hessian矩阵然后求逆矩阵,而是通过其他手段得到一个近似Hessian矩阵逆的矩阵。具体做法是构造一个近似Hessian矩阵或其逆矩阵的正定对称矩阵,用该矩阵进行牛顿法的迭代。
       DFPBFGSL-BFGS,使用最多的是L-BFGS。
       L-BFGS
       我们知道算法在计算机中运行的时候是需要很大的内存空间的.就像我们解决函数最优化问题常用的梯度下降,它背后的原理就是依据了泰勒一次展开式.泰勒展开式展开的次数越多,结果越精确,没有使用三阶四阶或者更高阶展开式的原因就是目前硬件内存不足以存储计算过程中演变出来更复杂体积更庞大的矩阵.L-BFGS算法翻译过来就是有限内存中进行BFGS算法,L是limited memory的意思.

    4.2.1 可信域牛顿法

       标准牛顿法可能不会收敛到一个最优解,也不能保证函数值会按照迭代序列递减。解决这个问题可以通过调整牛顿方向的步长来实现,目前常用的方法有两种:直线搜索和可信区域法。可信域牛顿法是截断牛顿法的一个变种,用于求解带界限约束的最优化问题。在可信域牛顿法的每一步迭代中,有一个迭代序列xk ,一个可信域的大小 △k ,以及一个二次目标函数:
    在这里插入图片描述
       这个式子可以通过泰勒展开得到,忽略二次以上的项,这是对函数下降值:
    在这里插入图片描述
       的近似。算法寻找一个sk ,在满足约束条件丨丨s丨丨 ≤△k 下近似最小化 qk (s)。接下来检查如下比值以更新wk和△k :
    在这里插入图片描述
       是函数值的实际减少量和二次近似模型预测方向导致的函数减少量的比值。根据之前的计算结果,再动态调整可信域的大小。
       可信域牛顿法在logistic回归,线性支持向量的求解时有实际的应用,具体可以阅读liblinear开源库。

    5 其他方法

    5.1 分治法

       分治法是一种算法设计思想,它将一个大的问题分解成子问题进行求解。根据子问题解构造出整个问题的解。在最优化方法中,具体做法是每次迭代时只调整优化向量x的一部分分量,其他的分量固定住不动。

    5.2 坐标下降法

       坐标下降法的基本思想是每次对一个变量进行优化,这是一种分治法。假设要求解的优化问题为;
       坐标下降法求解流程为每次选择一个分量 [公式] 进行优化,将其他分量固定住不动,这样将一个多元函数的极值问题转换为一元函数的极值问题。如果要求解的问题规模很大,这种做法能有效的加快速度。
       坐标下降法在logistic回归,线性支持向量的求解时有实际的应用,具体可以阅读liblinear开源库。

    5.3 SMO算法

       SMO算法也是一种分治法,用于求解支持向量机的对偶问题。加上松弛变量和核函数后的对偶问题为:
    在这里插入图片描述
       SMO算法的核心思想是每次在优化变量中挑出两个分量 ai 和aj进行优化,让其他分量固定,这样能保证满足等式约束条件。之所以要选择两个变量进行优化而不是选择一个变量,是因为这里有等式约束,如果只调整一个变量的值,将会破坏等式约束。
    假设选取的两个分量为ai和 aj ,其他分量都固定即当成常数。对这两个变量的目标函数是一个二元二次函数。这个问题还带有等式和不等式约束条件。对这个子问题可以直接求得公式解,就是某一区间内的一元二次函数的极值。

    5.4 分阶段优化

       分阶段优化的做法是在每次迭代时,先固定住优化变量x一部分分量a不动,对另外一部分变量b进行优化;然后再固定住b不动,对b进行优化。如此反复,直至收敛到最优解处。
       AdaBoost算法是这种方法的典型代表。AdaBoost算法在训练时采用了指数损失函数:
    在这里插入图片描述
       由于强分类器是多个弱分类器的加权和,代入上面的损失函数中,得到算法训练时要优化的目标函数为:
    在这里插入图片描述
       这里将指数损伤函数拆成了两部分,已有的强分类器 Fj-1,以及当前弱分类器f对训练样本的损失函数,前者在之前的迭代中已经求出,因此可以看成常数。这样目标函数可以简化为:
    在这里插入图片描述
    在这里插入图片描述
       这个问题可以分两步求解,首先将弱分类器权重β 看成常数,得到最优的弱分类器f。得到弱分类器之后,再优化它的权重系数β。

    5.5 动态规划算法

       动态规划也是一种求解思想,它将一个问题分解成子问题求解,如果整个问题的某个解是最优的,则这个解的任意一部分也是子问题的最优解。这样通过求解子问题,得到最优解,逐步扩展,最后得到整个问题的最优解。
       隐马尔可夫模型的解码算法(维特比算法),强化学习中的动态规划算法是这类方法的典型代表,此类算法一般是离散变量的优化,而且是组合优化问题。前面讲述的基于导数的优化算法都无法使用。动态规划算法能高效的求解此类问题,其基础是贝尔曼最优化原理。一旦写成了递归形式的最优化方程,就可以构造算法进行求解。

    6、如何选择优化方法

       选择优化器的问题在于,由于no-free-lunch定理,没有一个单一的优化器可以在所有场景中超越其他的。事实上,优化器的性能高度依赖于设置。所以,中心问题是:哪个优化器最适合我的项目的特点。
       在深度学习中,几乎所有流行的优化器都基于梯度下降。这意味着他们反复估计给定的损失函数L的斜率,并将参数向相反的方向移动(因此向下爬升到一个假设的全局最小值)。这种优化器最简单的例子可能是随机梯度下降(或SGD),自20世纪50年代以来一直使用。在2010年代,自适应梯度的使用,如AdaGrad或Adam已经变得越来越流行了。然而,最近的趋势表明,部分研究界重新使用SGD而不是自适应梯度方法。此外,当前深度学习的挑战带来了新的SGD变体,如LARS或LAMB。
       如何选择正确的优化器?
       在决定使用某个优化器之前应该问自己的三个问题。
       (1)与你的数据集和任务类似的state-of-the-art的结果是什么?使用过了哪些优化器,为什么?
       如果你正在使用新的机器学习方法,可能会有一篇或多篇涵盖类似问题或处理类似数据的可靠论文。通常,论文的作者已经做了广泛的交叉验证,并且只报告了最成功的配置。试着理解他们选择优化器的原因。
       (2)你的数据集是否具有某些优化器的优势?如果有,是哪些,如何利用这些优势?
       某些优化器在具有稀疏特征的数据上表现得非常好,而另一些优化器在将模型应用于之前未见过的数据时可能表现得更好。一些优化器在大batch中工作得很好,而另一些优化器可以收敛到很陡峭的极小值但是泛化效果不好。
    在这里插入图片描述
       (3)你的项目所具有资源是什么?
       项目中可用的资源也会影响选择哪个优化器。计算限制或内存约束,以及项目的时间表可以缩小可行选择的范围。再次查看表1,你可以看到不同的内存需求和每个优化器的可调参数数量。此信息可以帮助你评估你的设置是否支持优化器所需的资源。
       作为一个经验法则:如果你有资源找到一个好的学习率策略,带动量的SGD是一个可靠的选择。如果你需要快速的结果而不需要大量的超参数调优,请使用自适应梯度方法。

    参考文献
    一个框架看懂优化算法之异同 SGD/AdaGrad/Adam
    https://zhuanlan.zhihu.com/p/32230623
    机器学习中的最优化算法总结
    https://zhuanlan.zhihu.com/p/42689565

    展开全文
  • Matlab优化算法

    2018-04-20 17:26:41
    Matlab优化算法Matlab优化算法Matlab优化算法Matlab优化算法Matlab优化算法Matlab优化算法
  • 智能优化算法:灰狼优化算法-附代码

    万次阅读 多人点赞 2020-07-31 16:31:41
    智能算法:灰狼优化算法-附代码 摘要:受 灰 狼 群 体 捕 食 行 为 的 启 发,Mirjalili等[1]于 2014年提出了一种新型群体智能优化算法:灰狼优化算法。GWO通过模拟灰狼群体捕食行为,基于狼群群体协作的机制来达到...

    智能优化算法:灰狼优化算法-附代码


    摘要:受 灰 狼 群 体 捕 食 行 为 的 启 发,Mirjalili等[1]于 2014年提出了一种新型群体智能优化算法:灰狼优化算法。GWO通过模拟灰狼群体捕食行为,基于狼群群体协作的机制来达到优化的目的。 GWO算法具有结构简单、需要调节的参数少,容易实现等特点,其中存在能够自适应调整的收敛因子以及信息反馈机制,能够在局部寻优与全局搜索之间实现平衡,因此在对问题的求解精度和收敛速度方面都有良好的性能。

    1.算法原理

    灰狼属于犬科动物,被认为是顶级的掠食者,它们处于生物圈食物链的顶端。灰狼大多喜欢群居,每个群体中平均有5-12只狼。特别令人感兴趣的是,它们具有非常严格的社会等级层次制度,如图1所示。金字塔第一层为种群中的领导者,称为 α 。在狼群中 α 是具有管理能力的个体,主要负责关于狩猎、睡觉的时间和地方、食物分配等群体中各项决策的事务。金字塔第二层是 α 的智囊团队,称为 β 。 β 主要负责协助α 进行决策。当整个狼群的 α 出现空缺时,β 将接替 α 的位置。 β 在狼群中的支配权仅次于 α,它将 α 的命令下达给其他成员,并将其他成员的执行情况反馈给 α 起着桥梁的作用。金字塔第三层是 δ ,δ 听从 α 和 β 的决策命令,主要负责侦查、放哨、看护等事务。适应度不好的 α 和 β 也会降为 δ 。金字塔最底层是 ω ,主要负责种群内部关系的平衡。

    在这里插入图片描述

    图1.灰狼的社会等级制度

    此外,集体狩猎是灰狼的另一个迷人的社会行为。灰狼的社会等级在群体狩猎过程中发挥着重要的作用,捕食的过程在 α 的带领下完成。灰狼的狩猎包括以下 3个主要部分:
    1)跟踪、追逐和接近猎物;
    2)追捕、包围和骚扰猎物,直到它停止移动;
    3)攻击猎物

    1.1 包围猎物

    在狩猎过程中,将灰狼围捕猎物的行为定义如下:

    D ⃗ = ∣ C ⃗ . X p ⃗ ( t ) − X ⃗ ( t ) (1) \vec{D}=|\vec{C}.\vec{X_{p}}(t)-\vec{X}(t) \tag{1} D =C .Xp (t)X (t)(1)

    X ⃗ ( t + 1 ) = X p ⃗ ( t ) − A ⃗ . D ⃗ (2) \vec{X}(t+1)=\vec{X_{p}}(t)-\vec{A}.\vec{D}\tag{2} X (t+1)=Xp (t)A .D (2)

    式(1)表示个体与猎物间的距离,式(2)是灰狼的位置更新公式。其中, t t t 是目前的迭代代数, A ⃗ \vec{A} A C ⃗ \vec{C} C 是系数向量, X p ⃗ \vec{X_{p}} Xp X ⃗ \vec{X} X 分别是猎物的位置向量和灰狼的位置向量。 A ⃗ \vec{A} A C ⃗ \vec{C} C 的计算公式如下:

    A ⃗ = 2 a ⃗ . r 1 ⃗ − a ⃗ (3) \vec{A} = 2\vec{a}.\vec{r_{1}}-\vec{a}\tag{3} A =2a .r1 a (3)
    C ⃗ = 2. r 2 ⃗ (4) \vec{C}=2.\vec{r_{2}}\tag{4} C =2.r2 (4)

    其中, a ⃗ \vec{a} a 是收敛因子,随着迭代次数从2线性减小到0, r 1 ⃗ \vec{r_{1}} r1 r 2 ⃗ \vec{r_{2}} r2 的模取[0,1]之间的随机数。

    1.2 狩猎

    灰狼能够识别猎物的位置并包围它们。当灰狼识别出猎物的位置后,β 和 δ 在 α 的带领下指导狼群包围猎物。在优化问题的决策空间中,我们对最佳解决方案(猎物的位置)并不了解。因此,为了模拟灰狼的狩猎行为,我们假设 α ,β 和 δ 更了解猎物的潜在位置。我们保存迄今为止取得的3个最优解决方案,并利用这三者的位置来判断猎物所在的位置,同时强迫其他灰狼个体(包括 ω )依据最优灰狼个体的位置来更新其位置,逐渐逼近猎物。狼群内个体跟踪猎物位置的机制如图2所示。

    在这里插入图片描述

    图2.GWO 算法中灰狼位置更新示意图

    灰狼个体跟踪猎物位置的数学模型描述如下:

    { D α ⃗ = ∣ C 1 ⃗ . X α ⃗ − X ⃗ ∣ D β ⃗ = ∣ C 2 ⃗ . X β ⃗ − X ⃗ ∣ D δ ⃗ = ∣ C 1 ⃗ . X δ ⃗ − X ⃗ ∣ (5) \begin{cases}\vec{D_{\alpha}}=|\vec{C_{1}}.\vec{X_{\alpha}}-\vec{X}|\\ \vec{D_{\beta}} = |\vec{C_{2}}.\vec{X_{\beta}}-\vec{X}|\\ \vec{D_{\delta}}=|\vec{C_{1}}.\vec{X_{\delta}}-\vec{X}|\end{cases}\tag{5} Dα =C1 .Xα X Dβ =C2 .Xβ X Dδ =C1 .Xδ X (5)

    其中, D α ⃗ , D β ⃗ , D δ ⃗ \vec{D_{\alpha}},\vec{D_{\beta}},\vec{D_{\delta}} Dα ,Dβ ,Dδ 分别表示分别表示 α , β 和 δ 与其他个体间的距离。 X α ⃗ , X β ⃗ , X δ ⃗ \vec{X_{\alpha}},\vec{X_{\beta}},\vec{X_{\delta}} Xα ,Xβ ,Xδ 分别代表 α , β 和 δ 的当前位置; C 1 ⃗ , C 2 ⃗ , C 3 ⃗ \vec{C_{1}},\vec{C_{2}},\vec{C_{3}} C1 ,C2 ,C3 是随机向量, X ⃗ \vec{X} X 是当前灰狼的位置。

    { X 1 ⃗ = X a ⃗ − A 1 . D α ⃗ X 2 ⃗ = X β ⃗ − A 2 . D β ⃗ X 3 ⃗ = X δ ⃗ − A 3 . D δ ⃗ (6) \begin{cases}\vec{X_{1}}=\vec{X_{a}}-A_{1}.\vec{D_{\alpha}}\\ \vec{X_{2}}=\vec{X_{\beta}}-A_{2}.\vec{D_{\beta}}\\\vec{X_{3}}=\vec{X_{\delta}}-A_{3}.\vec{D_{\delta}} \end{cases}\tag{6} X1 =Xa A1.Dα X2 =Xβ A2.Dβ X3 =Xδ A3.Dδ (6)

    X ⃗ ( t + 1 ) = X 1 ⃗ + X 2 ⃗ + X 3 ⃗ 3 (7) \vec{X}(t+1)=\frac {\vec{X_{1}}+\vec{X_{2}}+\vec{X_{3}}}{3}\tag{7} X (t+1)=3X1 +X2 +X3 (7)

    式(6)分别定义了狼群中 ω 个体朝向 α ,β 和 δ 前进的步长和方向,式(7)定义了 ω 的最终位置。

    1.3 攻击猎物(开发)

    当猎物停止移动时,灰狼通过攻击来完成狩猎过程。为了模拟逼近猎物, a ⃗ \vec{a} a 的值被逐渐减小,因此 A ⃗ \vec{A} A 的波动范围也随之减小。换句话说,在迭代过程中,当 a ⃗ \vec{a} a 的值从2线性下降到0时,其对应的 A ⃗ \vec{A} A 的值也在区间[-a,a]内变化。如图3a所示,当 A ⃗ \vec{A} A 的值位于区间内时,灰狼的下一位置可以位于其当前位置和猎物位置之间的任意位置。当 ∣ A ⃗ ∣ < 1 |\vec{A}|<1 A <1 时,狼群向猎物发起攻击(陷入局部最优)。
    在这里插入图片描述

    图3.攻击猎物和寻找猎物

    1.4 搜索猎物(勘探)

    灰狼根据 α ,β 和 δ 的位置来搜索猎物。灰狼在寻找猎物时彼此分开,然后聚集在一起攻击猎物。基于数学建模的散度,可以用 A ⃗ \vec{A} A 大于1 或小于-1 的随机值来迫使灰狼与猎物分离,这强调了勘探(探索)并允许 GWO 算法全局搜索最优解。如图3b所示, ∣ A ⃗ ∣ > 1 |\vec{A}|>1 A >1 强迫灰狼与猎物(局部最优)分离,希望找到更合适的猎物(全局最优)。GWO 算法还有另一个组件 C ⃗ \vec{C} C 来帮助发现新的解决方案。由式(4)可知, C ⃗ \vec{C} C 是[0,2]之间的随机值。 C C 表示狼所在的位置对猎物影响的随机权重, C > 1 C>1 C>1表示影响权重大,反之,表示影响权重小。这有助于 GWO算法更随机地表现并支持探索,同时可在优化过程中避免陷入局部最优。另外,与 A A A不同 C C C是非线性减小的。这样,从最初的迭代到最终的迭代中,它都提供了决策空间中的全局搜索。在算法陷入了局部最优并且不易跳出时, C C C的随机性在避免局部最优方面发挥了非常重要的作用,尤其是在最后需要获得全局最优解的迭代中。

    2.算法流程图

    在这里插入图片描述

    图4.算法流程图

    3.算法结果

    在这里插入图片描述

    4.参考文献

    [1] Seyedali Mirjalili,Seyed Mohammad Mirjalili,Andrew Lewis. Grey Wolf Optimizer[J]. Advances in Engineering Software,2014,69.

    [2] 张晓凤,王秀英.灰狼优化算法研究综述[J].计算机科学,2019,46(03):30-38.

    5.Matlab 代码

    灰狼优化算法
    改进算法matlab代码

    名称说明或者参考文献
    基于翻筋斗觅食策略的灰狼优化算法(DSFGWO)[1]王正通,程凤芹,尤文,李双.基于翻筋斗觅食策略的灰狼优化算法[J/OL].计算机应用研究:1-5[2021-02-01].https://doi.org/10.19734/j.issn.1001-3695.2020.04.0102.
    基于透镜成像学习策略的灰狼优化算法(LISGWO)[1]龙文,伍铁斌,唐明珠,徐明,蔡绍洪.基于透镜成像学习策略的灰狼优化算法[J].自动化学报,2020,46(10):2148-2164.
    一种优化局部搜索能力的灰狼算法(IGWO)[1]王习涛.一种优化局部搜索能力的灰狼算法[J].计算机时代,2020(12):53-55.
    基于自适应头狼的灰狼优化算法(ALGWO)[1]郭阳,张涛,胡玉蝶,杜航.基于自适应头狼的灰狼优化算法[J].成都大学学报(自然科学版),2020,39(01):60-63+73.
    基于自适应正态云模型的灰狼优化算法(CGWO)[1]张铸,饶盛华,张仕杰.基于自适应正态云模型的灰狼优化算法[J/OL].控制与决策:1-6[2021-02-08].https://doi.org/10.13195/j.kzyjc.2020.0233.
    改进非线性收敛因子灰狼优化算法(GWOS)[1]王正通,尤文,李双.改进非线性收敛因子灰狼优化算法[J].长春工业大学学报,2020,41(02):122-127.
    一种基于收敛因子改进的灰狼优化算法(GWOS)[1]邢燕祯,王东辉.一种基于收敛因子改进的灰狼优化算法[J].网络新媒体技术,2020,9(03):28-34.
    基于莱维飞行和随机游动策略的灰狼算法(GWOM)[1]李阳,李维刚,赵云涛,刘翱.基于莱维飞行和随机游动策略的灰狼算法[J].计算机科学,2020,47(08):291-296.
    一种改进的灰狼优化算法(EGWO)[1]龙文,蔡绍洪,焦建军,伍铁斌.一种改进的灰狼优化算法[J].电子学报,2019,47(01):169-175.
    改进收敛因子和比例权重的灰狼优化算法(CGWO)[1]王秋萍,王梦娜,王晓峰.改进收敛因子和比例权重的灰狼优化算法[J].计算机工程与应用,2019,55(21):60-65+98.
    一种改进非线性收敛方式的灰狼优化算法研究(CGWO)[1]谈发明,赵俊杰,王琪.一种改进非线性收敛方式的灰狼优化算法研究[J].微电子学与计算机,2019,36(05):89-95.
    一种基于Tent 映射的混合灰狼优化的改进算法(PSOGWO)[1]滕志军,吕金玲,郭力文,许媛媛.一种基于Tent映射的混合灰狼优化的改进算法[J].哈尔滨工业大学学报,2018,50(11):40-49.
    基于差分进化与优胜劣汰策略的灰狼优化算法(IGWO)[1]朱海波,张勇.基于差分进化与优胜劣汰策略的灰狼优化算法[J].南京理工大学学报,2018,42(06):678-686.
    基于 Iterative 映射和单纯形法的改进灰狼优化算法(SMIGWO)[1]王梦娜,王秋萍,王晓峰.基于Iterative映射和单纯形法的改进灰狼优化算法[J].计算机应用,2018,38(S2):16-20+54.
    一种基于混合策略的灰狼优化算法(EPDGWO)[1]牛家彬,王辉.一种基于混合策略的灰狼优化算法[J].齐齐哈尔大学学报(自然科学版),2018,34(01):16-19+32.
    基于随机收敛因子和差分变异的改进灰狼优化算法(IGWO)[1]徐松金,龙文.基于随机收敛因子和差分变异的改进灰狼优化算法[J].科学技术与工程,2018,18(23):252-256.
    一种基于差分进化和灰狼算法的混合优化算法(DEGWO)[1]金星,邵珠超,王盛慧.一种基于差分进化和灰狼算法的混合优化算法[J].科学技术与工程,2017,17(16):266-269.
    协调探索和开发能力的改进灰狼优化算法(IGWO)[1]龙文,伍铁斌.协调探索和开发能力的改进灰狼优化算法[J].控制与决策,2017,32(10):1749-1757.
    基于Cat混沌与高斯变异的改进灰狼优化算法(IGWO)[1]徐辰华,李成县,喻昕,黄清宝.基于Cat混沌与高斯变异的改进灰狼优化算法[J].计算机工程与应用,2017,53(04):1-9+50.
    具有自适应搜索策略的灰狼优化算法(SAGWO)[1]魏政磊,赵辉,韩邦杰,孙楚,李牧东.具有自适应搜索策略的灰狼优化算法[J].计算机科学,2017,44(03):259-263.
    采用动态权重和概率扰动策略改进的灰狼优化算法(IGWO)[1]陈闯,Ryad Chellali,邢尹.采用动态权重和概率扰动策略改进的灰狼优化算法[J].计算机应用,2017,37(12):3493-3497+3508.
    具有自适应调整策略的混沌灰狼优化算法(CLSGWO)[1]张悦,孙惠香,魏政磊,韩博.具有自适应调整策略的混沌灰狼优化算法[J].计算机科学,2017,44(S2):119-122+159.
    强化狼群等级制度的灰狼优化算法(GWOSH)[1]张新明,涂强,康强,程金凤.强化狼群等级制度的灰狼优化算法[J].数据采集与处理,2017,32(05):879-889.
    一种新型非线性收敛因子的灰狼优化算法(NGWO)[1]王敏,唐明珠.一种新型非线性收敛因子的灰狼优化算法[J].计算机应用研究,2016,33(12):3648-3653.
    非线性参数的精英学习灰狼优化算法(IGWO)[1]逯苗,何登旭,曲良东.非线性参数的精英学习灰狼优化算法[J/OL].广西师范大学学报(自然科学版):1-12[2021-07-25].https://doi.org/10.16088/j.issn.1001-6600.2020093002.
    重选精英个体的非线性收敛灰狼优化算法(EGWO)[1]黎素涵,叶春明.重选精英个体的非线性收敛灰狼优化算法[J].计算机工程与应用,2021,57(01):62-68.

    算法相关应用matlab代码

    名称说明或者参考文献
    灰狼优化的BP神经网络(预测)https://blog.csdn.net/u011835903/article/details/112149776(原理一样,只是优化算法为灰狼算法)
    灰狼优化的BP神经网络(分类)https://blog.csdn.net/u011835903/article/details/112149394(原理一样,只是优化算法为灰狼算法)
    基于灰狼优化的Elman神经网络数据预测[https://blog.csdn.net/u011835903/article/details/111411128 (原理一样,只是优化算法为灰狼算法)
    基于灰狼算法优化的SVM数据分类https://blog.csdn.net/u011835903/article/details/110523352(原理一样,只是优化算法为灰狼算法)
    基于灰狼算法优化的最大熵图像多阈值分割https://blog.csdn.net/u011835903/article/details/108203775(原理一样,只是优化算法为灰狼算法)
    基于灰狼算法的二维Otsu图像阈值分割https://blog.csdn.net/u011835903/article/details/108023193(原理一样,只是优化算法为灰狼算法)
    灰狼算法优化的otsu多阈值分割https://blog.csdn.net/u011835903/article/details/108019744(原理一样,只是优化算法为灰狼算法)
    灰狼优化的PID参数优化https://blog.csdn.net/u011835903/article/details/109306387(原理一样,只是优化算法为灰狼算法)
    基于灰狼优化(GWO)的路径规划算法https://blog.csdn.net/u011835903/article/details/109100220(原理一样,只是优化算法为灰狼算法)

    6.Python代码

    改进算法python代码

    名称说明或者参考文献
    基于翻筋斗觅食策略的灰狼优化算法(DSFGWO)[1]王正通,程凤芹,尤文,李双.基于翻筋斗觅食策略的灰狼优化算法[J/OL].计算机应用研究:1-5[2021-02-01].https://doi.org/10.19734/j.issn.1001-3695.2020.04.0102.
    基于透镜成像学习策略的灰狼优化算法(LISGWO)[1]龙文,伍铁斌,唐明珠,徐明,蔡绍洪.基于透镜成像学习策略的灰狼优化算法[J].自动化学报,2020,46(10):2148-2164.
    一种优化局部搜索能力的灰狼算法(IGWO)[1]王习涛.一种优化局部搜索能力的灰狼算法[J].计算机时代,2020(12):53-55.
    基于自适应头狼的灰狼优化算法(ALGWO)[1]郭阳,张涛,胡玉蝶,杜航.基于自适应头狼的灰狼优化算法[J].成都大学学报(自然科学版),2020,39(01):60-63+73.
    基于自适应正态云模型的灰狼优化算法(CGWO)[1]张铸,饶盛华,张仕杰.基于自适应正态云模型的灰狼优化算法[J/OL].控制与决策:1-6[2021-02-08].https://doi.org/10.13195/j.kzyjc.2020.0233.
    改进非线性收敛因子灰狼优化算法(GWOS)[1]王正通,尤文,李双.改进非线性收敛因子灰狼优化算法[J].长春工业大学学报,2020,41(02):122-127.
    一种基于收敛因子改进的灰狼优化算法(GWOS)[1]邢燕祯,王东辉.一种基于收敛因子改进的灰狼优化算法[J].网络新媒体技术,2020,9(03):28-34.
    基于莱维飞行和随机游动策略的灰狼算法(GWOM)[1]李阳,李维刚,赵云涛,刘翱.基于莱维飞行和随机游动策略的灰狼算法[J].计算机科学,2020,47(08):291-296.
    一种改进的灰狼优化算法(EGWO)[1]龙文,蔡绍洪,焦建军,伍铁斌.一种改进的灰狼优化算法[J].电子学报,2019,47(01):169-175.
    改进收敛因子和比例权重的灰狼优化算法(CGWO)[1]王秋萍,王梦娜,王晓峰.改进收敛因子和比例权重的灰狼优化算法[J].计算机工程与应用,2019,55(21):60-65+98.
    一种改进非线性收敛方式的灰狼优化算法研究(CGWO)[1]谈发明,赵俊杰,王琪.一种改进非线性收敛方式的灰狼优化算法研究[J].微电子学与计算机,2019,36(05):89-95.
    一种基于Tent 映射的混合灰狼优化的改进算法(PSOGWO)[1]滕志军,吕金玲,郭力文,许媛媛.一种基于Tent映射的混合灰狼优化的改进算法[J].哈尔滨工业大学学报,2018,50(11):40-49.
    基于差分进化与优胜劣汰策略的灰狼优化算法(IGWO)[1]朱海波,张勇.基于差分进化与优胜劣汰策略的灰狼优化算法[J].南京理工大学学报,2018,42(06):678-686.
    基于 Iterative 映射和单纯形法的改进灰狼优化算法(SMIGWO)[1]王梦娜,王秋萍,王晓峰.基于Iterative映射和单纯形法的改进灰狼优化算法[J].计算机应用,2018,38(S2):16-20+54.
    一种基于混合策略的灰狼优化算法(EPDGWO)[1]牛家彬,王辉.一种基于混合策略的灰狼优化算法[J].齐齐哈尔大学学报(自然科学版),2018,34(01):16-19+32.
    基于随机收敛因子和差分变异的改进灰狼优化算法(IGWO)[1]徐松金,龙文.基于随机收敛因子和差分变异的改进灰狼优化算法[J].科学技术与工程,2018,18(23):252-256.
    一种基于差分进化和灰狼算法的混合优化算法(DEGWO)[1]金星,邵珠超,王盛慧.一种基于差分进化和灰狼算法的混合优化算法[J].科学技术与工程,2017,17(16):266-269.
    协调探索和开发能力的改进灰狼优化算法(IGWO)[1]龙文,伍铁斌.协调探索和开发能力的改进灰狼优化算法[J].控制与决策,2017,32(10):1749-1757.
    基于Cat混沌与高斯变异的改进灰狼优化算法(IGWO)[1]徐辰华,李成县,喻昕,黄清宝.基于Cat混沌与高斯变异的改进灰狼优化算法[J].计算机工程与应用,2017,53(04):1-9+50.
    具有自适应搜索策略的灰狼优化算法(SAGWO)[1]魏政磊,赵辉,韩邦杰,孙楚,李牧东.具有自适应搜索策略的灰狼优化算法[J].计算机科学,2017,44(03):259-263.
    采用动态权重和概率扰动策略改进的灰狼优化算法(IGWO)[1]陈闯,Ryad Chellali,邢尹.采用动态权重和概率扰动策略改进的灰狼优化算法[J].计算机应用,2017,37(12):3493-3497+3508.
    具有自适应调整策略的混沌灰狼优化算法(CLSGWO)[1]张悦,孙惠香,魏政磊,韩博.具有自适应调整策略的混沌灰狼优化算法[J].计算机科学,2017,44(S2):119-122+159.
    强化狼群等级制度的灰狼优化算法(GWOSH)[1]张新明,涂强,康强,程金凤.强化狼群等级制度的灰狼优化算法[J].数据采集与处理,2017,32(05):879-889.
    一种新型非线性收敛因子的灰狼优化算法(NGWO)[1]王敏,唐明珠.一种新型非线性收敛因子的灰狼优化算法[J].计算机应用研究,2016,33(12):3648-3653.
    重选精英个体的非线性收敛灰狼优化算法(EGWO)[1]黎素涵,叶春明.重选精英个体的非线性收敛灰狼优化算法[J].计算机工程与应用,2021,57(01):62-68.

    算法相关应用python代码

    名称说明或者参考文献
    基于灰狼算法的SVM分类(GWO-SVM)https://blog.csdn.net/u011835903/article/details/110523352(原理一样,只是优化算法为灰狼算法)
    基于灰狼算法的SVM回归预测(GWO-SVM)https://blog.csdn.net/u011835903/article/details/110630270(原理一样,只是优化算法为灰狼算法)
    基于灰狼算法的极限学习机(ELM)分类算法(GWO-ELM)https://blog.csdn.net/u011835903/article/details/111177850(原理一样,只是优化算法为灰狼算法)
    基于灰狼算法的极限学习机(ELM)回归预测算法(GWO-ELM)https://blog.csdn.net/u011835903/article/details/111073635(原理一样,只是优化算法为灰狼算法)
    基于灰狼算法的无线传感器网(WSN)覆盖优化(GWO-WSN)https://blog.csdn.net/u011835903/article/details/109262039(原理一样,只是优化算法为灰狼算法)
    基于灰狼算法改进的随机森林分类算法(GWO-RF)https://blog.csdn.net/u011835903/article/details/121860734(原理一样,只是优化算法为灰狼算法)
    基于灰狼算法改进的随机森林回归预测算法(GWO-RF)https://blog.csdn.net/u011835903/article/details/121860633(原理一样,只是优化算法为灰狼算法)
    展开全文
  • 优化算法综述

    千次阅读 2021-06-30 21:21:03
    遗传算法(GA)、帝国竞争算法(ICA)、 粒子群优化(PSO) 局部优化 模拟退火(SA)、贪婪算法(Greedy)、 邻域搜索(NS) 是否精确算法 精确算法 线性规划(LP)、分支定界法 ...

    优化算法综述

    依据分类具体算法
    1全局优化 遗传算法(GA)、帝国竞争算法(ICA)、 粒子群优化(PSO)
    局部优化 模拟退火(SA)、贪婪算法(Greedy)、 邻域搜索(NS)
    2精确算法线性规划(LP)、分支定界法(BB)
    模拟进化算法v
    群体仿生类算法、又称为群体智能优化算法GA、PSO
    数学规划方法: 动态规划(DP)、线性规划、整数规划、 混合整数规划、 分支定界法、 割平面法
    v
    v
    启发式算法(Heuristic Algorithms)v
    元启发式算法(Meta-Heuristic Algorithms)v

    数学规划法

    数学规划法:通常将多目标问题转化为单目标问题来解决。

    精确算法(exact algorithm)

    精确算法:通常将待解决的优化问题转换为数学规划问题,进行精确求解。如:分支定界法BB)。

    • 优点:在问题规模较小时,精确算法能在合理的时间内找到问题的最优解
    • 缺点:但当问题规模较大时(是NP-Hard问题),精确算法的计算复杂度高,求解时间呈指数级增长,不能容忍(指数爆炸)。

    启发式 VS. 元启发式

    问题描述:现实中很多问题的优化都可以建模为基于序列的组合优化,如旅行商问题(TSP)、排产问题、各类资源分配问题等。寻找最优序列的问题是NP难问题(NP-Hard问题)(其解空间为n!)。

    解决这类问题常用的方法有两种:

    • (1)一种方法是启发式算法,启发式算法是基于问题本身的规则得到较好的可行解,本质是贪心算法(贪婪算法,greedy)。这种方法速度较快,但因与问题本身联系紧密(problem specific, problem dependent),导致其通用性较差。
    • (2)另一种方法是元启发式算法,例如遗传算法、禁忌搜索算法、蚁群算法、模拟退火算法等都是元启发式算法。这类方法从生物进化、物理、化学等过程中受到启发,得到一种解空间的搜索策略,因其搜索策略独立于问题本身(problem independent),因此通用性强。元启发式这类算法有两个最本质的操作:①选择操作(从当前种群中选出优秀的个体,选择的策略有精英保留、轮盘赌、锦标赛等);②改变操作(如交叉、变异、灾变操作等,它们本质上都是从一个可行解改变为另一个可行解,用来扩大搜索范围,避免陷入局部最优)。(详见:元启发式算法常用操作详解:https://bbs.huaweicloud.com/blogs/195717)

    启发式算法

    启发式策略(heuristic)是一类在求解某个具体问题时,在可以接受的时间和空间内能给出其可行解(或近优解),但又不保证求得最优解(以及可行解与最优解的偏离)的策略的总称。
    许多启发式算法是相当特殊的,它依赖于某个特定问题。启发式策略在一个寻求最优解的过程中能够根据个体或者全局的经验来改变其搜索路径,当寻求问题的最优解变得不可能或者很难完成时(e.g. NP-C问题),启发式策略就是一个高效的获得可行解(即近优解)的办法。

    启发式算法包括:包括构造型方法、局部搜索算法、松弛方法、解空间缩减算法、贪婪策略、随机化贪婪策略、近邻策略、最大饱和度策略等。

    元启发式算法

    元启发式策略(Meta-heuristic)则不同,元启发式策略通常是一个通用的启发式策略,它们通常不借助于某种问题的特有条件,从而能够运用于更广泛的方面元启发式是启发式策略的增强改进版,它是随机算法与局部搜索算法相结合的产物。“元”可以理解为一个哲学概念,大概是“事物的本原”。

    元启发式策略通常会对搜索过程提出一些要求,然后按照这些要求实现的启发式算法便被称为元启发式算法。许多元启发式算法都从自然界的一些随机现象取得灵感(e.g. 模拟退火、遗传算法、粒子群算法)。现在元启发式算法的重要研究方向在于防止搜索过早得陷入局部最优,已经有很多人做了相应的工作,例如禁忌搜索(tabu)和非改进转移(模拟退火)。

    元启发式算法是相对于最优化算法提出来的,一个问题的最优化算法可以求得该问题的最优解,而元启发式算法是一个基于直观或经验构造的算法,它可以在可接受的花费(指计算时间和空间)下给出问题的一个可行解(近优解),并且该可行解与最优解的偏离程度不一定可以事先预计。

    元启发式算法(Meta-heuristic)是基于计算智能的机制求解复杂优化问题最优解满意解(近优解)的方法,有时也被称为智能优化算法(Intelligent optimization algorithm),智能优化通过对生物、物理、化学、社会、艺术等系统或领域中相关行为、功能、经验、规则、作用机理的认识,揭示优化算法的设计原理,在特定问题特征的引导下提炼相应的特征模型,设计智能化的迭代搜索型优化算法。

    常见的Meta-Heuristic Algorithms(有基于个体基于群体两类):
    一、基于个体(Single solution-based heuristics)
    1、模拟退火(Simulated Annealing,SA)
    2、禁忌搜索(Tabu Search,TS)
    3、变邻域搜索(Variable Neighborhood Search)
    4、自适应大规模领域搜索(Adaptive Large Neighborhood Search)
    二、基于群体(Population-based heuristics)
    1、遗传算法(Genetic Algorithm,GA)
    2、蚁群优化算法(Ant Colony Optimization,ACO)
    3、粒子群优化算法(Particle Swarm Optimization,PSO)
    4、差分进化算法(Differential Evolution, DE)
    4、人工蜂群算法(ABC)、人工鱼群算法、狼群算法等
    5、人工神经网络算法(ANN)

    另外还有:免疫算法、蛙跳算法、帝国竞争算法(Imperialist Competitive Algorithm,ICA)、和声搜索算法、分布估计算法、Memetic算法、文化算法、灰狼优化算法、人工免疫算法、进化规划、进化策略、候鸟优化算法、布谷鸟搜索算法、花朵授粉算法、引力搜索算法、化学反应优化算法、头脑风暴优化算法(Brain Storm Optimization Algorithm,BSO)等等。

    附:元启发式算法时间表(部分)
    在这里插入图片描述

    What is the difference between heuristics and meta-heuristics?

    • 启发式算法和元启发式算法,一般都是用来解决NP-H问题,目的是求得组合优化问题的近优解可行解满意解),但不一定是最优解。【它们和最优化算法相对应,最优化算法是用来求得问题的最优解的。】
    • 启发式算法是 problem dependent(依赖于问题的,与问题有关)或者叫 problem specific(面向特定问题的,与特定问题有关),故适应面窄; 而元启发式算法是problem independent(与问题无关的),元启发法是与问题无关的技术,可以应用于广泛的问题适用范围广
    • 启发式方法利用问题相关信息来找到特定问题的"足够好"的解决方案,根据给定问题制定启发式规则,故与该问题特性有关;而元启发式方法则像设计模式一样,是一般的算法思想,可以应用于各种各样的问题,与问题无关
    • 复杂性方面,启发式算法简单,就是用简单策略(如:贪婪策略、随机化贪婪策略、近邻策略、最大饱和度策略)构造可行集的过程。而元启发式则是一种高层次的多个算法模块的聚合算法。

    有段英文可以读读,理解一下:
    A locally optimal solution is better than all neighbouring solutions. A globally optimal solution is better than all solutions in the search space. A neighbourhood is a set of solutions that can be reached from the current solution by a simple operator. A neighbourhood is a subset of the search space. (局部最优解、全局最优解与邻域的概念)
    A heuristic is a rule of thumb method derived from human intuitions. For example, we can use the nearest neighbour heuristic to solve the TSP problem and use the maximal saturation degree heuristic to solve the graph colouring problem.(其次,我们可以利用启发式算法搜索并得到一个局部最优解(不保证是全局最优解))
    Meta-heuristics are methods that orchestrate an interaction between local improvement procedures and higher-level strategies to create a process capable of escaping from the local optima and performing a robust search in the solution space. Single-point meta-heuristics include Simulated Annealing, Tabu Search, and Variable Neighbourhood Search. Population-based meta-heuristics include Genetic Algorithm, Ant Colony Optimization, and Particle Swarm Optimization.(最后,我们可以利用元启发式算法更好地探索解空间,从而避免算法陷入局部最优)

    多目标智能优化算法

    多目标进化算法(Multi-Objective Evolutionary Algorithm,MOEA),如:增强多目标灰狼优化算法、多目标粒子群优化算法多目标遗传算法NSGA-Ⅱ算法(即带有精英保留策略的快速非支配多目标优化算法,是一种基于Pareto最优解的多目标优化算法,是多目标遗传算法的一种)。

    多目标优化算法,它主要针对同时优化多个目标(两个及两个以上)的优化问题,这方面比较经典的算法有NSGAII算法、MOEA/D算法以及人工免疫算法等。这部分内容的介绍已经在博客《[Evolutionary Algorithm] 进化算法简介》进行了概要式的介绍,有兴趣的博友可以进行参考(2015.12.13)-Poll的笔记。

    模拟进化算法与传统的精确算法(确定性算法)的区别

    1. 模拟进化算法的作用对象是由多个可行解组成的集合(种群),而非单个可行解
    2. 模拟进化算法只利用目标函数(或适应度函数)的适应值信息(fitness value),而无需使用梯度等其它辅助信息;
    3. 模拟进化算法利用概率机制非确定性迭代过程描述。
    4. 正是这些有别于确定型方法的特征,决定了模拟进化算法应用的广泛性、描述的简单性、本质上的并行性及良好的鲁棒性。

    优化算法分类

    1. 启发式优化算法:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度不一定事先可以预计.意思就是说,启发式算法是根据经验或者某些规则来解决问题,它求得的问题的解不一定是最优解,很有可能是近似解(或近优解)。这个解与最优解近似到什么程度,是不能确定的。相对于启发式算法,最优化算法或者精确算法(比如说分支定界法、动态规划法等则能求得最优解)。而元启发式优化算法(Meta-heuristic Algo.)是启发式算法中比较通用的一种高级一点的算法,主要有遗传算法、禁忌搜索算法、模拟退火算法、蚁群算法、粒子群算法、变邻域搜索算法、人工神经网络、人工免疫算法、差分进化算法等。这些算法可以在合理的计算资源条件下给出较高质量的解(最优解或近优解)。
    2. 仿生算法:基于仿生学的算法,是一类模拟自然生物进化或者群体社会行为的随机搜索方法的统称.由于这些算法求解时不依赖于梯度信息,故其应用范围较广,特别适用于传统方法难以解决的大规模复杂优化问题.主要有:遗传算法、人工神经网络、蚁群算法、蛙跳算法、粒子群优化算法等.这些算法均是模仿生物进化、神经网络系统、蚂蚁寻路、鸟群觅食等生物行为,故叫仿生算法
    3. 智能计算:也称为计算智能,群体智能算法。包括遗传算法、模拟退火算法、禁忌搜索算法、进化算法、蚁群算法、人工鱼群算法,粒子群算法、混合智能算法、免疫算法、神经网络、机器学习、生物计算、DNA计算、量子计算、模糊逻辑、模式识别、知识发现、数据挖掘等.智能计算是以数据为基础,通过训练建立联系,然后进行问题求解.

    所以说,你接触的很多算法,既是仿生算法,又是启发式算法,又是智能算法,这都对!只是分类方法不同而已。

    算法介绍

    帝国竞争算法(Imperialist Competitive Algorithm,ICA)

    帝国竞争算法(ICA)是Atashpaz-Gargari和Lucas于2007年提出的一种基于帝国主义殖民竞争机制的进化算法,属于社会启发的随机优化搜索方法。目前,ICA已被成功应用于多种优化问题中,如调度问题、分类问题和机械设计问题等。

    帝国主义竞争算法,借鉴了人类历史上政治社会殖民阶段帝国主义国家之间的竞争、占领、吞并殖民殖民地国家从而成为帝国国家的演化,是一种全局性的优化算法。该算法把所有初始化的个体都称作国家,按照国家势力分成帝国主义国家及殖民地两种,前者优势大于后者。

    其实,从另一个角度来看,ICA可以被认为是遗传算法(GA)的社会对应物。ICA是基于人类社会进化的过程,而GA是基于物种的生物进化过程。二者其实有异曲同工之妙。

    不过话说回来,大多数群体仿生类算法都有异曲同工之妙。

    分支定界法(Branch and Bound, BB)

    For instance, since the space of possible solutions is still too vast, a branch and bound type algorithm is proposed to further decimate the number of potential solutions to evaluate.
    例如,由于可行解的参数空间很大,一种分支限界算法被用来减少需要考察的可行解的数目。

    Branch and bound (BB or B&B) is an algorithm design paradigm for discrete and combinatorial optimization problems, as well as general real valued problems. A branch-and-bound algorithm consists of a systematic enumeration of candidate solutions by means of state space search: the set of candidate solutions is thought of as forming a rooted tree with the full set at the root. The algorithm explores branches of this tree, which represent subsets of the solution set. Before enumerating the candidate solutions of a branch, the branch is checked against upper and lower estimated bounds on the optimal solution, and is discarded if it cannot produce a better solution than the best one found so far by the algorithm.

    NSGA-Ⅱ算法

    NSGA(Non-dominated Sorting Genetic Algorithm,非支配排序遗传算法)、NSGA-II(带精英策略的快速非支配排序遗传算法),都是基于遗传算法的多目标优化算法,是基于pareto最优解讨论的多目标优化。

    NSGA-Ⅱ算法,即带有精英保留策略的快速非支配多目标优化算法,是一种基于Pareto最优解的多目标优化算法。
    NSGA-Ⅱ算法是进化算法中的一种,进化算法是在遗传算法的基础上改进而来的,所以,你得先弄懂遗传算法是什么。

    NSGA-Ⅱ是最流行的多目标遗传算法之一,它降低了非劣排序遗传算法的复杂性,具有运行速度快,解集的收敛性好的优点,成为其他多目标优化算法性能的基准。

    NSGA-Ⅱ算法是 Srinivas 和 Deb 于 2000 年在 NSGA 的基础上提出的,它比 NSGA算法更加优越:它采用了快速非支配排序算法,计算复杂度比 NSGA 大大的降低;采用了拥挤度和拥挤度比较算子,代替了需要指定的共享半径 shareQ,并在快速排序后的同级比较中作为胜出标准,使准 Pareto 域中的个体能扩展到整个 Pareto 域,并均匀分布,保持了种群的多样性;引入了精英策略,扩大了采样空间,防止最佳个体的丢失,提高了算法的运算速度和鲁棒性。

    NSGA-Ⅱ就是在第一代非支配排序遗传算法的基础上改进而来,其改进主要是针对如上所述的三个方面:

    1. 提出了快速非支配排序算法,一方面降低了计算的复杂度,另一方面它将父代种群跟子代种群进行合并,使得下一代的种群从双倍的空间中进行选取,从而保留了最为优秀的所有个体;
    2. 引进精英策略,保证某些优良的种群个体在进化过程中不会被丢弃,从而提高了优化结果的精度;
    3. 采用拥挤度和拥挤度比较算子,不但克服了NSGA中需要人为指定共享参数的缺陷,而且将其作为种群中个体间的比较标准,使得准Pareto域中的个体能均匀地扩展到整个Pareto域,保证了种群的多样性。

    这个算法是本人接触科研学习实现的第一个算法,因此想在这里和大家分享一下心得。 讲解的很详细,读个大概,有个思路和印象即可,不必深究。
    site:https://blog.csdn.net/qq_40434430/article/details/82876572/

    遗传算法(Genetic Algorithm, GA)

    遗传算法(Genetic Algorithm,简称GA)是一种最基本的进化算法,它是模拟达尔文生物进化理论的一种优化模型,最早由J.Holland教授于1975年提出。

    遗传算法中种群分每个个体都是解空间上的一个可行解,通过模拟生物的进化过程,从而在解空间内搜索最优解。

    禁忌搜索算法(Tabu Search,TS)

    遗传算法是具有全局搜索能力的算法,但是传统遗传算法求解调度问题并不是很成功,主要原因在于它的局部搜索能力较差,且容易早熟收敛。而禁忌搜索(Tabu Search, TS)是一种优秀的局部搜索算法。因此,可以结合遗传算法(GA)和禁忌搜索算法(TS)两者的优点,将“适者生存”的遗传准则嵌入到多起点的禁忌搜索算法中,构成混合遗传禁忌搜索算法(GATS)。

    由于遗传算法和禁忌搜索算法具有互补的特性,因此混合遗传禁忌搜索算法GATS)在性能上能够超越它们单独使用时的性能。

    文化基因算法(Memetic Algorithm,MA)

    文化基因(Meme)的概念是由Hawkins于1976年提出的,Pablo Moscato于1989年提出了Memetic Algorithm。Memetic Algorithm,是基于群体的计算智能方法与局部搜索相结合的一类算法的总称。文化基因算法的简单介绍。

    在这里插入图片描述

    文化基因算法(Memetic Algorithm,简称MA),也被称为是“密母算法”(Meme),它是由Moscato在1989年提出的。文化基因算法MA是一种基于种群的全局搜索和基于个体的局部启发式搜索的结合体,它的本质可以理解为:

    MA= GA + Local Search

    即MA算法实质上是为遗传算法(全局搜索算法)加上一个局部搜索(Local Search)算子。局部搜索算子可以根据不同的策略进行设计,比如常用的爬山机制、模拟退火、贪婪机制、禁忌搜索等。

    在这里插入图片描述
    在这里插入图片描述
    Pablo Moscato认为:在遗传算法(GA)中,变异操作可以看作是含有一定噪声的爬山搜索,实际上模拟遗传编码和自然选择的过程不应包含变异操作,因为在文化进化的过程中,在众多的随机变化步骤中得到一个正确的、可提高整体性能的一步进展是非常困难的,只有此领域的拥有足够的专业知识的精通者们,才有可能创造新的进展,并且这样的事情发生的频率是很低的。 因此,文化基因的传播过程应是严格复制的,若要发生变异,那么每一步的变异都需要有大量的专业知识支撑,而每一步的变异都应带来进展而不是混乱,这就是为什么我们观察到的文化进化速度要比生物进化速度快得多的原因。 对应于模拟生物进化过程的遗传算法,Moscato提出了模拟文化进化过程的文化基因算法,文化基因算法用局部启发式搜索来模拟由大量专业知识支撑的变异过程。因此说,文化基因算法是一种基于种群的全局搜索和基于个体的局部启发式搜索的结合体

    文化基因算法的这种全局搜索和局部搜索的结合机制,使其搜索效率在某些问题领域比传统遗传算法快几个数量级,可应用于广泛的问题领域并得到满意的结果。 很多人将文化基因算法看作混合遗传算法、 遗传局部搜索或是拉马克式进化算法。实际上,文化基因算法提出的只是一种框架、 是一个概念在这个框架下,采用不同的搜索策略可以构成不同的文化基因算法。如全局搜索策略可以采用遗传算法、 进化策略、 进化规划等,局部搜索策略可以采用爬山搜索、模拟退火、贪婪算法、禁忌搜索、导引式局部搜索等。 这种全局与局部的混合搜索机制显然要比单纯在普通个体间搜索的进化效率高得多

    机器学习中的最优化模型

    我们每个人都会在我们的生活或者工作中遇到各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在一定成本下,如何使利润最大化”等。最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。随着学习的深入,博主越来越发现最优化方法的重要性,学习和工作中遇到的大多问题都可以建模成一种最优化模型进行求解,比如我们现在学习的机器学习算法,大部分的机器学习算法的本质都是建立优化模型,通过最优化方法对目标函数(或损失函数)进行优化,从而训练出最好的模型。常见的最优化方法有梯度下降法牛顿法和拟牛顿法共轭梯度法最速下降法等等。

    梯度下降法(Gradient Descent)

    牛顿法和拟牛顿法(Newton’s method & Quasi-Newton Methods)

    共轭梯度法(Conjugate Gradient)

    拉格朗日乘数法(Lagrange Multiplier Method)

    详见:[Math & Algorithm] 拉格朗日乘数法

    展开全文
  • 粒子群优化算法解决旅行商(TSP)问题,求解全国31个省会城市的一次历遍的最短距离。代码可运行
  • 智能微电网粒子群优化算法,微源:光伏、风机、发电机、储能等
  • 群体智能优化算法

    千次阅读 2021-12-22 15:46:30
    群体智能算法有粒子群优化算法(PSO)、蚁群优化算法(ACO)、人工蜂群优化算法(ABC)、差分进化算法(DE)、引力搜索算法(GSA)、萤火虫算法(FA)、蝙蝠算法(BA)、布谷鸟优化算法(COA)、灰狼优化算法(GWO)、鲸鱼优化算法(WOA...
  • 智能优化算法——灰狼优化算法(Python&Matlab实现)

    千次阅读 多人点赞 2022-03-19 17:14:32
    目录 1 灰狼优化算法基本思想 2 灰狼捕食猎物过程 ...灰狼优化算法是一种群智能优化算法,它的独特之处在于一小部分拥有绝对话语权的灰狼带领一群灰狼向猎物前进。在了解灰狼优化算法的特点之前,我们有必要了...
  • 我整理上传的量子优化算法源码史上最强合集 包含基本量子优化算法CQA:基于量子遗传算法的函数寻优算法;量子粒子群;量子混沌等等 都是我在写论文中应用的 目前 已经毕业了 代码分享给大家 对搞量子优化的朋友绝对有...
  • 群体智能优化算法之鲸鱼优化算法

    千次阅读 2022-02-04 17:40:28
    群体智能优化算法——鲸鱼优化算法
  • 智能优化算法:海鸥优化算法-附代码

    万次阅读 多人点赞 2020-07-23 14:24:01
    2019智能算法:海鸥优化算法-附代码 摘要:本文简单介绍智能优化算法-海鸥优化算法 1.原理 海鸥是遍布全球的海鸟,海鸥种类繁多且大小和身长各不相同。 海鸥是杂食动物,吃昆虫、鱼、爬行动物、两栖动物和蚯蚓等。 ...
  • 智能优化算法:蝴蝶优化算法-附代码

    万次阅读 热门讨论 2020-08-07 09:58:08
    智能优化算法:蝴蝶优化算法-附代码 文章目录智能优化算法:蝴蝶优化算法-附代码1.算法原理2.算法流程:3.算法结果4.参考文献:5.MATLAB代码 摘要:蝴蝶优化算法 (Butterfly optimization algorithm,BOA)是由 ...
  • 智能优化算法:狮群优化算法 - 附代码

    千次阅读 热门讨论 2021-01-30 10:49:53
    智能优化算法:狮群优化算法 文章目录智能优化算法:狮群优化算法1.狮群算法原理1.1参数定义1.2算法原理2.实验结果3.参考文献4.Matlab代码5.python代码 摘要:狮群优化算法(Loin Swarm Optimization, LSO),是于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,077,710
精华内容 431,084
关键字:

优化算法

友情链接: Dongle.rar