粒子群优化python代码
时间: 2023-07-24 08:21:37 浏览: 41
以下是一个简单的粒子群优化算法的 Python 代码示例:
```python
import random
# 目标函数
def objective_function(x):
return x**2
# 初始化粒子群
def initialize_swarm(num_particles, bounds):
particles = []
for i in range(num_particles):
particle = {}
particle['position'] = [random.uniform(bounds[i][0], bounds[i][1]) for i in range(len(bounds))]
particle['velocity'] = [random.uniform(-1, 1) for i in range(len(bounds))]
particle['best_position'] = particle['position']
particle['best_score'] = objective_function(particle['position'])
particles.append(particle)
return particles
# 更新粒子群
def update_swarm(particles, global_best_position, c1, c2, w):
for particle in particles:
for i in range(len(particle['position'])):
r1 = random.random()
r2 = random.random()
particle['velocity'][i] = w*particle['velocity'][i] + c1*r1*(particle['best_position'][i]-particle['position'][i]) + c2*r2*(global_best_position[i]-particle['position'][i])
particle['position'][i] += particle['velocity'][i]
score = objective_function(particle['position'])
if score < particle['best_score']:
particle['best_score'] = score
particle['best_position'] = particle['position']
return particles
# 找到全局最优解
def find_global_best(particles):
best_particle = min(particles, key=lambda particle: particle['best_score'])
return best_particle['best_position']
# 粒子群优化主函数
def particle_swarm_optimization(num_particles, bounds, max_iterations, c1, c2, w):
particles = initialize_swarm(num_particles, bounds)
global_best_position = find_global_best(particles)
for i in range(max_iterations):
particles = update_swarm(particles, global_best_position, c1, c2, w)
global_best_position = find_global_best(particles)
return global_best_position
# 示例
bounds = [(-5, 5)]
best = particle_swarm_optimization(num_particles=20, bounds=bounds, max_iterations=100, c1=0.5, c2=0.5, w=0.9)
print('Best Position:', best)
print('Best Score:', objective_function(best))
```
在这个示例中,我们定义了一个目标函数`objective_function`,它接受一个参数并返回一个评分。我们还定义了一个`initialize_swarm`函数来初始化粒子群,一个`update_swarm`函数来更新粒子群中的每个粒子,一个`find_global_best`函数来找到全局最优解,并且一个主函数`particle_swarm_optimization`来驱动整个优化过程。我们使用粒子群优化算法来最小化给定的目标函数,其参数包括粒子数量、边界、最大迭代次数、加速常数和惯性权重。
请注意,这只是一个简单的示例,可以根据需要进行修改和扩展。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)