MATLAB实现磷虾算法(Krill herd algorithm)

1.算法介绍

磷虾算法(Krill Herd Algorithm, KH)是一种基于生物启发的优化算法,其原理模拟了南极磷虾(Euphausia superba)群体的聚集行为。该算法旨在通过模拟磷虾个体间的相互作用、觅食行为和随机扩散,来解决优化问题。

磷虾算法的详细步骤和公式如下:

算法步骤:

(1)设置算法参数

(2)初始化:设置磷虾个体的初始位置和数量,以及算法参数如迭代次数、惯性权重等。

(3)计算磷虾的目标值:根据磷虾个体的位置计算对应的目标函数。

(4)更新位置:根据三个主要因素更新磷虾个体的位置:诱导运动(根据其他磷虾的位置)、觅食活动和物理扩散。

位置更新公式:

dX_i/dt = N_i + F_i + D_i

其中,dX_i/dt表示第 i 个磷虾个体位置随时间的变化率,N_i 是由其他磷虾个体引起的运动,F_i 是觅食运动,D_i 是物理扩散。

诱导运动

公式:

N^{new}_i = N_{max} * \alpha_i + x_n * N^{old}_i

\alpha_i=\alpha^{local}_i+\alpha^{target}_i

\alpha^{local}_i=\sum_{j=1}^{NN} \widehat{K}_{ij} \widehat{X}_{ij}

\widehat{X_{ij}}=\frac{X_{j}-X_{i}}{\left | X_{j}-X_{i} \right |+\varepsilon }

\widehat{K}_{ij}=\frac{K_{i}-K_{j}}{K^{worst}-K^{best}}

d_{s,i}=\frac{1}{5}\sum^N_{j=1}\left | X_{i}-X_{j} \right |

\alpha^{target}_i=C_{best}\widehat{K}_{i,best}\widehat{X}_{i,best}

C_{best}=2(rand+\frac{I}{I_{max}})

其中,N_{max}是最大诱导速度,a_i是方向向量,由局部群密度效应、目标群密度效应和排斥群密度效应决定,x_n 是惯性权重,N^{old}_i是上一次诱导运动,NN 是邻居数量,K_iK_j 分别是第 i 个和第 j 个磷虾的适应度值,X_iX_j 是它们的位置,ε 是一个小正数以避免分母为零。

觅食运动

F_{i}=V_f \beta_i+\omega_f F^{old}_i

其中

\beta_i=\beta^{food}_i+\beta^{best}_i

物理扩散

D_i=D^{max}\delta

主要流程如下:

2.MATLAB主程序如下:

完整代码: https://download.csdn.net/download/corn1949/89418674

3.程序结果


rumtime_kha =

                 1.9101315

磷虾算法优化得到的最优目标函数值

bestValue_kha =

      1.03716924579613e-05

磷虾算法优化得到的最优编码

bestChrom_kha =

  1 至 6 列

         0.499313168661702          0.49884562505192         0.499234054115937         0.497372403420735         0.499495870054095          0.50041813112517

  7 至 10 列

         0.499743261957305         0.499707162251561         0.500703479851935         0.500030064223029

>> 

 完整代码: https://download.csdn.net/download/corn1949/89418674

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/25832.shtml

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

相关文章

glm-4-9b-chat-1m模型结构解读

glm-4-9b-chat-1m模型结构解读 模型代码文件下载 glm-4-9b-chat-1m模型总体结构 ChatGLMForConditionalGeneration((transformer): ChatGLMModel((embedding): Embedding((word_embeddings): Embedding(151552, 4096))(rotary_pos_emb): RotaryEmbedding()(encoder): GLMTran…

No ‘ChromeSansMM’ font 错误解决

No ‘ChromeSansMM’ font 错误解决 错误 class com.spire.ms.System.Exception: No ChromeSansMM font found! 背景 在使用 Spire.PDF 库处理 PDF 文件时,遇到了以下错误: class com.spire.ms.System.Exception: No ChromeSansMM font found! com.…

L2-002 链表去重(C++)

给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后…

【数据结构与算法 | 堆篇】力扣295

1. 力扣295 (1). 题 中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。 实现 MedianFinder 类: MedianFinder() …

10进制与二、八、十六进制的转换

x进制转10进制 1、如八进制数123,通过把每一位数字和8的指数级进行相乘 1 * 8^2 2 * 8^1 3 * 8^01 * 64 2 * 8 3 * 164 16 383 2、十六进制1A3 1 * 16^2 A(即10) * 16^1 3 * 16^01 * 256 10 * 16 3 * 1256 160 3419 3、二进制1010 1 * 2^3 0 * 2…

基于机器学习的锂电池RUL SOH预测

数据集为NASA锂电池数据集。 import datetimeimport numpy as npimport pandas as pdfrom scipy.io import loadmatfrom sklearn.preprocessing import MinMaxScalerfrom sklearn.metrics import mean_squared_errorfrom sklearn import metricsimport matplotlib.pyplot as p…

C# MES通信从入门到精通(11)——C#如何使用Json字符串

前言 我们在开发上位机软件的过程中,经常需要和Mes系统进行数据交互,并且最常用的数据格式是Json,本文就是详细介绍Json格式的类型,以及我们在与mes系统进行交互时如何组织Json数据。 1、在C#中如何调用Json 在C#中调用Json相关…

【Golang】Go语言中defer与return的精妙交织:探索延迟执行与返回顺序的微妙关系

【Golang】Go语言中defer与return的精妙交织:探索延迟执行与返回顺序的微妙关系 大家好 我是寸铁👊 总结了一篇defer 和 return 返回值 的执行顺序探讨的文章✨ 喜欢的小伙伴可以点点关注 💝 前言 在Go语言中,defer 和return是两…

二进制文件的膨胀策略和使用 debloat 消除膨胀测试

在恶意软件的分析中有的 Windows 可执行文件(PE 文件)会通过膨胀策略来绕过防病毒一些防病毒的检查,比如上传云进行分析,因为文件太大了所以无法进行一些防病毒分析。一般的可执行文件有很多的膨胀策略,一般简单的膨胀…

ovs网络配置命令

ovs 查看 OVS 版本查看当前配置的所有交换机查看交换机的详细信息创建和删除桥接添加和删除端口配置端口 Open vSwitch是一种生产质量的多层虚拟交换机,根据开源Apache 2.0许可证进行许可。它旨在通过编程扩展实现大规模网络自动化,同时仍然支持标准管理…

NettyのBufferChannelSelector用法

这一篇介绍Buffer&Channel&Selector的常见API使用案例 1、Buffer 1.1、从Buffe中读取/写入 以ByteBuffer为例。Buffer需要和Channel结合使用(在上一篇中提到,通道是数据传输的载体,缓冲区是数据的临时存储区)。 那么如何…

OSFP 1类LSA详解

概述 上图为1类LSA的实际报文结构 , 在开始之前一定需要说明 , 1类LSA是OSPF中最复杂的LSA类型 , 在LSA头部的文章中详细介绍了 LS Type / Link State ID / Adv Router 3种头部字段 , 在1类LSA的主体内容中还存在类似的字段十分的相似 , 很多网络从业者难以理解的点就在于此 , …

orbslam2代码解读(2):tracking跟踪线程

书接上回,mpTracker->GrabImageMonocular(im,timestamp)函数处理过程: 如果图像是彩色图,就转成灰度图如果当前帧是初始化的帧,那么在构建Frame的时候,提取orb特征点数量为正常的两倍(目的就是能够在初…

vue3中$attrs与inheritAttrs的使用

Vue 3 引入了一些新特性和改进,其中之一就是对 $attrs 的处理方式。在 Vue 2 中,$attrs 包含了父组件传递给子组件的属性,但不包括子组件已经声明的 props。在 Vue 3 中,$attrs 的行为有所变化: 默认情况下&#xff0…

14. RTCP 协议

RTCP 协议概述 RTCP(Real-time Transport Control Protocol 或 RTP Control Protocol 或简写 RTCP),实时传输控制协议,是实时传输协议(RTP)的一个姐妹协议。 注:RTP 协议和 RTP 控制协议&#…

Postgresql源码(135)生成执行计划——Var的调整set_plan_references

1 总结 set_plan_references主要有两个功能: 拉平:生成拉平后的RTE列表(add_rtes_to_flat_rtable)。调整:调整前每一层计划中varno的引用都是相对于本层RTE的偏移量。放在一个整体计划后,需要指向一个统一…

Material-UI create-react-app 创建移动端 H5

当使用 create-react-app 和 Material-UI 来创建移动端 H5 页面时,你需要考虑几个关键点来确保页面在移动设备上表现良好。以下是一些步骤和最佳实践: 创建 React 项目 使用 create-react-app 快速创建一个新的 React 项目: npx create-react-app my-mobile-app cd my-mobil…

京东一面测开(KPI)

京东一面测开凉经(笔试ak) 3.8 面试官:你很优秀啊,你不用谦虚 没问技术相关,问了如何设计测试用例步骤一些理论: 什么是软件测试?其目的是什么? 软件测试有哪些类型?请列…

架构设计-全局异常处理器404、405的问题

java web 项目中经常会遇到异常处理的问题,普遍的做法是使用全局异常处理,这样做有以下几种原因: 集中化处理:全局异常处理允许你在一个集中的地方处理整个应用程序中的异常。这有助于减少代码重复,因为你不必在每个可…

GCROOT节点有哪些?

GCROOT节点在Java虚拟机中扮演着判断对象是否存活的起点角色。它们主要包括以下几种类型: 虚拟机栈中引用的对象: 这通常指的是各个线程被调用的方法堆栈中使用到的参数、局部变量、临时变量等。这些对象在虚拟机栈中被直接引用,因此它们及其…