智能优化算法:塘鹅优化算法-附代码

news2024/10/7 10:24:42

智能优化算法:塘鹅优化算法

文章目录

  • 智能优化算法:塘鹅优化算法
    • 1.塘鹅优化算法
      • 1.1种群初始化
      • 1.2探索阶段
      • 1.3开发阶段
    • 2.实验结果
    • 3.参考文献
    • 4.Matlab
    • 5.python

摘要:塘 鹅 优 化 算 法(Gannet Optimization Algorithm, GOA) 是 2022 年 3 月 Pan 等根据塘的捕食行为提出的一种群优化算法。具有寻优能力强,收敛速度快等特点。

1.塘鹅优化算法

1.1种群初始化

在 GOA 中, 初始种群有 N N N 只塘我身, 第 i i i 只塘 我岛 X i X_i Xi 的位置, 如公式 (1) 所示:
X i = ( x i 1 , x i 2 , ⋯   , x i D ) , i = 1 , 2 , ⋯   , N , (1) X_i=\left(x_{i 1}, x_{i 2}, \cdots, x_{i D}\right), i=1,2, \cdots, N,\tag{1} Xi=(xi1,xi2,,xiD),i=1,2,,N,(1)
其中 x i j = r 1 × ( U B j − L B j ) + L B j , i = 1 , 2 , ⋯   , N , j = x_{i j}=r_1 \times\left(U B_j-L B_j\right)+L B_j, i=1,2, \cdots, N, j= xij=r1×(UBjLBj)+LBj,i=1,2,,N,j= 1 , 2 , ⋯   , D 1,2, \cdots, D 1,2,,D, 表示第 i i i 只塘鹅在第 j j j 维的位置, D D D 是 每只塘我的维数, r 1 r_1 r1 [ 0 , 1 ] [0,1] [0,1] 内的随机数, U B j U B_j UBj L B j L B_j LBj 分别是每只塘找的第 j j j 维的上界和下界。
此外, 定义一个存储矩阵 M X M X MX, 用来存放每 次迭代的过程中塘鹅个体的位置。在迭代的过 程中, 如果此 M X i M X_i MXi 的值优于当前 X i X_i Xi 的值, 那么 个体 X i X_i Xi 的值被 M X i M X_i MXi 的值替换。接下来,采用一 个 [ 0 , 1 ] [0,1] [0,1] 的随机数 r r r, 当 r < 0.5 r<0.5 r<0.5 时,塘鹅处于探 索阶段; 当 r ⩾ 0.5 r \geqslant 0.5 r0.5 时,塘我处于开发阶段。

1.2探索阶段

塘鹅在空中发现猎物时, 根据猎物在水中 的深浅采用 U \mathrm{U} U 型潜水方式和 V \mathrm{V} V 型潜水方式进 行捕捉猎物。当猎物在比较深的位置时, 塘鹅 以 U 型潜水方式潜水,如公式 (2) 所示:
a = 2 × cos ⁡ ( 2 × π × r 2 ) × t 1 , (2) a=2 \times \cos \left(2 \times \pi \times r_2\right) \times t_1,\tag{2} a=2×cos(2×π×r2)×t1,(2)
当猎物在比较浅的位置时, 塘鹅以 V \mathrm{V} V 型潜水方 式潜水,如公式 (3) 所示:
其中
V ( x ) = { − 1 π ⋅ x + 1 , x ∈ ( 0 , π ) 1 π × x − 1 , x ∈ ( π , 2 π ) , t 1 = 1 − t T max  (3) V(x)=\left\{\begin{array}{l}-\frac{1}{\pi} \cdot x+1, x \in(0, \pi) \\ \frac{1}{\pi} \times x-1, x \in(\pi, 2 \pi)\end{array}, t_1=1-\frac{t}{T_{\text {max }}}\right.\tag{3} V(x)={π1x+1,x(0,π)π1×x1,x(π,2π),t1=1Tmax t(3)
, 式中 t t t 为当前迭代次数, T max  T_{\text {max }} Tmax  为最大迭代 次数, r 2 r_2 r2 r 3 r_3 r3 均为 [ 0 , 1 ] [0,1] [0,1] 的随机数。
引人一个随机变量 q q q 随机选择一种塘鹅的 位置更新,塘鹅的位置更新方式如下:
M X i ( t + 1 ) = { X i ( t ) + u 1 + u 2 , q ⩾ 0.5 X i ( t ) + v 1 + v 2 , q < 0.5 (4) M X_i(t+1)=\left\{\begin{array}{l} X_i(t)+u_1+u_2, q \geqslant 0.5 \\ X_i(t)+v_1+v_2, q<0.5 \end{array}\right.\tag{4} MXi(t+1)={Xi(t)+u1+u2,q0.5Xi(t)+v1+v2,q<0.5(4)
式 (4) 中 u 2 = A × ( X i ( t ) − X r ( t ) ) , v 2 = B × u_2=A \times\left(X_i(t)-X_r(t)\right), v_2=B \times u2=A×(Xi(t)Xr(t)),v2=B× ( X i ( t ) − X m ( t ) ) , A = ( 2 × r 4 − 1 ) × a , B = ( 2 × \left(X_i(t)-X_m(t)\right), \quad A=\left(2 \times r_4-1\right) \times a, \quad B=(2 \times (Xi(t)Xm(t)),A=(2×r41)×a,B=(2× r 5 − 1 ) × b \left.r_5-1\right) \times b r51)×b, 其中 r 4 r_4 r4 r 5 r_5 r5 均为 [ 0 , 1 ] [0,1] [0,1] 的随机数, u 1 u_1 u1 [ − a , a ] [-a, a] [a,a] 之间的随机数, v 1 v_1 v1 [ − b , b ] [-b, b] [b,b] 之间的 随机数, X i ( t ) X_i(t) Xi(t) 是第 i i i 个塘我鸟个体在第 t t t 次迭代时 的位置, X i ( t ) X_i(t) Xi(t) 是当前迭代中随机选择的塘我鸟个 体的位置, X m ( t ) X_m(t) Xm(t) 是指当前迭代中所有个体位置 的平均值, 其计算公式为: X m ( t ) = X_m(t)= Xm(t)= 1 N ∑ i = 1 N X i ( t ) \frac{1}{N} \sum_{i=1}^N X_i(t) N1i=1NXi(t)

1.3开发阶段

当塘我囲人水中之后, 其捕捉能力 C C C 大于 等于 c c c, 则会突然旋转去捕捉鱼; 其捕捉能力 C C C 小于 c c c, 则会放弃捕鱼随机游行, 采用Levy 飞行 模型模拟塘鹅游行, 其位置更新如下:
M X i ( t + 1 ) = { t 1 × δ × ( X i ( t ) − X Best  ( t ) ) + X i ( t ) , C ⩾ c X Best  ( t ) − ( X i ( t ) − X Best  ( t ) ) × P × t 1 , C < c (5) \begin{aligned} & M X_i(t+1)= \\ & \begin{cases}t_1 \times \delta \times\left(X_i(t)-X_{\text {Best }}(t)\right)+X_i(t), & C \geqslant c \\ X_{\text {Best }}(t)-\left(X_i(t)-X_{\text {Best }}(t)\right) \times P \times t_1, & C<c\end{cases} \\ & \end{aligned}\tag{5} MXi(t+1)={t1×δ×(Xi(t)XBest (t))+Xi(t),XBest (t)(Xi(t)XBest (t))×P×t1,CcC<c(5)
式 (5) 中, t 1 = 1 − t T max ⁡ , C = 1 R × t 2 , t 2 = 1 + t T max ⁡ t_1=1-\frac{t}{T_{\max }}, C=\frac{1}{R \times t_2}, t_2=1+\frac{t}{T_{\max }} t1=1Tmaxt,C=R×t21,t2=1+Tmaxt,
R = M × v e l 2 L , L = 0.2 + ( 2 − 0.2 ) × r 6 , δ = C × R=\frac{M \times v_{\mathrm{e}} l^2}{L}, \quad L=0.2+(2-0.2) \times r_6, \quad \delta=C \times R=LM×vel2,L=0.2+(20.2)×r6,δ=C×
∣ X i ( t ) − X Best  ( t ) ∣ , P = Levy ⁡ ( D ) , Levy ⁡ ( D ) = 0.01 × \left|X_i(t)-X_{\text {Best }}(t)\right|, P=\operatorname{Levy}(D), \operatorname{Levy}(D)=0.01 \times Xi(t)XBest (t),P=Levy(D),Levy(D)=0.01×
μ × σ ∣ v ∣ 1 β , σ = ( Γ ( 1 + β ) × sin ⁡ ( π β 2 ) Γ ( 1 + β 2 ) × β × 2 ( β − 1 2 ) ) 1 β \frac{\mu \times \sigma}{|v|^{\frac{1}{\beta}}}, \sigma=\left(\frac{\Gamma(1+\beta) \times \sin \left(\frac{\pi \beta}{2}\right)}{\Gamma\left(\frac{1+\beta}{2}\right) \times \beta \times 2^{\left(\frac{\beta-1}{2}\right)}}\right)^{\frac{1}{\beta}} vβ1μ×σ,σ=(Γ(21+β)×β×2(2β1)Γ(1+β)×sin(2πβ))β1, 其中 , r 6 r_6 r6
[ 0 , 1 ] [0,1] [0,1] 的随机数, M = 2.5   k g M=2.5 \mathrm{~kg} M=2.5 kg 是塘我的质量, V e l = 1.5   m / s V e l=1.5 \mathrm{~m} / \mathrm{s} Vel=1.5 m/s 为塘鹅的速度, c c c 是常数, 经过多 次实验取 c = 0.2 , β = 1.5 , X Best  ( t ) c=0.2, \beta=1.5, X_{\text {Best }}(t) c=0.2,β=1.5,XBest (t) 是指当前种 群中表现最好的个体, μ \mu μ σ \sigma σ [ 0 , 1 ] [0,1] [0,1] 内的随 机数。

2.实验结果

在这里插入图片描述

3.参考文献

[1]祁慧玲,胡红萍,白艳萍等.基于改进塘鹅算法优化BP神经网络的新冠疫情预测[J/OL].山西大学学报(自然科学版):1-10[2023-07-23].DOI:10.13451/j.sxu.ns.2023025.

4.Matlab

5.python

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

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

相关文章

Flutter、Android Studio 安装详细步骤以及常错解决

目录 一、前言 二、介绍 三、安装 (一&#xff09;、安装Flutter SDK 1&#xff09;双击文件夹&#xff0c;打开之后就是这样&#xff1a;​编辑 2&#xff09;双击此文件&#xff1a;​编辑 3&#xff09;此过程问题&#xff1a; (二&#xff09;、配置 Flutter SDK 环…

概率论和随机过程的学习和整理--番外16,N合1的合成问题的求平均个数,次数,阶数

目录 1 问题 2 用条件期望&#xff0c;求合成的次数 2.1 思路1 2.2 思路2 3 用条件期望&#xff0c;求合成的个数 3.1 令X表示用材料1往上合成时&#xff0c;合成材料2的个数 3.2 令Y表示用材料1往上合成时&#xff0c;合成材料3的个数 4 用条件期望&#xff0c;求合成…

【100天精通python】Day10:函数的创建和调用,参数传递,返回值,变量作用域以及匿名函数

目录 1. 函数的创建和调用 1.1 函数的创建 1.2 调用函数 2 参数传递 2.1 传递方式 2.2 形参和实参 2.3 位置参数 2.4 关键字参数 2.5 可变参数 2.6 为参数设置默认值 3 返回值 4 变量的作用域 4.1 局部变量 4.2 嵌套变量 4.3 全局变量 5 匿名函数&#xff0…

WAF/Web应用安全(拦截恶意非法请求)

Web 应用防火墙&#xff08;Web Application Firewall&#xff0c; WAF&#xff09;通过对 HTTP(S) 请求进行检测&#xff0c;识别并阻断 SQL 注入、跨站脚本攻击、跨站请求伪造等攻击&#xff0c;保护 Web 服务安全稳定。 Web 安全是所有互联网应用必须具备的功能&#xff0c…

OpenCV for Python 实战(一):获取图片拍摄GPS地址并自动添加水印

Hello 我们在OpenCV每天的基础博客当中已经更新了很多了&#xff0c;那么今天我们就来结合前几天的内容。做一个获取属性然后添加对应属性的水印。那让我们赶快开始吧~ 文章目录 图片EXIFPython 获取EXIFexifread库使用方法转换成文字地址 添加水印cv2.putText() 每日总结 图片…

数据可视化——绘制带有时间线的柱状图

文章目录 前言如何绘制柱状图添加时间线根据提供的数据绘制动态柱状图读取并删除无用数据将数据转换为字典创建柱状图并添加到时间线中配置选项并生成带有数据的折线图 前言 我们已经学习了使用 pyecharts 包中的模块和相应的方法绘制了折线图和地图&#xff0c;那么今天我将为…

Visual Studio Code安装详细教程

win电脑可以打开该网址 vs官方下载网站 点击这里免费下载 下载下来是一个安装程序&#xff0c;直接以管理员身份运行即可 我同意安装&#xff0c;然后选择D盘的一个空间进行安装 然后点击下一步 安装如图所示勾选&#xff0c;点击下一步 点击安装 等待安装完成即可 打开…

原神盲盒风格:AI绘画Stable Diffusion原神人物公仔实操:核心tag+lora模型汇总

本教程收集于&#xff1a;AIGC从入门到精通教程汇总 在这篇文章中&#xff0c;我们将深入探讨原神盲盒的艺术风格&#xff0c;以及如何运用AI绘画技术&#xff08;Stable Diffusion&#xff09;——来创造原神角色公仔。我们将通过实践操作让读者更好地理解这种技术&#xff0…

Vue中TodoLists案例_底部交互

与上一篇Vue中TodoList案例_底部统计有俩个文件变化了 App.vue&#xff1a;定义了一个方法checkAllTodo&#xff0c;实现全选和取消全选&#xff0c;并将方法传给儿子组件MyFooter <template><div id"root"><div class"todo-container">…

数学建模学习(4):TOPSIS 综合评价模型及编程实战

一、数据总览 需求&#xff1a;我们需要对各个银行进行评价&#xff0c;A-G为银行的各个指标&#xff0c;下面是银行的数据&#xff1a; 二、代码逐行实现 清空代码和变量的指令 clear;clc; 层次分析法 每一行代表一个对象的指标评分 p [8,7,6,8;7,8,8,7];%每一行代表一个…

JDK、JRE、JVM三者之间的关系

总结 JDK包含JRE&#xff0c;JRE包含JVM。 JDK (Java Development Kit)----Java开发工具包&#xff0c;用于Java程序的开发。 JRE (Java Runtime Environment)----Java运行时环境&#xff0c;只能运行.class文件&#xff0c;不能编译。 JVM (Java Virtual Machine)----Java虚拟…

解决 前端显示后端返回的null值为 1的问题

一 、问题描述 一个产品信息&#xff0c;有一个输入框的数据是后端返回回显出来的 但是后端返回这个字段时候&#xff0c;这个字段为空值&#xff0c;在后端就根本在data中没有返回这个字段任何信息 如返回的data {name : 123,age: 18} 因为age 为空&#xff0c;实际后端返回…

云原生|kubernetes|kubernetes集群部署神器kubekey安装部署高可用k8s集群(半离线形式)

前言&#xff1a; 云原生|kubernetes|kubernetes集群部署神器kubekey的初步使用&#xff08;centos7下的kubekey使用&#xff09;_晚风_END的博客-CSDN博客 前面利用kubekey部署了一个简单的非高可用&#xff0c;etcd单实例的kubernetes集群&#xff0c;经过研究&#xff0c;…

pt19盒模型布局

CSS 盒模型 内容尺寸overflow(占用内容框) 一般情况下&#xff0c;为元素设置width/height&#xff0c;指定的是内容框的大小 内容溢出&#xff1a;内容超出元素的尺寸范围&#xff0c;称为溢出。默认情况下溢出部分仍然可见&#xff0c;可以使用overflow调整溢出部分的显示…

【枚举】CF1833 D

Problem - D - Codeforces 题意&#xff1a; 给定一个序列&#xff0c;让你找一个区间&#xff0c;翻转区间内的数&#xff0c;交换前缀和后缀&#xff0c;让结果数组的字典序最大 思路&#xff1a; 观察样例可知&#xff0c;r是可以直接确定的&#xff0c;l是不确定的&…

使用Docker构建Nginx镜像并部署Web应用

文章目录 1. 简介2. 准备工作3. 编写Dockerfile4. 编写nginx.conf5. 构建镜像6. 查看镜像是否构建成功7. 运行容器8. 访问Web应用9. 总结 1. 简介 Docker是一个开源的容器化平台&#xff0c;它可以帮助我们快速构建、发布和运行应用程序&#xff0c;实现应用程序的环境隔离和依…

DevOps初识

博主入职了&#xff0c;正在学习一些在学校没有接触过的东西&#xff0c;在此进行记录~~~~ 背景 随着软件发布迭代的频率越来越高&#xff0c;传统的「瀑布型」&#xff08;开发—测试—发布&#xff09;模式已经不能满足快速交付的需求。打破开发和运维的壁垒&#xff0c;聪…

K8S初级入门系列之三-Pod的基本概念和操作

一、前言 Pod的原意是豌豆荚的意思&#xff0c;一个豆荚里面包含了很多豆子。在K8S中&#xff0c;Pod也是类似的意思&#xff0c;只不过这里的豆子就是容器。在K8S初级入门系列之一-概述中&#xff0c;我们对Pod有个初步的了解。 1、Pod是K8S编排和调度的最小基础单元。 了解容…

ChatGPT助力校招----面试问题分享(十二)

1 ChatGPT每日一题&#xff1a;运算放大器与比较器的区别 问题&#xff1a;运算放大器与比较器的区别 ChatGPT&#xff1a;运算放大器和比较器都是电子电路中常用的模拟电路元件&#xff0c;但它们的设计和应用略有不同。下面是两者的主要区别&#xff1a; 功能不同&#xf…

微服务——Nacos配置管理

目录 Nacos配置管理——实现配置管理 配置管理实践 Nacos配置管理——微服务配置拉取 Nacos配置管理——配置热更新 方式一: ​编辑 方式二(推荐方式): Nacos配置管理——多环境配置共享 优先级问题 Nacos配置管理——nacos集群搭建 总结​编辑 Nacos配置管理——实现配置管…