完整改进RIME算法,基于修正多项式微分学习算子Rime-ice增长优化器,完整MATLAB代码获取

news2025/5/23 22:39:58

1 简介

为了有效地利用雾状冰生长的物理现象,最近开发了一种优化算法——雾状优化算法(RIME)。它模拟硬雾状和软雾状过程,构建硬雾状穿刺和软雾状搜索机制。在本研究中,引入了一种增强版本,称为修改的RIME(MRIME),集成了多项式微分学习算子(PDLO)。与传统的RIME方法相比,PDLO的加入给RIME算法引入了非线性,提高了其适应性、收敛速度和全局搜索能力。

2. MRIME算法

RIME算法从自然过程,特别是软冰晶和硬冰晶的生长中汲取灵感,设计了其优化策略。冰晶粒子的位置代表搜索空间中的解向量。它通过两个阶段模拟相关的环境条件:软冰晶搜索(SRS)和硬冰晶穿刺(HRP)。它需要几个关键步骤来执行优化,如下所示。
在这里插入图片描述

2.1 冰晶初始化阶段

种群由 N m N_m Nm个冰晶代理初始化,每个代理表示为 D D D维的冰晶粒子。在初始化过程中采用随机搜索来确定搜索空间中冰晶粒子的位置。因此,冰晶代理种群,表示为 R P O P R_{POP} RPOP,由单个冰晶粒子的位置表示为 R M i j R_{Mij} RMij,如公式(10)所示。

R P O P = [ R M i j ] N m × D = [ R M 1 , 1 R M 1 , 2 ⋯ R M 1 , D R M 2 , 1 R M 2 , 2 ⋯ R M 2 , D ⋮ ⋮ ⋱ ⋮ R M N m , 1 R M N m , 2 ⋯ R M N m , D ] R_{POP} = [R_{Mij}]_{N_m \times D} = \begin{bmatrix} R_{M1,1} & R_{M1,2} & \cdots & R_{M1,D} \\ R_{M2,1} & R_{M2,2} & \cdots & R_{M2,D} \\ \vdots & \vdots & \ddots & \vdots \\ R_{MN_m,1} & R_{MN_m,2} & \cdots & R_{MN_m,D} \end{bmatrix} RPOP=[RMij]Nm×D= RM1,1RM2,1RMNm,1RM1,2RM2,2RMNm,2RM1,DRM2,DRMNm,D

其中 R P O P R_{POP} RPOP是种群矩阵,由冰晶代理的向量组成( N m × 1 N_m \times 1 Nm×1),每个冰晶代理向量由几个设计参数( 1 × D 1 \times D 1×D)组成。

这些位置受到限制,具有上限( U p j Up_j Upj)和下限( L o j Lo_j Loj)边界,定义了每个维度的允许范围。采用许多基于种群的算法中观察到的传统方法,冰晶种群在初始阶段通过随机搜索过程进行初始化。初始化期间位置 R M i j R_{Mij} RMij的结果表达式如下:

R M i j = L o j + r d j ⋅ ( U p j − L o j ) , i = 1 : N m , j = 1 : D , R_{Mij} = Lo_j + r_{d_j} \cdot (Up_j - Lo_j), \quad i = 1 : N_m, j = 1 : D, RMij=Loj+rdj(UpjLoj),i=1:Nm,j=1:D,

其中 r d j r_{d_j} rdj是范围[0, 1]内随机选择的数字。

2.2 SRS阶段

算法模拟冰晶粒子在物体表面冻结的过程,模拟软冰晶的生长过程。冰晶代理在风和自身随机性的驱动下在搜索空间中移动,确保在早期迭代中广泛覆盖。冰晶代理的位置更新由以下公式确定,该公式包括最佳冰晶代理的位置、环境因素和随机性:

R m j = R m b e s t , j + r d 2 ⋅ β ⋅ cos ⁡ ( θ ) ⋅ ( A D ⋅ ( U p j − L o j ) + L o j ) , if  r d 2 < E , R_{mj} = R_{mbest,j} + r_{d_2} \cdot \beta \cdot \cos(\theta) \cdot (AD \cdot (Up_j - Lo_j) + Lo_j), \quad \text{if } r_{d_2} < E, Rmj=Rmbest,j+rd2βcos(θ)(AD(UpjLoj)+Loj),if rd2<E,

其中粘附度( A D AD AD)表征最佳冰晶代理与随机选择的冰晶代理之间的接近程度, A D AD AD限制在范围[0, 1]内。修改后的第 i i i个冰晶代理在SRS阶段后的维度 j j j的位置,表示为 R m j R_{mj} Rmj,基于最佳冰晶代理的位置 R m b e s t , j R_{mbest,j} Rmbest,j确定。方向控制由 r d 2 r_{d_2} rd2 cos ⁡ ( θ ) \cos(\theta) cos(θ)的插值控制,其中 r d 2 r_{d_2} rd2是范围[-1, 2]内的随机数。此外, r d 2 r_{d_2} rd2是范围[0, 1]内的随机数, θ \theta θ在公式(13)中定义。

θ = π ( t 10 ⋅ T m a x ) , \theta = \pi \left( \frac{t}{10 \cdot T_{max}} \right), θ=π(10Tmaxt),

在这种情况下,符号“ t t t”表示迭代计数索引,而“ T m a x T_{max} Tmax”表示总迭代次数。

环境因子,表示为“ β \beta β”,模拟外部条件并确保冰晶种群的收敛,如公式(14)所示。

β = 1 − 1 ω ⋅ ( 1 round ( ω ⋅ t T m a x ) ) , \beta = 1 - \frac{1}{\omega} \cdot \left( \frac{1}{\text{round} \left( \frac{\omega \cdot t}{T_{max}} \right)} \right), β=1ω1 round(Tmaxωt)1 ,

函数“round”用于四舍五入数值,参数“ ω \omega ω”用于调节步进函数的分割,默认值为5,如文献[29]所述。此外,变量“ r d 3 r_{d_3} rd3”是范围[0, 1]内的随机数,“ E E E”表示粘附系数,影响冰晶代理的凝聚概率。粘附系数随着整个搜索过程的迭代次数逐渐增加,如下所示:

E = ( t T m a x ) 1 / 2 , E = \left( \frac{t}{T_{max}} \right)^{1/2}, E=(Tmaxt)1/2,$

在强风条件下,算法模拟硬冰晶粒子的更简单和更规则的生长。HRP机制促进了代理之间的信息交换,以提高收敛性和跳出局部最优的能力,如下所示:

R m _ n e w , i j = { R m b e s t , j r d 4 < F i t μ ( R m i ) R m j Else , i = 1 : N m , j = 1 : D , R_{m\_new,ij} = \begin{cases} R_{mbest,j} & r_{d_4} < Fit^{\mu}(R_{m_i}) \\ R_{mj} & \text{Else} \end{cases}, \quad i = 1 : N_m, j = 1 : D, Rm_new,ij={Rmbest,jRmjrd4<Fitμ(Rmi)Else,i=1:Nm,j=1:D,

其中 R m _ n e w , i j R_{m\_new,ij} Rm_new,ij表示第 i i i个冰晶代理在维度 j j j中的新创建位置,而“ r d 4 r_{d_4} rd4”是范围[0, 1]内的随机数。如所示,冰晶代理的位置根据适应度值和归一化适应度值( F i t μ ( R m i ) Fit^{\mu}(R_{m_i}) Fitμ(Rmi))进行更新,促进了代理之间的交叉。

F i t μ ( R m i ) = F i t ( R m i ) ∑ i = 1 N m ( F i t ( R m i ) ) 2 , Fit^{\mu}(R_{m_i}) = \frac{Fit(R_{m_i})}{\sqrt{\sum_{i=1}^{N_m} (Fit(R_{m_i}))^2}}, Fitμ(Rmi)=i=1Nm(Fit(Rmi))2 Fit(Rmi),

其中 F i t μ ( R m i ) Fit^{\mu}(R_{m_i}) Fitμ(Rmi)是关于冰晶代理 i i i的当前位置的适应度函数值。

2.4 提出的PLDO整合

在本文中,PLDO被整合以增强RIME算法的搜索能力和多样性。PLDO通常用于优化中的差分进化(DE)算法[44]。该算子通过合并两个随机选择的个体的信息来增强种群多样性,以更新当前冰晶代理的位置。PLDO是DE的扩展,通过适应突变策略来放大搜索空间内的探索和开发。PLDO中的突变公式结合了多项式函数,将非线性特性注入突变操作中。为了执行整合的PLDO,从种群中抽取两个随机整数( i n d e x 1 index1 index1 i n d e x 2 index2 index2)。随后,新派生的冰晶代理 i i i的位置可以公式化为:

R m _ n e w = R m i + ϕ ⋅ ( R m i n d e x 1 − R m i n d e x 2 ) , i = 1 : N m , R_{m\_new} = R_{m_i} + \phi \cdot (R_{m_{index1}} - R_{m_{index2}}), \quad i = 1 : N_m, Rm_new=Rmi+ϕ(Rmindex1Rmindex2),i=1:Nm,

其中 ϕ \phi ϕ是范围[0, 1]内生成的随机数。因此,更新涉及两个随机选择的元素( R m i n d e x 1 R_{m_{index1}} Rmindex1 R m i n d e x 2 R_{m_{index2}} Rmindex2)之间的加权差异,而权重 ϕ \phi ϕ控制这种差异对更新的贡献。

2.5 正向贪婪选择(PGS)阶段

在生成HRP-SRS阶段(公式(12)和(16))或PLDO(公式(18))中的冰晶粒子的新位置后,PGS机制用于比较更新前后的适应度值。如果更新后的适应度更好,则用次优解替换最优解,从而增强全局解的质量。该机制在更新过程中积极替换代理,以确保更优的种群进化。

2.6 迭代过程

图3a,b展示了标准RIME与所提出的MMIME优化器的主要步骤,其中整个过程在预定的迭代次数( I m a x I_{max} Imax)内交替执行。在每次迭代中,所提出的MMIME利用SRS和HRP阶段或PLDO机制更新冰晶代理的位置,评估适应度值,并执行PGS。在所提出的MMIME中,引入PLDO,包含多项式函数,使每个突变向量组件的影响得到精细控制,为探索过程提供灵活性。通过排列引入的随机性增加了搜索空间探索的有效性。种群中的最佳冰晶代理由最佳适应度值确定,并作为优化问题的解决方案输出。

function [Best_rime_rate,Best_rime,Convergence_curve]=MRIME(N,Max_iter,lb,ub,dim)
% disp('RIME is now tackling your problem')
% initialize position

Best_rime=zeros(1,dim);
Best_rime_rate=inf;%change this to -inf for maximization problems

Rimepop=initialization(N,dim,ub,lb);%Initialize the set of random solutions
Lb=lb.*ones(1,dim);% lower boundary
Ub=ub.*ones(1,dim);% upper boundary
it=1;%Number of iterations
Convergence_curve=zeros(1,Max_iter);
Rime_rates=zeros(1,N);%Initialize the fitness value
newRime_rates=zeros(1,N);
W = 5;%Soft-rime parameters, discussed in subsection 4.3.1 of the paper

%Calculate the fitness value of the initial position
for i=1:N
    %     Rime_rates(1,i)=fobj(Rimepop(i,:));%Calculate the fitness value for each search agent

    x=Rimepop(i,:);
    [Im,Vm]=IVload;
    Iph=x(1);
    I0=x(2);
    Rs=x(3);
    Rsh=x(4);
    n=x(5);
    I02=x(6);
    n2=x(7);
    k = 1.380649e-23;
    T = 306.15;
    q = 1.602176634e-19;
    Vth= k*T/q;
    Ns=1;
    a=n*Vth*Ns;
    a2=n2*Vth*Ns;
    I = -Vm./(Rs + Rsh) - lambertw(Rs.*I0.*Rsh.*exp(Rsh.*(Rs.*Iph + Rs.*I0 + Vm)./(a.*(Rs + Rsh)))./(a.*(Rs + Rsh))).*a./Rs...
        - lambertw(Rs.*I02.*Rsh.*exp(Rsh.*(Rs.*Iph + Rs.*I02 + Vm)./(a2.*(Rs + Rsh)))./(a2.*(Rs + Rsh))).*a2./Rs + (Rsh.*(I0 + Iph + I02))./(Rs + Rsh);


    fit_I=sqrt(sum((Im-I).^2)/length(Im));

    Rime_rates(1,i)=fit_I;

    %Make greedy selections
    if Rime_rates(1,i)<Best_rime_rate
        Best_rime_rate=Rime_rates(1,i);
        Best_rime=Rimepop(i,:);
    end
end
% Main loop

while it <= Max_iter
    %     it
    RimeFactor = (rand-0.5)*2*cos((pi*it/(Max_iter*10)))*(1-round(it*W/Max_iter)/W);%Parameters of Eq.(3),(4),(5)
    E =sqrt(it/Max_iter);%Eq.(6)
    newRimepop = Rimepop;%Recording new populations
    normalized_rime_rates=normr(Rime_rates);%Parameters of Eq.(7)
    if rand>0.5
        for i=1:N
            for j=1:dim
                %Soft-rime search strategy

                r1=rand();
                if r1< E
                    newRimepop(i,j)=Best_rime(1,j)+RimeFactor*((Ub(j)-Lb(j))*rand+Lb(j));%Eq.(3)
                end
            end
        end
    else
        for i=1:N
            newRimepop(i,:)=newRimepop(i,:)+rand*(newRimepop(randperm(N,1),:)-newRimepop(randperm(N,1),:));
        end
    end
    for i=1:N
        for j=1:dim
            %Hard-rime puncture mechanism
            r2=rand();
            if r2<normalized_rime_rates(i)
                newRimepop(i,j)=Best_rime(1,j);%Eq.(7)
            end
        end
    end
    for i=1:N
        %Boundary absorption
        Flag4ub=newRimepop(i,:)>ub;
        Flag4lb=newRimepop(i,:)<lb;
        newRimepop(i,:)=(newRimepop(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;

        x=newRimepop(i,:);
        [Im,Vm]=IVload;
        Iph=x(1);
        I0=x(2);
        Rs=x(3);
        Rsh=x(4);
        n=x(5);
        I02=x(6);
        n2=x(7);
        k = 1.380649e-23;
        T = 306.15;
        q = 1.602176634e-19;
        Vth= k*T/q;
        Ns=1;
        a=n*Vth*Ns;
        a2=n2*Vth*Ns;
        I = -Vm./(Rs + Rsh) - lambertw(Rs.*I0.*Rsh.*exp(Rsh.*(Rs.*Iph + Rs.*I0 + Vm)./(a.*(Rs + Rsh)))./(a.*(Rs + Rsh))).*a./Rs...
            - lambertw(Rs.*I02.*Rsh.*exp(Rsh.*(Rs.*Iph + Rs.*I02 + Vm)./(a2.*(Rs + Rsh)))./(a2.*(Rs + Rsh))).*a2./Rs + (Rsh.*(I0 + Iph + I02))./(Rs + Rsh);


        fit_I=sqrt(sum((Im-I).^2)/length(Im));
        newRime_rates(1,i)=fit_I;
        %Positive greedy selection mechanism

        if newRime_rates(1,i)<Rime_rates(1,i)
            Rime_rates(1,i) = newRime_rates(1,i);
            Rimepop(i,:) = newRimepop(i,:);
            if newRime_rates(1,i)< Best_rime_rate
                Best_rime_rate=Rime_rates(1,i);
                Best_rime=Rimepop(i,:);
            end
        end
    end
    Convergence_curve(it)=Best_rime_rate;
    it=it+1;
end

Hakmi S.H., Alnami H., Moustafa G., et al. Modified Rime-Ice Growth Optimizer with Polynomial Differential Learning Operator for Single-and Double-Diode PV Parameter Estimation Problem. Electronics. 2024, 13(9): 1611.

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

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

相关文章

服务器安装xfce桌面环境并通过浏览器操控

最近需要运行某个浏览器的脚本&#xff0c;但是服务器没有桌面环境&#xff0c;无法使用&#xff0c;遂找到了KasmVNC&#xff0c;并配合xfce实现低占用的桌面环境&#xff0c;可以直接使用浏览器进行操作 本文基于雨云——新一代云服务提供商的Debian11服务器操作&#xff0c;…

Oracle 创建外部表

找别人要一下数据&#xff0c;但是他发来一个 xxx.csv 文件&#xff0c;怎么办&#xff1f; 1、使用视图化工具导入 使用导入工具导入&#xff0c;如 DBeaver&#xff0c;右击要导入的表&#xff0c;选择导入数据。 选择对应的 csv 文件&#xff0c;下一步就行了&#xff08;如…

大语言模型 17 - MCP Model Context Protocol 介绍对比分析 基本环境配置

MCP 基本介绍 官方地址&#xff1a; https://modelcontextprotocol.io/introduction “MCP 是一种开放协议&#xff0c;旨在标准化应用程序向大型语言模型&#xff08;LLM&#xff09;提供上下文的方式。可以把 MCP 想象成 AI 应用程序的 USB-C 接口。就像 USB-C 提供了一种…

【软考向】Chapter 9 数据库技术基础

基本概念数据库的三级模式结构 数据模型E-R 模型关系模型各种键完整性约束 关系代数5 种基本的关系代数运算&#xff1a;并、差、笛卡儿积、投影和选择扩展的关系代数运算&#xff1a;交(Intersection)、连接(Join)、除(Division)、广义投影(Generalized Projection)、外连接(O…

实战:Dify智能体+Java=自动化运营工具!

我们在运营某个圈子的时候&#xff0c;可能每天都要将这个圈子的“热门新闻”发送到朋友圈或聊天群里&#xff0c;但依靠传统的实现手段非常耗时耗力&#xff0c;我们通常要先收集热门新闻&#xff0c;再组装要新闻内容&#xff0c;再根据内容设计海报等。 那怎么才能简化并高…

STM32单片机GUI系统1 GUI基本内容

目录 一、GUI简介 1、emWin 2、LVGL (Light and Versatile Graphics Library) 3、TouchGFX 4、Qt for Embedded 5、特性对比总结 二、LVGL移植要求 三、优化LVGL运行效果方法 四、LVGL系统文件 一、GUI简介 在嵌入式系统中&#xff0c;emWin、LVGL、TouchGFX 和 Qt 是…

应届本科生简历制作指南

一、找一个专业的简历模板 首先&#xff0c;你需要访问 Overleaf 的官方网站&#xff0c;也就是Overleaf, Online LaTeX Editor&#xff0c;进入页面后&#xff0c;点击注册按钮&#xff0c;按照提示填写相关信息来创建一个属于自己的账号&#xff0c;通常需要填写用户名、邮箱…

PyTorch可视化工具——使用Visdom进行深度学习可视化

文章目录 前置环境Visdom安装并启动VisdomVisdom图形APIVisdom静态更新API详解通用参数说明使用示例Visdom动态更新API详解1. 使用updateappend参数2. ~~使用vis.updateTrace方法~~3. 完整训练监控示例 Visdom可视化操作散点图plot.scatter()散点图案例线性图vis.line()vis.lin…

企业级爬虫进阶开发指南

企业级爬虫进阶开发指南 一、分布式任务调度系统的深度设计 1.1 架构设计原理 图表 1.2 核心代码实现与注释 分布式锁服务 # distributed_lock.py import redis import timeclass DistributedLock:def __init__(self, redis_conn):self.redis = redis_connself.lock_key = …

网络安全-等级保护(等保) 2-7 GB/T 25058—2019 《信息安全技术 网络安全等级保护实施指南》-2019-08-30发布【现行】

################################################################################ GB/T 22239-2019 《信息安全技术 网络安全等级保护基础要求》包含安全物理环境、安全通信网络、安全区域边界、安全计算环境、安全管理中心、安全管理制度、安全管理机构、安全管理人员、安…

数据结构实验10.1:内部排序的基本运算

文章目录 一&#xff0c;实验目的二&#xff0c;实验内容1. 数据生成与初始化2. 排序算法实现&#xff08;1&#xff09;直接插入排序&#xff08;2&#xff09;二分插入排序&#xff08;3&#xff09;希尔排序&#xff08;4&#xff09;冒泡排序&#xff08;5&#xff09;快速…

wps编辑技巧

1、编辑模式 2、图片提取方法&#xff1a;右键保存图片 可以直接右键保存下来看看是否是原始图&#xff0c;如果歪着的图&#xff0c;可能保存下来是正的&#xff0c;直接保存试下 3、加批注

开放世界RPG:无缝地图与动态任务的拓扑学架构

目录 开放世界RPG:无缝地图与动态任务的拓扑学架构引言第一章 地图分块系统1.1 动态加载算法1.2 内存管理模型第二章 任务拓扑网络2.1 任务依赖图2.2 动态可达性分析第三章 NPC行为系统3.1 行为森林架构3.2 日程规划算法第四章 动态事件系统4.1 事件传播模型4.2 玩家影响指标第…

【图像处理入门】1. 数字图像的本质:从像素到色彩模型

作为图像处理的开篇&#xff0c;本文将带你拆解数字图像的底层逻辑&#xff1a;从模拟图像到数字信号的神奇转换&#xff0c;到像素世界的微观构成&#xff0c;再到彩色图像的编码奥秘。通过 Python 代码实战&#xff0c;你将亲手触摸图像的 “基因”—— 像素值&#xff0c;并…

(已解决:基于WSL2技术)Windows11家庭中文版(win11家庭版)如何配置和使用Docker Desktop

目录 问题现象&#xff1a; 问题分析&#xff1a; 拓展&#xff1a; 解决方法&#xff1a; 1、使用WSL2技术&#xff08;亲测有效&#xff09; 注意&#xff1a; 2、开启Hyper-V功能&#xff08;未经亲测&#xff0c;待研究&#xff09; 问题现象&#xff1a; 今天想在本…

Ubuntu20.04部署KVM

文章目录 一. 环境准备关闭防火墙&#xff08;UFW&#xff09;禁用 SELinux更换镜像源检查 CPU 虚拟化支持 二. 安装KVM安装 KVM 及相关组件启动 libvirtd 服务验证安装创建虚拟机 一. 环境准备 4C8G&#xff0c;50G硬盘——VMware Workstation需要给虚拟机开启虚拟化引擎 roo…

OpenCV CUDA 模块图像过滤------创建一个高斯滤波器函数createGaussianFilter()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::createGaussianFilter 是 OpenCV CUDA 模块中的一个工厂函数&#xff0c;用于创建一个高斯滤波器。这个滤波器可以用来平滑图像&#…

可视化图解算法43:数组中的逆序对

1. 题目 ​牛客网 面试笔试TOP101 描述 在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P mod 1000000007 数据范围&…

【Python】使用Python实现调用API获取图片存储到本地

使用Python实现调用API获取图片存储到本地 目录 使用Python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现5、结果查看 1、项目概述 开发一个自动化工具&#xff0c;用于从JSON数据源中提取图像ID&#xff0c;通过调用指定API获取未经压缩的原始…

腾讯2025年校招笔试真题手撕(一)

一、题目 有n 把钥匙&#xff0c;m 个锁&#xff0c;每把锁只能由一把特定的钥匙打开&#xff0c;其他钥匙都无法打开。一把钥匙可能可以打开多把锁&#xff0c;钥匙也可以重复使用。 对于任意一把锁来说&#xff0c;打开它的钥匙是哪一把是等概率的。但你无法事先知道是哪一把…