青蒿素优化算法(AO)-2024年新算法-公式原理详解与性能测评 Matlab代码免费获取

本文主要是介绍青蒿素优化算法(AO)-2024年新算法-公式原理详解与性能测评 Matlab代码免费获取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 

目录

原理简介

一、初始化阶段

二、综合淘汰阶段

三、局部清除阶段

四、后巩固阶段

算法流程图和伪代码

性能测评

参考文献

完整代码


        青蒿素优化算法(AlgorithmArtemisinin optimization, AO)是一种新型的元启发式算法(智能优化算法),灵感来源于疟疾的青蒿素药物治疗过程。这个算法的灵感还是比较独特的,脱离了动物园的范畴~作者在经典的IEEE CEC 2014和最新的IEEE CEC 2022基准函数集上对AO进行了测试,并将AO应用于乳腺癌病理图像分割取得了不错的效果。该成果由Chong Yuan等人于2024年5月发表在SCI二区期刊Displays上!

        由于发表时间较短,谷歌学术上还没人引用!你先用,你就是创新!

原理简介

        灵感:在初始治疗阶段,采用高剂量的青蒿素药物来控制疟疾症状并迅速减少寄生虫数量。大量的药物通过血液迅速扩散,渗透到整个空间(人体),寻找最终的解决方案(寄生虫)。随后,治疗逐渐进入维持阶段。在此阶段,减少药物剂量,旨在坚持清除体内残留的疟疾寄生虫,直到达到最隐蔽的“解决方案”。最终目标是彻底根除和治愈疟疾。通过对整个过程的分析,并利用其复杂的细节,本研究提出了青蒿素优化(AO)。

一、初始化阶段

        患者通过口服或注射将青蒿素药物引入体内。受此启发,本文将药物微粒概念化为算法的搜索代理,这些搜索代理的整体集合构成算法的解集。最初,初始化整个种群,记为A。如式(1)所示,完整总体由N个搜索代理组成,其中D表示搜索代理内的多维组件。这种抽象反映了药物在人体内的分解和吸收,通过血液分散到全身的各个部位。

        式中,T和B表示解空间的边界,R表示一组随机数序列,其取值范围为[0,1]。AO采用元启发式算法中的常用方法,利用随机数序列生成初始解。

二、综合淘汰阶段

        在疟疾治疗的初始阶段,给病人更大剂量的药物,以迅速控制疾病的进展。青蒿素一旦被吸收,就会随着血液被输送到人体的各个部位而扩散到全身。药物在体内的分布受血流、血管通透性和药物与蛋白质的结合亲和力等因素的影响。此外,人体复杂的结构给青蒿素类药物带来了复杂的挑战。考虑到这些因素,本节引入一种独特的搜索模型来模拟药物扩散过程,如式(2)所示:

        在该策略中,搜索代理表现出大规模分散的特征,作为探索复杂解空间的向导。其中,a_(i,j)^(t+1)和a_(i,j)^t分别表示更新前后的搜索代理,best为当前最优。同时,青蒿素类药物在人体内的扩散遵循药代动力学原理。该策略考虑到药物浓度会随着时间的推移而降低这一事实。式(2)中,c表示药物在人体内浓度的衰减指数。青蒿素药物浓度的衰减可以用单室模型描述,如下所示:

        在式(3)中,变量C表示药物浓度,k表示速率常数。求解该微分方程得到式(4):C(t)表示t时刻的药物浓度。在该模型中,随着时间的推移,药物浓度C(t)呈指数衰减。因此,青蒿素药物浓度的指数c可由式(5)计算:

        在该策略中,假设初始药物浓度为1,药物衰减率为4,利用算法的评价过程来模拟模型中的时间进程。其中,f和Maxf表示算法的当前和最大迭代次数。考虑到患者病情严重程度的差异和生理因素的差异,导致不同的用药剂量和持续时间,患者在这一阶段可能花费不同的持续时间。为了概括这种内在的可变性,我们引入了一个概率系数K,如式(6)所示:

        式中,K作为概率系数,结合算法的评估进度,模拟客观场景,即患者在此阶段根据个体情况表现出不同的反应和持续时间。本节简要模拟了每个粒子的运动过程,如下图所示。最终,综合淘汰阶段策略可由式(7)表示:

        式中r_1是一个范围为[0,1]的随机数。在最初的治疗阶段之后,随着疾病得到控制,治疗过渡到维持阶段,以确保彻底治愈疟疾。

三、局部清除阶段

        维持阶段的目标是消除体内任何残留的疟疾寄生虫,防止其繁殖和疟疾症状的复发。虽然早期治疗通常会迅速缓解症状,但少量疟疾寄生虫可能在体内持续存在,特别是在严重感染的情况下。在这一阶段,患者继续接受低剂量青蒿素及其衍生物的治疗,以确保完全根除疟疾寄生虫,尽量减少在人体内发生不良反应的风险。受此启发,本文设计了一种局部清除阶段策略。在该策略中,粒子的运动过程如下图所示,通过Eq.(8)计算得出粒子的位置:

        式中,Fit_norm (i)表示归一化的适应度值,将适应度值转化为概率分布,作为个体间的相对权重。这就保证了适应度越高的个体对应的概率越大。这有助于在一定程度上保留优秀的个体,同时为表现较差的个体提供机会,调整算法对不同个体的关注。d表示系数,取[0.1,0.6]之间的随机值。这一策略模拟了少量青蒿素清除人体内潜在疟疾寄生虫的过程。维护阶段策略允许算法利用和交换本地信息。在MAs中,个体之间的信息交换发生在迭代过程中。如果一个算法的信息交换是彻底的,它的性能可能会得到显著的提高。

四、后巩固阶段

        对疾病的严重程度漠不关心和治疗期间的松懈是危险的有害因素。由于病情的改善,患者可能会逐渐降低对疟疾的警惕,减少用药频率和剂量,甚至停止治疗,这可能导致疾病复发。尽管已经过了攻击和维持阶段,即体内大多数疟疾寄生虫已被根除,但仍有一小部分寄生虫可能逐渐产生对青蒿素的耐药性。它们甚至可能进入一个休眠阶段,被称为“休眠形式”,这大大降低了它们的生物活性,使药物难以发挥有效的杀伤作用。如果停止治疗,疟疾寄生虫在通过休眠形式后,可能导致疾病复发。患者应严格遵守计划,以免有机会感染疟疾。

        本部分代表了后巩固阶段遇到意外情况的可能性,并模拟这一特定情况。在这种策略中,假设不活跃的寄生虫形式仍然存在于人体内。不幸的是,尽管这些休眠寄生虫持续存在,一些患者仍可能再次出现疟疾。该策略的模型用Eq.(11)表示:

        在这个方程中,best_(i,j)表示第j维当前最优解的子向量。式(11)表示由于进入休眠阶段而未被消灭的疟原虫。如上图所示,该策略增强了搜索代理逃避局部最优的能力。

算法流程图和伪代码

        用青蒿素治疗疟疾患者的整个过程是AO的灵感。本文通过对疟疾治疗过程的考察,结合元启发式算法原理,分析了不同阶段的疟疾治疗策略,从中得到启发,提出了不同的疟疾治疗策略。这些策略包括全面消除阶段策略,鼓励算法进行全局探索;局部清除阶段策略,促进局部利用,后巩固阶段策略,增强算法逃避局部最优的能力。

        总的来说,AO背后的灵感和算法的操作流程可以概括如下:

        (1)最初,从人体内疟疾寄生虫的寄生特性中获得灵感,将人体比喻为一个具有约束的“空间”。入侵的疟疾寄生虫被视为有待探索的“解决方案”,而青蒿素药物被视为算法中的搜索代理。

        (2)受在治疗初期以高剂量药物控制疾病过程的启发,引入了综合消除阶段策略。在此策略下,AO获得全局搜索能力,快速探索整个空间并发现最优解的潜在区域。

        (3)从治疗后期逐步控制病情和减少用药剂量的启示,提出局部清除期策略。该策略允许算法探索潜在的局部最优解。

        (4)最后,考虑到治疗过程中潜伏疟原虫唤醒可能导致症状复发,引入了后巩固阶段策略,增强了算法逃避局部最优的能力。

        为了使大家更好地理解,这边给出算法流程图和伪代码,非常清晰!

        如果实在看不懂,不用担心,可以看下源代码,再结合上文公式理解就一目了然了!

性能测评

        原文作者在经典的IEEE CEC 2014和最新的IEEE CEC 2022基准函数集上对AO进行了测试,对8种成熟算法和8种高性能改进算法进行了对比分析,最后将AO应用于乳腺癌病理图像分割中。使用6个阈值水平的15幅真实医学图像,比较了AO与8种不同算法的分割性能。实验结果表明,AO在图像分割精度、特征相似度指数(FSIM)、峰值信噪比(PSNR)和结构相似度指数(SSIM)等方面优于对比算法。

        这边为了方便大家对比与理解,采用23个标准测试函数,即CEC2005,并与2023年新出的霜冰优化算法RIME进行对比!这边展示其中5个测试函数的图,其余十几个测试函数大家可以自行切换尝试!

        可以看到,AO在大部分函数上都超过了2023年新出的RIME算法,表明该算法性能还是较为优越的,大家应用到各类预测、优化问题中是一个不错的选择~

参考文献

        [1]Yuan C, Zhao D, Heidari A A, et al. Artemisinin optimization based on malaria therapy: Algorithm and applications to medical image segmentation[J]. Displays, 2024: 102740.

完整代码

        如果需要免费获得图中的完整测试代码,只需后台回复关键字:

AO

        也可后台回复个人需求(比如AO-SVM)定制以下青蒿素算法优化模型(看到秒回):

        1.回归/时序/分类预测类:SVM、RVM、LSSVM、ELM、KELM、HKELM、DELM、RELM、DHKELM、RF、LSTM、BiLSTM、GRU、BiGRU、PNN、CNN、BP、XGBoost、TCN、BiTCN、ESN等等均可~

        2.组合预测类:CNN/TCN/BiTCN/DBN/Adaboost结合SVM/RVM/ELM/LSTM/BiLSTM/GRU/BiGRU/Attention机制类等均可(可任意搭配非常新颖)~

        3.分解类:EMD、EEMD、VMD、REMD、FEEMD、TVFEMD、CEEMDAN、ICEEMDAN、SVMD等分解模型均可~

        4.其他:机器人路径规划、无人机三维路径规划、DBSCAN聚类、VRPTW路径优化、微电网优化、无线传感器覆盖优化、故障诊断等等均可~

        5.原创改进优化算法(适合需要创新的同学):2024年的青蒿素优化算法AO以及麻雀SSA、蜣螂DBO等任意优化算法均可,保证测试函数效果!

        更多免费代码链接:更多代码链接

这篇关于青蒿素优化算法(AO)-2024年新算法-公式原理详解与性能测评 Matlab代码免费获取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/985498

相关文章

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

详解C++中类的大小决定因数

《详解C++中类的大小决定因数》类的大小受多个因素影响,主要包括成员变量、对齐方式、继承关系、虚函数表等,下面就来介绍一下,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 非静态数据成员示例:2. 数据对齐(Padding)示例:3. 虚函数(vtable 指针)示例:4. 继承普通继承虚继承5.

前端高级CSS用法示例详解

《前端高级CSS用法示例详解》在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交互和动态效果的关键技术之一,随着前端技术的不断发展,CSS的用法也日益丰富和高级,本文将深... 前端高级css用法在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当