精华内容
下载资源
问答
  • 优化算法】简述灰狼优化算法(GWO)原理

    万次阅读 多人点赞 2019-03-25 21:10:34
    系列优化算法简述: OP_1. 简述遗传算法(GA)原理 OP_2 简述灰狼优化算法(GWO)原理 前言: 灰狼优化算法(Grey Wolf Optimizer,GWO)由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能...

    前言:

    灰狼优化算法(Grey Wolf Optimizer,GWO)由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优化算法。该算法受到了灰狼捕食猎物活动的启发而开发的一种优化搜索方法,它具有较强的收敛性能、参数少、易实现等特点。近年来受到了学者的广泛关注,它己被成功地应用到了车间调度、参数优化、图像分类等领域中。


    算法原理:

    灰狼隶属于群居生活的犬科动物,且处于食物链的顶层。灰狼严格遵守着一个社会支配等级关系。如图:

    社会等级第一层:狼群中的头狼记为 \alpha\alpha 狼主要负责对捕食、栖息、作息时间等活动作出决策。由于其它的狼需要服从\alpha 狼的命令,所以 \alpha 狼也被称为支配狼。另外, \alpha 狼不一定是狼群中最强的狼,但就管理能力方面来说, \alpha 狼一定是最好的。

    社会等级第二层\beta 狼,它服从于 \alpha 狼,并协助 \alpha 狼作出决策。在 \alpha 狼去世或衰老后,\beta 狼将成为 \alpha 狼的最候选者。虽然 \beta 狼服从 \alpha 狼,但 \beta 狼可支配其它社会层级上的狼。

    社会等级第三层\delta 狼,它服从 \alpha 、\beta 狼,同时支配剩余层级的狼。\delta 狼一般由幼狼、哨兵狼、狩猎狼、老年狼及护理狼组成。

    社会等级第四层\omega 狼,它通常需要服从其它社会层次上的狼。虽然看上去 \omega 狼在狼群中的作用不大,但是如果没有 \omega 狼的存在,狼群会出现内部问题如自相残杀。

    GWO 优化过程包含了灰狼的社会等级分层跟踪包围攻击猎物等步骤,其步骤具体情况如下所示。

    1)社会等级分层(Social Hierarchy)当设计 GWO 时,首先需构建灰狼社会等级层次模型。计算种群每个个体的适应度,将狼群中适应度最好的三匹灰狼依次标记为 \alpha\beta 、\delta ,而剩下的灰狼标记为 \omega。也就是说,灰狼群体中的社会等级从高往低排列依次为; \alpha\beta 、\delta  及 \omega。GWO 的优化过程主要由每代种群中的最好三个解(即  \alpha\beta 、\delta )来指导完成。

    2)包围猎物( Encircling Prey )灰狼捜索猎物时会逐渐地接近猎物并包围它,该行为的数学模型如下:

    式中:t 为当前迭代次数:。表示 hadamard 乘积操作;A 和 C 是协同系数向量;Xp 表示猎物的位置向量; X(t) 表示当前灰狼的位置向量;在整个迭代过程中 a 由2 线性降到 0; r1 和 r2 是 [0,1] 中的随机向量。

    3)狩猎( Hunring)

    灰狼具有识别潜在猎物(最优解)位置的能力,搜索过程主要靠 \alpha\beta 、\delta 灰狼的指引来完成。但是很多问题的解空间特征是未知的,灰狼是无法确定猎物(最优解)的精确位置。为了模拟灰狼(候选解)的搜索行为,假设 \alpha\beta 、\delta 具有较强识别潜在猎物位置的能力。因此,在每次迭代过程中,保留当前种群中的最好三只灰狼( \alpha\beta 、\delta ),然后根据它们的位置信息来更新其它搜索代理(包括 \omega)的位置。该行为的数学模型可表示如下:

    式中:X_{_{\alpha }}X_{_{\beta }}X_{_{\delta }} 分别表示当前种群中 \alpha\beta 、\delta 的位置向量;X表示灰狼的位置向量;D_{_{\alpha }}D_{_{\beta }}D_{_{\delta }}  分别表示当前候选灰狼与最优三条狼之间的距离;当|A|>1时,灰狼之间尽量分散在各区域并搜寻猎物。当|A|<1时,灰狼将集中捜索某个或某些区域的猎物。

    从图中可看出,候选解的位置最终落在被 \alpha\beta 、\delta 定义的随机圆位置内。总的来说, \alpha\beta 、\delta 需首先预测出猎物(潜
    在最优解)的大致位置,然后其它候选狼在当前最优兰只狼的指引下在猎物附近随机地更新它们的位置。

    4)攻击猎物(Attacking Prey)构建攻击猎物模型的过程中,根据2)中的公式,a值的减少会引起 A 的值也随之波动。换句话说,A 是一个在区间[-a,a](备注:原作者的第一篇论文里这里是[-2a,2a],后面论文里纠正为[-a,a])上的随机向量,其中a在迭代过程中呈线性下降。当 A 在[-1,1]区间上时,则捜索代理(Search Agent)的下一时刻位置可以在当前灰狼与猎物之间的任何位置上。

    5)寻找猎物(Search for Prey)灰狼主要依赖 \alpha\beta 、\delta 的信息来寻找猎物。它们开始分散地去搜索猎物位置信息,然后集中起来攻击猎物。对于分散模型的建立,通过|A|>1使其捜索代理远离猎物,这种搜索方式使 GWO 能进行全局搜索。GWO 算法中的另一个搜索系数是C。从2)中的公式可知,C向量是在区间范围[0,2]上的随机值构成的向量,此系数为猎物提供了随机权重,以便増加(|C|>1)或减少(|C|<1)。这有助于 GWO 在优化过程中展示出随机搜索行为,以避免算法陷入局部最优。值得注意的是,C并不是线性下降的,C在迭代过程中是随机值,该系数有利于算法跳出局部,特别是算法在迭代的后期显得尤为重要。


    参考文献:

    加工时间可控的多目标车间调度问题研究

    Grey Wolf Optimizer
     

     

    展开全文
  • 由于我之前一直强调数据结构以及算法学习的重要性,所以就一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,...

    由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过不错的文章给大家。大家也可以留言区补充。

    一、算法最最基础

    1、时间复杂度

    2、空间复杂度

    一般最先接触的就是时间复杂度和空间复杂度的学习了,这两个概念以及如何计算,是必须学的,也是必须最先学的,主要有最大复杂度、平均复杂度等,直接通过博客搜索学习即可。

    文章推荐:

    算法分析神器—时间复杂度

    二、基础数据结构

    1、线性表

    • 列表(必学)
    • 链表(必学)
    • 跳跃表(知道原理,应用,最后自己实现一遍)
    • 并查集(建议结合刷题学习)

    不用说,链表、列表必须,不过重点是链表。

    三分钟基础数据结构:如何轻松手写链表?

    以后有面试官问你「跳跃表」,你就把这篇文章扔给他

    2、栈与队列

    • 栈(必学)
    • 队列(必学)
    • 优先队列、堆(必学)
    • 多级反馈队列(原理与应用)

    特别是优先队列,再刷题的时候,还是经常用到的,队列与栈,是最基本的数据结构,必学。可以通过博客来学习。相关文章:

    三分钟基础知识:什么是栈?

    二叉堆是什么鬼?

    【算法与数据结构】堆排序是什么鬼?

    3、哈希表(必学)

    • 碰撞解决方法:开放定址法、链地址法、再次哈希法、建立公共溢出区(必学)
    • 布隆过滤器(原理与应用)

    哈希表相关的,推荐通过博客来学习,推荐文章:

    Hash冲突之开放地址法

    4、树

    • 二叉树:各种遍历(递归与非递归)(必学)
    • 哈夫曼树与编码(原理与应用)
    • AVL树(必学)
    • B 树与 B+ 树(原理与应用)
    • 前缀树(原理与应用)
    • 红黑树(原理与应用)
    • 线段树(原理与应用)

    树相关是知识还是挺多的,建议看书,可以看《算法第四版》。相关文章:

    高频面试题:什么是B树?为啥文件索引要用B树而不用二叉查找树?

    【漫画】以后在有面试官问你AVL树,你就把这篇文章扔给他。

    腾讯面试题:有了二叉查找树、平衡树为啥还需要红黑树?

    【面试被虐】游戏中的敏感词过滤是如何实现的?

    5、数组

    • 树状数组
    • 矩阵(必学)

    树状数组其实我也没学过,,,,

    三、各种常见算法

    1、十大排序算法

    • 简单排序:插入排序、选择排序、冒泡排序(必学)
    • 分治排序:快速排序、归并排序(必学,快速排序还要关注中轴的选取方式)
    • 分配排序:桶排序、基数排序
    • 树状排序:堆排序(必学)
    • 其他:计数排序(必学)、希尔排序

    对于十大算法的学习,假如你不大懂的话,那么我还是挺推荐你去看书的,因为看了书,你可能不仅仅知道这个算法怎么写,还能知道他是怎么来的。推荐书籍是《算法第四版》,这本书讲的很详细,而且配了很多图演示,还是挺好懂的。

    推荐文章:

    必学十大经典排序算法,看这篇就够了(附完整代码/动图/优质文章)(修订版)

    2、图论算法

    • 图的表示:邻接矩阵和邻接表
    • 遍历算法:深度搜索和广度搜索(必学)
    • 最短路径算法:Floyd,Dijkstra(必学)
    • 最小生成树算法:Prim,Kruskal(必学)
    • 实际常用算法:关键路径、拓扑排序(原理与应用)
    • 二分图匹配:配对、匈牙利算法(原理与应用)
    • 拓展:中心性算法、社区发现算法(原理与应用)

    图还是比较难的,不过我觉得图涉及到的挺多算法都是挺实用的,例如最短路径的计算等,图相关的,我这里还是建议看书的,可以看《算法第四版》。

    漫画:什么是 “图”?(修订版)

    漫画:深度优先遍历 和 广度优先遍历

    漫画:图的 “最短路径” 问题

    漫画:Dijkstra 算法的优化

    漫画:图的 “多源” 最短路径

    更多算法的学习,欢迎关注我的公众号『帅地玩编程

    3、搜索与回溯算法

    • 贪心算法(必学)
    • 启发式搜索算法:A*寻路算法(了解)
    • 地图着色算法、N 皇后问题、最优加工顺序
    • 旅行商问题

    这方便的只是都是一些算法相关的,我觉得如果可以,都学一下。像贪心算法的思想,就必须学的了。建议通过刷题来学习,leetcode 直接专题刷。

    4、动态规划

    • 树形DP:01背包问题
    • 线性DP:最长公共子序列、最长公共子串
    • 区间DP:矩阵最大值(和以及积)
    • 数位DP:数字游戏
    • 状态压缩DP:旅行商

    我觉得动态规划是最难的一个算法思想了,记得当初第一次接触动态规划的时候,是看01背包问题的,看了好久都不大懂,懵懵懂懂,后面懂了基本思想,可是做题下不了手,但是看的懂答案。一气之下,再leetcdoe专题连续刷了几十道,才掌握了动态规划的套路,也有了自己的一套模板。不过说实话,动态规划,是考的真他妈多,学习算法、刷题,一定要掌握。这里建议先了解动态规划是什么,之后 leetcode 专题刷,反正就一般上面这几种题型。后面有时间,我也写一下我学到的套路,有点类似于我之前写的递归那样,算是一种经验。也就是我做题时的模板,不过感觉得写七八个小时,,,,,有时间就写。之前写的递归文章:为什么你学不会递归?告别递归,谈谈我的一些经验

    5、字符匹配算法

    • 正则表达式
    • 模式匹配:KMP、Boyer-Moore

    我写过两篇字符串匹配的文章,感觉还不错,看了这两篇文章,我觉得你就差不多懂 kmp 和 Boyer-Moore 了。

    字符串匹配Boyer-Moore算法:文本编辑器中的查找功能是如何实现的?

    更多算法的学习,欢迎关注我的公众号『苦逼的码农

    6、流相关算法

    • 最大流:最短增广路、Dinic 算法
    • 最大流最小割:最大收益问题、方格取数问题
    • 最小费用最大流:最小费用路、消遣

    这方面的一些算法,我也只了解过一些,感兴趣的可以学习下。

    总结

    对于上面设计到的算法,我都提供了感觉还不错的文章,建议大家收藏,然后可以利用零碎的时间进行阅读,有些人可能会觉得上面的算法太多,说实话,我觉得不多,特别是对于在校生的,上面涉及到的算法可以不用很懂,但至少得了解。至于书籍的话,如果你连基本数据结构都还不懂的,建议看《数据结构与算法》相关书籍,例如《大话数据结构》、《数据结构与算法分析》。如果你有一定的基础,例如知道链表,栈,队列,那么可以看《算法第四版》,不过这本书是用 Java 实现的,不过我觉得你只要学过 C,那么可以看的懂。

    这些算法的学习,虽然你觉得学了没有什么用,但还是那些话,它对你的影响是潜意识的,它可以给你打下很深厚的基础内功,如果你想走的更远,那么我推荐学习,标注必学的,那么我觉得,你是真的需要抽时间来学习下,标注原理与应用的,代表你可以不知道怎么用代码实现,但是必得知道它的实现原理以及应用,更多算法的学习,可以持续关注我的微信公众号勒。

    作为一个非常注重计算机基础以及算法学习的程序员,一路自学走来,看过挺多不错的优质书籍,在这里推荐给大家,全都是自己看过滴。

    最后,很多人问我都是怎么学习的,那我干脆就把我看过的优质书籍贡献出来

    计算机基础入门推荐:《程序是怎样跑起来的》、《网络是怎样连接的》、《计算机是怎样工作的》

    进一步认识计算机网络:《计算机网络:自顶向下》、《图解http》

    数据结构+算法入门:《数据结构与算法分析:C语言描述版》,《大话数据结构》、《阿哈算法》

    算法进阶:《算法第四版》、《编程之美》、《编程珠玑》

    由于我是Java技术栈的,顺便推荐基本Java的书籍,从左到由的顺序看到

    Java:《Java核心技术卷1》、《编程思想》、《深入理解Java虚拟机》、《Java编程艺术》

    数据库:《mysql必知必会》、《MySQL技术内幕:InnoDB存储引擎》

    就先介绍这么多,这些都是最基础最核心滴,希望对那些不知道看什书的同学有所帮助

    对了,我介绍的这些书籍,我顺便帮你整理好了,你可以在我的原创微信公众号『帅地玩编程』回复『书籍』获取哦

    另外,帅地把公众号的精华文章整理成了一本电子书,共 630页!目录如下
    在这里插入图片描述
    现在免费送给大家,在我的公众号帅地玩编程回复程序员内功修炼即可获取。

    有收获?希望老铁们来个三连击,给更多的人看到这篇文章

    1、老铁们,关注我的原创微信公众号「帅地玩编程」,专注于写算法 + 计算机基础知识(计算机网络+ 操作系统+数据库+Linux),保存让你看完有所收获,不信你打我。

    2、给俺点个赞呗,可以让更多的人看到这篇文章,顺便激励下我,嘻嘻。

    作者info

    作者:帅地,一位热爱写作的小伙
    原创公众号:『帅地玩编程』,已写了150多篇文章,专注于写 算法、计算机基础知识等提升你内功的文章,期待你的关注。
    转载说明:务必注明来源(注明:来源于公众号:苦逼的码农, 作者:帅地)

    展开全文
  • 优化算法之粒子群算法(PSO)

    万次阅读 多人点赞 2018-08-03 10:26:45
      粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation)。源于对鸟群捕食的行为研究。粒子群优化算法的基本思想:是通过群体中个体之间的协作和信息共享来寻找最优...

    一、粒子群算法的概念

      粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation)。源于对鸟群捕食的行为研究。粒子群优化算法的基本思想:是通过群体中个体之间的协作和信息共享来寻找最优解.
      PSO的优势:在于简单容易实现并且没有许多参数的调节。目前已被广泛应用于函数优化、神经网络训练、模糊系统控制以及其他遗传算法的应用领域。

    二、粒子群算法分析

    1、基本思想

      粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅具有两个属性:速度和位置,速度代表移动的快慢,位置代表移动的方向。每个粒子在搜索空间中单独的搜寻最优解,并将其记为当前个体极值,并将个体极值与整个粒子群里的其他粒子共享,找到最优的那个个体极值作为整个粒子群的当前全局最优解,粒子群中的所有粒子根据自己找到的当前个体极值和整个粒子群共享的当前全局最优解来调整自己的速度和位置。下面的动图很形象地展示了PSO算法的过程:
    这里写图片描述

    2、更新规则

      PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次的迭代中,粒子通过跟踪两个“极值”(pbest,gbest)来更新自己。在找到这两个最优值后,粒子通过下面的公式来更新自己的速度和位置。
    这里写图片描述
    公式(1)的第一部分称为【记忆项】,表示上次速度大小和方向的影响;公式(1)的第二部分称为【自身认知项】,是从当前点指向粒子自身最好点的一个矢量,表示粒子的动作来源于自己经验的部分;公式(1)的第三部分称为【群体认知项】,是一个从当前点指向种群最好点的矢量,反映了粒子间的协同合作和知识共享。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。以上面两个公式为基础,形成了PSO的标准形式
    这里写图片描述
    公式(2)和 公式(3)被视为标准PSO算法

    3、PSO算法的流程和伪代码

    这里写图片描述

    4、PSO算法举例

    这里写图片描述
    这里写图片描述

    5、PSO算法的demo

    #include <iostream>
    #include <vector>
    #include <cmath>
    #include <map>
    #include <algorithm>
    #include <random>
    #include <ctime>
    #include <Eigen/Dense>
    using namespace Eigen;
    using namespace std;
    
    const int dim = 1;//维数
    const int p_num = 10;//粒子数量
    const int iters = 100;//迭代次数
    const int inf = 999999;//极大值
    const double pi = 3.1415;
    //定义粒子的位置和速度的范围
    const double v_max = 4;
    const double v_min = -2;
    const double pos_max = 2;
    const double pos_min = -1;
    //定义位置向量和速度向量
    vector<double> pos;
    vector<double> spd;
    //定义粒子的历史最优位置和全局最优位置
    vector<double> p_best;
    double g_best;
    //使用eigen库定义函数值矩阵和位置矩阵
    Matrix<double, iters, p_num> f_test;
    Matrix<double, iters, p_num> pos_mat;
    
    //定义适应度函数
    double fun_test(double x)
    {
        double res = x * x + 1;
        return res;
    }
    
    //初始化粒子群的位置和速度
    void init()
    {
        //矩阵中所有元素初始化为极大值
        f_test.fill(inf);
        pos_mat.fill(inf);
        //生成范围随机数
        static std::mt19937 rng;
        static std::uniform_real_distribution<double> distribution1(-1, 2);
        static std::uniform_real_distribution<double> distribution2(-2, 4);
        for (int i = 0; i < p_num; ++i)
        {
            pos.push_back(distribution1(rng));
            spd.push_back(distribution2(rng));
        }
        vector<double> vec;
        for (int i = 0; i < p_num; ++i)
        {
            auto temp = fun_test(pos[i]);//计算函数值
            //初始化函数值矩阵和位置矩阵
            f_test(0, i) = temp;
            pos_mat(0, i) = pos[i];
            p_best.push_back(pos[i]);//初始化粒子的历史最优位置
        }
        std::ptrdiff_t minRow, minCol;
        f_test.row(0).minCoeff(&minRow, &minCol);//返回函数值矩阵第一行中极小值对应的位置
        g_best = pos_mat(minRow, minCol);//初始化全局最优位置
    }
    
    void PSO()
    {
        static std::mt19937 rng;
        static std::uniform_real_distribution<double> distribution(0, 1);
        for (int step = 1; step < iters; ++step)
        {
            for (int i = 0; i < p_num; ++i)
            {
                //更新速度向量和位置向量
                spd[i] = 0.5 * spd[i] + 2 * distribution(rng) * (p_best[i] - pos[i]) +
                    2 * distribution(rng) * (g_best - pos[i]);
                pos[i] = pos[i] + spd[i];
                //如果越界则取边界值
                if (spd[i] < -2 || spd[i] > 4)
                    spd[i] = 4;
                if (pos[i] < -1 || pos[i] > 2)
                    pos[i] = -1;
                //更新位置矩阵
                pos_mat(step, i) = pos[i];
            }
            //更新函数值矩阵
            for (int i = 0; i < p_num; ++i)
            {
                auto temp = fun_test(pos[i]);
                f_test(step, i) = temp;
            }
            for (int i = 0; i < p_num; ++i)
            {
                MatrixXd temp_test;
                temp_test = f_test.col(i);//取函数值矩阵的每一列
                std::ptrdiff_t minRow, minCol;
                temp_test.minCoeff(&minRow, &minCol);//获取每一列的极小值对应的位置
                p_best[i] = pos_mat(minRow, i);//获取每一列的极小值,即每个粒子的历史最优位置
            }
            g_best = *min_element(p_best.begin(), p_best.end());//获取全局最优位置
        }
        cout << fun_test(g_best);
    }
    
    int main()
    {
        init();
        PSO();
        system("pause");
        return 0;
    }

    参考:https://blog.csdn.net/myarrow/article/details/51507671
    https://blog.csdn.net/google19890102/article/details/30044945
    https://wenku.baidu.com/view/65c600b9294ac850ad02de80d4d8d15abe230048.html
    https://blog.csdn.net/darin1997/article/details/80675933

    展开全文
  • 智能算法:鲸鱼优化算法-附代码 文章目录智能算法:鲸鱼优化算法-附代码1.算法原理1.1包围猎物1.2 狩猎行为1.3 搜索猎物1.4 算法流程2. 算法结果:参考文献: 摘要:鲸鱼优化算法 (whale optimization algorithm,WOA...

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


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

    1.算法原理

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

    图1.座头鲸狩猎行为

    1.1包围猎物

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

    其中,r1r_{1}r2r_{2}是(0,1)中的随机数,a 的值从 2到 0 线性下降,tt 表示当前的迭代次数,TmaxT_{max} 为最大迭代次数。

    1.2 狩猎行为

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

    1.3 搜索猎物

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

    1.4 算法流程

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

    2. 算法结果:

    在这里插入图片描述

    参考文献:

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

    Matalb代码地址:

    鲸鱼优化算法

    文献复现:混合策略改进鲸鱼优化算法(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.

    文献复现:基于混沌权重和精英引导的鲸鱼优化算法(AWOA)
    [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.

    Python代码地址:

    个人资料介绍

    展开全文
  • 传统优化算法VS智能优化算法

    千次阅读 2020-12-20 11:05:40
    传统优化算法不少属于凸优化范畴,唯一明确的全局最优点;而智能优化算法针对的绝大多数是多极值问题,如何防止陷入局部最优而尽可能找到全局最优是采纳智能优化算法的根本原因: 对于单极值问题,传统算法大...
  • 智能优化算法:灰狼优化算法-附代码

    万次阅读 多人点赞 2020-07-31 16:31:41
    GWO算法具有结构简单、需要调节的参数少,容易实现等特点,其中存在能够自适应调整的收敛因子以及信息反馈机制,能够在局部寻优与全局搜索之间实现平衡,因此在对问题的求解精度和收敛速度方面都有良好的性能。...
  • 智能优化算法:麻雀搜索算法-附代码

    万次阅读 多人点赞 2020-09-27 16:34:00
    2020智能优化算法:麻雀搜索算法-附代码 文章目录2020智能优化算法:麻雀搜索算法-附代码1.算法原理2.算法结果3.参考文献4.Matlab代码 摘要:麻雀搜索算法(Sparrow Search Algorithm, SSA)是于2020年提出的。SSA ...
  • 优化算法——常见优化算法分类及总结

    万次阅读 多人点赞 2018-10-27 12:54:53
    之前做特征选择,实现过基于群智能算法进行最优化的搜索,看过一些群智能优化算法的论文,在此做一下总结。 最优化问题  在生活或者工作中存在各种各样的最优化问题,比如每个企业和个人要考虑的一个问题“在...
  • 智能优化算法:蜻蜓优化算法-附代码 文章目录智能优化算法:蜻蜓优化算法-附代码1.算法原理1.1分离2.2 排队2.3 结盟2.4 寻找猎物2.5 躲避天敌2.算法流程3.算法结果4.参考文献5.MATALAB代码 摘要:蜻蜓优化算法( ...
  • 粒子群优化算法(PSO)

    万次阅读 多人点赞 2018-06-04 20:07:09
    粒子群优化算法(Partical Swarm Optimization PSO),粒子群中的每一个粒子代表一个问题的可能解,通过粒子个体的简单行为,群体内的信息交互实现问题求解的智能性。由于PSO操作简单、收敛速度快,...
  • 智能优化算法:蝴蝶优化算法-附代码

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

    万次阅读 多人点赞 2018-09-03 21:27:12
    智能优化算法 目录 智能优化算法 目录 遗传算法(Genetic Algorithm) 理论 特点 领域 算法流程 差分进化算法(Differential Evolution Algorithm) 理论 特点 领域 算法流程 免疫算法(Immune Algorithm,...
  • 智能优化算法:旗鱼优化算法-附代码

    千次阅读 热门讨论 2020-10-24 11:30:56
    2019智能优化算法:旗鱼优化算法-附代码 文章目录2019智能优化算法:旗鱼优化算法-附代码1.算法原理1.2 旗鱼位置更新1.3 沙丁鱼的位置更新1.4 综合考虑旗鱼和沙丁鱼的位置2.算法结果3.参考文献4.Matlab代码 摘要:...
  • 智能优化算法:狮群优化算法 文章目录智能优化算法:狮群优化算法1.狮群算法原理1.1参数定义1.2算法原理2.实验结果3.参考文献4.Matlab代码5.python代码 摘要:狮群优化算法(Loin Swarm Optimization, LSO),是于...
  • 智能优化算法:飞蛾扑火优化算法-附代码 文章目录智能优化算法:飞蛾扑火优化算法-附代码1.算法原理2.算法流程3.算法结果4.参考文献5.MATLAB代码 摘要:飞饿扑火优 化 算 法 ( Moth-flame optimization algorithm,...
  • 智能优化算法:鸽群优化算法-附代码 文章目录智能优化算法:鸽群优化算法-附代码1.算法原理1.1 指南针算子1.2 地标算子2.算法结果3.参考文献4.Matlab代码5.Python代码 摘要:2014 年 段 海 滨 教 授 通 过 归 纳 总 ...
  • 智能优化算法:黏菌优化算法 文章目录智能优化算法:黏菌优化算法1.算法原理2.实验结果3.参考文献4.Matlab代码5.python代码 摘要:黏菌优化算法(Slime mould algorithm,SMA)由 Li等于 2020 年提出,其灵感来自于...
  • 群体智能优化算法

    万次阅读 多人点赞 2018-11-20 08:32:51
    由于在研究生期间一直研究粒子群优化算法(Particle Swarm Optimization),所以对其他的一些群体智能优化算法(Swarm Intelligence)也是一定的了解的,既然自己在这方面还算一些自己的见解,所以...
  • 智能优化算法:海鸥优化算法-附代码

    千次阅读 2020-07-23 14:24:01
    2019智能算法:海鸥优化算法-附代码 摘要:本文简单介绍智能优化算法-海鸥优化算法 1.原理 海鸥是遍布全球的海鸟,海鸥种类繁多且大小和身长各不相同。 海鸥是杂食动物,吃昆虫、鱼、爬行动物、两栖动物和蚯蚓等。 ...
  • 智能优化算法:果蝇优化算法 文章目录智能优化算法:果蝇优化算法1.算法原理2.算法结果4.参考文献5.Matlab代码 摘要:Pan 于 2011 年受果蝇觅食行为启发,提出了果蝇优化算法 (FOA)。虽然其出现时间不长,但因其具有...
  • 1. 常见的群体智能优化算法分类2. 粒子群优化算法思想3. 粒子群优化算法的基本框架4. 对粒子群优化算法中惯性权重的认识5. 粒子群优化算法举例——求解旅行商问题6. 参考文献  同进化算法(见博客《[Evolutionary ...
  • 智能优化算法:多元宇宙优化算法-附代码 文章目录智能优化算法:多元宇宙优化算法-附代码1.算法原理2.算法流程图3.算法结果4.参考文献5.MATLAB代码 摘要:多元宇宙优化算法(Multi-Verse Optimizer,MVO)是Seyedali...
  • 智能优化算法:鸡群优化算法-附代码 文章目录智能优化算法:鸡群优化算法-附代码1.算法原理1.1 鸡群优化算法简介1.2 位置更新策略1.2.1公鸡的位置更新策略1.2.2 母鸡的位置更新策略2.2.3 小鸡的位置更新策略2.算法...
  • 智能算法:蝗虫优化算法-附代码 摘要:蝗虫算法( Grasshopper Optimization Algorithm,GOA ) 是 由 Saremi 等[1]于2017 年提出的一种元启发式仿生优化算法,具有较高的搜索效率和较快的收敛速度,且算法本身特殊的...
  • 优化算法——遗传算法

    万次阅读 多人点赞 2015-05-10 17:09:28
    与遗传算法的第一次接触 遗传算法的基本概念 基本定义 遗传算法的基本流程 遗传算法过程中的具体操作 ...求解优化问题的实例 问题描述 问题分析 算法设计 个体编码 适应值函数 选择策略 杂交算子 变异算子 参数设置
  • 智能优化算法:蚁狮优化算法-附代码 摘要:蚁狮优化(Ant Lion Optimizer,ALO)算法是Mirjalili于2015提出的一种新型元启发式群智能算法[1]。由于引入了随机游走、轮盘赌策略及精英策略,使得 ALO 算法成为一种种群...
  • 智能优化算法:樽海鞘群优化算法-附代码 文章目录智能优化算法:樽海鞘群优化算法-附代码1.算法原理1.1种群初始化1.2 领导者位置更新1.3 追随者位置更新2.算法流程:3.算法结果4.参考文献5.MATLAB 代码 摘要:樽海鞘...
  • 智能优化算法:教与学优化算法-附代码 文章目录智能优化算法:教与学优化算法-附代码1.算法原理1.1“教”阶段1.2 “学”阶段1.3 更新2.算法流程3.算法结果4.参考文献5.MATLAB代码 摘要:教与学优化算法(Teaching-...
  • 智能优化算法: 基于量子的鸽群优化算法

    千次阅读 多人点赞 2020-11-17 00:16:08
    基于混合量子理论的鸽群优化算法,QPIO前言一、创新点二、鸽群算法鸽群算法原理地图和指南针算子(Map/compass operator)地标算子(LandMark operator)基本鸽群算法流程(简)实数编码的量子表示(A real-code quantum ...
  • 智能优化算法:天牛须搜索算法

    千次阅读 多人点赞 2020-11-23 16:51:25
    智能优化算法(三):基于量子的鸽群优化算法 智能优化算法(四):基于Powell优化的鸽群优化算法 智能优化算法:天牛须搜索算法一、前言二、算法简介三、算法原理3.1 算法模型3.2 算法流程总结 一、前言  &...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 891,511
精华内容 356,604
关键字:

优化算法都有哪些