该算法于2025年3月最新发表在中科院1区SCI期刊 Computer Methods in Applied Mechanics and Engineering。

3. 梦境优化算法

本节基于前一节总结的梦想特征,建立了基于梦想优化算法(DOA)的数学模型。它详细描述了算法实现过程,并展示了算法的伪代码和流程图。最后,分析了算法的时间复杂度。

3.1. 优化算法假设

结合人类梦想的特征与优化算法知识,我们总结以下四个假设:

  • 梦想的质量可以通过适应度值来评估。
  • 梦想的开始与现有记忆的基础密切相关。
  • 人们会部分忘记现有记忆,并用逻辑自组织的信息补充遗忘的部分。
  • 记忆能力指导个体或群体,并具有一定的随机性。

这些假设指导了我们新算法的提出。工作流程、探索阶段和算法开发阶段的各种策略都具体体现了这四个假设。
在这里插入图片描述

3.2. 初始化阶段

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

Xi=Xl+rand×(Xu−Xl),i=1,2,…,N X_i = X_l + rand \times (X_u - X_l), \quad i = 1, 2, \ldots, N Xi=Xl+rand×(XuXl),i=1,2,,N

其中 NNN 表示个体数量,即种群规模;XiX_iXi 是种群中的第 iii 个个体;XlX_lXlXuX_uXu 分别表示搜索空间的下界和上界;randrandrand 是一个介于0和1之间的随机数

3.3. 探索阶段

在探索阶段(迭代计数从0到 TdT_dTd),我们首先根据记忆能力将种群分成5组,每组中的个体按如下方式更新:每个迭代被视为一次梦想行为,通过不断执行这种行为,我们获得最优解和最优值。在每次梦想会话之前,将每组中所有个体展示给整个种群(即前几次迭代中的最佳个体)。由于个体在梦想时随机忘记部分信息(即某些维度的信息),只有遗忘维度的位置被更新。不同记忆能力的组意味着不同的遗忘维度数量,由参数 k1,k2,k3,k4,k5k_1, k_2, k_3, k_4, k_5k1,k2,k3,k4,k5 表示。因此,每个个体的位置首先重置为该组中前几次迭代的最佳个体的位置,然后 kqk_qkq 维度被随机选择,从 DimDimDim 维度中,表示为 K1,K2,…,KkK_1, K_2, \ldots, K_kK1,K2,,Kk,这些维度的位置被更新,其中 q=1,2,3,4,5q = 1, 2, 3, 4, 5q=1,2,3,4,5 表示组号。更新按顺序从第1个个体到第N个个体进行。具体的更新方法和公式如下:

3.3.1. 记忆策略

首先,作为组 qqq 中个体的基础记忆策略,他们可以记住组中最佳个体在梦想前的位置信息,然后在梦想时将其位置信息重置为该最佳个体的位置:

Xit+1=Xbest,qt X_i^{t+1} = X_{best,q}^t Xit+1=Xbest,qt

其中 Xit+1X_i^{t+1}Xit+1 表示第 iii 个个体在迭代 t+1t+1t+1 的位置,Xbest,qtX_{best,q}^tXbest,qt 表示组 qqq 在迭代 ttt 的最佳个体。

3.3.2. 遗忘和补充策略

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

xi,jt+1=xbest,q,jt+(xi,jt+rand×(xu,j−xl,j))×12×(cos⁡(π×t+Tmax−TdTd)+1),j=K1,K2,…,Kkq x_{i,j}^{t+1} = x_{best,q,j}^t + (x_{i,j}^t + rand \times (x_{u,j} - x_{l,j})) \times \frac{1}{2} \times \left( \cos \left( \pi \times \frac{t+T_{max}-T_d}{T_d} \right) + 1 \right), \quad j = K_1, K_2, \ldots, K_{k_q} xi,jt+1=xbest,q,jt+(xi,jt+rand×(xu,jxl,j))×21×(cos(π×Tdt+TmaxTd)+1),j=K1,K2,,Kkq

其中 xi,jt+1x_{i,j}^{t+1}xi,jt+1 表示第 iii 个个体在第 jjj 维的位置在迭代 t+1t+1t+1xbest,q,jtx_{best,q,j}^txbest,q,jt 表示组 qqq 在迭代 ttt 的最佳个体在第 jjj 维的位置;xl,jx_{l,j}xl,jxu,jx_{u,j}xu,j 分别表示搜索空间在第 jjj 维的下界和上界;randrandrand 是一个介于0和1之间的随机数;ttt 是当前迭代次数,TmaxT_{max}Tmax 是最大迭代次数,TdT_dTd 是探索阶段的最大迭代次数。

3.3.3. 梦想共享策略

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

xi,jt+1={xm,jt+1,m≤ixi,jt,i<m≤N x_{i,j}^{t+1} = \begin{cases} x_{m,j}^{t+1}, & m \leq i \\ x_{i,j}^t, & i < m \leq N \end{cases} xi,jt+1={xm,jt+1,xi,jt,mii<mN

其中 xi,jt+1x_{i,j}^{t+1}xi,jt+1 表示第 iii 个个体在第 jjj 维的位置在迭代 t+1t+1t+1mmm 是从 [1,N][1, N][1,N] 中随机选择的自然数,用于每个维度更新。

综合考虑这些公式,公式(4)表明在 K1,K2,…,KkqK_1, K_2, \ldots, K_{k_q}K1,K2,,Kkq 维度中,个体在梦想时可以记住组中最佳个体的位置信息,保留这些维度的确切位置。公式(5)表明在 K1,K2,…,KkqK_1, K_2, \ldots, K_{k_q}K1,K2,,Kkq 维度中,个体在梦想时忘记了组中最佳个体的位置信息,并自组织了新的位置。随着迭代次数的增加,自组织补充位置信息逐渐接近原始位置信息,体现了自组织过程的固有逻辑,并控制算法从全局搜索过渡到局部搜索。公式(6)表明在 K1,K2,…,KkqK_1, K_2, \ldots, K_{k_q}K1,K2,,Kkq 维度中,个体被允许随机获取种群中其他个体的位置,达到一定水平的梦想信息共享。

3.4. 开发阶段

在开发阶段(迭代计数从 TdT_dTdTmaxT_{max}Tmax),不再进行分组。在每次梦想会话之前,将前几次迭代中整个种群的最佳梦想(即最佳个体)展示给种群。然后,更新每个个体的遗忘维度的位置。由于种群中的所有个体具有相同数量的遗忘维度,表示为 kkk。从 DimDimDim 维度中,krk_rkr 遗忘维度被随机选择,表示为 K1,K2,…,KkrK_1, K_2, \ldots, K_{k_r}K1,K2,,Kkr,这些维度的位置按如下方式更新。更新方法类似于公式(4)、(5),更新公式如下:

3.4.1. 记忆策略

Xit+1=Xbestt X_i^{t+1} = X_{best}^t Xit+1=Xbestt

其中 Xit+1X_i^{t+1}Xit+1 表示第 iii 个个体在迭代 t+1t+1t+1 的位置,XbesttX_{best}^tXbestt 表示整个种群在迭代 ttt 的最佳个体。

3.4.2. 遗忘和补充策略

xi,jt+1=xbest,jt+(xl,j+rand×(xu,j−xl,j))×12×(cos⁡(π×tTmax)+1),j=K1,K2,…,Kkr x_{i,j}^{t+1} = x_{best,j}^t + (x_{l,j} + rand \times (x_{u,j} - x_{l,j})) \times \frac{1}{2} \times \left( \cos \left( \pi \times \frac{t}{T_{max}} \right) + 1 \right), \quad j = K_1, K_2, \ldots, K_{k_r} xi,jt+1=xbest,jt+(xl,j+rand×(xu,jxl,j))×21×(cos(π×Tmaxt)+1),j=K1,K2,,Kkr

其中 xi,jt+1x_{i,j}^{t+1}xi,jt+1 表示第 iii 个个体在第 jjj 维的位置在迭代 t+1t+1t+1xbest,jtx_{best,j}^txbest,jt 表示整个种群在迭代 ttt 的最佳个体在第 jjj 维的位置;xl,jx_{l,j}xl,jxu,jx_{u,j}xu,j 分别表示搜索空间在第 jjj 维的下界和上界;randrandrand 是一个介于0和1之间的随机数。

同样,公式(7)表明在 K1,K2,…,KkrK_1, K_2, \ldots, K_{k_r}K1,K2,,Kkr 维度中,个体可以记住前几次迭代中种群中最佳个体的位置信息,在梦想时保留这些维度的确切位置。公式(8)表明在 K1,K2,…,KkrK_1, K_2, \ldots, K_{k_r}K1,K2,,Kkr 维度中,个体忘记了前几次迭代中种群中最佳个体的位置信息,并自组织了新的位置。

3.5. 参数设置

经过多次数值实验并考虑算法的稳定性和适用性,我们设置DOA的参数如下:

Td=910×Tmax T_d = \frac{9}{10} \times T_{max} Td=109×Tmax

其中 TdT_dTd 表示探索阶段的最大迭代次数,TmaxT_{max}Tmax 表示算法的最大迭代次数。

kq=randi(⌊Dim8×q⌋,max⁡{2,⌈Dim3×q⌉}),q=1,2,3,4,5 k_q = randi \left( \left\lfloor \frac{Dim}{8 \times q} \right\rfloor, \max \left\{ 2, \left\lceil \frac{Dim}{3 \times q} \right\rceil \right\} \right), \quad q = 1, 2, 3, 4, 5 kq=randi(8×qDim,max{2,3×qDim}),q=1,2,3,4,5

其中 randi(a,b)randi(a, b)randi(a,b) 表示从范围 aaabbb 中随机选择的整数,kqk_qkq 表示组 qqq 在探索阶段的遗忘维度数量,DimDimDim 表示问题维度。

kr=randi(2,max⁡{2,⌈Dim3⌉}) k_r = randi \left( 2, \max \left\{ 2, \left\lceil \frac{Dim}{3} \right\rceil \right\} \right) kr=randi(2,max{2,3Dim})

其中 randi(a,b)randi(a, b)randi(a,b) 表示从范围 aaabbb 中随机选择的整数,krk_rkr 表示开发阶段的遗忘维度数量,DimDimDim 表示问题维度。

参数 uuu 用于调整探索阶段中遗忘和补充策略与梦想共享策略之间的比例。当 rand<urand < urand<u 时,执行遗忘和补充策略;否则,执行梦想共享策略。我们设置 u=0.9u = 0.9u=0.9

3.6. 边界条件处理方法

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

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

xi,jt+1=xl,j+rand×(xu,j−xl,j) x_{i,j}^{t+1} = x_{l,j} + rand \times (x_{u,j} - x_{l,j}) xi,jt+1=xl,j+rand×(xu,jxl,j)

其中 xi,jt+1x_{i,j}^{t+1}xi,jt+1 表示第 iii 个个体在第 jjj 维的位置在迭代 t+1t+1t+1xl,jx_{l,j}xl,jxu,jx_{u,j}xu,j 分别表示搜索空间在第 jjj 维的下界和上界;randrandrand 是一个介于0和1之间的随机数。

第二种方法适用于 Dim>15Dim > 15Dim>15 的问题。这些问题由于维度较大,更复杂,具有更多的局部最优,需要增强的全局优化能力和逃脱局部最优的能力。因此,对于超出边界条件的代理点,我们使用类似于开发阶段重新更新的方法,如下所示:

xi,jt+1={xm,jt,m≤ixi,jt,i<m≤N x_{i,j}^{t+1} = \begin{cases} x_{m,j}^t, & m \leq i \\ x_{i,j}^t, & i < m \leq N \end{cases} xi,jt+1={xm,jt,xi,jt,mii<mN

其中 xi,jt+1x_{i,j}^{t+1}xi,jt+1 表示第 iii 个个体在第 jjj 维的位置在迭代 t+1t+1t+1mmm 是从 [1,N][1, N][1,N] 中随机选择的不同自然数,用于每个维度更新。

由于DOA逐个更新每个个体,公式(12)、(13)仅更新超出边界条件的个体的决策变量,这两种方法都可以有效确保种群中所有个体的变量保持在搜索空间内。

[1] Yifan Lang, Yuelin Gao. Dream Optimization Algorithm (DOA): A novel metaheuristic optimization algorithm inspired by human dreams and its applications to real-world engineering problems. Computer Methods in Applied Mechanics and Engineering. https://doi.org/10.1016/j.cma.2024.117718.

更多推荐