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

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

     

     

    %% 最近写的粒子群的论文,再重新巩固一下 推荐一个优化算法代码网址:http://www.Hvass-Labs.org/

    1   研究背景

    粒子群算法的发展过程。粒子群优化算法(Partical Swarm Optimization PSO),粒子群中的每一个粒子都代表一个问题的可能解,通过粒子个体的简单行为,群体内的信息交互实现问题求解的智能性。由于PSO操作简单、收敛速度快,因此在函数优化、 图像处理、大地测量等众多领域都得到了广泛的应用。 随着应用范围的扩大,PSO算法存在早熟收敛、维数灾难、易于陷入局部极值等问题需要解决,主要有以下几种发展方向。

    (1)调整PSO的参数来平衡算法的全局探测和局部开采能力。如Shi和Eberhart对PSO算法的速度项引入了惯性权重,并依据迭代进程及粒子飞行情况对惯性权重进行线性(或非线性)的动态调整,以平衡搜索的全局性和收敛速度。2009年张玮等在对标准粒子群算法位置期望及方差进行稳定性分析的基础上,研究了加速因子对位置期望及方差的影响,得出了一组较好的加速因子取值。

    (2)设计不同类型的拓扑结构,改变粒子学习模式,从而提高种群的多样性,Kennedy等人研究了不同的拓扑结构对SPSO性能的影响。针对SPSO存在易早熟收敛,寻优精度不高的缺点,于2003年提出了一种更为明晰的粒子群算法的形式:骨干粒子群算法(Bare Bones PSO,BBPSO)。

    (3)将PSO和其他优化算法(或策略)相结合,形成混合PSO算法。如曾毅等将模式搜索算法嵌入到PSO算法中,实现了模式搜索算法的局部搜索能力与PSO算法的全局寻优能力的优势互补。

    (4)采用小生境技术。小生境是模拟生态平衡的一种仿生技术,适用于多峰函数和多目标函数的优化问题。例如,在PSO算法中,通过构造小生境拓扑,将种群分成若干个子种群,动态地形成相对独立的搜索空间,实现对多个极值区域的同步搜索,从而可以避免算法在求解多峰函数优化问题时出现早熟收敛现象。 Parsopoulos提出一种基于“分而治之”思想的多种群PSO算法,其核心思想是将高维的目标函数分解成多个低维函数,然后每个低维的子函数由一个子粒子群进行优化,该算法对高维问题的求解提供了一个较好的思路。

    不同的发展方向代表不同的应用领域,有的需要不断进行全局探测,有的需要提高寻优精度,有的需要全局搜索和局部搜索相互之间的平衡,还有的需要对高维问题进行求解。这些方向没有谁好谁坏的可比性,只有针对不同领域的不同问题求解时选择最合适的方法的区别。

    2   相关模型和思想

    粒子群算法( Particle Swarm Optimization, PSO)最早是由Eberhart和Kennedy于1995年提出,它的基本概念源于对鸟群觅食行为的研究。设想这样一个场景:一群鸟在随机搜寻食物,在这个区域里只有一块食物,所有的鸟都不知道食物在哪里,但是它们知道当前的位置离食物还有多远。最简单有效的策略?寻找鸟群中离食物最近的个体来进行搜素。PSO算法就从这种生物种群行为特性中得到启发并用于求解优化问题。

    用一种粒子来模拟上述的鸟类个体,每个粒子可视为N维搜索空间中的一个搜索个体,粒子的当前位置即为对应优化问题的一个候选解,粒子的飞行过程即为该个体的搜索过程.粒子的飞行速度可根据粒子历史最优位置和种群历史最优位置进行动态调整.粒子仅具有两个属性:速度和位置,速度代表移动的快慢,位置代表移动的方向。每个粒子单独搜寻的最优解叫做个体极值,粒子群中最优的个体极值作为当前全局最优解。不断迭代,更新速度和位置。最终得到满足终止条件的最优解。

    算法流程如下:

     1、初始化

    首先,我们设置最大迭代次数,目标函数的自变量个数,粒子的最大速度,位置信息为整个搜索空间,我们在速度区间和搜索空间上随机初始化速度和位置,设置粒子群规模为M,每个粒子随机初始化一个飞翔速度。

    2、 个体极值与全局最优解

    定义适应度函数,个体极值为每个粒子找到的最优解,从这些最优解找到一个全局值,叫做本次全局最优解。与历史全局最优比较,进行更新。

    3、 更新速度和位置的公式

     

     

    4、 终止条件

    (1)达到设定迭代次数;(2)代数之间的差值满足最小界限

     

    以上就是最基本的一个标准PSO算法流程。和其它群智能算法一样,PSO算法在优化过程中,种群的多样性和算法的收敛速度之间始终存在着矛盾.对标准PSO算法的改进,无论是参数的选取、小生境技术的采用或是其他技术与PSO的融合,其目的都是希望在加强算法局部搜索能力的同时,保持种群的多样性,防止算法在快速收敛的同时出现早熟收敛。

    3   总结与应用

    首先总结一下PSO算法的一些优点:(1)它是一类不确定算法。不确定性体现了自然界生物的生物机制,并且在求解某些特定问题方面优于确定性算法。(2)是一类概率型的全局优化算法。非确定算法的优点在于算法能有更多机会求解全局最优解。(3)不依赖于优化问题本身的严格数学性质。(4)是一种基于多个智能体的仿生优化算法。粒子群算法中的各个智能体之间通过相互协作来更好的适应环境,表现出与环境交互的能力.(5)具有本质并行性。包括内在并行性和内含并行性。(6)具有突出性。粒子群算法总目标的完成是在多个智能体个体行为的运动过程中突现出来的。(7)具有自组织和进化性以及记忆功能,所有粒子都保存优解的相关知识。(8)都具有稳健性。稳健性是指在不同条件和环境下算法的实用性和有效性,但是现在粒子群算法的数学理论基础还不够牢固,算法的收敛性还需要讨论。

    从中可以看出PSO具有很大的发展价值和发展空间,算法能够用于多个领域并创造价值,在群智能算法中具有重要的地位,同时也能够在相关产业创造价值,发挥作用。下面结合相关产业具体分析一下。

    计算智能的算法,往往结合大数据平台,包括GPU运算,并行计算,HPC,多模式结合等手段,来完成更加复杂多变的业务需求。

    下面具体分析在产业中的作用(1)模式识别和图像处理。PSO算法已在图像分割、图像配准、图像融合、图像识别、图像压缩和图像合成等方面发挥作用。(2)神经网络训练。PSO算法可完成人工神经网络中的连接权值的训练、结构设计、学习规则调整、特征选择、连接权值的初始化和规则提取等。但是速度没有梯度下降优化的好,需要较大的计算资源。一般都算不动。(3)电力系统设计,例如:日本的Fuji电力公司的研究人员将电力企业某个著名的RPVC(Reactive Power and Voltage Control)问题简化为函数的最小值问题,并使用改进的PSO算法进行优化求解。(4)半导体器件综合,半导体器件综合是在给定的搜索空间内根据期望得到的器件特性来得到相应的设计参数。(5)还有其他的一些相关产业。包括自动目标检测、生物信号识别、决策调度、系统识别以及游戏训练等方面也取得了一定的研究成果。

    算法实现:

    clc
    clear 
    close all
    E=0.000001;
    maxnum=800;%最大迭代次数
    narvs=2;%目标函数的自变量个数
    particlesize=50;%粒子群规模
    c1=2;%每个粒子的个体学习因子,加速度常数
    c2=2;%每个粒子的社会学习因子,加速度常数
    w=0.6;%惯性因子
    vmax=5;%粒子的最大飞翔速度
    v=2*rand(particlesize,narvs);%粒子飞翔速度
    x=-300+600*rand(particlesize,narvs);%粒子所在位置
    %定义适应度函数
    fitness=inline('(x(1)^2+x(2)^2)/10000','x');
    for i=1:particlesize
    	f(i)=fitness(x(i,:));	
    end
    personalbest_x=x;
    personalbest_faval=f;
    [globalbest_faval,i]=min(personalbest_faval);
    globalbest_x=personalbest_x(i,:); 
    k=1;
    while (k<=maxnum)
    	for i=1:particlesize
    			f(i)=fitness(x(i,:));
    		if f(i)<personalbest_faval(i)
    			personalbest_faval(i)=f(i);
    			personalbest_x(i,:)=x(i,:);
    		end
    	end
    	[globalbest_faval,i]=min(personalbest_faval);
    	globalbest_x=personalbest_x(i,:);
    	for i=1:particlesize
    		v(i,:)=w*v(i,:)+c1*rand*(personalbest_x(i,:)-x(i,:))...
    			+c2*rand*(globalbest_x-x(i,:));
    		for j=1:narvs
    			if v(i,j)>vmax
    				v(i,j)=vmax;
    			elseif v(i,j)<-vmax
    				v(i,j)=-vmax;
                end
    		end
    		x(i,:)=x(i,:)+v(i,:);
    
        end
        ff(k)=globalbest_faval;
        if globalbest_faval<E
            break
        end
    %       figure(1)
    %       for i= 1:particlesize
    %       plot(x(i,1),x(i,2),'*')
    %       end
    	k=k+1;
    end
    xbest=globalbest_x;
    
    figure(2)
    set(gcf,'color','white');
    plot(1:length(ff),ff)

     

    算法结果:

     

    展开全文
  • 优化算法】简述灰狼优化算法(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
     

     

    展开全文
  • 优化算法之粒子群算法(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

    展开全文
  • 智能优化算法:麻雀搜索算法-附代码

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

    2020智能优化算法:麻雀搜索算法


    摘要:麻雀搜索算法(Sparrow Search Algorithm, SSA)是于2020年提出的。SSA 主要是受麻雀的觅食行为和反捕食行为的启发而提出的。该算法比较新颖,具有寻优能力强,收敛速度快的优点

    1.算法原理

    建立麻雀搜索算法的数学模型,主要规则如下所述:

    1. 发现者通常拥有较高的能源储备并且在整个种群中负责搜索到具有丰富食物的区域,为所有的加入者提供觅食的区域和方向。在模型建立中能量储备的高低取决于麻雀个体所对应的适应度值(Fitness Value)的好坏。
    2. 一旦麻雀发现了捕食者,个体开始发出鸣叫作为报警信号。当报警值大于安全值时,发现者会将加入者带到其它安全区域进行觅食。
    3. 发现者和加入者的身份是动态变化的。只要能够寻找到更好的食物来源,每只麻雀都可以成为发现者,但是发现者和加入者所占整个种群数量的比重是不变的。也就是说,有一只麻雀变成发现者必然有另一只麻雀变成加入者。
    4. 加入者的能量越低,它们在整个种群中所处的觅食位置就越差。一些饥肠辘辘的加入者更有可能飞往其它地方觅食,以获得更多的能量。
    5. 在觅食过程中,加入者总是能够搜索到提供最好食物的发现者,然后从最好的食物中获取食物或者在该发现者周围觅食。与此同时,一些加入者为了增加自己的捕食率可能会不断地监控发现者进而去争夺食物资源。
    6. 当意识到危险时,群体边缘的麻雀会迅速向安全区域移动,以获得更好的位置,位于种群中间的麻雀则会随机走动,以靠近其它麻雀。

    在模拟实验中,我们需要使用虚拟麻雀进行食物的寻找,由n只麻雀组成的种群可表示为如下形式:
    X=[x11x12...x1dx21x22...x2d............xn1xn2...xnd](1) X=\left[\begin{matrix} x_1^1&x_1^2&...&x_1^d\\ x_2^1&x_2^2&...&x_2^d\\ ...&...&...&... \\ x_n^1&x_n^2&...&x_n^d\\ \end{matrix}\right]\tag{1}
    其中,dd 表示待优化问题变量的维数,nn 则是麻雀的数量。那么,所有麻雀的适应度值可以表示为如下形式:
    Fx=[f([x11x12...x1d])f([x21x22...x2d])...f([xn1xn2...xnd])](2) F_x =\left[\begin{matrix} f([x_1^1&x_1^2&...&x_1^d])\\ f([x_2^1&x_2^2&...&x_2^d])\\ ... f([x_n^1&x_n^2&...&x_n^d]) \end{matrix}\right]\tag{2}
    其中,f 表示适应度值。

    在 SSA 中,具有较好适应度值的发现者在搜索过程中会优先获取食物。此外,因为发现者负责为整个麻雀种群寻找食物并为所有加入者提供觅食的方向。因此,发现者可以获得比加入者更大的觅食搜索范围。根据规则(1)和规则(2),在每次迭代的过程中,发现者的位置更新描述如下:
    Xi,jt+1={Xi,j.exp(iα.itermax),ifR2<STXi,j+Q.L,ifR2ST(3) X_{i,j}^{t+1}=\begin{cases} X_{i,j}.exp(-\frac{i}{\alpha.iter_{max}}),if\, R_2<ST\\ X_{i,j} + Q.L,if\, R_2\geq ST \end{cases}\tag{3}
    其中,tt 代表当前迭代数,j=1,2,3,...,dj =1, 2, 3, . . . , ditemmaxitem_{max}
    是一个常数,表示最大的迭代次数。XijX_{ij}表示第 ii 个麻雀在第jj 维中的位置信息。α(0,1]α∈(0, 1]是一个随机数。R2(R2[0,1])R_2(R_2∈[0,1])ST(ST[0.5,1])ST(ST∈[0.5,1])分别表示预警值和安全值。QQ 是服从正态分布的随机数。LL 表示一个 1×d1×d 的矩阵,其中该矩阵内每个元素全部为 1。

    R2<STR2< ST 时,这意味着此时的觅食环境周围没有捕食者,发现者可以执行广泛的搜索操作。如果 R2STR2≥ ST,这表示种群中的一些麻雀已经发现了捕食者,并向种群中其它麻雀发出了警报,此时所有麻雀都需要迅速飞到其它安全的地方进行觅食。

    对于加入者,它们需要执行规则(3)和规则(4)。如前面所描述,在觅食过程中,一些加入者会时刻监视着发现者。一旦它们察觉到发现者已经找到了更好的食物,它们会立即离开现在的位置去争夺食物。如果它们赢了,它们可以立即获得该发现者的食物,否则需要继续执行规则(4)。加入者的位置更新描述如下:
    Xi,jt+1={Q.exp(XworstXi,jti2),ifi>n/2XPt+1+Xi,jXPt+1.A+.L,otherwise(4) X_{i,j}^{t+1}=\begin{cases} Q.exp(\frac{X_{worst}-X_{i,j}^t}{i^2}),if\, i>n/2\\ X_P^{t+1}+ |X_{i,j} - X_P^{t+1}|.A^{+}.L,otherwise \end{cases}\tag{4}
    其中,XpX_p是目前发现者所占据的最优位置,XworstX_{worst}则表示当前全局最差的位置。AA表示一个 1×d1×d 的矩阵,其中每个元素随机赋值为 1 或-1,并且 A+=AT(AAT)1A^+=A^T(AA^T)^{-1}。当i >n/2 时,这表明,适应度值较低的第 i 个加入者没有获得食物,处于十分饥饿的状态,此时需要飞往其它地方觅食,以获得更多的能量。

    在模拟实验中,我们假设这些意识到危险的麻雀占总数量的 10% 到 20%。这些麻雀的初始位置是在种群中随机产生的。根据规则(5),其数学表达式可以表示为如下形式:
    Xi,jt+1={Xbestt+β.Xi,jtXbestt,iffi>fgXi,jt+K.(Xi,jtXworstt(fifw)+ε),iffi=fg(5) X_{i,j}^{t+1}=\begin{cases} X_{best}^t + \beta.|X_{i,j}^t - X_{best}^t|,if\, f_i>f_g\\ X_{i,j}^t + K.(\frac{|X_{i,j}^t - X_{worst}^t|}{(f_i -f_w)+\varepsilon}), if\, f_i =f_g \end{cases}\tag{5}
    其中,其中 XbestX_{best}是当前的全局最优位置。ββ 作为步长控制参数,是服从均值为 0,方差为 1 的正态分布的随机数。K[1,1]K∈[-1,1]是一个随机数,fi则是当前麻雀个体的适应度值。fgf_gfwf_w分别是当前全局最佳和最差的适应度值。ε\varepsilon 的常数,以避免分母出现零。

    为简单起见,当 fi>fgf_i >f_g表示此时的麻雀正处于种群的边缘,极其容易受到捕食者的攻击。XbestX_{best}表示这个位置的麻雀是种群中最好的位置也是十分安全的。fi=fgf_i = f_g时,这表明处于种群中间的麻雀意识到了危险,需要靠近其它的麻雀以此尽量减少它们被捕食的风险。KK 表示麻雀移动的方向同时也是步长控制参数。

    算法流程

    Step1: 初始化种群,迭代次数,初始化捕食者和加入者比列。

    Step2:计算适应度值,并排序。

    Step3:利用式(3)更新捕食者位置。

    Step4:利用式(4)更新加入者位置。

    Step5:利用式(5)更新警戒者位置。

    Step6:计算适应度值并更新麻雀位置。

    Step7:是否满足停止条件,满足则退出,输出结果,否则,重复执行Step2-6;

    2.算法结果

    在这里插入图片描述

    3.参考文献

    [1] Xue J , Shen B . A novel swarm intelligence optimization approach: sparrow search algorithm[J]. Systems ence & Control Engineering An Open Access Journal, 2020, 8(1):22-34.

    4.Matlab代码

    麻雀搜索算法
    https://mianbaoduo.com/o/bread/aJybk5w=
    改进算法:
    1.基于反向策略的麻雀搜索算法
    https://mianbaoduo.com/o/bread/mbd-aZqUl54=

    2.基于Tent混沌映射的麻雀搜索算法
    https://mianbaoduo.com/o/bread/mbd-aZqVk5Y=

    3.基于Logistic混沌映射的麻雀搜索算法
    https://mianbaoduo.com/o/bread/mbd-aZqVk5c=

    4.基于Circle混沌映射的麻雀搜索算法
    https://mianbaoduo.com/o/bread/mbd-aZqVk5g=

    5.基于Piecewise混沌映射的麻雀搜索算法
    https://mianbaoduo.com/o/bread/mbd-aZqVk5k=

    6.基于Chebyshev混沌映射的麻雀搜索算法
    https://mianbaoduo.com/o/bread/mbd-aZqVk5o=

    7.基于Sine混沌映射的麻雀搜索算法
    https://mianbaoduo.com/o/bread/mbd-aZqWk50=

    8.基于Singer混沌映射的麻雀搜索算法
    https://mianbaoduo.com/o/bread/mbd-aZqWk54=

    9.基于迭代混沌映射的麻雀搜索算法
    https://mianbaoduo.com/o/bread/mbd-aZqWk58=

    10.基于Sinusoidal混沌映射的麻雀搜索算法
    https://mianbaoduo.com/o/bread/mbd-aZqWlJY=

    11.基于随机游走改进的麻雀搜索算法
    https://mianbaoduo.com/o/bread/mbd-aZuXmJc=

    12.基于萤火虫改进的麻雀搜索算法
    https://mianbaoduo.com/o/bread/mbd-aZuZmJk=

    13.基于精英反向策略的麻雀搜索算法1
    https://mianbaoduo.com/o/bread/mbd-aZycl5Y=

    14.基于levy飞行改进的麻雀搜索算法
    https://mianbaoduo.com/o/bread/mbd-aZqZlZg=

    15.基于自适应t分布的麻雀算法
    https://mianbaoduo.com/o/bread/YZWVlp5v

    改进麻雀文献复现代码:
    1.混沌麻雀。
    参考文献:[1]吕鑫,慕晓冬,张钧,王震.混沌麻雀搜索优化算法[J/OL].北京航空航天大学学报:1-10[2020-11-16].https://doi.org/10.13700/j.bh.1001-5965.2020.0298.
    https://mianbaoduo.com/o/bread/aZ2alZc=
    2.融合柯西变异和反向学习的改进麻雀算法
    [1]毛清华,张强.融合柯西变异和反向学习的改进麻雀算法[J/OL].计算机科学与探索:1-12[2020-12-16].http://kns.cnki.net/kcms/detail/11.5602.tp.20201203.1601.006.html.
    https://mianbaoduo.com/o/bread/YZWYlZlp
    3. 混合正弦余弦算法和Lévy飞行的麻雀算法(ISSA)
    [1]毛清华,张强,毛承成,柏嘉旋.混合正弦余弦算法和Lévy飞行的麻雀算法[J/OL].山西大学学报(自然科学版):1-6[2021-04-09].https://doi.org/10.13451/j.sxu.ns.2020135.

    5.Python代码

    https://mianbaoduo.com/o/bread/mbd-aZuTk50=
    改进算法:
    基于Sinusoidal混沌映射的麻雀搜索算法 python 代码 https://mianbaoduo.com/o/bread/aZ6am5k=

    基于迭代混沌映射的麻雀搜索算法 python 代码 https://mianbaoduo.com/o/bread/aZ6am5Y=

    基于Singer混沌映射的麻雀搜索算法 python 代码 https://mianbaoduo.com/o/bread/aZ6amp4=

    基于Sine混沌映射的麻雀搜索算法 python代码 https://mianbaoduo.com/o/bread/aZ6amp0=

    基于Piecewise混沌映射的麻雀搜索算法 python代码 https://mianbaoduo.com/o/bread/aZ6ampo=

    基于Logistic混沌映射的麻雀搜索算法 python 代码 https://mianbaoduo.com/o/bread/aZ6ampc=

    基于Circle混沌映射的麻雀搜索算法 python 代码 https://mianbaoduo.com/o/bread/aZ6amZ8=

    基于Chebyshev混沌映射的麻雀搜索算法 python代码 https://mianbaoduo.com/o/bread/aZ6amZ4=

    基于Tent混沌映射的麻雀搜索算法 python代码 https://mianbaoduo.com/o/bread/aZ6amZs=

    基于反向策略的麻雀搜索算法 python代码 https://mianbaoduo.com/o/bread/aZ6bmp0=

    基于精英反向策略的麻雀搜索算法1 python代码 https://mianbaoduo.com/o/bread/aZ6bmp4=

    基于精英反向策略的麻雀搜索算法2 python 代码 https://mianbaoduo.com/o/bread/aZ6bm5c=

    基于萤火虫改进的麻雀搜索算法 python代码 https://mianbaoduo.com/o/bread/aZ6bm5g=

    基于levy飞行改进的麻雀搜索算法 python 代码 https://mianbaoduo.com/o/bread/aZ6bm5o=

    基于随机游走改进的麻雀搜索算法
    https://mianbaoduo.com/o/bread/YZaXmpxs

    基于自适应t分布的麻雀搜索算法
    https://mianbaoduo.com/o/bread/YZWVm5ls
    改进麻雀文献复现代码:
    1.混沌麻雀。
    参考文献:[1]吕鑫,慕晓冬,张钧,王震.混沌麻雀搜索优化算法[J/OL].北京航空航天大学学报:1-10[2020-11-16].https://doi.org/10.13700/j.bh.1001-5965.2020.0298.
    https://mianbaoduo.com/o/bread/aZ6cl5c=

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

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

    千次阅读 热门讨论 2020-10-24 11:30:56
    2019智能优化算法:旗鱼优化算法-附代码 文章目录2019智能优化算法:旗鱼优化算法-附代码1.算法原理1.2 旗鱼位置更新1.3 沙丁鱼的位置更新1.4 综合考虑旗鱼和沙丁鱼的位置2.算法结果3.参考文献4.Matlab代码 摘要:...
  • 优化算法——常见优化算法分类及总结

    万次阅读 多人点赞 2018-10-27 12:54:53
    之前做特征选择,实现过基于群智能算法进行最优化的搜索,看过一些群智能优化算法的论文,在此做一下总结。 最优化问题  在生活或者工作中存在各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在...
  • 智能优化算法:蝴蝶优化算法-附代码 文章目录智能优化算法:蝴蝶优化算法-附代码1.算法原理2.算法流程:3.算法结果4.参考文献:5.MATLAB代码 摘要:蝴蝶优化算法 (Butterfly optimization algorithm,BOA)是由 ...
  • 智能优化算法:蜻蜓优化算法-附代码 文章目录智能优化算法:蜻蜓优化算法-附代码1.算法原理1.1分离2.2 排队2.3 结盟2.4 寻找猎物2.5 躲避天敌2.算法流程3.算法结果4.参考文献5.MATALAB代码 摘要:蜻蜓优化算法( ...
  • 智能优化算法:飞蛾扑火优化算法-附代码 文章目录智能优化算法:飞蛾扑火优化算法-附代码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 年提出,其灵感来自于...
  • 智能优化算法:海鸥优化算法-附代码

    千次阅读 2020-07-23 14:24:01
    2019智能算法:海鸥优化算法-附代码 摘要:本文简单介绍智能优化算法-海鸥优化算法 1.原理 海鸥是遍布全球的海鸟,海鸥种类繁多且大小和身长各不相同。 海鸥是杂食动物,吃昆虫、鱼、爬行动物、两栖动物和蚯蚓等。 ...
  • 智能优化算法:果蝇优化算法 文章目录智能优化算法:果蝇优化算法1.算法原理2.算法结果4.参考文献5.Matlab代码 摘要:Pan 于 2011 年受果蝇觅食行为启发,提出了果蝇优化算法 (FOA)。虽然其出现时间不长,但因其具有...
  • 智能优化算法:多元宇宙优化算法-附代码 文章目录智能优化算法:多元宇宙优化算法-附代码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.算法...
  • 智能优化算法: 基于量子的鸽群优化算法

    千次阅读 多人点赞 2020-11-17 00:16:08
    基于混合量子理论的鸽群优化算法,QPIO前言一、创新点二、鸽群算法鸽群算法原理地图和指南针算子(Map/compass operator)地标算子(LandMark operator)基本鸽群算法流程(简)实数编码的量子表示(A real-code quantum ...
  • 2019智能优化算法:乌燕鸥优化算法 文章目录2019智能优化算法:乌燕鸥优化算法1.算法原理1.1 迁移行为(全局探索)1.2 攻击行为(局部探索)2.实验结果3.参考文献4.Matlab代码 摘要:乌燕鸥优化算法是由 G. Dhiman 和 A....
  • 智能优化算法:郊狼优化算法-附代码 摘要:郊狼优化算法[1](Coyote Optimization Algorithm ,COA)是2018年Juliano所提出的一种智能仿生优化算法, 与其他元启发式算法相比,COA具有独特的算法结构,该结构为优化...
  • 智能算法:蝗虫优化算法-附代码 摘要:蝗虫算法( Grasshopper Optimization Algorithm,GOA ) 是 由 Saremi 等[1]于2017 年提出的一种元启发式仿生优化算法,具有较高的搜索效率和较快的收敛速度,且算法本身特殊的...
  • 智能优化算法:樽海鞘群优化算法-附代码 文章目录智能优化算法:樽海鞘群优化算法-附代码1.算法原理1.1种群初始化1.2 领导者位置更新1.3 追随者位置更新2.算法流程:3.算法结果4.参考文献5.MATLAB 代码 摘要:樽海鞘...
  • 智能优化算法:蚁狮优化算法-附代码 摘要:蚁狮优化(Ant Lion Optimizer,ALO)算法是Mirjalili于2015提出的一种新型元启发式群智能算法[1]。由于引入了随机游走、轮盘赌策略及精英策略,使得 ALO 算法成为一种种群...
  • 智能优化算法:头脑风暴优化算法 文章目录智能优化算法:头脑风暴优化算法1.算法原理1.1 聚类1.2 变异2.算法流程3.算法结果4.参考文献5.MATLAB代码 摘要:头脑风暴优化算法(Brain Storming Optimization algorithm, ...
  • 智能优化算法:正余弦优化算法-附代码 文章目录智能优化算法:正余弦优化算法-附代码1.算法原理2.算法流程3.算法结果4.参考文献5.MATLAB代码 摘要:正 余 弦 优 化 算 法 ( Sine Cosine Algorithm,SCA) 是Seyedali ...
  • 1. 常见的群体智能优化算法分类2. 粒子群优化算法思想3. 粒子群优化算法的基本框架4. 对粒子群优化算法中惯性权重的认识5. 粒子群优化算法举例——求解旅行商问题6. 参考文献  同进化算法(见博客《[Evolutionary ...
  • 摘要:群体智能优化算法由于其易实现性及其高效性,已成为最优化方法的研究热点。本文介绍该领域一种近年来的新兴起的优化算法鲸鱼优化算法。在介绍其生物机制的基础上,论述了其捕食、攻击过程的数学模型。最后给出...
  • 智能优化算法:教与学优化算法-附代码 文章目录智能优化算法:教与学优化算法-附代码1.算法原理1.1“教”阶段1.2 “学”阶段1.3 更新2.算法流程3.算法结果4.参考文献5.MATLAB代码 摘要:教与学优化算法(Teaching-...
  • 智能优化算法:入侵杂草优化算法-附代码 文章目录智能优化算法:入侵杂草优化算法-附代码1.算法原理2.算法结果3.参考文献4.Matlab代码 摘要:2006年,Mehrabian等提 出 了一种新 颖 的 智 能 优 化 算 法—入 侵 杂 ...
  • 文章目录鲸鱼优化算法(Whale Optimization Algorithm,WOA)1.1 灵感1.2 数学建模和优化算法1.2.1 包围捕食(Encircling prey)1.2.2 气泡网攻击方式(Bubble-net attacking method)(利用阶段)1.2.3搜索猎物...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 91,653
精华内容 36,661
关键字:

优化算法