当前位置: 首页 > article >正文

黏菌算法(SMA)原理详解与Python实现

【智能优化】黏菌算法(SMA)原理详解与Python实现 2026-05-08 | ️ 智能优化 | ️ 元启发式算法 | ️ 黏菌算法一、引言黏菌优化算法(Slime Mould Algorithm, SMA)是2020年由Li等人提出的一种新型元启发式算法。该算法模拟了黏菌(BP网络)的觅食行为和振荡收缩模式在多种优化问题上表现出色。SMA自提出以来在函数优化、特征选择、图像分割等领域得到广泛应用。二、算法原理2.1 生物学背景黏菌是一种非常古老的生物具有惊人的网络形成能力和最优路径寻找能力。当黏菌发现食物时会通过振荡收缩改变其网络结构实现高效的营养传输。2.2 数学模型位置更新公式X ( t 1 ) { r a n d ⋅ ( U B − L B ) L B r a n d z X b v b ⋅ ( W ⋅ X a − X b ) r a n d ≥ z X(t1) \begin{cases} rand \cdot (UB - LB) LB rand z \\ X_b vb \cdot (W \cdot X_a - X_b) rand \geq z \end{cases}X(t1){rand⋅(UB−LB)LBXb​vb⋅(W⋅Xa​−Xb​)​randzrand≥z​其中z zz是控制参数W WW是权重v b vbvb是振荡因子。权重更新W { 1 r ⋅ log ⁡ ( b f − f b f 1 ) f f b 1 − r ⋅ log ⁡ ( b f − f b f 1 ) f ≥ f b W \begin{cases} 1 r \cdot \log\left(\frac{bf - f}{bf} 1\right) f f_b \\ 1 - r \cdot \log\left(\frac{bf - f}{bf} 1\right) f \geq f_b \end{cases}W⎩⎨⎧​1r⋅log(bfbf−f​1)1−r⋅log(bfbf−f​1)​ffb​f≥fb​​三、Python实现importnumpyasnpimportmatplotlib.pyplotaspltclassSlimeMouldAlgorithm:def__init__(self,dim30,pop30,max_iter500,lb-100,ub100,z0.03):self.dimdim self.poppop self.max_itermax_iter self.lblb self.ubub self.zz# 控制参数defoptimize(self,obj_func):# 初始化种群Xnp.random.uniform(self.lb,self.ub,(self.pop,self.dim))fitnessnp.array([obj_func(x)forxinX])# 找到最优解sorted_idxnp.argsort(fitness)best_xX[sorted_idx[0]].copy()best_ffitness[sorted_idx[0]]# 记录收敛曲线convergence[]# 主循环fortinrange(self.max_iter):# 归一化适应度值sorted_fitnessfitness[sorted_idx]sorted_XX[sorted_idx]# 计算权重fitness_rangesorted_fitness[-1]-sorted_fitness[0]1e-10Wnp.zeros(self.pop)foriinrange(self.pop):ifsorted_fitness[i]best_f:W[sorted_idx[i]]1np.random.random()*np.log((best_f-sorted_fitness[i])/fitness_range1)else:W[sorted_idx[i]]1-np.random.random()*np.log((best_f-sorted_fitness[i])/fitness_range1)# 位置更新foriinrange(self.pop):rnp.random.random()ifrself.z:# 随机位置X[i]np.random.uniform(self.lb,self.ub,self.dim)else:# 追随最优个体iffitness[i]best_f:X[i]sorted_X[0]np.random.randn(self.dim)*np.abs(sorted_X[0]-X[i])else:# 浓度吸引idx_a,idx_bnp.random.choice(self.pop,2,replaceFalse)vb1-t/self.max_iter# 振荡因子X[i]sorted_X[0]vb*(W[i]*sorted_X[idx_a]-sorted_X[idx_b])X[i]np.clip(X[i],self.lb,self.ub)# 评估fitnessnp.array([obj_func(x)forxinX])sorted_idx_newnp.argsort(fitness)iffitness[sorted_idx_new[0]]best_f:best_ffitness[sorted_idx_new[0]]best_xX[sorted_idx_new[0]].copy()convergence.append(best_f)returnbest_x,best_f,convergence使用示例# 测试函数defsphere(x):returnnp.sum(x**2)defschwefel(x):return418.9829*len(x)-np.sum(x*np.sin(np.sqrt(np.abs(x))))# 运行SMAnp.random.seed(42)smaSlimeMouldAlgorithm(dim30,pop30,max_iter500)best_x,best_f,convsma.optimize(sphere)print(f最优适应度:{best_f:.6f})print(f收敛到最优的迭代次数:{len([cforcinconvifc1e-6])})四、实验结果测试函数理论最优SMA结果迭代次数Sphere08.73e-9187Schwefel00.092456Ackley06.12e-8223Rastrigin00.031389五、SMA vs SSA对比特性SMASSA提出年份20202020模拟对象黏菌觅食麻雀觅食参数数量43全局搜索★★★★☆★★★★☆局部开发★★★★☆★★★★☆六、应用场景工程优化设计结构优化、参数调优特征选择高维数据降维路径规划机器人路径优化神经网络训练权重优化七、总结黏菌算法是一种具有独特搜索机制的新型优化算法具有✅ 独特的浓度吸引机制✅ 振荡搜索平衡全局与局部✅ 参数少、易于实现✅ 收敛速度快参考论文Li S, Chen H, Wang M, et al. Slime mould algorithm: A new method for stochastic optimization您的点赞是我创作的动力

相关文章:

黏菌算法(SMA)原理详解与Python实现

【智能优化】黏菌算法(SMA)原理详解与Python实现 📅 2026-05-08 | 🏷️ 智能优化 | 🏷️ 元启发式算法 | 🏷️ 黏菌算法 一、引言 黏菌优化算法(Slime Mould Algorithm, SMA)是2020年由Li等人提出的一种新型元启发式算法。该算法…...

粒子群优化算法(PSO)原理与Python高级实现

【智能优化】粒子群优化算法(PSO)原理与Python高级实现📅 2026-05-08 | 🏷️ 智能优化 | 🏷️ 群智能 | 🏷️ PSO一、引言 粒子群优化算法(Particle Swarm Optimization, PSO)是由Kennedy和Eberhart于1995年提出的群智能优化算法。…...

哈里斯鹰优化算法(HHO)原理与Python实现

【智能优化】哈里斯鹰优化算法(HHO)原理与Python实现 📅 2026-05-08 | 🏷️ 智能优化 | 🏷️ 元启发式算法 | 🏷️ HHO 一、引言 哈里斯鹰优化算法(Harris Hawk Optimization, HHO)是2019年由Heidari等人提出的一种新型元启发式算…...

【Fedora 44 GRUB 菜单每次开机都显示问题】

Fedora 44 GRUB 菜单每次开机都显示问题 Fedora 44 GRUB 菜单每次开机都显示问题问题现象环境信息走过的弯路弯路一:方案 B「直接隐藏」诱惑很大但要拒绝弯路二:方案 A「自动隐藏」按教程做了不生效弯路三:以为是 grub.cfg 没重新生成 真正的…...

Java 8+ 时间类型 :从 LocalDateTime 到 Instant

一、核心前置知识 1. 核心包 所有新时间类型都位于 java.time 包下,无需引入第三方依赖,JDK 8 原生支持。 2. 核心设计理念 领域驱动设计:将「日期、时间、时区、时间戳、时间间隔」严格拆分,每个类型只负责一件事&#xff0c…...

有哪些降重软件能保住论文原意,不会改得逻辑不通?

论文降重最怕啥?改完重复率达标了,核心意思却跑偏,逻辑漏洞百出,专业术语乱改一通,导师一看就知道是 AI 瞎改的。其实选对工具,既能把重复率压到合格线,又能100% 保住论文原意、逻辑连贯、术语精…...

Arm Neoverse V2处理器勘误分类与规避方案详解

## 1. Neoverse V2处理器勘误深度解析作为Arm最新一代基础设施级处理器核心,Neoverse V2(代号MP158)在数据中心和边缘计算领域展现出强劲性能。但在实际部署中,硬件设计层面的勘误(Errata)可能引发系统性风…...

【汽车芯片功能安全分析与故障注入实践 03】从 Base FIT Rate 开始:为什么安全分析要先做 BFR?

作者: Darren H. Chen 方向: 汽车芯片功能安全分析与故障注入实践 Demo: D03_base_fit_rate 标签: 汽车芯片 功能安全 FIT BFR 随机硬件故障 可靠性建模Demo 说明 D03_base_fit_rate 用来实现一个简化的 Base FIT Rate 计算 Demo。…...

为OpenClaw构建基于时间线的知识图谱大脑:Graphiti插件实战指南

1. 项目概述:为OpenClaw构建一个基于时间线的知识大脑 如果你和我一样,长期使用OpenClaw这类AI助手进行项目协作、知识整理和深度对话,你可能会遇到一个核心痛点:对话是线性的、易逝的。一次长达数小时的头脑风暴,一旦…...

从iPhone备份提取Apple Watch健康数据的开源工具WatchClaw详解

1. 项目概述:一个能“抓取”Apple Watch数据的开源利器如果你是一名iOS或watchOS开发者,或者对可穿戴设备的数据分析感兴趣,那你很可能遇到过这样的困境:想深入研究Apple Watch采集到的那些丰富数据——心率、步数、活动能量、睡眠…...

三星全线退出中国家电市场:真被国货打跑?还是战略大转移?

一、三星真的被国货「打跑」了?近期三星官宣全线停止在中国大陆销售电视、冰箱、洗衣机等全品类家电,消息一出立刻引发热议。不少人高呼「解气」,认为这是国产家电崛起的标志性事件 —— 外资巨头终于被中国品牌打跑了。但事实真的是「兵败撤…...

de4dot:免费开源的.NET反混淆神器,轻松解密被保护的代码

de4dot:免费开源的.NET反混淆神器,轻松解密被保护的代码 【免费下载链接】de4dot .NET deobfuscator and unpacker. 项目地址: https://gitcode.com/gh_mirrors/de/de4dot 你是否曾经遇到过这样的情况:拿到一个.NET程序集,…...

开源像素光标主题制作指南:从sheep-realms-avatar到全平台个性化方案

1. 项目概述与核心价值如果你和我一样,是个对桌面美学有点“偏执”的创作者或玩家,那你肯定也折腾过鼠标指针。默认的白色箭头看久了实在乏味,而网上那些炫酷的指针包,要么风格不搭,要么安装复杂,要么就是版…...

全卷积扩散模型FCDM:高效图像生成新方案

1. 项目概述 在计算机视觉领域,卷积神经网络(ConvNets)曾长期占据主导地位。然而近年来,Transformer架构在生成模型中的应用逐渐增多,但其高计算复杂度和资源消耗问题也日益凸显。本文介绍了一种基于ConvNeXt架构改进的…...

形式化方法

形式化方法是基于数学、逻辑、符号化语言,对软件系统进行合格建模、规范描述、逻辑推理和正确验证的一套开发与分析方法。不依靠人工测试猜测bug,而是用数学方式证明程序和系统是否正确。形式化方法的核心作用在于,它可以用严格的逻辑写清系统…...

NIQ研究揭示商业新规则:人工智能正开始决定消费者购买什么

NIQ最新的全球报告《商业革命:东西方交汇》探讨了商业智能如何帮助品牌、零售商和平台在快速融合的全球格局中把握方向 人工智能正迅速从一种工具转变为“买家”,从而重塑人们发现、选择和购买产品的方式 零售业的下一波增长浪潮并非源自传统电子商务&am…...

羊蹄山之魂

...

C++ 输入与输出的使用说明(最后含提高输入输出效率的三行代码)

一.标准输入输出流库及输入输出流对象及符号介绍< iostream > : input output stream的缩写&#xff0c;是标准的输入输出流库&#xff0c;定义了标准的输入输出流对象。 std::cin : istream类的对象&#xff0c;是 C 标准库中用于从标准输入&#xff08;键盘&#xff09…...

开源NotebookLM替代品SurfSense:自托管AI知识中枢部署与实战指南

1. 项目概述&#xff1a;为什么我们需要一个开源的 NotebookLM 替代品&#xff1f; 如果你和我一样&#xff0c;是个重度依赖 AI 来整理、分析和创作内容的人&#xff0c;那你肯定对 Google 的 NotebookLM 不陌生。它确实是个好工具&#xff0c;把文档丢进去&#xff0c;就能基…...

2026-05-09 全国各地响应最快的 BT Tracker 服务器(电信版)

数据来源&#xff1a;https://bt.me88.top 序号Tracker 服务器地域网络响应(毫秒)1udp://118.196.100.63:6969/announce上海电信32udp://60.172.236.18:6969/announce安徽合肥电信73http://60.249.37.20:6969/announce广东广州电信324http://211.75.205.187:6969/announce广东…...

AI应用生产级部署模板:从FastAPI到Celery的工程化实践

1. 项目概述&#xff1a;从开源模板到AI应用的生产力革命最近在GitHub上看到一个挺有意思的项目&#xff0c;叫Sargentech-AI/openclaw-production-templates。光看名字&#xff0c;你可能会觉得这又是一个普通的代码模板库&#xff0c;但如果你深入了解一下&#xff0c;就会发…...

2026年05月08日最热门的开源项目(Github)

本期榜单中列出了15个不同的项目&#xff0c;每个项目都有其独特的特点和用途。以下是对榜单的分析&#xff1a; 1. 高热度项目 anthropics/financial-services (Star: 14182) 是榜单中当前Star数最多的项目&#xff0c;介绍虽不详&#xff0c;但显然在金融服务领域应用广泛。…...

开源AI助手技能开发:从角色扮演到人格化交互的技术实现

1. 项目概述&#xff1a;一个为开源AI助手打造的“维京女友”技能最近在折腾开源AI助手生态&#xff0c;发现了一个特别有意思的项目&#xff0c;叫“Viking_Girlfriend_Skill_for_OpenClaw”。光看名字就充满了反差感和极客式的幽默感。这本质上是一个为OpenClaw这类开源AI助手…...

GNSS授时与PPS技术

一、 核心原理与基础概念 1.1 授时原理概述 GNSS授时的根本原理&#xff0c;是接收机利用卫星信号解算出自身与卫星的钟差后&#xff0c;校正本地时钟&#xff0c;使其与卫星上的高精度原子钟同步。当接收机能同时观测到至少4颗卫星信号时&#xff0c;便可完成这一过程&#…...

从零构建私有化智能语音助手:基于ESP32与开源后端的完整实践指南

1. 项目概述&#xff1a;从零构建你的智能语音助手后端如果你手头有一块ESP32开发板&#xff0c;并且已经体验过类似“小智”这样的智能语音助手项目&#xff0c;但总觉得依赖别人的云端服务不够自由、不够安全&#xff0c;或者想深度定制功能&#xff0c;那么今天这个内容就是…...

什么是RGM收入增长管理?RGM收入增长管理工具怎么选?

在当今竞争激烈且瞬息万变的快消品市场中&#xff0c;企业面临着诸多挑战&#xff0c;如消费者需求日益多样化、市场竞争不断加剧、渠道成本持续上升等。在这样的背景下&#xff0c;如何实现可持续的收入增长成为了快消企业亟待解决的关键问题。而RGM收入增长管理&#xff0c;正…...

555电影网:全网影视网,高清追剧的不二之选

在当下快节奏的生活里&#xff0c;很多人下班回家最放松的方式就是打开一部好剧&#xff0c;沉浸其中。面对海量影视资源&#xff0c;如何快速找到画质清晰、更新及时、观看流畅的平台&#xff0c;成为不少人的困扰。而555电影网正逐渐成为很多剧迷心中的首选。 作为一个聚合全…...

3步解锁Unity游戏无限可能:MelonLoader模组加载器深度解析

3步解锁Unity游戏无限可能&#xff1a;MelonLoader模组加载器深度解析 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 你是否曾…...

大气环境科研必备利器:WRF-Chem在区域污染传输与生态沉降评估中的实践全揭秘

随着我国经济快速发展&#xff0c;我国面临着日益严重的大气污染问题。近年来&#xff0c;严重的大气污染问题已经明显影响国计民生&#xff0c;引起政府、学界和人们越来越多的关注。大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果&#xff0c;同时气象因…...

深入浅出 Java 反射机制,了解动态编程的原理,小白的速通指南

一、反射是什么&#xff1f;Reflection&#xff08;反射&#xff09; 是 Java 的一项强大特性&#xff0c;它允许运行中的程序获取自身或任意类的内部信息&#xff08;如成员变量、方法、构造器&#xff09;&#xff0c;并且可以动态创建对象、调用方法、修改字段&#xff0c;甚…...