广义正态分布优化算法(GNDO)Generalized Normal Distribution Optimization

文章提出了一种新颖的元启发式称为广义正态分布优化,所提出的方法受到广义正态分布模型的启发,每个个体使用广义正态分布曲线来更新其位置。与大多数元启发式算法不同,所提出的方法只需要基本的种群大小和终端条件就可以解决优化问题。文章于2020年发表于中科院1区Energy Conversion and Management(JIF=9.9)上。

NO.1算法详解

GNDO 受到正态分布理论的启发。正态分布也称为高斯分布,是用来描述自然现象的一个非常重要的工具。正态分布可以定义如下。假设一个随机变量 x 服从位置参数 μ 和 scale 参数 δ 的概率分布,其概率密度函数可以表示为:
f ( x ) = 1 2 π δ e x p ( − ( x − μ ) 2 2 δ 2 ) f(x)=\frac{1}{\sqrt{2\pi}\delta}exp\left(-\frac{\left(x-\mu\right)^{2}}{2\delta^{2}}\right) f(x)=2π δ1exp(−2δ2(x−μ)2)

那么 x 可以称为正态随机变量,这种分布可以称为正态分布,即 ( x \sim N(\mu, \delta) ),正态分布包括两个变量,即位置参数 μ 和尺度参数 δ。位置参数 μ 和参数 δ 分别用于表示随机变量的平均值和标准方差。图2(a)显示了不同 μ 和 δ 的正态分布。可以看出,当 δ 保持不变时,概率密度曲线会朝着 μ 增加或减少的方向移动。此外,根据图2(b),当 μ 保持不变时,概率密度曲线将向增加 δ 的方向扩展。

一般来说,基于人群的优化方法的搜索过程分为以下三个阶段。首先,所有初始化的个体都在域散分布中。然后,在设计的勘探和开发策略的指导下,所有个体开始朝着全局最优解的方向前进。最后,所有个体都聚集在实现的最优解决方案周围。事实上,这个搜索过程可以用多个正态分布来描述。更具体地说,所有个体的位置都可以被视为受正态分布约束的随机变量。在第一阶段,平均位置和最佳位置相距较远。所有个体位置的标准方差更大。在第二阶段,平均位置和最佳位置之间的距离逐渐减小。所有在分数中的位置的标准方差逐渐变小。在最后阶段,距离是平均位置和最佳位置,所有个体的位置的标准方差可以最小值。

(1)GNDO数学模型

与其他基于群体的优化算法一样,GNDO 中的种群由下列方式进行:

x i , j t = l j + ( u j − l j ) × λ 5 , i = 1 , 2 , 3 , ... , N , j = 1 , 2 , ... , D x_{i,j}^t = l_j + (u_j - l_j) \times \lambda_5, i = 1, 2, 3, \ldots, N, j = 1, 2, \ldots, D xi,jt=lj+(uj−lj)×λ5,i=1,2,3,...,N,j=1,2,...,D

其中 D 是设计变量的数量,lj 是第 j 个设计变量的下限,uj 是第 j 个设计变量的上限,λ5 是介于 0 和 1 之间的随机数。请注意,第 i 个个体可能无法通过本地正态策略或全局搜索策略找到更好的解决方案。为了将更好的解决方案引入下一代人群,设计了一种筛选机制,可以表示为:
x i t + 1   =   { v i t , i f   f ( v i t )   <   f ( x i t ) x i t , o t h e r w i s e \left.x_{i}^{t+1}\:=\:\left\{\begin{matrix}{v_{i}^{t},\mathrm{if}\:f(v_{i}^{t})\:<\:f(x_{i}^{t})}\\{x_{i}^{t},\mathrm{otherwise}}\\\end{matrix}\right.\right. xit+1={vit,iff(vit)<f(xit)xit,otherwise

GNDO 的结构非常简单,GNDO 中设计的信息共享策略由局部开发和全局探索组成。局部开发基于构建的广义正态分布模型,该模型由当前平均位置和当前最优位置指导。全局探索与三个随机选择的个体有关。两种学习策略的详细说明如下:

(2)局部开发

局部开发指的是在由所有个体当前位置组成的搜索空间中寻找更好解决方案的过程。基于种群中个体分布与正态分布之间的关系,可以构建一个用于优化的广义正态分布模型:
v i ′ = μ i + δ i × η , i = 1 , 2 , 3 , ... , N v_{i}^{\prime} = \mu_{i} + \delta_{i} \times \eta, i = 1, 2, 3, \ldots, N vi′=μi+δi×η,i=1,2,3,...,N

其中 v i ′ v_{i}^{\prime} vi′ 是第 i 个个体在时间 t 的轨迹向量, μ i \mu_{i} μi 是第 i 个个体的广义平均位置, δ i \delta_{i} δi是广义标准差, η \eta η是惩罚因子。此外, μ i \mu_{i} μi, δ i \delta_{i} δi和 η \eta η可以定义为:
μ i = 1 3 ( x i t + x Best t + M ) \mu_{i} = \frac{1}{3} \left( x_{i}^{t} + x_{\text{Best}}^{t} + M \right) μi=31(xit+xBestt+M)
δ i = 1 3 [ ( x i ′ − μ ) 2 + ( x Best ′ − μ ) 2 + ( M − μ ) 2 ] \delta_{i} = \sqrt{\frac{1}{3} \left[ (x_{i}^{\prime} - \mu)^2 + (x_{\text{Best}}^{\prime} - \mu)^2 + (M - \mu)^2 \right]} δi=31[(xi′−μ)2+(xBest′−μ)2+(M−μ)2]

η = { − log ⁡ ( λ 1 ) × cos ⁡ ( 2 π λ 2 ) , if a ≤ b − log ⁡ ( λ 1 ) × cos ⁡ ( 2 π λ 2 + π ) , otherwise \eta = \begin{cases} \sqrt{-\log(\lambda_{1})} \times \cos(2\pi\lambda_{2}), & \text{if } a \leq b \\ \sqrt{-\log(\lambda_{1})} \times \cos(2\pi\lambda_{2} + \pi), & \text{otherwise} \end{cases} η={−log(λ1) ×cos(2πλ2),−log(λ1) ×cos(2πλ2+π),if a≤botherwise

其中 a , b , λ 1 a, b, \lambda_{1} a,b,λ1和 λ 2 \lambda_{2} λ2 是介于 0 和 1 之间的随机数, x Best t x_{\text{Best}}^{t} xBestt是当前最佳位置, M M M是当前种群的平均位置。此外, M M M 可以通过以下方式计算: M = ∑ i = 1 N x i i N M = \frac{\sum_{i=1}^{N} x_{i}^{i}}{N} M=N∑i=1Nxii

(3)全局探索

全局探索就是在全局范围内搜索一个语言空间,找到有潜力的区域。GNDO 的全局探索基于随机选择的三个个体,可以表示为:

v i ′ = x i ′ + β × ( ∣ λ 3 ∣ × v 1 ) + ( 1 − β ) × ( ∣ λ 4 ∣ × v 2 ) v_{i}^{\prime} = x_{i}^{\prime} + \beta \times (\left|\lambda_{3}\right| \times v_{1}) + (1 - \beta) \times (\left|\lambda_{4}\right| \times v_{2}) vi′=xi′+β×(∣λ3∣×v1)+(1−β)×(∣λ4∣×v2)

( 1 − β ) × ( ∣ λ 4 ∣ × v 2 ) (1 - \beta) \times (\left|\lambda_{4}\right| \times v_{2}) (1−β)×(∣λ4∣×v2)--- Global information sharing

其中 β \beta β 和 λ 3 \lambda_{3} λ3和 λ 4 \lambda_{4} λ4是两个遵循标准正态分布的随机数,β称为调整参数是介于 0 和 1 之间的随机数,v1 和 v2 是两个尾迹向量。此外,v1 和 v2c 的计算公式为: v 1 = { x i ′ − x p 1 ′ , if f ( x i ′ ) < f ( x p 1 ′ ) x p 1 ′ − x i ′ , otherwise v_{1} = \begin{cases} x_{i}^{\prime} - x_{p1}^{\prime}, & \text{if } f(x_{i}^{\prime}) < f(x_{p1}^{\prime}) \\ x_{p1}^{\prime} - x_{i}^{\prime}, & \text{otherwise} \end{cases} v1={xi′−xp1′,xp1′−xi′,if f(xi′)<f(xp1′)otherwise

v 2 = { x p 2 ′ − x p 3 ′ , if f ( x p 2 ′ ) < f ( x p 3 ′ ) x p 3 ′ − x p 2 ′ , otherwise v_{2} = \begin{cases} x_{p2}^{\prime} - x_{p3}^{\prime}, & \text{if } f(x_{p2}^{\prime}) < f(x_{p3}^{\prime}) \\ x_{p3}^{\prime} - x_{p2}^{\prime}, & \text{otherwise} \end{cases} v2={xp2′−xp3′,xp3′−xp2′,if f(xp2′)<f(xp3′)otherwise

其中 p1、p2 和 p3 是从 1 到 N 中选择的三个随机整数,满足 p1 ≠ p2 ≠ p3 ≠ i。adjust 参数 β 用于平衡两种信息共享策略。此外,λ3 和 λ4 是标准正态分布的随机数,可以使 GNDO 在进行全局搜索的过程中拥有更大的搜索空间。

相关推荐
sjsjs111 小时前
【多维DP】力扣3122. 使矩阵满足条件的最少操作次数
算法·leetcode·矩阵
哲学之窗1 小时前
齐次矩阵包含平移和旋转
线性代数·算法·矩阵
Sudo_Wang1 小时前
力扣150题
算法·leetcode·职场和发展
qystca1 小时前
洛谷 P1595 信封问题 C语言dp
算法
芳菲菲其弥章2 小时前
数据结构经典算法总复习(下卷)
数据结构·算法
我是一只来自东方的鸭.2 小时前
1. K11504 天平[Not so Mobile,UVa839]
数据结构·b树·算法
星语心愿.3 小时前
D4——贪心练习
c++·算法·贪心算法
光头man3 小时前
【八大排序(二)】希尔排序
算法·排序算法
武昌库里写JAVA3 小时前
使用React Strict DOM改善React生态系统
数据结构·vue.js·spring boot·算法·课程设计
创意锦囊3 小时前
随时随地编码,高效算法学习工具—E时代IDE
ide·学习·算法