【智能优化算法】雁群优化算法(Wild Geese Algorithm,WGA)

雁群优化算法(Wild Geese Algorithm,WGA)是期刊“Array”的2021年智能优化算法

01.引言

雁群优化算法(Wild Geese Algorithm,WGA)用于大规模全局优化,并利用IEEE CEC 2008和CEC 2010高维D¼100、500、1000特别会议的大规模测试函数验证了该算法的效率和性能。WGA的灵感来自大自然中的大雁,并模拟了它们生活的各个方面,如进化、定期合作迁徙和死亡。将WGA在寻找高维优化问题全局最优解方面的有效性与其他文献报道的方法进行了比较。实验结果表明,该算法结构简单,易于实现,但在求解一系列大规模优化问题方面具有良好的性能,与其他大规模优化算法相比具有很强的竞争力。

02.优化算法的流程

03.论文中算法对比图

04.部分代码

function [Best_score,Best_pos,BestCosts]=WGA(nPop,MaxNFE,xmin,xmax,nVar,CostFunction)
nPop_Initial=nPop;
nPop_Final=30;
% MaxIter0=ceil(MaxNFE/((nPop_Initial+nPop_Final)/2));   % Approximate Maximum Iterations
Cr=0.5;
%%%%%%%%%%%
NFE=0;
Gbest.Position=[];
Gbest.Cost=inf;
BestCosts=nan(1,MaxNFE);
nfe=BestCosts;
for i=1:nPop
    Velocity(i,:)=zeros(1,nVar); %#ok<*SAGROW>
    Position(i,:)=xmin+(xmax-xmin)*rand(1,nVar);
    Cost(i)=CostFunction(Position(i,:));
    PbestPosition(i,:)=Position(i,:);
    PbestCost(i)=Cost(i);
    PbestVel(i,:)=Velocity(i,:);
    
    if PbestCost(i)<Gbest.Cost
        Gbest.Position=PbestPosition(i,:);
        Gbest.Cost=PbestCost(i);
        Gbest.Velocity= PbestVel(i,:);
    end
end
NFE=NFE+nPop;
iter=0;
% while NFE<=MaxNFE
for iter= 1:MaxNFE
%     iter=iter+1;
    
    [hh, gg]=sort(PbestCost);
    
    nPop=(nPop_Initial-1)-((nPop_Initial-nPop_Final)*(NFE/MaxNFE));
    nPop=round(nPop+1);
    nPop=max(nPop,nPop_Final);
    nPop=min(nPop_Initial,nPop);
    B6=nPop_Initial-nPop_Final;
    
    for eee=1:nPop
        
        if B6==0
            i=eee;
        else
            i=gg(eee);
        end
        [~, f2]=find(gg==i);
        
        %%% Worst
        if f2==nPop
            f2=0;
        end
        jj1=gg(1,f2+1);
        
        %%% BETTER
        [~, f2]=find(gg==i);
        tt=1;
        if f2==1
            f2=nPop+1;
            tt=-1;
        end
        
        jj2=gg(1,f2-1);
        if f2==2
            f2=nPop+2;
        end
        
        jj3=gg(1,f2-2);
        jjj=gg(1,1);
        ff1=gg(1,end);
        
        Velocity(i,:)= (rand(1,nVar).*Velocity(i,:)+rand(1,nVar).*(Velocity(jj2,:)-Velocity(jj1,:)))+rand(1,nVar).*(PbestPosition(i,:)-Position(jj1,:))+rand(1,nVar).*(PbestPosition(jj2,:)-Position(i,:))-rand(1,nVar).*(PbestPosition(jj1,:)-Position(jj3,:))+rand(1,nVar).*(PbestPosition(jj3,:)-Position(jj2,:));%%ORIGINAL
        
        BB=(PbestCost(jj2))/(PbestCost(i));
        GG=(PbestCost(jjj))/(PbestCost(i));
        
        Position(i,:)=PbestPosition(i,:)+rand(1,nVar).*rand(1,nVar).*(( PbestPosition(jj2,:)+Gbest.Position-2*PbestPosition(i,:))+(Velocity(i,:)));
        
        f1=(Gbest.Cost)/(PbestCost(i)+Gbest.Cost);
        f0=(PbestCost(jj2))/(PbestCost(jj2)+PbestCost(i));
        
        DE1=((PbestPosition(jj2,:)-PbestPosition(i,:)));
        
        for ww=1:nVar
            if rand<Cr
                Position(i,ww)=PbestPosition(i,ww)+rand*rand*(DE1(ww));
            end
        end
        
        Position(i,:)=min(max(Position(i,:),xmin),xmax);
        
        Cost(i)=CostFunction(Position(i,:));
        
        if Cost(i)<PbestCost(i)
            PbestPosition(i,:)=Position(i,:);
            PbestCost(i)=Cost(i);
            PbestVel(i,:)=Velocity(i,:);
            
            if PbestCost(i)<Gbest.Cost
                Gbest.Position=PbestPosition(i,:);
                Gbest.Cost=PbestCost(i);
                Gbest.Velocity= PbestVel(i,:);
            end
        end
    end
    
    NFE=NFE+nPop;
    nfe(iter)=NFE;
    BestCosts(iter)=Gbest.Cost;
    
%     disp(['NFE ' num2str(NFE) ':   Best Cost = ' num2str(Gbest.Cost)]);
end
    Best_score = Gbest.Cost;
    Best_pos = Gbest.Position;
end

04.本代码效果图

获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复智能优化算法本公众号致力于解决找代码难,写代码怵。各位有什么急需的代码,欢迎后台留言~不定时更新科研技巧类推文,可以一起探讨科研,写作,文献,代码等诸多学术问题,我们一起进步。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

内网渗透—域信息收集防火墙策略同步不出网隧道上线

1、前言 最近在学域渗透方面的知识&#xff0c;这里就记录一下。主要涉及到什么是域&#xff0c;域的信息收集&#xff0c;防火墙的策略同步&#xff0c;以及当主机出网的协议被封杀时如何利用隧道上线。 2、什么是域 域是一个有安全边界的计算机集合&#xff0c;在域内的计…

干部选拔任用的重要性与实践策略

在当今的组织管理中&#xff0c;干部选拔任用是一项至关重要的工作。它不仅关系到组织的稳定与发展&#xff0c;更直接影响到组织的效能和竞争力。因此&#xff0c;科学、公正、有效的干部选拔任用机制对于组织的长期健康发展具有不可忽视的意义。 一、干部选拔任用的重要性 …

华为涅槃,余承东重生

最近一段时间&#xff0c;余承东甚为低调。最为明显的是&#xff0c;“遥遥领先”已经听不到了&#xff0c;“余大嘴”口中的措辞越来越克制。 今后手机相关的发布会&#xff0c;或许不再看到余承东的身影。 5月10日&#xff0c;余承东的职位正式更新&#xff0c;从终端BG CE…

xFormers

文章目录 一、关于 xFormers二、安装 xFormers三、基准测试&#xff08;可选&#xff09;测试安装 四、使用 xFormers1、Transformers 关键概念2、Repo 地图注意力机制Feed forward mechanismsPositional embeddingResidual pathsInitializations 3、主要特征4、安装故障排除 一…

POETIZE个人博客系统源码 | 最美博客

简介&#xff1a; POETIZE个人博客系统源码 | 最美博客 这是一个 SpringBoot Vue2 Vue3 的产物&#xff0c;支持移动端自适应&#xff0c;配有完备的前台和后台管理功能。 网站分两个模块&#xff1a; 博客系统&#xff1a;具有文章&#xff0c;表白墙&#xff0c;图片墙&…

【UnityShader入门精要学习笔记】第十二章 屏幕后处理效果

本系列为作者学习UnityShader入门精要而作的笔记&#xff0c;内容将包括&#xff1a; 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更&#xff0c;有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 建立一个基…

元宇宙,可能是未来经济新趋势,但不是文明的跃升

为什么说元宇宙是未来的一个经济趋势&#xff0c;甚至是一个即将来临的风口&#xff0c;说到元宇宙&#xff0c;相信大家都听说过&#xff0c;但是真正了解的人还是占少部分的。其实概率很容易理解&#xff0c;我们可以把他看成是一个虚拟世界&#xff0c;一个平行空间&#xf…

菲律宾签证照片尺寸要求,用手机生成

菲律宾签证照片尺寸要求如下图所示&#xff0c;可以用手机在微信搜索随时照小程序&#xff0c;快速生成哦。

做私域,该如何从公域向私域引流?

说到私域运营&#xff0c;很多人首先就会想到&#xff1a;私域流量。企业做私域&#xff0c;流量从哪来&#xff1f;该怎样去引流&#xff1f;又该如何保障私域流量的质量等一系列问题&#xff0c;都需要企业一一解决。所以&#xff0c;今天&#xff0c;我们就来探讨一下&#…

产品经理资料包干货

1.《产品汪》免费电子书 2016年我面试了差不多有200多位产品求职者&#xff0c;其中不乏之前做厨师编剧这些岗位的人。在这个过程中我意识到大众或许对产品经理这个岗位存在一些认知和理解上的误差&#xff0c;于是我就想着写一本产品经理相关的书。 关于本书的更多信息可查看…

dvwa靶场 Content Security Policy (CSP) Bypass(CSP绕过)全难度教程(附代码分析)

前置知识 Content Security Policy&#xff08;内容安全策略&#xff09;&#xff0c;用于定义脚本和其他资源从何处加载或者执行&#xff0c;总结的来说就时白名单。会一定程度的缓解xss脚本问题&#xff0c;也可以自己设定规则&#xff0c;管理网站允许加载的内容。 CSP 以…

简单记录下:Navicat 导出表结构至 Excel

首先我们需要通过sql语句查询出相关的表结构的结构 SELECT COLUMN_NAME AS 字段名称,COLUMN_TYPE AS 字段类型,IF(IS_NULLABLENO,否,是) AS 是否必填,COLUMN_COMMENT AS 注释FROM INFORMATION_SCHEMA.COLUMNSWHERE table_schema bs-gdsAND table_name sys_menu;查询的结构如下…

Linux下Code_Aster源码编译安装及使用

目录 软件介绍 基本依赖 其它依赖 一、源码下载 二、解压缩 三、编译安装 四、算例运行 软件介绍 Code_aster为法国电力集团&#xff08;EDF&#xff09;自1989年起开始研发的通用结构和热力耦合有限元仿真软件。Code_aster可用于力学、热学和声学等物理现象的仿真分析&…

LQ杯当时的WP

RC4 32位程序用IDA打开看看 进行反汇编 RC4提示&#xff0c;就是一个加密 在sub_401005函数中找到输出的变量&#xff0c;并且立下断点 动调 Packet 字符串搜索flag 看到是给192.168.11.128发送了cat flag的命令 看到它回传 Base64加密了 解一下密码就可以 CC 密码这…

Windows snmp++获取本地主机信息

编译snmp的包 调用snmp.lib实现信息获取_哔哩哔哩_bilibili 代码&#xff1a; #include <iostream> #include <libsnmp.h> #include <vector> #include <fstream> #include <string> #include "snmp_pp/snmp_pp.h" //#define _NO_L…

Go微服务: Gin框架搭建网关, 接入熔断器,链路追踪以及服务端接入限流和链路追踪

概述 本文使用最简单和快速的方式基于Gin框架搭建一个微服务的网关调用微服务的场景网关作为客户端基于RPC调用某一服务端的服务并接入熔断和限流以及链路追踪具体场景&#xff1a;通过网关API查询购物车里的数据在最后&#xff0c;会贴上网关和购物车服务的代码仓库 服务端搭…

端口号查询进程PID

情况1&#xff1a;由于 idea 突然闪退&#xff0c;导致正在 debug 的 Java 进程没结束掉&#xff0c;端口还在占用&#xff0c;重新 debug 不了&#xff0c;所以需要到任务管理器把进程结束掉 但问题是如果当任务管理器进程同时有多个 Java 进程在运行&#xff08;而且名字一样…

CSS表格特殊样式

列组样式 使用colgroup与col标签配合可以定义列祖样式&#xff1a;例 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>table,tr,th,td{border: 1px solid #000;}table{border-collapse: coll…

java导出excel动态加载多sheet多复杂表头

java导出excel动态加载多sheet多复杂表头 实体实现类sheet方法业务工具方法实现效果 实体 import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.ToString; import lombok.experimental.Accessors;import java.io.Serializable; import ja…

IPSSL证书:为特定IP地址通信数据保驾护航

IPSSL证书&#xff0c;顾名思义&#xff0c;是专为特定IP地址设计的SSL证书。它不仅继承了传统SSL证书验证网站身份、加密数据传输的基本功能&#xff0c;还特别针对通过固定IP地址进行通信的场景提供了强化的安全保障。在IP地址直接绑定SSL证书的模式下&#xff0c;它能够确保…