基于莱维飞行扰动策略的麻雀搜索算法(ISSA)(Matlab代码实现)

news2024/10/5 15:34:07

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

针对迭代后期搜索多样性不足、易陷入局部最优的问题,提出一种基于Levy飞行扰动策略的改进麻雀搜索算法。首先,利用Sin混沌搜索机制改进种群初始化策略。然后将Levy飞行扰动机制引入到麻雀种群的觅食搜索过程中,以拖拽种群移动合适的步长,增加空间搜索的多样性。

📚2 运行结果

 

部分代码:

function [FoodFit,FoodPos,ConvCurve]=ISSA(Ntot,Ninit,tMax,LoB,UpB,Nvars,fobj)
%% Set parameters
% Percentage (nSOF) / number (NSOF) of inidividuals that are replaced by 
% the Survival of the Fittest Mechanism 
nSOF = 0.05; NSOF = round((1-nSOF) * Ntot);

% Min. and Max. Mutation Probability value
pMUTmax = 0.15 ; pMUTmin = 0.1;

% Min. and Max. Crossover Probability value
pCRSmax = 0.25 ; pCRSmin = 0.1;

% Min. and Max. Numberof Exploring Salps
NexpMax = round(Ntot * 0.5); NexpMin = 1;

%% Initialization
ConvCurve = zeros(1,tMax);
FoodPos = zeros(1,Nvars);
SalpFit = zeros(Ninit,1);

%% Initialize the positions of salps

nPos = ceil(Ninit/2);
Pos = rand(nPos,Nvars).*(UpB-LoB)+LoB;
OpPos = UpB + LoB - Pos;
SalpPos = [Pos;OpPos];
if mod(Ninit,2)
    SalpPos(end,:)=[];
end


for i=1:Ninit
    SalpFit(i,1)=fobj(SalpPos(i,:));
end

[SalpFit,sortIndex]=sort(SalpFit);
SalpPos = SalpPos(sortIndex,:);
SalpPos(Ntot+1:end,:) = [];
SalpFit(Ntot+1:end,:) = [];
FoodPos = SalpPos(1,:);
FoodFit = SalpFit(1);
ConvCurve(1) = FoodFit;


%% Main loop
t = 2; % First iteration was the initialization
while t <= tMax
    % Compute c1 parameter
    c1 = 2 * exp(-(4 * t / tMax) ^ 2);
    % Compute   Nexp (exploring salps number),
    %           pMUT (mutation probability),
    %           and pCRS (crossover probability).
    Nexp = round(NexpMax * (t / tMax) + NexpMin);  % Pun un round aici
    pMUT = pMUTmax * (1- t / tMax) + pMUTmin;
    pCRS = pCRSmax * t / tMax + pCRSmin;
    
    for i = 1 : Ntot
        % Update the leader and the exploring salps
        if i <= Nexp
            for j = 1 : Nvars
                c2 = rand(); % Random weights
                c3 = rand(); % Random number to decide the sign
                c4 = rand; % Random number to decide if crossover applies
                
                % Update the exploring salps using the first variant of crossover
                if c4 < pCRS / 2
                    SalpPos(i,j) = FoodPos(j) * c2 + SalpPos(i,j) * (1 - c2);
                    
                    % Update the exploring salps using the second variant of crossover
                elseif c4 < pCRS
                    SalpPos(i,j) = FoodPos(j) * (1-c2 / 2) + SalpPos(i,j) * (c2 / 2);
                    
                    % Update the exploring salps using the equation from the leader salp
                else
                    if c3 < 0.5 % Decide the sign + or -
                        SalpPos(i,j) = FoodPos(j) + c1 * ((UpB(j) - LoB(j)) * c2 + LoB(j));
                    else
                        SalpPos(i,j) = FoodPos(j) - c1 * ((UpB(j) -LoB(j)) * c2 + LoB(j));
                    end
                end
            end % for j = 1 : Nvars
            
            % Update the follower salps
        elseif    i > Nexp && i < NSOF
            % The first follower salp is guided by the Food Position
            if i == Nexp + 1
                Salp1 = FoodPos;
                % All the others are guided by the previous salp
            else
                Salp1 = SalpPos(i-1,:);
            end
            Salp2 = SalpPos(i,:);
            
            if rand() > pMUT
                % The new position is determined as weighted average between
                % the previous and current salp
                r1 = rand(); % Random weight
                SalpPos(i,:) = Salp2 * r1 + Salp1 * (1 - r1); % fara 1/2 asta!!!!!
                
                % Mutation is applied with the pMUT probability
            else
                r1 = rand(1,Nvars); % Random weight
                r2 = sign(rand(1,Nvars) - 0.5); % Random number to decide the sign
                SalpPos(i,:) = SalpPos(randi(Ntot),:) + r1 .* (r2 .*(UpB-LoB)+LoB) * c1;
            end
            
            % Eliminate the weakest salps and replace them with new random
            % salps
        elseif i>=NSOF && i<=Ntot
            SalpPos(i,:) = rand(1,Nvars) .* (UpB - LoB) + LoB;
        end
        
        % Enforce Boundaries by replacing the value that violates a limit
        % with the violated limit
        Fupb=find(SalpPos(i,:)>UpB);
        Flob=find(SalpPos(i,:)<LoB);
        SalpPos(i,Fupb) = UpB(1,Fupb);
        SalpPos(i,Flob) = LoB(1,Flob);
        
        % Compute the salp fitnes
        SalpFit(i,1) = fobj(SalpPos(i,:));
        
        % If necessary update the Food Position and Fitness
        if SalpFit(i,1) < FoodFit
            FoodPos = SalpPos(i,:);
            FoodFit = SalpFit(i,1);
        end
    end % for i = 1 : Ntot
    
    % Sort the salps
    [SalpFit,sortIndex] = sort(SalpFit);
    SalpPos = SalpPos(sortIndex,:);
    
    % Update the converge curve
    ConvCurve(t)=FoodFit;
    
    if 0% mod(l,10) == 0
        display([t,FoodFit]);
    end
    % Increment iteration
    t = t + 1;
end % while t <= tMax
end % function

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

  Andrei M. Tudose, Irina I. Picioroaga, Dorian O. Sidea, Constantin Bulac  Solving single- and multi-objective optimal reactive power dispatch 
  problem using an improved salp swarm algorithm
 

🌈4 Matlab代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/28567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【强化学习论文合集】ICML-2022 强化学习论文 | 2022年合集(二)

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。 本专栏整理了近几年国际顶级会议中,涉及强化学习(Rein…

[附源码]java毕业设计校园摄影爱好者交流网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

elasticsearch bucket 之rare terms聚合

文章目录1、背景2、需求3、前置准备3.1 准备mapping3.2 准备数据4、实现需求4.1 dsl4.2 java代码4.3 运行结果5、max_doc_count 和 search.max_buckets6、注意事项7、完整代码8、参考文档1、背景 我们知道当我们使用 terms聚合时&#xff0c;当修改默认顺序为_count asc时&…

nodejs+mysql+vscode网上图书商城销售管理系统vue

当前社会是一个网络高度发达的社会&#xff0c;人们都处在互联网时代中&#xff0c;对于知识的获取都是通过互联网&#xff0c;为了鼓励人们积极获取纸质知识&#xff0c;我想要设计一个网上图书售卖系统。这个系统设计的目的是为了方便人们们作为参考资料. 网上图书管理系统的…

【31-业务开发-基础业务-品牌管理-级联类别信息业务功能实现-品牌管理和商品分类管理俩者业务关联出现数据冗余,导致数据不同步的问题-开启事务-项目测试】

一.知识回顾 【0.三高商城系统的专题专栏都帮你整理好了&#xff0c;请点击这里&#xff01;】 【1-系统架构演进过程】 【2-微服务系统架构需求】 【3-高性能、高并发、高可用的三高商城系统项目介绍】 【4-Linux云服务器上安装Docker】 【5-Docker安装部署MySQL和Redis服务】…

进 4 球得 1 分,阿根廷败北背后的科技与狠活

内容一览&#xff1a;11 月 22 日&#xff0c;世界杯 C 组首场比赛&#xff0c;沙特阿拉伯 2:1 反超阿根廷&#xff0c;今天我们将逐一盘点阿根廷进 4 球得 1 分背后的科技与狠活。 关键词&#xff1a;世界杯 VAR 半自动越位技术 沙特爆冷逆袭&#xff0c;2:1 反超阿根廷 2022…

如何改进企业旧式工时管理系统?

工时管理系统对企业很重要&#xff0c;特别是那些不太明显的知识性工作的企业。 一些企业仍在使用基于纸张的工时表管理&#xff0c;这通常会带来以下问题&#xff1a; ● 过程非常耗时 ● 人为错误的风险很高 ● 有道德上的漏洞&#xff0c;如同伴帮打卡和时间盗窃 ● 数据处…

【强化学习论文合集】AAAI-2022 强化学习论文合集(附论文链接)

强化学习&#xff08;Reinforcement Learning, RL&#xff09;&#xff0c;又称再励学习、评价学习或增强学习&#xff0c;是机器学习的范式和方法论之一&#xff0c;用于描述和解决智能体&#xff08;agent&#xff09;在与环境的交互过程中通过学习策略以达成回报最大化或实现…

【测试沉思录】16. 性能测试中的系统资源分析之三:磁盘

作者&#xff1a;马海琴 编辑&#xff1a;毕小烦 三. 磁盘 磁盘是可以持久化存储的设备&#xff0c;根据存储介质的不同&#xff0c;常见磁盘可以分为两类&#xff1a;机械磁盘和固态磁盘。磁盘就像人的大脑皮层&#xff0c;负责数据的储存、记忆。 磁盘对于服务器来说十分重…

大学生静态HTML网页源码——佛山旅游景点介绍网页代码 家乡旅游网页制作模板 web前端期末大作业

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

学生个人网页模板 简单个人主页--贝聿铭人物介绍 6页带表单 带报告3800字

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | ‍个人博客网站 | ‍个人主页介绍 | 个人简介 | 个人博客设计制作 | 等网站的设计与制作 | 大学生个人HTML网页设计作品 | HTML期末大学生网页设计作业…

c语言:初识指针(二)

初识指针一.野指针1.野指针形成原因一是&#xff1a;未初始化2.野指针形成原因二&#xff1a;指针越界3.野指针形成原因三&#xff1a;指针所指向的内存空间被释放二.指针的运算1.指针-整数运算2.指针-指针3.指针的关系运算三.指针和数组四.二级指针五.指针数组1.定义2.用一维数…

APS生产计划排产在装备制造业的应用

装备制造业是对所有为国民经济各部门的简单再生产和扩大再生产提供技术装备的制造工业的总称&#xff0c;范围包括航空、航天、军工制造&#xff1b;民用飞机、铁路、船舶、汽车等先进交通运输设备制造&#xff1b;石油、矿产、化工、压力容器、电力成套设备制造&#xff1b;以…

Jaya算法在电力系统最优潮流计算中的应用(创新点)【Matlab代码实现】

目录 1 概述 2 数学模型 2.1 目标函数 2.2 约束条件 2.3 Jaya 算法 3 仿真结果 4 Matlab代码实现 1 概述 最优潮流计算与电力系统的稳定、经济运行密切相关&#xff0c;自20世纪60年代提出最优潮流的概念&#xff0c;大量学者相继提出了各种优化技术来求解电力系统的最…

Google Earth Engine(GEE)—— 多光谱指数整合中推导出湿地覆盖类型 (WCT)

湿地覆盖被定义为归因于植被、浑浊度、含水土壤和水量等潜在生物物理条件的湿地空间均匀区域。在这里,我们提出了一种新方法来导出湿地覆盖类型 (WCT),该方法结合了三个常用的多光谱指数 NDVI、MNDWI 和 NDTI,位于印度各地不同地貌和气候环境的三个大型拉姆萨尔湿地。这些湿…

【CNN】SENet——将注意力机制引入通道维度

前言 SENet&#xff0c;胡杰&#xff08;Momenta&#xff09;在2017.9提出&#xff0c;通过显式地建模卷积特征通道之间的相互依赖性来提高网络的表示能力&#xff0c;即&#xff0c;通道维度上的注意力机制。SE块以微小的计算成本为现有的最先进的深层架构产生了显著的性能改…

高等数学(第七版)同济大学 习题10-2(中5题) 个人解答

高等数学&#xff08;第七版&#xff09;同济大学 习题10-2&#xff08;中5题&#xff09; 函数作图软件&#xff1a;Mathematica 11.画出积分区域&#xff0c;把积分∬Df(x,y)dxdy表示为极坐标形式的二次积分&#xff0c;其中积分区域D是:\begin{aligned}&11. \ 画出积分…

算法图解学习2 大O表示

random recording 随心记录 What seems to us as bitter trials are often blessings in disguise. 看起来对我们痛苦的试炼&#xff0c;常常是伪装起来的好运。 大O表示法是一种特殊的表示法&#xff0c;指出了算法的速度有多快。 背景引入 Bob要为NASA编写一个查找算法&…

MobaXterm连接报错Network error: Connection timed out

今天打开MobaXterm远程连接我VMware虚拟机的时候出现以下界面&#xff0c;问题详情如下&#xff1a;Network error: Connection timed out Session stopped - Press <return> to exit tab - Press R to restart session - Press S to save terminal output t…

RabbitMQ介绍

介绍 RabbitMQ是 一个由erlang语言编写的、开源的&#xff0c;基于AMQP协议实现的消息队列&#xff0c;具有MQ应用解耦、流量削峰、异步的特点 官网地址 https://www.rabbitmq.com/ 功能特点 支持顺序消息&#xff0c;保证消息送达消费端的前后顺序 支持消息补偿&#xff0…