梦境优化算法(DOA)-2025年3月SCI一区新算法-公式原理详解与性能测评 Matlab代码免费获取

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

目录

原理简介

一、初始化

二、勘探阶段

四、参数设置

五、边界处理方法

算法伪代码

性能测评

参考文献

完整代码


梦境优化算法(Dream Optimization Algorithm, DOA)是一种新型的元启发式算法(智能优化算法),灵感来源于人类梦境的启发。该算法结合了一个基本的记忆策略,一个遗忘和补充策略,以平衡探索和利用,值得一试!该成果由Yifan Lang于2025年3月发表在SCI一区Top期刊《Computer Methods in Applied Mechanics and Engineering上!

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

原理简介

灵感:在有做梦经历的快速眼动睡眠期间,低频脑电波的功率降低,而高频脑电波的功率增加,这表明在做梦经历期间大脑的神经兴奋更大

、初始化

与其他MAs类似,在初始化阶段,DOA首先在搜索空间内生成一个随机种群作为初始种群,从而开始算法的优化过程。初始总体的计算公式如下:

式中,N为个体数,即种群大小;Xi是种群中的第i个个体;Xl和Xu分别表示搜索空间的下边界和上边界;rand是一个dim维向量,每个维度是0到1之间的随机数。

二、勘探阶段

在勘探阶段(迭代计数从0到Td),我们首先根据记忆能力的差异将群体分为5组,每组中的个体更新如下:将每次迭代视为一次做梦行为,通过不断执行该行为,寻求最优解和最优值。在每次做梦之前,每组中的所有人都被展示了之前最好的梦(即之前迭代中最好的个体)。由于个体在做梦时随机地忘记了部分信息(即某些维度的信息,称为遗忘维度),因此只有遗忘维度中的位置被更新。各组记忆能力的不同意味着遗忘维度的数量不同,用参数k1、k2、k3、k4、k5表示。因此,首先将每个个体的位置重置为之前迭代中该组中最佳个体的位置,然后从Dim维度中随机选择kq维度,记为K1,K2,…,Kkq,并更新这些维度中的位置,其中q = 1,2,3,4,5表示组号。在每次迭代中,从第1个个体到第n个个体依次执行更新。具体更新方法和公式如以下几个步骤。

2.1 记忆策略

对于q组的个体,他们可以在做梦前记住小组中最优秀个体的位置信息,将自己的位置信息重置为小组中最优秀个体的位置信息:

2.2 遗忘和补充策略

遗忘和补充策略结合了全局和局部搜索功能。该策略遵循记忆策略,允许个体在遗忘维度中遗忘和自我组织位置信息。更新公式如下:

2.3 梦境分享策略

DOA中的梦境共享策略增强了局部最优解的逃逸能力。该策略与遗忘和补充策略并行运行,遵循记忆策略,允许个体在遗忘维度随机从其他个体获取位置信息。更新公式如下:

式中xt+1 i,j表示第i个个体在迭代t+1时在第j维的位置;m是每个维度更新在[1,N]范围内随机选择的自然数。

、开发阶段

在开发阶段(从Td到Tmax的迭代计数),不再执行分组。在每次做梦之前,从之前的迭代中得到的最好的梦(即,从之前的迭代中得到的最好的个体)被展示给所有的人。然后,更新每个个体在遗忘维度中的位置。总体中所有个体具有相同数量的遗忘维度,记为kr。从D维度中随机选择kr遗忘维度,记为K1,K2,…,Kkr,并更新这些维度中的位置。更新公式如下:

3.1 记忆策略

其中Xt+ 1i代表第t+1次迭代时的第i个个体,Xt代表第t次迭代时整体中最优个体。

3.2 遗忘和补充策略

式中xt+1(i,j)表示第i个个体在迭代t+1时在第j维的位置;Xtbestj表示在迭代t代时的最佳位置。Xlj和xuj分别是第j维搜索空间的下界和上界;Rand是0到1之间的随机数;t为当前迭代次数,Tmax为算法的最大迭代次数。

、参数设置

经过大量的数值实验,考虑到算法的稳定性和适用性,我们将DOA参数设置为:

其中Td表示探索阶段的最大迭代次数,Tmax表示总最大迭代次数;randi(a, b)表示在a ~ b范围内选择的随机整数。kq表示探索阶段q组的遗忘维度数,Dim表示问题维度。式中,randi(a, b)表示在a ~ b范围内选择的随机整数。kr表示开发阶段遗忘维度的个数,Dim表示问题维度。参数u用于调整探索阶段遗忘补充策略与梦境分享策略之间的比例。当rand < u时,执行遗忘补充策略;否则,就执行梦境分享策略。设u = 0.9。

五、边界处理方法

对于不同维数的优化问题,我们采用了两种不同的边界条件处理方法。

第一种方法适用于Dim≤15的问题。由于这些问题的维数较小,局部最优值相对较少,因此采用传统的随机方法更新超出搜索边界的点,如下图所示:

第二种方法是针对Dim>15的问题。这些问题的维度更大,更复杂,有更多的局部最优,需要增强全局优化能力和逃避局部最优的能力。因此,对于这类高维问题中超过边界条件的agent点,我们采用类似于开发阶段梦境共享策略的方法进行重新更新,如下所示:

式中xt+1(i,j)表示第i个个体在迭代t+1时在第j维的位置;m是一个在[1,N]范围内的随机自然数,每次更新时m与i不同。

算法伪代码

为了使大家更好地理解,这边给出作者算法的伪代码,非常清晰!

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

性能测评

原文作者在CEC2017, CEC2019, CEC2022测试函数上进行定量分析,并应用在在8个工程约束优化问题和光伏电池模型参数优化中,将DOA与27种算法进行比较。结果表明,DOA算法在收敛性、先进性、稳定性、适应性、鲁棒性、显著性和可靠性等方面优于所有竞争对手。

这边为了方便大家对比与理解,采用23个标准测试函数,即CEC2005,设置种群数量为30,迭代次数为1000,和经典的正余弦优化算法SCA进行对比!这边展示其中5个测试函数的图,其余十几个测试函数大家可以自行切换尝试!

可以看到,这个算法在大部分函数上均优于经典的正余弦优化算法算法,说明该算法性能还是比较不错的!大家应用到各类预测、优化问题中也是一个不错的选择~

参考文献

[1]Lang Y, Gao Y. Dream Optimization Algorithm (DOA): A novel metaheuristic optimization algorithm inspired by human dreams and its applications to real-world engineering problems[J]. Computer Methods in Applied Mechanics and Engineering, 2025, 436: 117718.

完整代码

如果需要免费获得图中的完整测试代码,只需点击下方小卡片,再后台回复关键字,不区分大小写:

DOA

也可点击下方小卡片,再后台回复个人需求(比如DOA-Transformer)定制以下DOA算法优化模型(看到秒回):

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

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

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

4.路径规划类:机器人路径规划、无人机三维路径规划、冷链物流路径优化、VRPTW路径优化等等~

5.优化类:光伏电池参数辨识优化、光伏MPPT控制、储能容量配置优化、微电网优化、PID参数整定优化、无线传感器覆盖优化、图像分割、故障诊断等等均可~~

6.原创改进优化算法(适合需要创新的同学):原创改进2025年的梦境优化算法SFOA以及班翠鸟PKO、蜣螂DBO等任意优化算法均可,保证测试函数效果,一般可直接核心!

### 关于梦境生成优化算法的研究 #### 梦境生成优化算法的核心概念 梦境生成优化算法通常涉及复杂的机器学习框架,特别是基于生成对抗网络(GANs)的技术。为了提升这些算法的效率和效果,可以采用多种先进的训练策略和技术。例如,在优化训练方面,可以通过引入自适应梯度下降法或多任务学习来增强模型性能[^1]。 此外,针对特定应用场景的需求,如数字化梦境工程的设计实现,需要持续关注技术的发展趋势,并通过技术创新推动应用落地。这过程不仅依赖于基础理论的进步,还需要结合实际需求调整算法参数和结构[^2]。 #### DOA中的改进方向 在梦境优化算法DOA, Dream Optimization Algorithm)中,种有效的改进方式是利用梦境共享策略。这种策略能够显著改善局部最优解的逃逸能力,从而帮助模型跳出次优状态。具体而言,该策略允许个体间交换位置信息,促进种群多样性的同时保持收敛速度[^3]。 以下是其核心更新公式的简化版本: ```python def update_position(individual, population): """ 更新个体的位置信息。 参数: individual (list): 当前个体的位置向量。 population (list of lists): 种群的所有位置向量集合。 返回: list: 新的个体位置向量。 """ import random new_individual = [] for i in range(len(individual)): if random.random() < memory_rate: # 遵循记忆策略的概率 new_value = individual[i] elif random.random() < sharing_rate: # 使用梦境共享策略的概率 other_indiv = random.choice(population) new_value = other_indiv[i] else: # 随机探索 new_value = random.uniform(lower_bound, upper_bound) new_individual.append(new_value) return new_individual ``` 此代码片段展示了如何通过概率机制平衡记忆保留、群体交互以及随机探索之间的关系,进步提升了算法的整体表现。 #### 技术栈的选择及其影响 对于任何大规模项目的实施来说,合理选择技术支持至关重要。当前主流的技术架构往往集成了高性能编程语言、分布式计算平台以及可靠的存储解决方案。这样的配置有助于保障系统的稳定性和扩展性,同时也为复杂算法提供了必要的硬件支持[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值