您的位置:首页 > 数据 >
粒子群算法原理 基于numpy6.2的粒子群算法详解
来源:CSDN 2023-02-08 11:12:38

目录

1粒子群算法简介2算法原理3迭代公式4算法流程5实例计算6代码实现6.1 基于numpy6.2 基于sko.pso

1粒子群算法简介


(资料图片仅供参考)

粒子群算法(Particle Swarm Optimization,简称PSO)是1995年Eberhart博士和Kennedy博士一起提出的。粒子群算法是通过模拟鸟群捕食行为设计的一种群智能算法。区域内有大大小小不同的食物源,鸟群的任务是找到最大的食物源(全局最优解),鸟群的任务是找到这个食物源。鸟群在整个搜寻的过程中,通过相互传递各自位置的信息,让其他的鸟知道食物源的位置最终,整个鸟群都能聚集在食物源周围,即我们所说的找到了最优解,问题收敛。学者受自然界的启发开发了诸多类似智能算法,如蚁群算法、布谷鸟搜索算法、鱼群算法、捕猎算法等等。

2算法原理

这是一个根据鸟群觅食行为衍生出启发式的算法,现在有一群鸟,他们一起出发觅食,目标就是找到可行域食物最丰富的位置。小鸟们在同一个微信群聊中,可以不断共享自己找到的事物最丰富的地方。策略如下:

1. 每只鸟随机找一个地方,按照一个随机的方向出发。

2. 每飞一分钟后, 每只鸟将自己找到的最优地点以及事物存量共享到群里,然后计算出群体找到的最优位置。

3. 每只鸟回顾自己的路径,综合考虑自己走过的最优的位置和群体最优位置决定下一步的方向。

4. 如果大家都到了同一个地方附近,就停止寻找,否则重复2 ,3 步。

整个群体的位置更新如下图,每一个红点即一个粒子: (图片来自 scikit-opt)

而某一只鸟(其中一个粒子)的位置更新方法如下图:

3迭代公式

迭代公式非常简单明了 每一次的速度更新公式: 位置更新公式: c1,c2-加速常数,调节学习最大步长 r1,r2-两个随机函数,取值范围[0,1],以增加搜索随机性 w-惯性权重,非负数,调节对解空间的搜索范围。 那怎么判断一个位置的优劣呢? 需要求解的最小化目标函数称为适应度函数, 将粒子的位置带入适应度函数,结果越小越优。

4算法流程

5实例计算

现在我们举一个简单的例子, 求解一维优化问题计算的目标函数 y = x 2 y=x^2 y=x2的最小值点。 初始化两个粒子,位置分别是 x = − 3 , x = 2 x = -3, x =2 x=−3,x=2, 初始速度为 v = 1 , v = − 1 v=1 , v=-1 v=1,v=−1 ,为了计算简便 w , c 1 , r 1 , c 2 , r 2 w,c_1,r_1,c_2,r_2 w,c1,r1,c2,r2参数值取1.

6代码实现

6.1 基于numpy

import numpy as np import random # pso  def suit(x):    x1, x2=x    return -(x1-10) ** 2 + -(x2 - 3) ** 2  # + -x3 ** 2def best_p(current_p,person_best): #      x = np.zeros_like(current_p)     n,d = current_p.shape    for i in range(n):# 每个粒子比较一次        a = current_p[i]        b = person_best[i]        if suit(b)>suit(a):            x[i] = b        else: x[i]= a    return x         def global_b(person_best): # n*d     n,d= person_best.shape     s = []    for j in range(n):        s.append(suit(person_best[j]))            i = np.array(s).argmax()    x = np.array(person_best[i])    return x         # init  n = 40 # 粒子个数d = 2current_v =  np.array([[random.randint(1, 100) for i in range(n)]]).reshape(-1,d)current_p = np.array([[random.randint(1, 100) for i in range(n)]]).reshape(-1,d)person_best = current_pglobal_best = global_b(person_best)  T = 0   w=1   while  T<100000:            # if  all([current_p[i][0]==current_p[0][0] for i in range(len(current_p))]):    #     print(T,current_p)    #     break    if sum(person_best.std(axis=0))<.1:        break            else:            w = w*0.99996;r1 = random.random(); r2 = random.random()        current_v = w*current_v + r1*(person_best-current_p)+ r1*(global_best - current_p)        #  w = w*0.999        # current_v = w*current_v +(person_best-current_p)+(global_best - current_p)        current_p = current_p + current_v        person_best =  best_p(current_p, person_best)        global_best = global_b(person_best)         #current_v = current_v + 2* (person_best- current_p)+2*(global_best- current_p)        T+=1 print(T, person_best)

6.2 基于sko.pso

python sko库中包含了常用的启发式算法, 也包含粒子群算法PSO,可以直接调用,非常快捷方便 。

from sko.PSO import PSOdef demo_func(x):    x1, x2, x3 = x    return (x1-5) ** 2 + (x2 - 2) ** 2 + (x3-19) ** 2pso = PSO(func=demo_func, dim=3)fitness = pso.fit()print("best_x is ", pso.gbest_x, "best_y is", pso.gbest_y) >>> best_x is  [ 4.99981675  2.00044853 18.99955148] best_y is [4.35931123e-07]

参考文献: [1]J. Kennedy and R.C. Eberhart. “Particle swarm optimization.” In IEEE international Conference on Neural Networks, volume 4,IEEE Press, 1995, pp. 1942–1948. [2] scikit_opt

关键词:
相关文章
6个涉煤项目荣获首届全国人工智能创新应用大赛奖 环球动态

6个涉煤项目荣获首届全国人工智能创新应用大赛奖

  近日,首届兴智杯全国人工智能创新应用大赛行业赋能专题赛结果揭晓,6个涉煤项目获奖。  其中,国家能源集团物资公司国家能源智慧供应链更多

2023-02-08 10:05:25
1月第四周云南省煤炭价格环比略跌

1月第四周云南省煤炭价格环比略跌

  据商务部重要生产资料市场监测系统显示,上周(2023年1月23日-29日),云南省煤炭均价为1525元吨,环比下跌03%。其中,无烟煤均价1000元更多

2023-02-08 10:07:09
蒙古煤炭单日进口量超过千车 创两年新高|每日讯息

蒙古煤炭单日进口量超过千车 创两年新高|每日讯息

  蒙古GoGo网消息,额尔登斯塔本陶勒盖公司计划从2月中旬起在网上交易煤炭。  据Mysteel集团通报称,额尔登斯塔本陶勒盖公司将从2月中旬起更多

2023-02-08 10:07:48
CCTD:动力煤市场偏弱,但不宜过度看空_今日播报

CCTD:动力煤市场偏弱,但不宜过度看空_今日播报

  受中下游环节库存高企、终端企业消费低迷和澳煤进口放宽等因素影响,节后动力煤市场悲观情绪蔓延,价格承压持续下跌,目前北方港口各主流更多

2023-02-08 10:15:23
CCTD发明“楼宇里的煤市AI机器人——数字煤市一体机”荣获一等奖|焦点热文

CCTD发明“楼宇里的煤市AI机器人——数字煤市一体

  近日,在中国煤炭工业协会开展的煤炭企业优秀五小技术创新成果评比中,由CCTD创新发明的数字煤市一体机荣获一等奖。  CCTD以数字赋能传更多

2023-02-08 09:55:44
全球讯息:CCTD:国际主要港口动力煤价格涨跌互现

全球讯息:CCTD:国际主要港口动力煤价格涨跌互现

  上周,由于国际终端用户库存普遍较高,对进口动力煤采购意愿持续低迷,澳大利亚动力煤价格继续下行,而由于受到印度煤炭现货市场需求增加更多

2023-02-07 15:00:43
全球热头条丨中国平煤神马集团新产品一年增收过亿元

全球热头条丨中国平煤神马集团新产品一年增收过亿

  中国平煤神马集团利用自主研发的第二代烯法生产环己醇催化技术生产的纯苯精脱硫催化剂、苯部分加氢催化剂、环己烯水合催化剂,因催化性能更多

2023-02-07 11:02:08
中国平煤神马集团聘任中国工程院院士陈文兴为首席科学家_世界速读

中国平煤神马集团聘任中国工程院院士陈文兴为首席

  2月6日下午,中国工程院院士、浙江理工大学校长、浙江省现代纺织技术创新中心主任陈文兴,北京服装学院材料设计与工程学院教授、原院长、更多

2023-02-07 11:15:56
近三个月国家能源局已核准新疆7个煤矿项目 产能1230万吨/年_全球热议

近三个月国家能源局已核准新疆7个煤矿项目 产能1

  据CCTD了解,近日,国家能源局再核准新疆地区两个煤矿项目,产能合计360万吨年。  ①吐鲁番七泉湖矿区新域煤矿120万吨年项目:建设单位更多

2023-02-07 09:57:00
贵州出台矿山安全行刑衔接实施办法-全球快资讯

贵州出台矿山安全行刑衔接实施办法-全球快资讯

  近日,国家矿山安监局贵州局、贵州省应急管理厅、贵州省自然资源厅、贵州省能源局、贵州省司法厅、贵州省高级人民法院、贵州省人民检察院更多

2023-02-07 10:01:15