写一个粒子群优化算法代码
时间: 2023-06-07 14:08:08 浏览: 40
好的,我可以为您提供粒子群优化算法的代码,以下是示例代码(Python):
```
import numpy as np
def PSO(func, dim, max_iter=100, swarm_size=100, c1=2, c2=2, w=0.9):
# 初始化粒子群
swarm_pos = np.random.uniform(-10, 10, (swarm_size, dim))
swarm_vel = np.zeros_like(swarm_pos)
swarm_best_pos = swarm_pos.copy()
swarm_best_score = np.full((swarm_size,), np.inf)
# 开始迭代
for i in range(max_iter):
# 计算适应度
scores = func(swarm_pos)
# 更新粒子个体最优解和全局最优解
update_inds = swarm_best_score > scores
swarm_best_score[update_inds] = scores[update_inds]
swarm_best_pos[update_inds] = swarm_pos[update_inds]
global_best_ind = swarm_best_score.argmin()
global_best_pos = swarm_best_pos[global_best_ind]
# 更新速度和位置
swarm_vel = w * swarm_vel + c1 * np.random.rand(swarm_size, dim) * (swarm_best_pos - swarm_pos) \
+ c2 * np.random.rand(swarm_size, dim) * (global_best_pos - swarm_pos)
swarm_pos = swarm_pos + swarm_vel
return global_best_pos, func(global_best_pos)
```
其中,`func` 为优化目标函数,`dim` 为函数维度,`max_iter` 为最大迭代次数,`swarm_size` 为粒子群大小,`c1` 和 `c2` 分别为学习因子,`w` 为惯性权重。函数会返回全局最优解和最优解的函数值。