以下是一个简单的实现粒子群优化算法的 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 函数是算法的核心实现部分,包括初始化粒子群、更新粒子位置和速度、计算适应度、更新个体和群体最优位置、边界处理等步骤。测试代码中使用了一个简单的二次函数作为目标函数,其他函数可以根据需要进行替换。

Python 实现粒子群优化算法代码示例

原文地址: https://www.cveoy.top/t/topic/oN2a 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录