Python 实现粒子群优化算法代码示例
以下是一个简单的实现粒子群优化算法的 Python 代码:
import random
# 目标函数,可以根据需要进行修改
def fitness_function(x):
return x**2
# 粒子群优化算法
def particle_swarm_optimization(fitness_function, num_particles, num_iterations, x_min, x_max, w, c1, c2):
# 初始化粒子位置和速度
particles = []
for i in range(num_particles):
particle = {'position': random.uniform(x_min, x_max), 'velocity': 0, 'personal_best_position': None, 'personal_best_fitness': float('inf')}
particle['fitness'] = fitness_function(particle['position'])
particle['personal_best_position'] = particle['position']
particle['personal_best_fitness'] = particle['fitness']
particles.append(particle)
# 初始化群体最优位置和最优适应度
global_best_position = None
global_best_fitness = float('inf')
# 迭代优化
for i in range(num_iterations):
for particle in particles:
# 更新粒子速度
particle['velocity'] = w*particle['velocity'] + c1*random.random()*(particle['personal_best_position']-particle['position']) + c2*random.random()*(global_best_position-particle['position'])
# 更新粒子位置
particle['position'] += particle['velocity']
# 边界处理
if particle['position'] < x_min:
particle['position'] = x_min
particle['velocity'] = 0
elif particle['position'] > x_max:
particle['position'] = x_max
particle['velocity'] = 0
# 计算粒子适应度
particle['fitness'] = fitness_function(particle['position'])
# 更新粒子个体最优位置和最优适应度
if particle['fitness'] < particle['personal_best_fitness']:
particle['personal_best_position'] = particle['position']
particle['personal_best_fitness'] = particle['fitness']
# 更新群体最优位置和最优适应度
if particle['fitness'] < global_best_fitness:
global_best_position = particle['position']
global_best_fitness = particle['fitness']
# 输出当前迭代的最优解
print('Iteration %d: x=%f, f(x)=%f' % (i+1, global_best_position, global_best_fitness))
return global_best_position, global_best_fitness
# 测试算法
if __name__ == '__main__':
num_particles = 20
num_iterations = 100
x_min = -10
x_max = 10
w = 0.5
c1 = 1
c2 = 2
particle_swarm_optimization(fitness_function, num_particles, num_iterations, x_min, x_max, w, c1, c2)
该代码实现了一个简单的粒子群优化算法,可以根据需要进行修改和扩展。其中,fitness_function 函数用于定义目标函数,particle_swarm_optimization 函数是算法的核心实现部分,包括初始化粒子群、更新粒子位置和速度、计算适应度、更新个体和群体最优位置、边界处理等步骤。测试代码中使用了一个简单的二次函数作为目标函数,其他函数可以根据需要进行替换。
原文地址: https://www.cveoy.top/t/topic/oN2a 著作权归作者所有。请勿转载和采集!