CEC2020:能量谷优化算法(Energy valley optimizer,EVO)求解CEC2020(提供MATLAB代码)

112 篇文章 26 订阅
88 篇文章 39 订阅

一、能量谷优化算法

能量谷优化算法(Energy valley optimizer,EVO)是MahdiAzizi等人于2023年提出的一种新颖的元启发式算法,其灵感来自关于稳定性和不同粒子衰变模式的物理原理。
物理反应是指两个粒子或外部亚原子粒子碰撞产生新粒子。在宇宙中,绝大多数粒子被认为是不稳定的,除了那些无限期保持完整的稳定粒子。不稳定的粒子倾向于通过分解或衰变来释放能量,而各种类型的粒子的整体衰变率则有所不同。在衰变过程中,产生能量较低的粒子,而额外的能量通过发射过程产生。能量谷涉及基于其结合能和与其他粒子相互作用的粒子的稳定性。对多种现象的直接观察使专家们提取了一些有价值的模式来定义粒子的衰变。该领域最关键的挑战是通过考虑中子(N)和质子(Z)的数量以及N / Z比率来确定粒子的稳定性界限。N/Z ≈ 1 是指稳定、轻质的颗粒,而对于较重的颗粒,较大的 N/Z 值被视为稳定带。基于粒子的稳定水平,每个粒子倾向于通过移动其N / Z比并向稳定带或能量谷移动来增加其稳定性水平。在这方面,粒子的中子富集水平在这一作用中起着至关重要的作用。位于稳定性界限上方的富中子粒子经历衰变过程,需要如此多的中子来保持稳定。另一方面,贫中子粒子需要太少的中子来实现稳定性,倾向于经历电子捕获或正电子发射以向能谷或稳定带移动。
在这里插入图片描述

在衰变过程中,产生能量水平较低的粒子,同时释放出过多的能量。有三种类型的排放决定了具有不同稳定性水平的粒子的衰变过程。α(α)粒子表示与氦相同的致密且带正电的粒子。β(β)粒子是带负电的粒子,其特征是具有较高速度的电子。伽马(γ)射线代表具有较高能量水平的光子。这些类型的发射的整体行为在电场内部进行了说明,考虑到α粒子在很小程度上向负极板弯曲。相比之下,β粒子向正极板弯曲很大,电场不影响γ射线。根据所呈现的发射过程细节,有三种类型的衰变,称为α、β和伽马衰变,源自前面提到的发射类型。在α衰变中,确定α粒子的损失,其中N / Z比率中的N和Z值在每个发射过程中减少。在β衰变中,β粒子的喷射是一个问题,其中通过减少N和增加Z值来增加N / Z比。在伽马衰变中,涉及从激发粒子中省略具有较高能级的γ光子,而这种衰变模式不需要改变N / Z值。这些方面的示意图如图所示。

1.1算法原理

第一步随机初始化:

X = [ X 1 X 2 ⋮ X i ⋮ X n ] = [ x 1 1 x 1 2 ⋯ x 1 j ⋯ x 1 d x 2 1 x 2 2 ⋯ x 2 j ⋯ x 2 d ⋮ ⋮ ⋮ ⋱ ⋮ x i 1 x i 2 ⋯ x i j ⋯ x i d ⋮ ⋮ ⋮ ⋱ ⋮ x n 1 x n 2 ⋯ x n j ⋯ x n d ] , { i = 1 , 2 , … , n . j = 1 , 2 , … , d . \mathrm{X}=\left[\begin{array}{c}{\mathrm{X}}_{1}\\ {\mathrm{X}}_{2}\\ \vdots \\ {\mathrm{X}}_{\mathrm{i}}\\ \vdots \\ {\mathrm{X}}_{\mathrm{n}}\end{array}\right]=\left[\begin{array}{c}{\mathrm{x}}_{1}^{1} {\mathrm{x}}_{1}^{2} \cdots {\mathrm{x}}_{1}^{\mathrm{j}} \cdots {\mathrm{x}}_{1}^{\mathrm{d}}\\ {\mathrm{x}}_{2}^{1} {\mathrm{x}}_{2}^{2} \cdots {\mathrm{x}}_{2}^{\mathrm{j}} \cdots {\mathrm{x}}_{2}^{\mathrm{d}}\\ \vdots \vdots \vdots \ddots \vdots \\ {\mathrm{x}}_{\mathrm{i}}^{1} {\mathrm{x}}_{\mathrm{i}}^{2} \cdots {\mathrm{x}}_{\mathrm{i}}^{\mathrm{j}} \cdots {\mathrm{x}}_{\mathrm{i}}^{\mathrm{d}}\\ \vdots \vdots \vdots \ddots \vdots \\ {\mathrm{x}}_{\mathrm{n}}^{1} {\mathrm{x}}_{\mathrm{n}}^{2} \cdots {\mathrm{x}}_{\mathrm{n}}^{\mathrm{j}} \cdots {\mathrm{x}}_{\mathrm{n}}^{\mathrm{d}}\end{array}\right], \left\{\begin{array}{c}\begin{array}{c}i=\mathrm{1,2},\dots ,n.\end{array}\\ j=\mathrm{1,2},\dots ,d.\end{array}\right. X= X1X2XiXn = x11x12x1jx1dx21x22x2jx2dxi1xi2xijxidxn1xn2xnjxnd ,{i=1,2,,n.j=1,2,,d.

x i j = x i , min j + rand . ( x i , max j − x i , min j ) , { i = 1 , 2 , … , n . j = 1 , 2 , … , d . {\text{x}}_{{\text{i}}}^{{\text{j}}} = {\text{x}}_{{{\text{i}},{\text{min}}}}^{{\text{j}}} + {\text{rand}}.\left( {{\text{x}}_{{{\text{i}},{\text{max}}}}^{{\text{j}}} - {\text{x}}_{{{\text{i}},{\text{min}}}}^{{\text{j}}} } \right),{ }\quad \left\{ {\begin{array}{c} {\begin{array}{c} {i = 1,2, \ldots ,n.} \\ \end{array} } \\ {j = 1,2, \ldots ,d.} \\ \end{array} } \right. xij=xi,minj+rand.(xi,maxjxi,minj),{i=1,2,,n.j=1,2,,d.
在算法的第二步中,确定粒子的富集束缚(EB),用于考虑富中子粒子和贫中子粒子之间的差异。为此,对每个粒子进行目标函数评估并确定为粒子的中子富集水平(NEL)。数学表示如下:
E B = ∑ i = 1 n N E L i n , i = 1 , 2 , … , n \mathrm{EB}=\frac{\sum_{\mathrm{i}=1}^{\mathrm{n}} \mathrm{NEL}_{\mathrm{i}}}{\mathrm{n}}, \mathrm{i}=1,2, \ldots, \mathrm{n} EB=ni=1nNELi,i=1,2,,n

在第三步中,根据目标函数评估确定颗粒的稳定性水平如下:
SL i = NEL i − BS WS − BS ,  i = 1 , 2 , … , n . {\text{SL}}_{{\text{i}}} = \frac{{{\text{NEL}}_{{\text{i}}} - {\text{BS}}}}{{{\text{WS}} - {\text{BS}}}},{\text{ i}} = 1,2, \ldots ,{\text{n}}.{ } SLi=WSBSNELiBS, i=1,2,,n.
在EVO的主搜索循环中,如果粒子的中子富集水平高于富集界限,则假定粒子具有更大的N / Z比,因此使用α,β或γ方案的衰变过程是透视的。在这方面,在[0,1]范围内生成一个随机数,它模仿宇宙中的稳定性界限(SB)。如果粒子的稳定性水平高于稳定性界限,则认为发生了α和γ衰变,因为对于稳定性水平较高的较重粒子来说,这两种衰变是可能发生的。
在这里插入图片描述

基于关于阿尔法衰变的物理原理、发射α射线,提高产物在物理反应中的稳定性水平。这方面可以在数学上表述为 EVO 的位置更新方案之一,其中生成新的候选解决方案。为此,生成两个随机整数作为 [1, d] 范围内的 Alpha Index I,表示发射光线的数量,以及 [1, Alpha Index I] 范围内的 Alpha Index II,它定义了要发射的α射线。发射的光线是候选解中的决策变量,它们被粒子或具有最佳稳定性水平的候选粒子中的射线移除并替换。这些方面在数学上表述如下:
X i New 1 = X i (  X BS (  x i j  ) ) , { i = 1 , 2 , … , n . j = A l p h a   I n d e x   I I . {\text{X}}_{{\text{i}}}^{{{\text{New}}1}} = {\text{X}}_{{\text{i}}} { }\left( {{\text{ X}}_{{{\text{BS}}}} { }\left( {{\text{ x}}_{{\text{i}}}^{{\text{j }}} } \right)} \right),{ }\left\{ {\begin{array}{c} {\begin{array}{c} {i = 1,2, \ldots ,n.} \\ \end{array} } \\ {j = Alpha \,Index \,II.} \\ \end{array} } \right.{ } XiNew1=Xi( XBS( xi)),{i=1,2,,n.j=AlphaIndexII.

此外,在伽马衰变中,发射γ射线以提高激发粒子的稳定性水平,因此这方面可以在数学上表述为 EVO 的另一个位置更新过程,其中生成新的候选解决方案。为此,在[1,d]范围内生成两个随机整数作为伽马指数I,表示发射光子的数量,以及[1,伽马指数I]范围内的伽马指数II,它定义了粒子中要考虑的光子。粒子中的光子是候选解中的决策变量,它们被相邻粒子或候选粒子移除并取代,它模仿激发粒子与其他粒子甚至磁场的相互作用。在这方面,所考虑的粒子与其他粒子之间的总距离计算如下,并为此目的使用最近的粒子:
D i k = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 , { i = 1 , 2 , … , n . k = 1 , 2 , … , n − 1. {\text{D}}_{{\text{i}}}^{{\text{k}}} = \sqrt {\left( {{\text{x}}_{2} - {\text{x}}_{1} } \right)^{2} + \left( {{\text{y}}_{2} - {\text{y}}_{1} } \right)^{2} } ,{ }\left\{ {\begin{array}{c} {i = 1,2, \ldots ,n.} \\ {k = 1,2, \ldots ,n - 1.} \\ \end{array} } \right. Dik=(x2x1)2+(y2y1)2 ,{i=1,2,,n.k=1,2,,n1.
使用这些操作,在此阶段生成第二个候选解决方案的位置更新过程按如下方式执行:
X i New 2 = X i (  X Ng (  x i j  ) ) , { i = 1 , 2 , … , n . j = G a m m a   I n d e x   I I . {\text{X}}_{{\text{i}}}^{{{\text{New}}2}} = {\text{X}}_{{\text{i}}} { }\left( {{\text{ X}}_{{{\text{Ng}}}} { }\left( {{\text{ x}}_{{\text{i}}}^{{\text{j }}} } \right)} \right),{ }\left\{ {\begin{array}{c} {\begin{array}{c} {i = 1,2, \ldots ,n.} \\ \end{array} } \\ {j = Gamma\, Index \,II.} \\ \end{array} } \right.{ } XiNew2=Xi( XNg( xi)),{i=1,2,,n.j=GammaIndexII.
如果粒子的稳定性水平低于稳定性界限,则认为会发生β衰变,因为这种类型的衰变发生在稳定性水平较低的更不稳定的粒子中。基于关于β衰变的物理原理,β射线从粒子中排出以提高粒子的稳定性水平,因此由于这些粒子的不稳定性水平较高,因此应该在搜索空间中进行较大的跳跃。在这方面,对粒子进行位置更新过程,其中执行向具有最佳稳定性水平和粒子中心的粒子或候选物的受控运动。该算法的这些方面模拟了粒子到达稳定带的趋势,其中大多数已知粒子位于该带附近,并且其中大多数具有更高水平的稳定性。这些方面在数学上表述如下:
X C P = ∑ i = 1 n X i n , i = 1 , 2 , … , n \mathrm{X}_{\mathrm{CP}}=\frac{\sum_{\mathrm{i}=1}^{\mathrm{n}} \mathrm{X}_{\mathrm{i}}}{\mathrm{n}}, \mathrm{i}=1,2, \ldots, \mathrm{n} XCP=ni=1nXi,i=1,2,,n

X i New 1 = X i + ( r 1 × X BS − r 2 × X CP ) SL i ,  i = 1 , 2 , … , n . {\text{X}}_{{\text{i}}}^{{{\text{New}}1}} = {\text{X}}_{{\text{i}}} + \frac{{\left( {{\text{r}}_{1} \times {\text{X}}_{{{\text{BS}}}} - {\text{r}}_{2} \times {\text{X}}_{{{\text{CP}}}} } \right)}}{{{\text{SL}}_{{\text{i}}} }},{\text{ i}} = 1,2, \ldots ,{\text{n}}.{ } XiNew1=Xi+SLi(r1×XBSr2×XCP), i=1,2,,n.
为了提高算法的开发和探索水平,对采用β衰变的粒子进行了另一个位置更新过程,其中受控地向具有最佳稳定水平的粒子或候选粒子的粒子或候选粒子在粒子的稳定性水平不影响运动过程的情况下执行。这些方面在数学上表述如下:
X i New 2 = X i + ( r 3 × X BS − r 4 ×  X Ng ) ,  i = 1 , 2 , … , n . {\text{X}}_{{\text{i}}}^{{{\text{New}}2}} = {\text{X}}_{{\text{i}}} + \left( {{\text{r}}_{3} \times {\text{X}}_{{{\text{BS}}}} - {\text{r}}_{4} \times {\text{ X}}_{{{\text{Ng}}}} } \right),{\text{ i}} = 1,2, \ldots ,{\text{n}}.{ } XiNew2=Xi+(r3×XBSr4× XNg), i=1,2,,n.
如果粒子的中子富集水平低于富集界限(,则假定粒子具有较小的N / Z比,因此粒子倾向于经历电子捕获或正电子发射以向稳定带移动。在这方面,确定搜索空间中的随机移动以考虑这些类型的运动,如下所示:

X i New = X i + r ,  i = 1 , 2 , … , n . {\text{X}}_{{\text{i}}}^{{{\text{New}}}} = {\text{X}}_{{\text{i}}} + {\text{r}},{\text{ i}} = 1,2, \ldots ,{\text{n}}.{ } XiNew=Xi+r, i=1,2,,n.

1.2算法描述

在这里插入图片描述

1.3算法流程

在这里插入图片描述

1.4参考文献

Azizi, M., Aickelin, U., A. Khorshidi, H. et al. Energy valley optimizer: a novel metaheuristic algorithm for global and engineering optimization. Sci Rep 13, 226 (2023). https://doi.org/10.1038/s41598-022-27344-y

二、CEC2020简介

CEC2020共有10个测试函数测试维度包含:2D、5D、10D、15D、20D。CEC2020测试问题随着维度的增加求解极其困难。

在这里插入图片描述

三、求解结果

将能量谷优化算法ECO运用于求解CEC2020中10个函数,其中每个测试函数可以选择的维度分别有:2D、5D、10D、15D、20D。增大迭代次数,能量谷优化算法ECO的求解效果更佳。本例测试函数维度均为10D(可根据自己需求调整),种群大小为50,最大迭代次数为100次。

close all
clear
clc
MaxFes = 100;%迭代次数
VarNumber = 10;%维度 2/5/10/15/20
nPop = 50;%种群大小
VarMin=-100;%下限
VarMax=100;%上限
fitnessfunc=str2func('cec20_func');
Function_name=10;%测试函数1-10
[Best_Fit,Best_Pos,Curve]=EVO(nPop,MaxFes,VarMin,VarMax,VarNumber,CostFunction);  
figure
plot(Curve,'k','linewidth',2.5)
xlabel('迭代次数')
ylabel('适应度值')
legend('EVO')
title(strcat('CEC2020-F',num2str(Function_name)))

部分求解结果:

F1:

在这里插入图片描述

F2:

在这里插入图片描述

F3:

在这里插入图片描述

F4:

在这里插入图片描述

F5:

在这里插入图片描述

四、完整MATLAB代码

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 智能优化算法是一种基于计算智能原理和方法的算法,旨在通过优化搜索策略,提高求解问题的效率和准确性。CEC2020测试函数是计算智能领域中常用的一组标准测试函数,被广泛用于评估不同优化算法的性能。 对于智能优化算法CEC2020测试函数上的测试,首先需要选择适当的智能优化算法作为测试算法,并确定测试问题的维度和优化目标。然后,将测试算法应用于CEC2020测试函数,通过迭代搜索的过程,找到最优解或接近最优解的解。 在测试过程中,需要记录和分析算法的收敛性能、收敛速度、最优解精度等指标。对于CEC2020测试函数中的每个函数,可以通过多次运行算法并取平均值的方式进行评估,以消除测试结果的随机性。 至于算法Matlab实现,可以根据测试算法的原理和步骤,利用Matlab编程语言开发相应的代码。在实现过程中,可以利用Matlab提供的向量化运算和优化工具箱,简化编码过程并提高算法效率。同时,为了便于测试和对比不同算法的性能,可以采用统一的接口和数据格式,以便于后续的分析和可视化展示。 综上所述,智能优化算法CEC2020测试函数上的测试能够评估算法的优劣,为算法的应用和改进提供参考。通过Matlab实现测试算法,可以进一步加深对算法原理的理解,并为实际问题的求解提供可行的解决方案。 ### 回答2: 智能优化算法是一种基于计算机算法的方法,用于解决复杂问题中的优化问题。CEC2020是计算智能领域的一个国际竞赛,用于评估智能优化算法的性能和效果。CEC2020测试函数是一系列经过精心设计的函数,用于模拟真实世界的复杂问题,包括连续优化问题、多模态优化问题等。 智能优化算法CEC2020测试函数上进行测试的目的是评估算法的搜索能力、收敛性能和鲁棒性等指标。通过对多个测试函数的优化结果进行对比和分析,可以评估算法的优劣,并进行参数调整和改进,提升算法的性能。 在Matlab中,可以实现多种智能优化算法来进行CEC2020测试函数的优化。常见的智能优化算法包括遗传算法(GA)、粒子群优化算法(PSO)、蚁群算法(ACO)等。这些算法都有相应的Matlab工具箱可以直接调用。 在实现时,可以定义CEC2020测试函数,并选择适当的智能优化算法和参数进行优化。通过迭代运行算法,并用测试函数的输出值来评估每一代的优化性能。最终,得到一个优化结果。 总之,对智能优化算法CEC2020测试函数上的测试及其Matlab实现,是一项重要任务,可以帮助我们评估和改进智能优化算法的性能,并为解决复杂问题提供有力的工具和方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值