python实现粒子群算法
时间: 2023-08-30 09:04:55 浏览: 95
粒子群算法(Particle Swarm Optimization,PSO)是一种基于群体智能的优化算法,常用于解决优化问题。下面是一个使用Python实现粒子群算法的简单示例:
```python
import random
class Particle:
def __init__(self, dim, min_val, max_val):
self.position = [random.uniform(min_val, max_val) for _ in range(dim)]
self.velocity = [random.uniform(-1, 1) for _ in range(dim)]
self.best_position = self.position.copy()
self.best_fitness = float('inf')
def update_velocity(self, global_best_position, w, c1, c2):
for i in range(len(self.velocity)):
r1 = random.random()
r2 = random.random()
cognitive = c1 * r1 * (self.best_position[i] - self.position[i])
social = c2 * r2 * (global_best_position[i] - self.position[i])
self.velocity[i] = w * self.velocity[i] + cognitive + social
def update_position(self, min_val, max_val):
for i in range(len(self.position)):
self.position[i] += self.velocity[i]
if self.position[i] < min_val:
self.position[i] = min_val
elif self.position[i] > max_val:
self.position[i] = max_val
def evaluate_fitness(self, fitness_func):
fitness = fitness_func(self.position)
if fitness < self.best_fitness:
self.best_fitness = fitness
self.best_position = self.position.copy()
def particle_swarm_optimization(dim, min_val, max_val, num_particles, num_iterations, fitness_func):
particles = [Particle(dim, min_val, max_val) for _ in range(num_particles)]
global_best_fitness = float('inf')
global_best_position = None
for _ in range(num_iterations):
for particle in particles:
particle.evaluate_fitness(fitness_func)
if particle.best_fitness < global_best_fitness:
global_best_fitness = particle.best_fitness
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.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)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)