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

news2024/11/14 19:52:41

    目录

💥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:nPop
    pop(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:MaxIt
    
    fla_params.BestSol = BestSol;
​
    % Initialize Memeplexes Array
    Memeplex = cell(nMemeplex, 1);
    
    % Form Memeplexes and Run FLA
    for j = 1:nMemeplex
        % Memeplex Formation
        Memeplex{j} = pop(I(j, :));
        
        % Run FLA
        Memeplex{j} = RunFLA(Memeplex{j}, fla_params);
        
        % Insert Updated Memeplex into Population
        pop(I(j, :)) = Memeplex{j};
    end
    
    % Sort Population
    pop = SortPopulation(pop);
    
    % Update Best Solution Ever Found
    BestSol = pop(1);
    
    % Store Best Cost Ever Found
    BestCosts(it) = BestSol.Cost;
    
    % Show Iteration Information
    disp(['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.coloradmin.cn/o/447273.html

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

相关文章

android中线程池的选择

线程池是把一个或多个线程通过统一的方式进行调度和重复使用的技术。 避免了因为线程过多而带来使用上的开销。 在安卓开发中,为了更好的性能体验,我们在选择线程池的时候,需要从具体需求来考虑,主要考虑以下几方面: …

计算机类专业的普通校招生毕业如何“卷”一份好工作?

毕业差不多两年的校招生有感 一、为什么写这篇文章?二、我 → 一名普通的校招生前身三、我 → 一名普通的校招生养成四、校招如何拿到offer?五、总结 一、为什么写这篇文章? 一开始我写CSDN是为了记录自己学习技术的小日记,小总结…

JavaScript运算符与表达式

目录 一、 二、|| 三、??与?. ?? ?. 四、... 五、[] {} [] {} 一、 严格相等运算符,用作逻辑判断 1 1 // 返回 true 1 1 // 返回 true,会先将右侧的字符串转为数字,再做比较 1 1 // 返回 false,类型不等…

每日学术速递4.22

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Reference-based Image Composition with Sketch via Structure-aware Diffusion Model 标题:通过结构感知扩散模型与草图进行基于参考的图像合成 作者:Kang…

PDF转PPT:省时省力的高效方式

PDF和PPT是日常工作和学习中常见的文件格式,但是它们的使用场景不同,很多时候需要将PDF文件转换为PPT文件才能更好地展示内容。本文将介绍如何使用PDF转PPT工具来实现快速转换,省时省力。 一、为什么需要将PDF文件转换为PPT文件 1.PPT文件更…

English Learning - L2-15 英音地道语音语调 语调四步法 2023.04.17 周一

English Learning - L2-15 英音地道语音语调 语调 2023.04.17 周一 语调概念和汉语拼音对比 语音语调四步法语调练习意群划分重音重中之重语调的选择 语调的含义 语调概念 广义:语音技巧,连读,失去爆破,音同化,还有平…

如何利用AI技术实现高品质的文字转语音效果

人们越来越依赖语音技术进行交流和获取信息。语音技术可以提高工作效率和舒适度,减轻眼睛疲劳和阅读负担。在数字化时代,AI技术已经能够帮助我们实现高品质的文字转语音效果。下面我们将介绍一些方法,以帮助您更好地利用AI技术实现高品质的文…

Vue.js过滤器filters

目录 一、局部过滤器 二、全局过滤器 三、过滤器串联 四、过滤器接收多个参数 Vue.js允许自定义过滤器,过滤器的作用可被用于一些常见的文本格式化(也就是修饰文本,但是文本内容不会改变) 过滤器可以用在两个地方&#xff1a…

微信小程序开发详细步骤是什么?

微信小程序开发只需要三步,分别是注册小程序,编辑设计小程序内容和一键发布小程序zlzwgz0127。 这篇回答不介绍写代码开发小程序,因为更多人是不懂代码的,所以推荐用第三方平台开发小程序zlzwgz0127。 在开始制作小程序之前&#…

Linux基础—深入理解Linux文件系统

Linux基础—深入理解Linux文件系统与日志分析 一、inode 与 block详解1.inode 和 block 概述2.inode的内容3.inode的大小4.inode的特殊作用5.inode 的号码6.查看文件的inode 号码7.inode 耗尽故障处理 二、恢复误删除的文件1.案例:恢复EXT类型的文件2.案例&#xff…

qt中信号和槽机制

文章目录 信号与槽机制实现 点击按钮 关闭窗口的案例 自定义信号槽自定义信号自定义槽函数触发自定义的信号案例:请老师吃饭 断开信号当槽函数遇到重载的时候拓展 信号与槽机制 connect(信号的发送者, 发送的具体信号,信号的接受者&#xff0…

SpringAop详解汇总

文章目录 近期想法什么是AOPSpringAOP与AspectjSpringAOP体系概述概念详解连接点- Jointpoint切入点- Pointcut通知- Advice切面- Aspect织入- Weaving 实现原理—动态代理JDK动态代理描述原理代码示例注意执行结果 优点缺点 CGLib动态代理描述原理代码示例注意执行结果 优点缺…

【UITableViewCell单元格重用补充 Objective-C语言】

一、咱们再把刚才说的UITableViewCell单元格重用的思路再给大家捋一下 1.咱们刚才说的这个单元格重用就是,当我们滚动的时候,这里给大家简单画一下, 2.就是滚动的时候,当把这个最上面的单元格滚完毕以后,把这个单元格放到缓存池里面, 3.给这个单元格要起一个ID,给它做一…

阿里云部署Stable Diffusion

系列文章目录 本地部署Stable Diffusion教程,亲测可以安装成功 Stable Diffusion界面参数及模型使用 谷歌Colab云端部署Stable Diffusion 进行绘图 文章目录 系列文章目录前言一、AIGC是什么?二、操作步骤1.资源准备-零元开通试用套餐2.创建应用3.输入…

使用matlab基于神经网络进行光束选择

一、前言 此示例说明如何使用神经网络来减少光束选择任务中的开销。在此示例中,您仅使用接收方的位置,而不是通信信道的知识。您可以通过在选定的波束对中进行搜索来减少波束扫掠开销,而不是对所有波束对进行详尽的波束搜索K光束对。考虑到一…

R语言ggplot2 | 修改ggplot主题

📋文章目录 图形设置(settings)面板设置和背景(Panel&Background)坐标轴设置(Axis)标题和标签(Title&label)图例(Legend)副标题和图注&am…

静态和动态NAT,NAPT配置简介

一.类型介绍 二.功能 1.将大量的私有地址转换为公有地址(节约IP地址) 2.将一个IP地址转换为另一个IP地址(增加内部网络设备的安全性) 三.缺陷: 1.很消耗网络设备资源 2.破坏数据端到端传输,安全策略实施受限 四.配置命令 1.静态模式(…

押注零知识证明赛道,Conflux与ACCSEAL达成战略合作

Conflux与新兴零知识证明加速芯片制造公司ACCSEAL宣布达成战略合作,携手共同布局零知识证明(Zero-Knowledge Proof,简称ZKP)赛道,探索可应用于Conflux生态系统的最先进零知识证明技术和解决方案。早在2022年3月&#x…

白话文讲计算机视觉-第九讲-霍夫变换之直线检测

霍夫变换是1962年由霍夫发明的一种检测图像中直线、圆等形状的方法。后来1972年经过Richard O. Duda和Peter E. Hart改进,形成了今天的霍夫变换算法。 今天我就带大家了解了解霍夫变换之直线检测是怎么特么的一回事。 1.霍夫变换 说到霍夫变换,首先就得…

C++——类和对象

作者:几冬雪来 时间:2023年4月21日 内容:C类和对象 目录 前言: 1.inline函数: 2.auto(补充): 3.类: 4.类的访问限定符及封装: 5.封装:…