优化对象:
求该函数在[-10, 10]区间的最大值。下面是该函数图像
在本例中,我们可以把x看作是粒子,函数值f(x)看作是适应度值(即粒子到最优对象的距离),适应度值越大(即粒子到最优对象越小), 最大的适应度就是我们要求的最大值。
# -*- coding: utf-8 -*-
import numpy as np
# 粒子(鸟)
class particle:
def __init__(self):
self.pos = 0 # 粒子当前位置
self.speed = 0
self.pbest = 0 # 粒子历史最好位置
class PSO:
def __init__(self):
self.w = 0.5 # 惯性因子
self.c1 = 1 # 自我认知学习因子
self.c2 = 1 # 社会认知学习因子
self.gbest = 0 # 种群当前最好位置
self.N = 20 # 种群中粒子数量
self.POP = [] # 种群
self.it