当前位置: 首页 > news >正文

随机蛙跳算法 (SFLA)简单实现(Matlab代码实现)

    目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码

💥1 概述

随着计算机科学与技术的迅速发展,人类生存空间的扩大以及认识与改造世界范围的拓宽,人们对科学技术提出了新的和更高的要求,其中高效的优化技术和智能计算的要求日益迫切。蛙跳算法是一种新兴的群智能优化算法,概念简单,易于实现。自从2003年Eusufr和Lansey首次应用该算法,之后在一些领域获得了成功应用。蛙跳算法具有较强的全局搜索能力,但同时对于一些复杂的问题依然存在着收敛速度不是很快、易于陷入局部极值的缺点,并且传统的蛙跳算法模型适合于解决连续优化问题,不适合解决离散的组合优化问题。为此,根据蛙跳算法的优化机理,提出了一种新的离散化蛙跳求解算法,并结合简化邻域搜索算法给出了三种改进策略,对新算法进行了改进。同时进行了仿真实验研究。

📚2 运行结果

主函数部分代码:

% Cite as:
% Mostapha Kalami Heris, Shuffled Frog Leaping Algorithm in MATLAB (URL: https://yarpiz.com/71/ypea109-shuffled-frog-leaping-algorithm), Yarpiz, 2015.
% 
% Contact Info: sm.kalami@gmail.com, info@yarpiz.com
%
​
clc;
clear;
close all;
​
%% Problem Definition
​
% Objective Function
CostFunction = @(x) Sphere(x);
​
nVar = 10;              % Number of Unknown Variables
VarSize = [1 nVar];     % Unknown Variables Matrix Size
​
VarMin = -10;           % Lower Bound of Unknown Variables
VarMax = 10;           % Upper Bound of Unknown Variables
​
​
%% SFLA Parameters
​
MaxIt = 1000;        % Maximum Number of Iterations
​
nPopMemeplex = 10;                          % Memeplex Size
nPopMemeplex = max(nPopMemeplex, nVar+1);   % Nelder-Mead Standard
​
nMemeplex = 5;                  % Number of Memeplexes
nPop = nMemeplex*nPopMemeplex;  % Population Size
​
I = reshape(1:nPop, nMemeplex, []);
​
% FLA Parameters
fla_params.q = max(round(0.3*nPopMemeplex), 2);   % Number of Parents
fla_params.alpha = 3;   % Number of Offsprings
fla_params.beta = 5;    % Maximum Number of Iterations
fla_params.sigma = 2;   % Step Size
fla_params.CostFunction = CostFunction;
fla_params.VarMin = VarMin;
fla_params.VarMax = VarMax;
​
%% Initialization
​
% Empty Individual Template
empty_individual.Position = [];
empty_individual.Cost = [];
​
% Initialize Population Array
pop = repmat(empty_individual, nPop, 1);
​
% Initialize Population Members
for i = 1:nPoppop(i).Position = unifrnd(VarMin, VarMax, VarSize);pop(i).Cost = CostFunction(pop(i).Position);
end
​
% Sort Population
pop = SortPopulation(pop);
​
% Update Best Solution Ever Found
BestSol = pop(1);
​
% Initialize Best Costs Record Array
BestCosts = nan(MaxIt, 1);
​
%% SFLA Main Loop
​
for it = 1:MaxItfla_params.BestSol = BestSol;
​% Initialize Memeplexes ArrayMemeplex = cell(nMemeplex, 1);% Form Memeplexes and Run FLAfor j = 1:nMemeplex% Memeplex FormationMemeplex{j} = pop(I(j, :));% Run FLAMemeplex{j} = RunFLA(Memeplex{j}, fla_params);% Insert Updated Memeplex into Populationpop(I(j, :)) = Memeplex{j};end% Sort Populationpop = SortPopulation(pop);% Update Best Solution Ever FoundBestSol = pop(1);% Store Best Cost Ever FoundBestCosts(it) = BestSol.Cost;% Show Iteration Informationdisp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCosts(it))]);end
​
%% Results
​
figure;
%plot(BestCosts, 'LineWidth', 2);
semilogy(BestCosts, 'LineWidth', 2);
xlabel('Iteration');
ylabel('Best Cost');
grid on;
​

🎉3 参考文献

[1]赵守法. 蛙跳算法的研究与应用[D].华东师范大学,2008.

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

http://www.lryc.cn/news/61537.html

相关文章:

  • 【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令
  • 如何训练个人的ChatGpt4
  • Rabbit与springboot整合-1
  • 项目沟通管理5大技巧 第4个很重要
  • vector(入门知识点)
  • 成人高考专业怎么选?看这三点
  • 设计模式:UML中的类图(6种关系)
  • 00后卷王的自述,我真有同事口中说的那么卷?
  • VS2022配置OpenGL+GLAD
  • javascript for循环的定义
  • 【安全与风险】安全研究的新课题
  • 4核8G云服务器腾讯云CVM S5和轻量应用服务器性能差异?
  • 【对比】文心一言对飚ChatGPT实操对比体验
  • C++:Article:链接器(二):符号决议
  • 期权价格上下限与期权平价关系
  • QT中TCP的学习
  • 编译选项与常用环境变量
  • 【SpringBoot2】SpringBoot开发实用篇
  • 接口自动化测试框架搭建全部过程
  • SQL学习(十)--DML_多表查询(针对数据表记录的join查询、子查询的操作)
  • Docker容器部署
  • 26岁转行网络安全,成功上岸安全开发!
  • 涨点技巧: 谷歌强势推出优化器Lion,引入到Yolov8,内存更小、效率更高,秒杀Adam(W)
  • 5年测试经验,自动化都不会?月薪11K都难拿....
  • 低代码平台名声臭,用起来却真香——60%开发者不敢承认
  • PHP 的代码简洁之道(Clean Code PHP)
  • delphi在两个窗口间用消息通讯
  • 如何高效提高倾斜摄影三维模型顶层合并的技术方法分析
  • 【科普】PCB为什么常用50Ω阻抗?6大原因
  • Linux嵌入式uboot使用tftp网络启动加载zImage、设备树