【智能算法】随机分形搜索算法(SFS)原理及实现

在这里插入图片描述

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
      • 2.2算法过程
    • 3.结果展示
    • 4.参考文献


1.背景

2015年,Salimi等人受到分形的扩散性质启发,提出了随机分形搜索算法(Stochastic Fractal Search ,SFS)。

2.算法原理

2.1算法思想

SFS通过引入分形的扩散过程作为其搜索机制,并选择高斯分布作为扩散过程的随机游走方式。然后,根据各个体的适应度函数值进行选择,并对各个个体的分量和位置进行更新,最终求得问题的最优解。
在这里插入图片描述

2.2算法过程

扩散过程

在这里插入图片描述

个体扩散导致在其周围产生具有随机不同位置的新的个体,参与扩散过程的一系列高斯游走:
G W 1 = G a u s s i a n ( μ B P , σ ) + ( ε × B P − ε ′ × P i ) G W 2 = G a u s s i a n ( μ p , σ ) (1) \begin{aligned}&GW_1=Gaussian(\mu_{BP},\sigma)+(\varepsilon\times BP-\varepsilon^{\prime}\times P_i)\\&GW_2=Gaussian(\mu_p,\sigma)\end{aligned}\tag{1} GW1=Gaussian(μBP,σ)+(ε×BPε×Pi)GW2=Gaussian(μp,σ)(1)
BP 和 Pi 分别表示群体中的最佳个体和第 i 个个体的位置,高斯参数中的标准差 σ 为:
σ = ∣ log ⁡ ( g ) g × ( P i − B P ) ∣ (2) \sigma=\left|\frac{\log(g)}{g}\times(P_i-\mathrm{BP}) \right|\tag{2} σ= glog(g)×(PiBP) (2)
随着迭代次数的增加,为了增强个体的局部搜索能力,并使得解越来越接近最优解,可使用 log(g)/g来减小高斯跳跃的步长。

更新过程

初始化所有个体后,计算每个个体的适应度函数值以获得最佳个体(BP)。个体围绕当前位置游走以开发搜索空间,同时利用两个统计过程进行更新,以实现更好的空间探索。
对于第一次更新过程,首先根据适应度函数值对所有的个体进行排序:
P a i = r a n k ( P i ) N (3) Pa_i=\frac{rank(P_i)}N\tag{3} Pai=Nrank(Pi)(3)
对于群体中的每个个体Pi ,判定条件 Pai< ε 是否满足,若满足则更新:
P i ′ ( j ) = P r ( j ) − ε × ( P t ( j ) − P i ( j ) ) (4) P_i'(j)=P_r(j)-\varepsilon\times(P_t(j)-P_i(j))\tag{4} Pi(j)=Pr(j)ε×(Pt(j)Pi(j))(4)

第二次更新过程旨在通过考虑群体中其他个体的位置来改变一个个体的位置:
P i ′ ′ = P i ′ − ε ^ × ( P t ′ − B P ) ∣ ε ′ ⩽ 0.5 P i ′ ′ = P i ′ + ε ^ × ( P t ′ − P r ′ ) ∣ ε ′ > 0.5 (5) P_{i}^{\prime\prime}=P_{i}^{\prime}-\hat{\varepsilon}\times\left(P_{t}^{\prime}-BP\right)\quad\mid\varepsilon^{\prime}\leqslant0.5\\P_{i}^{\prime\prime}=P_{i}^{\prime}+\hat{\varepsilon}\times\left(P_{t}^{\prime}-P_{r}^{\prime}\right)\quad\mid\varepsilon^{\prime}>0.5\tag{5} Pi′′=Piε^×(PtBP)ε0.5Pi′′=Pi+ε^×(PtPr)ε>0.5(5)

伪代码
在这里插入图片描述

3.结果展示

在这里插入图片描述

4.参考文献

[1] Salimi H. Stochastic fractal search: a powerful metaheuristic algorithm[J]. Knowledge-based systems, 2015, 75: 1-18.

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

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

相关文章

《QT实用小工具·十一》Echart图表JS交互之仪表盘

1、概述 源码放在文章末尾 该项目为Echart图表JS交互之炫酷的仪表盘,可以用鼠标实时改变仪表盘的读数。 下面为demo演示: 该项目部分代码如下: #include "widget.h" #include "ui_widget.h" #include "qurl.h&q…

鸿蒙实战开发-如何使用Stage模型卡片

介绍 本示例展示了Stage模型卡片提供方的创建与使用。 用到了卡片扩展模块接口,ohos.app.form.FormExtensionAbility 。 卡片信息和状态等相关类型和枚举接口,ohos.app.form.formInfo 。 卡片提供方相关接口的能力接口,ohos.app.form.for…

[VulnHub靶机渗透] pWnOS 2.0

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…

Android 的网络加载

发起网络请求的过程 当用户在应用程序中输入网址或关键字时,应用程序会发起网络请求。这个过程大致如下: 应用程序将请求发送到服务器,服务器返回响应数据。应用程序接收到响应数据后,将其转换为应用程序可识别的数据格式。应用…

Mybatis--TypeHandler使用手册

TypeHandler使用手册 场景:想保存user时 teacher自动转String ,不想每次保存都要手动去转String;从DB查询出来时,也要自动帮我们转换成Java对象 Teacher Data public class User {private Integer id;private String name;priva…

C++设计模式:策略模式(二)

1、定义与动机 定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化),该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化) 在软…

web安全学习笔记(6)

记一下第十节课的内容。 一.PHP语言中的if else判断 语法和c语言中非常类似,不再赘述,也可以使用if...elseif...elseif...else 1.True和False 2.,和 一个等号是赋值 两个等号是比较 三个等号是全等(内容相等,数…

OpenHarmony开发-系统烧录

本文详细介绍了烧录OpenHarmony系统到开发板的操作流程。从基础的硬件准备和软件环境设置入手,详细说明了如何配置开发环境、构建系统镜像等过程,详细描述了烧录过程中的关键步骤,以及如何使用专用工具将OpenHarmony系统镜像传输到开发板。同…

第十四届蓝桥杯大赛软件赛省赛

第十四届蓝桥杯大赛软件赛省赛 2.日期统计 小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的范围之内。 数组中的元素从左至右如下所示: 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 …

PyQt6实战6--高亮

PyQt6实战3--sql查询器-CSDN博客 在sql查询器的基础上添加了sql语法的高亮 运行效果: 代码: 只需要在原来的代码上添加一行 rightTopLayout QVBoxLayout()rightTopLayout.addWidget(QLabel("输入sql:"))self.sql QTextEdit() #加一行高亮&…

【踩坑日记】因不同系统换行符不同导致的文本读取结果不同的问题

文章目录 1 问题现象描述2 解决过程(点击直接跳到解决方法)3 原因解释4 如何避免踩坑4.1 格式转换4.2 格式查看 1 问题现象描述 起因是群友问了这么一个问题 确实很奇怪,按理说第二个printf不会完全不输出,于是想到,…

多线程学习-线程池

目录 1.线程池的作用 2.线程池的实现 3.自定义创建线程池 1.线程池的作用 当我们使用Thread的实现类来创建线程并调用start运行线程时,这个线程只会使用一次并且执行的任务是固定的,等run方法中的代码执行完之后这个线程就会变成垃圾等待被回收掉。如…

7.二叉树的遍历方式及二叉树习题

4.二叉树链式结构的实现 二叉树是: 空树 非空:根节点,根节点的左子树、根节点的右子树组成的。 4.1二叉树的遍历 4.2.1 前序、中序以及后序遍历 前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点的操作发生在遍历其左右子树之前…

161 Linux C++ 通讯架构实战15,线程池代码分析

线程池应该使用的地方 和 epoll 技术结合 线程池代码处理数据的地方。 线程池分析: 线程池代码1 threadpool_create //Tencent8888 start threadpool_create函数的目的初始化线程池,对应的struct是 threadpool_t /* 1.先malloc整个线程池的大小 2.这里…

Memcached 教程之 PHP 连接 Memcached 服务(十)

PHP 连接 Memcached 服务 在前面章节中我们已经介绍了如何安装 Memcached 服务,接下来我们为大家介绍 PHP 如何使用 Memcached 服务。 PHP Memcache 扩展安装 PHP Memcache 扩展包下载地址:PECL :: Package :: memcache,你可以下载最新稳定…

Vuex(vue 项目中实现 频繁、大范围数据共享的技术方案)

参考文档(点击查看) 好处 1.数据的存取一步到位,不需层层传递 2.数据的流动非常清晰 3.存储在Vuex中的数据都是响应式的(数据更新后,使用数据的组件都会自动更新) Vuex基础配置 npm i vuex3.6.2state中用来存储数据&#xff0c…

2_5.Linux存储的基本管理

实验环境: 系统里添加两块硬盘 ##1.设备识别## 设备接入系统后都是以文件的形式存在 设备文件名称: SATA/SAS/USB /dev/sda,/dev/sdb ##s SATA, dDISK a第几块 IDE /dev/hd0,/dev/hd1 ##h hard VIRTIO-BLOCK /de…

BPMNJS 在原生HTML中的引入与使用

BPMNJS 在HTML中的引入与使用 在网上看到的大多是基于vue使用BPMN的示例或者教程,竟然没有在HTML使用的示例,有也是很简单的介绍核心库的引入和使用,并没有涉及到扩展库。于是简单看了下,真的是一波三折,坎坎坷坷。不…

Linux:权限篇

文章目录 前言1.用户2.文件的权限管理2.1 修改文件的权限2.2 修改文件的拥有者2.3 修改文件的所属组 3.file指令4.umask指令4.目录的权限管理总结 前言 Linux权限在两个地方有所体现,一种是使用用户:分为root超级用户员与普通用户。另一个是体现在文件的…

在Java中对SQL进行常规操作的通用方法

SQL通用方法 一、常规方法增删改查二、具体优化步骤1.准备工作2.getcon()方法,获取数据库连接对象3.closeAll()方法,关闭所有资源4.通用的增删改方法5.通用的查询方法6.动态查询语句 总结 一、常规方法增删改查 在常规方法中,我们在Java中对…