智能优化算法:云漂移优化算法 Cloud Drift Optimization(CDO)
文章目录
- 智能优化算法:云漂移优化算法 Cloud Drift Optimization(CDO)
- 1.算法原理
- 1.1 初始化:
- 1.2 权重适应
- 1.3 开发阶段:局部细化
- 1.4 探索阶段:全局搜索
- 1.5 随机扰动
- 2.实验结果
- 3.Matlab&Python
- 4.参考文献
云漂移优化算法(CDO)是一种创新的自然启发元启发式优化方法,用来处理复杂优化问题。CDO模仿受大气力影响的云粒子的动态行为,在探索和利用之间取得微妙平衡。该算法具备自适应权重调整机制,可以改变云的实时漂移行为,实现搜索空间的高效导航。
云是大气中的动态集合,由悬浮在空气中的水滴或冰晶组成。云的运动受各类气象因素影响:初始阶段缓慢形成并移动;成熟之后在强风、气压梯度驱动下产生快速不可预测运动。云会主动向含水量高、温度梯度适宜的区域聚集,该趋向行为被建模为优化算法的搜索行为。CDO将云运动划分为利用与探索两个阶段;每个人造云搜索代理依据自身适应度获得动态权重;同时引入随迭代递减的概率因子模拟天气突变带来的随机扰动,以此避免算法过早收敛。完整流程包含:随机初始化、动态加权、双峰位置更新(利用/探索)、自适应随机扰动、收敛判断。
1.算法原理
1.1 初始化:
和其他群优化算法一样,采用随机初始化。
个体维度取值公式:
x i j = r a n d ( N , D i m ) × ( U B j − L B j ) + L B j x_{ij} = rand(N,Dim) \times (UB_j - LB_j) + LB_jxij=rand(N,Dim)×(UBj−LBj)+LBj
种群矩阵X n X_nXn(N × D i m N \times DimN×Dim维度):
X n = [ x 1 , 1 x 1 , 2 … x 1 , D i m x 2 , 1 x 2 , 2 … x 2 , D i m ⋮ ⋮ ⋱ ⋮ x N , 1 x N , 2 … x N , D i m ] N × D i m X_{n}= \begin{bmatrix} x_{1,1} & x_{1,2} & \dots & x_{1,Dim} \\ x_{2,1} & x_{2,2} & \dots & x_{2,Dim} \\ \vdots & \vdots & \ddots & \vdots \\ x_{N,1} & x_{N,2} & \dots & x_{N,Dim} \end{bmatrix}_{N \times Dim}Xn=x1,1x2,1⋮xN,1x1,2x2,2⋮xN,2……⋱…x1,Dimx2,Dim⋮xN,DimN×Dim
全局最优适应度、最优个体求解:
f b e s t = min ( f ( X i ) ) f_{best} = \min \big(f(X_i)\big)fbest=min(f(Xi))
X s u p e r i o r = X ( arg min ( f ( X i ) ) ) X_{superior} = X\big(\arg \min \big(f(X_i)\big)\big)Xsuperior=X(argmin(f(Xi)))
1.2 权重适应
每个云(粒子)根据相对于种群其他个体的适应度分配动态权重,权重决定该粒子受自身位置与其他个体位置影响的强度。根据适应度函数更新每个云的权重:
w i , j = { 1 + ( 0.3 + 0.7 U ( 0 , 1 ) ) ⋅ log 10 ( f ∗ − f ( X i ) S + 1 ) , i ⩽ N 2 1 − ( 0.3 + 0.7 ⋅ U ( 0 , 1 ) ) ⋅ log 10 ( f ( X i ) − f ∗ S + 1 ) , otherwise S = f ∗ − f max + ε (3) w_{i,j}= \begin{cases} 1 + \big(0.3 + 0.7U(0,1)\big)\cdot \log_{10}\left(\dfrac{f^{*}-f(X_i)}{S} + 1\right), & i \leqslant \dfrac{N}{2} \\[6pt] 1 - \big(0.3 + 0.7\cdot U(0,1)\big)\cdot \log_{10}\left(\dfrac{f(X_i)-f^{*}}{S} + 1\right), & \text{otherwise} \end{cases} \quad S = f^{*} - f^{\max} + \varepsilon \tag{3}wi,j=⎩⎨⎧1+(0.3+0.7U(0,1))⋅log10(Sf∗−f(Xi)+1),1−(0.3+0.7⋅U(0,1))⋅log10(Sf(Xi)−f∗+1),i⩽2NotherwiseS=f∗−fmax+ε(3)
1.3 开发阶段:局部细化
在该阶段,云向目前搜索得到的全局最优解位置移动,执行局部开发细化。位置更新方程为:
X i ( t + 1 ) ( j ) = X ∗ ( j ) + 0.8 ⋅ v b ( j ) ⋅ ( w i , j ⋅ X A ( j ) − X B ( j ) ) , (4) X_i^{(t+1)}(j) = X^{*}(j) + 0.8 \cdot v_b(j) \cdot \big(w_{i,j} \cdot X_A(j) - X_B(j)\big), \tag{4}Xi(t+1)(j)=X∗(j)+0.8⋅vb(j)⋅(wi,j⋅XA(j)−XB(j)),(4)
1.4 探索阶段:全局搜索
探索阶段,允许云在搜索空间内大范围随机移动,维持种群搜索多样性。
X i ( t + 1 ) ( j ) = v c ( j ) ⋅ X i ( j ) , (5) X_i^{(t+1)}(j) = v_c(j) \cdot X_i(j), \tag{5}Xi(t+1)(j)=vc(j)⋅Xi(j),(5)
1.5 随机扰动
部分云以概率z zz执行随机重新初始化,模拟大气突发天气变化改变云的漂移路线,防止过早收敛,在迭代后期继续保留探索能力,类似遗传算法变异算子。扰动概率z zz随迭代进程逐步递减。
X i ( j ) = l b + ( u b − l b ) U ( 0 , 1 ) , with probability z X_i(j) = lb + (ub - lb)U(0,1), \quad \text{with probability } zXi(j)=lb+(ub−lb)U(0,1),with probabilityz
z = 0.002 + 0.003 ⋅ ( 1 − t T ) (6) z = 0.002 + 0.003 \cdot \left(1 - \frac{t}{T}\right) \tag{6}z=0.002+0.003⋅(1−Tt)(6)
2.实验结果
3.Matlab&Python
4.参考文献
[1] Alibabaei Shahraki, M. Cloud drift optimization algorithm as a nature-inspired metaheuristic. Discov Computing 28, 173 (2025).