【单目标优化求解】基于matlab非线性权重的自适应鲸鱼算法求解单目标优化问题(NWAWOA)【含Matlab源码 1665期】

举报
海神之光 发表于 2022/05/29 00:23:29 2022/05/29
【摘要】 一、非线性权重的自适应鲸鱼算法 随着现实生活中待优化问题的复杂度增加,种群优化算法得到迅速发展。目前,各种鲸鱼优化算法被提出,但是在不断提高精度的同时,却增加了算法的复杂性。针对鲸鱼优化算法(WOA)收...

一、非线性权重的自适应鲸鱼算法

随着现实生活中待优化问题的复杂度增加,种群优化算法得到迅速发展。目前,各种鲸鱼优化算法被提出,但是在不断提高精度的同时,却增加了算法的复杂性。针对鲸鱼优化算法(WOA)收敛速度慢、求解精度低的问题,在优化算法性能的基础上保留鲸鱼优化算法结构简单的特点,提出了基于非线性权重的自适应鲸鱼优化算法(NWAWOA)。通过非线性权重S1和S2对鲸鱼优化算法三个阶段的位置更新公式采用两种不同的加权策略,在平衡算法全局搜索与局部开发能力的同时,加快收敛速度、提高求解精度。在10个经典测试函数上的实验表明,改进的算法与经典粒子群算法(PSO)、WOA、WOAWC算法、EWOA算法相比具有较好的收敛速度、求解精度和稳定性,同时算法结构简单,易于学习。

1 自适应权重
鲸鱼优化算法与其他群体智能算法一样,平衡全局搜索和局部开发能力十分重要。权重对鲸鱼优化算法有重要作用,权重较大时,收敛速度较快,算法搜索的范围较大;权重较小时,搜索更加细致,不易错过最优解。

在鲸鱼优化算法中引入非线性权重S1和S2(如图1所示),分别对当前最优位置和包围步长进行自适应调整,具体计算公式如下:
在这里插入图片描述
其中,γ为S1和S2的变化范围取值,取γ=0.5;λ为S1和S2的取值步长,取λ=1。
在这里插入图片描述
图1 自适应权重S1和S2
将权重S1和S2引入到式(2)和式(5)中,如下所示:
在这里插入图片描述
笔者认为将权重S1引入到位置上,不符合智能优化的初衷,改进公式如下:
在这里插入图片描述
螺旋式位置更新公式即:
在这里插入图片描述
由图1可以看出,S1随迭代次数增加呈非线性递增,使种群能充分向最优位置移动;而S2随迭代次数增加呈非线性递减,在后期有较小步长而加快收敛速度。在平衡全局搜索和局部开发能力的同时,提高求解精度、加快收敛速度。

2 算法流程
改进的鲸鱼优化算法,对三个阶段的位置更新公式采取了不同的加权策略:在包围捕食和搜寻食物阶段,即p<0.5,非线性减小的权重S2仅对距离数据加权;在泡网攻击阶段的螺旋式更新位置,即p≥0.5,非线性增加的权重S1不仅对距离数据加权而且对位置加权。鲸鱼算法流程如图2所示。
在这里插入图片描述
图2 NWAWOA算法流程

二、部分源代码

clear all 
clc
SearchAgents_no=30; % Number of search agents 种群数量
Function_name='F4'; % Name of the test function that can be from F1 to F23 (Table 1,2,3 in the paper) 设定适应度函数
Max_iteration=500; % Maximum numbef of iterations 设定最大迭代次数

% Load details of the selected benchmark function
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);  %设定边界以及优化函数
%原始鲸鱼算法
[Best_score,Best_pos,WOA_cg_curve]=WOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj); %开始优化
%改进鲸鱼算法
[Best_score1,Best_pos1,WOA_cg_curve1]=NWAWOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj); %开始优化


figure('Position',[269   240   660   290])
%Draw search space
subplot(1,2,1);
func_plot(Function_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])

%Draw objective space
subplot(1,2,2);
semilogy(WOA_cg_curve,'Color','g','linewidth',1.5)
hold on
semilogy(WOA_cg_curve1,'Color','r','linewidth',1.5);
title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');
legend('WOA','NWAWOA');
axis tight
grid on
box on
display(['The best solution obtained by WOA is : ', num2str(Best_pos)]);
display(['The best optimal value of the objective funciton found by WOA is : ', num2str(Best_score)]);

        
display(['The best solution obtained by NWAWOA is : ', num2str(Best_pos1)]);
display(['The best optimal value of the objective funciton found by NWAWOA is : ', num2str(Best_score1)]);




  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

三、运行结果

在这里插入图片描述

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]赵传武,黄宝柱,阎跃观,代文晨,张建.一种非线性权重的自适应鲸鱼优化算法[J].计算机技术与发展,2020,30(10):7-13.

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/122439388

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。