一种新的改进的混合蛙跳算法(SFLA)(Matlab代码实现)

本文介绍了混合蛙跳算法(SFLA),一种基于群体搜索的全局优化方法,它模拟青蛙觅食行为来实现全局信息交换和局部深度搜索。在MATLAB中,该算法被应用于神经网络的训练,通过调整学习策略如Levenberg-Marquardt,以优化网络性能并提高收敛速度。实验结果展示了算法的有效性。
摘要由CSDN通过智能技术生成

       目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码


💥1 概述

混合蛙跳算法(Shuffled Frog Leaping Algorithm)是根据青蛙在石块上觅食时的种群分布变化而提出的算法。算法提出于2003年,时间有点久远,但相关的论文并不是特别多,仍有较大的研究和改进空间。

混合蛙跳算法( SFLA) 是一种受自然生物模仿启示而产生的基于群体的协同搜索方法。这种算法模拟青蛙群体寻找食物时,按族群分类进行思想传递的过程,将全局信息交换和局部深度搜索相结合,局部搜索使得思想在局部个体间传递,混合策略使得局部间的思想得到交换。在混合蛙跳算法中,群体( 解集) 由一群具有相同结构的青蛙( 解) 组成。整个群体被分为多个子群,不同的子群被认为是具有不同思想的青蛙的集合。子群中青蛙按照一定策略执行解空间中的局部深度搜索。在已定义的局部搜索迭代次数结束之后,思想在混合过程中进行了交换。局部搜索和混合过程一直持续到定义的收敛条件结束为止。全局信息交换和局部深度搜索的平衡策略使得算法能够跳出局部极值点,向着全局最优的方向进行,这也成为混合蛙跳算法最主要的特点.

📚2 运行结果

主函数部分代码:

%% Clearing and Loading Data 

clear;

data=JustLoad();

warning('off');

% Inputs (Train and Test)

inputs=rescale(data.TrainInputs)';

TstInputs=rescale(data.TestInputs)';

% Targets (Train and Test)

targets=rescale(data.TrainTargets)';

TstTargets=rescale(data.TestTargets)';

sizenn=size(inputs);sizenn=sizenn(1,1);

% Number of neurons----------------------

n = 12;

%----------------------------------------

% 'trainlm'     Levenberg-Marquardt

% 'trainbr'  Bayesian Regularization (good)

% 'trainbfg' BFGS Quasi-Newton

% 'trainrp'   Resilient Backpropagation

% 'trainscg' Scaled Conjugate Gradient

% 'traincgb' Conjugate Gradient with Powell/Beale Restarts

% 'traincgf' Fletcher-Powell Conjugate Gradient

% 'traincgp' Polak-Ribiére Conjugate Gradient

% 'trainoss' One Step Secant (good)

% 'traingdx' Variable Learning Rate Gradient Descent

% 'traingdm' Gradient Descent with Momentum

% 'traingd'  Gradient Descent

% Creating the NN ----------------------------

net = feedforwardnet(n,'traingdx');

%---------------------------------------------

% configure the neural network 

[net tr]= train(net,inputs, targets);

perf = perform(net,inputs, targets);%mse

% Current NN Weights and Bias

% Create Handle for Error

h = @(x) NMSE(x, net, inputs, targets);

🎉3 参考文献

[1]李英海,周建中,杨俊杰等.一种基于阈值选择策略的改进混合蛙跳算法[J].计算机工程与应用,2007,No.594(35):19-21.

部分理论引用网络文献,若有侵权联系博主删除。

在自然界的池塘中常常生活着一群青蛙,并且分布着许多石头,青蛙通过在不同的石头间进行跳跃去寻找食物较多的地方。每只青蛙通过跳跃到不同的石头来提高自己寻找食物的能力,而青蛙个体之间通过思想的交流与共享,实现信息的交互。混合蛙跳算法(Shuffled Frog Leaping Algorithm, SFLA)是模拟青蛙觅食过程中群体信息共享和交流机制而产生的一种群体智能算法,是一种的启发式群体智能进化算法。该算法由Eusuff和Lansey在2003年首次提出,并成功解决管道网络扩充中管道尺寸的最小化问题。关于蛙跳算法的研究目前还比较少,近年来国内外一些学者多将混合蛙跳算法用于优化问题、旅行商问题、模糊控制器设计等方面。 混合蛙跳算法实现机理是通过模拟现实自然环境中青蛙群体在觅食过程中所体现出的协同合作和信息交互行为,来完成对问题的求解过程。每只青蛙被定义为问题的一个解。整个青蛙群体采用模因分组方法分为不同的子群体,来模拟青蛙的聚群行为,每个子群体称为模因分组。模因组中的每只青蛙都有为了靠近目标而努力的想法,具有对食物源远近的判断能力,并且受其他青蛙影响,这里称为文化。每个模因组都有自己的文化,影响着其他个体,并随着模因组的进化而进化。在模因组的每一次进化过程中,在每个模因组中找到组内位置最好和最差的青蛙。组内最差青蛙采用类似于粒子群算法中的速度位移模型操作算子,执行局部位置更,对最差青蛙位置进行调整。模因组内经过一定次数的模因进化后,不同模因组间的青蛙重混合成整个群体,实现各个模因组间的信息交流与共享,直到算法执行完预定的种群进化次数结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值