首页 > 编程语言 >水母搜索算法(JS)优化长短期记忆神经网络原理及Matlab代码

水母搜索算法(JS)优化长短期记忆神经网络原理及Matlab代码

时间:2024-09-22 09:48:46浏览次数:3  
标签:位置 长短期 搜索算法 JS 神经网络 水母 Matlab 适应度

目录

0 引言

1 数学模型

2 优化方式

3 Matlab代码

3.1 伪代码

3.2 JS主函数代码

3.2 JS-LSTM

4 视频讲解

0 引言

水母搜索算法(Jellyfish Search,JS)是由Jui-Sheng Chou在2020年基于水母搜索行为提出的群智能算法。该算法模拟水母搜索行为的包括它们的洋流跟随,它们在水母群中的运动(主动运动和被动运动),以及在这些运动之间切换的时间控制机制和群聚过程。

1 数学模型

JS算法模拟水母跟随洋流进行漂流及在漂流过程进行主动和被动的群体运动。

1)洋流位置更新:海洋中蕴含着大量的营养物质,这些物质会吸引水母。从而进行水母的位置更新。其数学模型如下:

洋流的方向是通过对每个水母到处于最佳位置的水母(适应度度量)所有向量进行平均:X*为目前位置适应度最佳位置,ec为决定吸引力的因素;μ是所有水母的平均位置

变形设置 df = ecμ,同时假设水母在所有的维度都是符合正态分布,故数学模型变化为:df是目前水母的最佳位置与所有水母的平均位置之差。β为分布系数,基于数值实验中的灵敏度分析结果(得到β = 3。

水母随洋流位置更新:X为水母位置

2)群体运动:在水母漂流群中,水母主要进行被动A型和主动B型进行全局搜索和局部开发问题寻优,更具时间控制机制来模拟,其数学模型如下:

式中t为当前迭代,Maxiter为最大迭代次数。

被动运动A型:A型运动是水母围绕其自身位置的运动进行全局搜索:

式中γ为水母灵敏度分析参数为0.1,ub和lb为问题维度边界

主动运动B型:B型可以看作水母个体根据食物数量(适应度)进行互相迁移,当水母i处食物数量大于水母j处,则水母j向水母i移动,反之亦然。该阶段为局部开发阶段。

2 优化方式

前篇对长短期记忆神经网络(长短期记忆神经网络LSTM原理及matlab代码-CSDN博客)原理讲解,从长短期记忆神经网络matlab代码运算过程中,可以看到LSTM受多个超参数影响(隐藏层节点、学习率、分批量、正则化等等)。因此结合上述JS原理介绍,可以将长短期记忆神经网络的超参数作为水母种群位置,每一个种群位置对应长短期记忆神经网络的预测值,将这个预测值作为食物量适应度评估指标进行上述水母运动,从而更新更优的水母位置。

3 Matlab代码

3.1 伪代码

3.2 JS主函数代码

%% JS参数
% MaxIt 最大迭代
% popi 种群位置
% popCost 种群位置对应适应度
% nPop 种群大小
% VarMin,VarMax  问题维度边界范围
% SYD 适应度函数
% simplebounds 边界检测函数

%JS主函数代码
for it=1:MaxIt
    Meanvl=mean(popi,1);

    [value,index]=sort(popCost);
    BestSol=popi(index(1),:);
    BestCost=popCost(index(1));

    for i=1:nPop

        Ar=(1-it*((1)/MaxIt))*(2*rand-1);% 时间控制机制
        if abs(Ar)>=0.5
            beta = 3;
            % 洋流运动水母位置更新
            newsol = popi(i,:)+ rand(VarSize).*(BestSol - beta*rand*Meanvl);%Eq(11)

            newsol = simplebounds(newsol,VarMin,VarMax);
            newsolCost = SYD(newsol,net);
            net.trainParam.showWindow = 0;

            if newsolCost<popCost(i)
                popi(i,:) = newsol;
                popCost(i)=newsolCost;
                if popCost(i) < BestCost
                    BestCost=popCost(i);
                    BestSol = popi(i,:);
                end
            end
        else

           % 在水母群内部移动
            if rand<=(1-Ar)
                % 水母的方向
                j=i;
                while j==i
                    j=randperm(nPop,1);
                end
                Step = popi(i,:) - popi(j,:);%Eq(15)
                if popCost(j) < popCost(i)
                    Step = -Step; %Eq(15)
                end

                % 主动运动(B 型)的位置
                newsol = popi(i,:) + rand(VarSize).*Step;%Eq(16)
            else
                % 被动运动(A 型)的位置
                newsol = popi(i,:) + 0.1*(VarMax-VarMin)*rand; %Eq(12)
            end

            newsol = simplebounds(newsol, VarMin,VarMax);
            newsolCost = SYD(newsol,net);
            net.trainParam.showWindow = 0;
           
            if newsolCost<popCost(i)
                popi(i,:) = newsol;
                popCost(i)=newsolCost;
                if popCost(i) < BestCost
                    BestCost=popCost(i);
                    BestSol = popi(i,:);
                end
            end
        end
    end
    
    fbestvl(it)=BestCost;

end
u=BestSol;
fval=fbestvl(it);
end

3.2 JS-LSTM

1)时间序列:时间序列:水母搜索算法优化长短期记忆神经网络模型(JS-LSTM)

4 视频讲解

B站搜索:‘ 不想学习的陈成 ’

标签:位置,长短期,搜索算法,JS,神经网络,水母,Matlab,适应度
From: https://blog.csdn.net/m0_74389201/article/details/142093623

相关文章

  • 如何使用nodejs显示“Hello World”的教程
    安装Node.js打开浏览器:打开GoogleChrome或MicrosoftEdge。下载Node.js:访问Node.js网站。选择适合您的操作系统的最新版本,例如Windows64位。单击最新版本(例如版本2.46.0)下载安装程序。安装Node.js:下载完成后,打开安装程序文件。按照屏幕上显示的安装步骤进行操作。完......
  • 如何出售 Nextjs 代码并增加收入
    Next.js是一个被Web开发人员广泛使用的React框架,因为它能够构建高性能Web应用程序以及服务器端渲染和动态路由等功能。如果您是一位拥有Next.js经验的开发人员,您可以通过出售您创建的代码来利用这种专业知识。以下是一些出售Next.js代码并增加收入的有效方法。在市场上......
  • 如何在 ReactJS 中创建可重用的 Button 组件
    按钮无疑是任何react应用程序中重要的ui组件,按钮可能用于提交表单或打开新页面等场景。您可以在react.js中构建可重用的按钮组件,您可以在应用程序的不同部分中使用它们。因此,维护您的应用程序将变得更加简单,并且您的代码将保持dry(不要重复)。您必须首先在组件文件夹中创建一......
  • js逆向实战之Bitcoin浏览器交易x-apikey参数加密逻辑
    声明:本篇文章仅用于知识分享实战网址:https://www.oklink.com/zh-hans/btc/tx-list分析过程访问网址,会触发一条数据包。看它的响应内容。就是我们想要获取的内容,找到数据了。可以先尝试直接去访问该url,看能否获取数据。importrequestsurl="https://www.oklink.com/a......
  • 如何使用 Electronjs 创建跨平台桌面应用程序
    在当今的软件开发环境中,构建跨不同操作系统无缝运行的应用程序比以往任何时候都更加重要。无论您的目标是windows、macos还是linux,electron.js都提供了一个强大的框架,可以使用熟悉的web技术创建桌面应用程序。本文将指导您完成设置electron环境、创建应用程序ui、与node......
  • 在 WordPress 中排队 CSS 和 JS 脚本以获得更好的性能
    wordpress是开源软件–用户可以按照自己的意愿安装、修改和分发它。由于每个人都可以访问源代码,数百万wordpress专家和开发人员可以创建工具和扩展并与公众分享。让我们看看如何将css和js文件加入到你的wordpress项目中。大多数新开发者都喜欢,里面“header.php”<ti......
  • 在当今时代使用 Nextjs:现代 Web 开发框架
    在当今快速发展的数字环境中,Web开发变得比以往更加复杂和动态。开发人员不断寻找能够简化工作流程、提高性能和增强用户体验的工具。在各种可用的框架中,Next.js已成为开发人员的最佳选择,因其易用性、灵活性和强大的功能而广受欢迎。Next.js构建于React之上,通过提供用于构建......
  • 最新毕设-Node.js-游戏网站-031726(免费领项目)可做计算机毕业设计JAVA、PHP、爬虫、APP
    游戏网站的设计摘 要基于网络游戏的蓬勃发展,游戏网站发挥着吸引玩家和提高玩家之间的互动性的重要作用,因而,建设了一个以游戏为中心的游戏官网。 该游戏提供了一个大型的玩家交流互动平台,包括用户管理、游戏社区、游戏信息、分类信息、游戏资讯、论坛分类列表、新闻分类列......
  • note.js与vue.js常用基本命令
    Note.js基本命令1、安装Node.js包npminstall<package-name>2、全局安装包npminstall-g<package-name>3、查看已安装的包npmlist4、初始化项目并创建package.json文件npminit5、更新包到最新版本npmupdate<package-name>6、卸载包npmuninstall<pack......
  • 变化检测从 Angular zonejs) 到 Angular (provideExperimentalZonelessChangeDetectio
    更改检测是angular的一个基本方面,负责识别和更新dom中因数据修改或用户交互而发生更改的部分。此过程可确保ui与底层数据保持一致,从而增强用户体验和应用程序性能。zone.js的作用从历史上看,angular一直依赖zone.js来实现其变更检测机制。zone.js是一个拦截异步......