【群智能算法改进】一种改进的鹈鹕优化算法 IPOA算法[2]【Matlab代码#58】

news2024/9/25 19:14:30

文章目录

    • 【`获取资源`请见文章第5节:资源获取】
    • 1. 原始POA算法
    • 2. 改进后的IPOA算法
      • 2.1 随机对立学习种群初始化
      • 2.2 动态权重系数
      • 2.3 透镜成像折射方向学习
    • 3. 部分代码展示
    • 4. 仿真结果展示
    • 5. 资源获取


获取资源请见文章第5节:资源获取】


1. 原始POA算法

此算法详细介绍请参考POA算法介绍

2. 改进后的IPOA算法

2.1 随机对立学习种群初始化

采用随机方法初始化POA种群,生成的种群不均匀,影响了收敛速度和精度。为了获得更好的初始种群,本文采用了随机对立学习策略来进行种群初始:
X i , n e w = ( l + u ) − k X i (1) X_{i,new}=(l+u)-kX_{i}\tag1 Xi,new=(l+u)kXi(1)
其中, X i X_{i} Xi为原解, X i , n e w X_{i,new} Xi,new为随机对立学习生成的反向解, k k k为[0,1]之间的随机数。
经过随机对立学习策略后,生成了 N N N个反向解,如果反向解的适应度值优于原解,就用反向解替代原解,否则保留原解。

2.2 动态权重系数

基本鹈鹕优化算法的开发阶段,在迭代后期会存在陷入局部最优的情况,使搜索失败。为克服这一弊端,再在其位置更新公式中加入动态权重系数 ω,让它在迭代初期具有较大值,促进全局搜索,迭代后期自适应变小,促进局部搜索并加快收敛速度。

2.3 透镜成像折射方向学习

透镜成像折射反向学习策略的思想来自于凸透镜成像的原理。通过基于当前坐标生成一个反向位置来扩展搜索范围,如图1所示。
在这里插入图片描述

图1 透镜成像折射反向学习原理图

在二维坐标中,x轴的搜索范围为(a, b), y轴表示一个凸透镜。假设物体A在x轴上的投影为x,高度为h,通过透镜成像,另一侧的图像为A*, A在x轴上的投影为x,高度为h*。通过以上分析,我们可以得到如下公式:
( a + b ) / 2 − x x ∗ − ( a + b ) / 2 = h h ∗ (2) \frac{(a+b)/2-x}{x^{*}-(a+b)/2 }=\frac{h}{h^{*}} \tag2 x(a+b)/2(a+b)/2x=hh(2)
对公式(2)进行转换,即可得到反向解x*的表达式为:
x ∗ = a + b 2 + a + b 2 k − x k (3) x^{*} =\frac{a+b}{2}+\frac{a+b}{2k}-\frac{x}{k} \tag3 x=2a+b+2ka+bkx(3)
其中, k = h / h ∗ k=h/h^{*} k=h/h a a a b b b可以视为某维度的上下限。本文中的 k k k是一个与迭代次数相关的动态自适应值。

3. 部分代码展示

%%
clc
clear
close all

%%
Fun_name='F1'; % number of test functions: 'F1' to 'F23'
SearchAgents=30;                     % number of Pelicans (population members) 
Max_iterations=500;                  % maximum number of iteration
[lb,ub,dim,fobj]=Get_Functions_details(Fun_name); % Object function information
[Best_score_POA,Best_pos_POA,POA_curve]=POA(SearchAgents,Max_iterations,lb,ub,dim,fobj);   
[Best_score_SSA,Best_pos_SSA,SSA_curve]=SSA(SearchAgents,Max_iterations,lb,ub,dim,fobj);
[Best_score_WOA,Best_pos_WOA,WOA_curve]=WOA(SearchAgents,Max_iterations,lb,ub,dim,fobj);
[Best_score_GWO,Best_pos_GWO,GWO_curve]=GWO(SearchAgents,Max_iterations,lb,ub,dim,fobj);
[Best_score_IPOA,Best_pos_IPOA,IPOA_curve]=IPOA(SearchAgents,Max_iterations,lb,ub,dim,fobj);

%%
figure('Position',[454   445   694   297]);
subplot(1,2,1);
func_plot(Fun_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Fun_name,'( x_1 , x_2 )'])

subplot(1,2,2);
t = 1:Max_iterations;
semilogy(t, POA_curve, 'b-',    t, SSA_curve, 'k-',    t, WOA_curve, 'g-',  t, GWO_curve, 'm-',  t, IPOA_curve, 'r-','linewidth', 1.5);

title(Fun_name)
xlabel('Iteration');
ylabel('Best fitness function');
axis tight
legend('POA','SSA','WOA','GWO','IPOA')

display(['The best solution obtained by POA for ' [num2str(Fun_name)],'  is : ', num2str(Best_pos_POA)]);
display(['The best optimal value of the objective funciton found by POA  for ' [num2str(Fun_name)],'  is : ', num2str(Best_score_POA)]);
display(['The best solution obtained by SSA for ' [num2str(Fun_name)],'  is : ', num2str(Best_pos_SSA)]);
display(['The best optimal value of the objective funciton found by SSA  for ' [num2str(Fun_name)],'  is : ', num2str(Best_score_SSA)]);
display(['The best solution obtained by WOA for ' [num2str(Fun_name)],'  is : ', num2str(Best_pos_WOA)]);
display(['The best optimal value of the objective funciton found by WOA  for ' [num2str(Fun_name)],'  is : ', num2str(Best_score_WOA)]);
display(['The best solution obtained by GWO for ' [num2str(Fun_name)],'  is : ', num2str(Best_pos_GWO)]);
display(['The best optimal value of the objective funciton found by GWO  for ' [num2str(Fun_name)],'  is : ', num2str(Best_score_GWO)]);
display(['The best solution obtained by IPOA for ' [num2str(Fun_name)],'  is : ', num2str(Best_pos_IPOA)]);
display(['The best optimal value of the objective funciton found by IPOA  for ' [num2str(Fun_name)],'  is : ', num2str(Best_score_IPOA)]);

4. 仿真结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 资源获取

可以获取完整代码资源。

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

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

相关文章

09:STM32-------USART串口通信+串口数据包

目录 一:串口协议 1:通信接口 2:串口通信 3:硬件电路 4:电平标准 5:串口参数及其时序 二:USART介绍 1:简历 2:USART框图 3:USART的基本结构 4:数据帧 5: 波特率发生器 6:数据模式 三:案例 A:串口发送--单发送 1:连接图 2:函数介绍 3:代码 B:串口发送接收 1…

微服务06-Dockerfile自定义镜像+DockerCompose部署多个镜像

常见的镜像在DockerHub能找到,但是我们自己写项目得自己构造镜像 1 镜像结构 作用:提高复用性,当应用需要更新时,不再是整个系统重装进行更新 ,而是对需要更新的部分进行更新,其他地方不动——>这就是分…

第67步 时间序列建模实战:ARIMA建模(Stata)

基于WIN10的64位系统演示 一、写在前面 这一期,我们使用Stata进行SARIMA模型的构建。 同样,使用某省2005年1月至2016年12月AIDS死亡率的时间序列数据。 二、Stata建立SARIMA实战 (1)问GPT怎么用 咒语:我有一批{数…

【Arduino28】LM35温度传感器实验

硬件准备 LM35温度传感器:1 个 面包板:1个 杜邦线:3根 硬件连线 VCC引脚接 5V 电源 OUT引脚接 A0接口 GND引脚接 GND 接口 软件程序 #define temp_pin A0 //温度传感器引脚void setup(){Serial.begin(9600); }void loop(){float val …

【C++】STL-常用算法-常用查找算法

0.前言 1.find #include <iostream> using namespace std;// 常用查找算法 find #include<vector> #include<algorithm>//查找 内置数据类型 void test01() {vector<int>v;for (int i 0; i < 10; i){v.push_back(i);}//查找 容器中 是否有 5 这个元…

C--小Why的商品归位-- 牛客小白月赛77

输入 3 3 1 1 2 1 3 2 3 输出 2 解析&#xff1a; 先不考虑购物车的容量&#xff0c;即购物车容量为无限大。这样我们可以通过每种货物上车、下车的时间计算出每一个时间点内&#xff0c;购物车中货物的数量。 统计出所有时间点内&#xff0c;货物数量的最大值max。这个最大…

CRM软件系统的三大优势

随着市场环境的不断发展和变化&#xff0c;企业的管理模式也在不断地调整。CRM管理系统是企业数字化转型的重要一环&#xff0c;可以帮助企业更好地管理客户关系和市场销售&#xff0c;提高企业运营效率和经济效益&#xff0c;CRM管理系统有哪些优势呢&#xff1f;今天小编就来…

Vue2+Vue3基础入门到实战项目(七)——智慧商城项目

Vue 核心技术与实战 智慧商城 接口文档&#xff1a;https://apifox.com/apidoc/shared-12ab6b18-adc2-444c-ad11-0e60f5693f66/doc-2221080 演示地址&#xff1a;http://cba.itlike.com/public/mweb/#/ 01. 项目功能演示 1.明确功能模块 启动准备好的代码&#xff0c;演示…

深入了解苹果证书及其分类,提升iOS应用开发效率

目录 1. 企业证书 2. 开发者证书 开发证书&#xff1a; 发布证书&#xff1a; 3. 推送证书 4. 分发证书 5. MDM证书 摘要&#xff1a;本文将详细介绍苹果证书的作用及分类&#xff0c;包括企业证书、开发者证书、推送证书、分发证书和MDM证书&#xff0c;帮助开发者了解…

Win11如何显示文件后缀名

有小伙伴发现在更新了Win11之后&#xff0c;文件的后缀名就被隐藏起来了&#xff0c;那么Win11怎么显示文件的后缀名呢&#xff0c;下面小编就给大家带来Win11显示文件后缀名的方法&#xff0c;大家感兴趣的话可以来看一看。 Win11显示文件后缀名的方法&#xff1a; 方法一&a…

低代码平台是否能替代电子表格?

在计算机技术普及之前&#xff0c;会计、助理或者是销售人员&#xff0c;都需要用纸和笔来记录和维护每一笔交易。计算机技术兴起之后&#xff0c;一项技术发明——电子表格的出现改变了低效的状况。电子表格的第一个版本出现在1977年&#xff0c;一个名为“VisiCalc”的程序。…

OpenCV(二十七):图像距离变换

1.像素间距离 2.距离变换函数distanceTransform() void cv::distanceTransform ( InputArray src, OutputArray dst, int distanceType, int maskSize, int dstType CV_32F ) src:输入图像&#xff0c;数据类型为CV8U的单通道图像dst:输出图像&#xff0c;与输入图像…

2023-09-07 LeetCode每日一题(修车的最少时间)

2023-09-07每日一题 一、题目编号 2594. 修车的最少时间二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 ranks &#xff0c;表示一些机械工的 能力值 。ranksi 是第 i 位机械工的能力值。能力值为 r 的机械工可以在 r * n2 分钟内修好 n 辆车。 同时给你…

WebServer 解析HTTP 请求报文

一、TCP 状态转换 浏览器访问网址&#xff0c;TCP传输全过程 二、TCP协议的通信过程 三、TCP 通信流程 // TCP 通信的流程 // 服务器端 &#xff08;被动接受连接的角色&#xff09; 1. 创建一个用于监听的套接字- 监听&#xff1a;监听有客户端的连接- 套接字&#xff1a;这…

C#开发的OpenRA游戏之系统参数选项按钮

C#开发的OpenRA游戏之系统参数选项按钮 前面分析了信标按钮,从图上可以看到,靠右边的按钮,就是系统参数选项按钮: 这个按钮与前面三个按钮是不一样的,虽然它们在排列位置上是放在一起,但是处理的方法方式是不一样的,因为这个选项按钮,并不需要发命令给服务器,再返回来…

Kafka的文件存储与稀疏索引机制

![在这里插入图片描述](https://img-blog.csdnimg.cn/dde7fc866d214985baaa87300a472578.png)这些是存储在分区(分区才是实际的存储)文件中的. seg是逻辑概念 而实际由log存储的. index是偏移量索引而timeindex是时间戳索引 log就是seg 找数据就是先找log 再从log去找

使用aidlux进行模型迁移、部署、推理

AidLux是一个构建在ARM硬件上&#xff0c;基于创新性跨Android/鸿蒙 Linux融合系统环境的智能物联网 (AIoT) 应用开发和部署平台。 说的直白点&#xff0c;aidlux就是一个在arm架构芯片的设备上运行的linux系统&#xff0c;我们可以将身边的安卓设备当作边缘设备&#xff0c;在…

stm32f4_奇怪的bug_串口数据错乱,一个串口收到另一个串口的数据

1、开发环境简介 芯片型号&#xff1a;stm32f407igt6 官方库函数&#xff1a;HAL库 2、bug现象描述和原因推测 使用了2个串口&#xff0c;一个是串口5-波特率115200&#xff0c;一个是串口4-波特率9600&#xff0c;但是串口4时不时会收到上一次发给串口5的数据。不是同一个串…

【计算机网络】 IP协议格式以及以太网帧结构

文章目录 IP协议格式以太网帧结构 IP协议格式 IP工作在网络层 IP头分为两部分&#xff0c;固定部分和可变部分&#xff0c;固定部分就是一定要带这些数据&#xff0c;正常存储应该是连续的&#xff0c;并不是像图中这样会换行&#xff0c;图中只是为了方便观察。 首先是一个版…

论数据库的种类

摘要 数据库是现代信息管理和数据存储的重要工具&#xff0c;几乎在各个领域都有广泛应用。不同类型的数据库适用于不同的应用场景和需求。本文将介绍几种常见的数据库种类&#xff0c;并探讨它们的特点和适用范围。 正文 一、关系型数据库&#xff08;RDBMS&#xff09; 关…