3 o2 [+ H- n% F. b
/ u! f3 }( @; \
粒子群优化算法(Particle Swarm Optimization, PSO)是一种基于群体智能的优化算法灵感来源于鸟群觅食的行为。该算法通过模拟个体(粒子)在搜索空间中的移动来寻找最优解。+ b% I R" u. l8 i. @, p
disp(['Iteration ' num2str(iter) ': Best Fitness = ' num2str(globalBestFitness)]);
0 h; A) N3 y- U4 \\\" x- W! P
end
7 G4 j+ y1 x( i2 b
' ~) U# T; K, S
% 输出结果\\" g N, F) N: }, n
disp(['全局最佳位置: ', num2str(globalBestPosition)]);
6 c* L* P! Q( z4 O3 F
disp(['全局最佳适应度: ', num2str(globalBestFitness)]);
/ h0 Z+ }\\" M8 V) _
```
### 代码分析0 s! g) M( ?' d& k+ \5 h4 h7 @! t
) U {" y, E9 e2 ?; g m) `$ i1. **参数设置**:定义粒子数量、维度、最大迭代次数和搜索边界。 ! ^& R6 Z* F0 Q8 ]. S$ l6 B2 d) U6 T2 T% d
2. **初始化**: S- @1 K/ c, a4 t: D - 随机初始化粒子的位置和速度。( [/ |& \6 ]+ G$ c3 k+ l
- 设置每个粒子的最佳位置和适应度。' e* a, L' T- ?+ c
% E4 I* E U V) Q2 h3. **目标函数**:使用Rosenbrock函数作为目标函数。 & a8 a2 Z4 [/ R) m7 J . C' z- g2 I( F4. **主循环**: ; \. e2 \' I/ i- X) S - 在每次迭代中,计算每个粒子的适应度。, Z% u0 r! j/ o n
- 更新每个粒子的个人最佳位置和全局最佳位置。9 f. |# j0 [4 K
- 根据惯性、个体和社会学习因子更新粒子的速度和位置。 1 T' J% o3 N4 O2 _; L. }0 l4 w - 确保粒子位置在规定的边界内。0 f' U: w3 Z! t& E, n. p
6 B4 a: x0 ^/ G- J; S8 f& c5. **日志输出**:在每次迭代输出当前最佳适应度。 4 V! M$ a6 o0 Z! `7 {* q) q. V) c% }0 b, q p
运行此代码后,您可以观察到 PSO 迭代过程中的输出,最终得到全局最佳位置和适应度值。 b( p& G; [# S) Z V 7 I2 R2 B2 T2 L8 J) A$ [% g## 注意# w5 x$ h" t% T1 O
- 您可以根据需要调整粒子数量、维度、迭代次数或搜索边界。; C6 \7 ]; ?% P. l5 e. p6 U
- 目标函数可以修改为适合您问题的任何函数。( R; ?& A: y/ r% r
% U' d- o: Q; c- J