PSO和WOA在不同基准函数上运行的对比研究(Matlab代码实现)
Posted 我爱Matlab编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PSO和WOA在不同基准函数上运行的对比研究(Matlab代码实现)相关的知识,希望对你有一定的参考价值。
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
👨 💻4 Matlab代码
💥1 概述
WOA算法设计的既精妙又富有特色,它源于对自然界中座头鲸群体狩猎行为的模拟, 通过鲸鱼群体搜索、包围、追捕和攻击猎物等过程实现优时化搜索的目的。在原始的WOA中,提供了包围猎物,螺旋气泡、寻找猎物的数学模型。
鲸鱼优化算法是模仿自然界中鲸鱼捕食行为的新型群体智能优化算法,而鲸鱼的捕食行为主要分为3类:1)包围猎物;2)发泡网攻击;3)搜索捕食。因此,在使用WOA求解问题之前,需要对上述3类捕食行为进行建模,即用数学公式表达上述3类捕食行为。
鲸鱼捕食行为的目的是捕获猎物,一群鲸鱼在共同寻找猎物时,一定会存在某条鲸鱼先发现猎物的情况,这时候其它鲸鱼一定会向这条发现猎物的鲸鱼游来争抢猎物。
将上述捕食过程可以应用到WOA求解问题的过程中,即一个解就可以用一个鲸鱼个体表示,若干个解就可以用若干个鲸鱼个体表示。在使用WOA搜索问题解的过程就可以看作是若干个鲸鱼个体不断更新个体位置,直至搜索到满意的解为止。
📚2 运行结果
主函数部分代码:
clear all
clc
SearchAgents_no=50; % Number of search agents
Function_name='F1'; % Name of the test function that can be from F1 to F23 (Table 1,2,3 in the paper)
Max_iteration=300; % 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);
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','r')
%title('Objective space')
%xlabel('Iteration');
%ylabel('Best score obtained so far');
plot(WOA_cg_curve,'LineWidth',2,'Color','r')
title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');
axis tight
grid on
box on
hold on;
🎉3 参考文献
[1]李雅丽,王淑琴,陈倩茹等.若干新型群智能优化算法的对比研究[J].计算机工程与应用,2020,56(22):1-12.
粒子群优化算法的PSO
参考技术A 演化计算可以用来研究神经网络的三个方面:网络连接权重,网络结构(网络拓扑结构,传递函数),网络学习算法。
不过大多数这方面的工作都集中在网络连接权重,和网络拓扑结构上。在GA中,网络权重和/或拓扑结构一般编码为染色体(Chromosome),适应函数(fitness function)的选择一般根据研究目的确定。例如在分类问题中,错误分类的比率可以用来作为适应值。 这里用一个简单的例子说明PSO训练神经网络的过程。这个例子使用分类问题的基准函数 (Benchmark function)IRIS数据集。(Iris 是一种鸢尾属植物) 在数据记录中,每组数据包含Iris花的四种属性:萼片长度,萼片宽度,花瓣长度,和花瓣宽度,三种不同的花各有50组数据. 这样总共有150组数据或模式。
我们用3层的神经网络来做分类。现在有四个输入和三个输出。所以神经网络的输入层有4个节点,输出层有3个节点我们也可以动态调节隐含层节点的数目,不过这里我们假定隐含层有6个节点。我们也可以训练神经网络中其他的参数。不过这里我们只是来确定网络权重。粒子就表示神经网络的一组权重,应该是4*6+6*3=42个参数。权重的范围设定为[-100,100] (这只是一个例子,在实际情况中可能需要试验调整).在完成编码以后,我们需要确定适应函数。对于分类问题,我们把所有的数据送入神经网络,网络的权重有粒子的参数决定。然后记录所有的错误分类的数目作为那个粒子的适应值。现在我们就利用PSO来训练神经网络来获得尽可能低的错误分类数目。PSO本身并没有很多的参数需要调整。所以在实验中只需要调整隐含层的节点数目和权重的范围以取得较好的分类效果。
以上是关于PSO和WOA在不同基准函数上运行的对比研究(Matlab代码实现)的主要内容,如果未能解决你的问题,请参考以下文章
基于多种群机制的PSO算法(优化与探索三 *混合种群思想优化多种群与广义PSO求解JSP)
车道识别基于WOA-SVM算法的道路标志检测与识别算法的研究,通过MATLAB/FPGA实现