2021-01-28 粒子群优化算法-Python版本和Matlab函数 particleswarm 调用

197 篇文章 87 订阅
订阅专栏
126 篇文章 89 订阅
订阅专栏
36 篇文章 14 订阅
订阅专栏

粒子群优化算法-Python版本和Matlab函数 particleswarm 调用

前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab下的粒子群函数。

前文参看:粒子群优化算法(PSO)


以Ras函数(Rastrigin's Function)为目标函数,求其在x1,x2∈[-5,5]上的最小值。这个函数对模拟退火、进化计算等算法具有很强的欺骗性,因为它有非常多的局部最小值点和局部最大值点,很容易使算法陷入局部最优,而不能得到全局最优解。如下图所示,该函数只在(0,0)处存在全局最小值0。

图片

 

图片

Python代码实现

​​​​​​​

import numpy as npimport matplotlib.pyplot as plt

# 目标函数定义def ras(x):    y = 20 + x[0] ** 2 + x[1] ** 2 - 10 * (np.cos(2 * np.pi * x[0]) + np.cos(2 * np.pi * x[1]))    return y

# 参数初始化w = 1.0c1 = 1.49445c2 = 1.49445
maxgen = 200  # 进化次数sizepop = 20  # 种群规模
# 粒子速度和位置的范围Vmax = 1Vmin = -1popmax = 5popmin = -5
# 产生初始粒子和速度pop = 5 * np.random.uniform(-1, 1, (2, sizepop))v = np.random.uniform(-1, 1, (2, sizepop))
fitness = ras(pop)  # 计算适应度i = np.argmin(fitness)  # 找最好的个体gbest = pop  # 记录个体最优位置zbest = pop[:, i]  # 记录群体最优位置fitnessgbest = fitness  # 个体最佳适应度值fitnesszbest = fitness[i]  # 全局最佳适应度值
# 迭代寻优t = 0record = np.zeros(maxgen)while t < maxgen:
    # 速度更新    v = w * v + c1 * np.random.random() * (gbest - pop) + c2 * np.random.random() * (zbest.reshape(2, 1) - pop)    v[v > Vmax] = Vmax  # 限制速度    v[v < Vmin] = Vmin
    # 位置更新    pop = pop + 0.5 * v    pop[pop > popmax] = popmax  # 限制位置    pop[pop < popmin] = popmin
    '''    # 自适应变异    p = np.random.random()             # 随机生成一个0~1内的数    if p > 0.8:                          # 如果这个数落在变异概率区间内,则进行变异处理        k = np.random.randint(0,2)     # 在[0,2)之间随机选一个整数        pop[:,k] = np.random.random()  # 在选定的位置进行变异     '''
    # 计算适应度值    fitness = ras(pop)
    # 个体最优位置更新    index = fitness < fitnessgbest    fitnessgbest[index] = fitness[index]    gbest[:, index] = pop[:, index]
    # 群体最优更新    j = np.argmin(fitness)    if fitness[j] < fitnesszbest:        zbest = pop[:, j]        fitnesszbest = fitness[j]
    record[t] = fitnesszbest  # 记录群体最优位置的变化
    t = t + 1
# 结果分析print(zbest)
plt.plot(record, 'b-')plt.xlabel('generation')plt.ylabel('fitness')plt.title('fitness curve')plt.show()

结果为

[0.99699579 0.00148844]

图片

可以知道求解的点非最小值,算法陷入了局部最小值。

删除自适应变异部分的注释,运行后结果如下,可以看出收敛到全局最优解。

[0.00022989 0.00014612]

 

图片

 

Matlab有个自带的粒子群优化函数particleswarm也可以使用。本例的代码如下:

 

y = @(x) 20 + x(1).^2 + x(2).^2 - 10*(cos(2*pi*x(1))+cos(2*pi*x(2)));rng defaultoptions = optimoptions('particleswarm','SwarmSize',200,'HybridFcn',@fmincon,'MaxIterations',200, 'Display','iter');lb = [-5 -5];     % 这是变量的下限ub = [5 5];       % 这是变量的上限[x,fval,exitflag,output] = particleswarm(y,length(lb),lb,ub,options);

结果如下

图片

particleswarm详细资料参考:

https://www.mathworks.com/help/gads/particleswarm.html

Matlab文档

Java运算符
m0_64879847的博客
07-09 446
Java运算符
ParticleSwarmOptimization:PSO的实现,尝试找到函数f(x,y)= e ^(-x ^ 2--y ^ 2)* sin(x)的最小值,其中x和y在[-2,2]范围内
04-27
在计算科学中,粒子群优化( PSO )是一种计算方法,它通过反复尝试针对给定的质量度量来改进候选解决方案来优化问题。 它通过拥有一组候选解决方案(这里称为粒子),然后根据粒子位置和速度上的简单数学公式,将这些粒子在搜索空间中移动来解决问题。 每个粒子的运动都受其局部的最佳已知位置影响,但也被引导向搜索空间中的最佳已知位置,当其他粒子找到更好的位置时,这些位置将更新。 可以预期这将朝着最佳解决方案发展。 ( ) 该存储库包含PSO的实现,该实现尝试查找函数f(x,y)= e ^(-x ^ 2--y ^ 2)* sin(x)的最小值
Matlab自带的粒子群函数
感谢关注
03-03 5691
Matlab自带的粒子群函数 文章目录Matlab自带的粒子群函数particleswarm()自适应的体现matlab自带的粒子群算法particleswarm如何实现过程预设参数的选取变量初始化和适应度的计算更新粒子的速度和位置自适应调整参数自动退出迭代循环(参考matlab官方文档说明)修改函数的参数使用CODE对于其他优化问题 学习参考:清风数模 particleswarm() **注意:**这个函数求的是最小值的,如果目标函数是求最大值则需要添加负号从而转换为求最小值。 Matlab中partic
matlab粒子群优化算法(附代码)
weixin_53750855的博客
10-08 3165
粒子的速度和位置的更新受到当前位置、历史最佳位置以及群体最佳位置的影响,这种信息共享和合作使得PSO算法具有全局搜索能力和较快的收敛速度。PSO算法模拟了鸟群或鱼群中个体之间的社会行为,通过个体之间的合作和信息共享来搜索问题的解空间。PSO的关键在于粒子之间的信息共享和合作,以及速度和位置的更新公式的设计。典型的更新公式包括考虑个体最佳位置和群体最佳位置的影响,以及一定的随机因素。:对于整个粒子群,根据各个粒子的个体最佳位置,选择全局最佳位置。:计算每个粒子的适应度,即问题的目标函数在当前位置的取值。
粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解
最新发布
2401_84300070的博客
04-16 327
除此之外,每个粒子还知道到目前为止整个群体中所有粒子发现的最好位置(gbest)(gbest是pbest中的最好值),这个可以看作是粒子同伴的经验。所以,粒子群算法就是把鸟看成一个个粒子,并且他们拥有位置和速度这两个属性,然后根据自身已经找到的离食物最近的解和参考整个共享于整个集群中找到的最近的解去改变自己的飞行方向,最后我们会发现,整个集群大致向同一个地方聚集。称为局部PSO算法。粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅具有两个属性:速度和位置,速度代表移动的快慢,位置代表移动的方向。
基于Matlab实现粒子群算法(附上20个案例代码)
热门推荐
m0_62143653的博客
06-11 2万+
基于Matlab实现粒子群算法(附上20个案例代码)
数学建模更新16(MATLAB自带的粒子算法【下】)
沉晨尘宸的博客
01-29 4560
MATLAB自带的粒子算法一.概述二.细节详解1.概念2.预设参数的选取3.变量初始化和适应度的计算4.更新粒子的速度和位置5.自适应调整参数6.自动退出迭代循环7.修改函数的参数8.函数参数修改的建议三.粒子群算法的后续讨论 一.概述 Matlab自带的这个函数优化的特别好,运行速度快且找到的解也比较精准,但是内部的实现比较复杂,后面我们会简单介绍这个函数的实现思路。 (代码如何跑得快:少写循环和判断语句,多基于矩阵运算来进行操作) 注意: (1) 这个函数在R2014b版本后推出,之前的老版本Matl
数学建模:18 粒子群算法
m0_54625820的博客
01-23 4092
particleswarm、学习因子、惯性权重
基于matlab的粒子群算法Particle Swarm Optimization设计与实现
04-29
基于matlab的粒子群算法Particle Swarm Optimization设计与实现
粒子群优化,原理与Matlab实现
weixin_43467525的博客
07-07 1108
个维度(视具体问题而定),则对每一个粒子的更新都应该是。个粒子(一般设置10 ~ 30个),每个粒子有。为局部最优权重,取值范围0.1 ~ 2.0;为全局最优权重,取值范围0.1 ~ 2.0;为惯性权重,取值范围0.5 ~ 0.9;为0~1之间的随机数;
粒子群算法(Particle Swarm Optimization,PSO)介绍及MATLAB代码
luzaijiaoxia0618的博客
03-14 6336
目录前言PSO简介classical PSO分类全局版粒子状态更新公式算法流程参数设置MATLAB代码实验结果展示 前言      本文主要介绍了典型的粒子群算法流程以及给出了求解函数极值时的matlab代码。 PSO简介       1. 由Eberhart和Kennedy于1995年提出。       2...
matlab代码粒子群算法-Particle-Swarm-Optimization:粒子群优化
05-27
matlab代码粒子群算法粒子群优化:最新技术 [pso](使用python) PSO算法的基本变体是通过拥有一组候选解决方案(称为粒子)(称为“群”)来工作的。 群:这些粒子根据一些简单的公式在搜索空间中移动。 粒子的运动受其在搜索空间中最知名的位置以及整个群的最知名位置的指导。 要求 的MATLAB Python 2.7 py 目的和目的 使用粒子群优化技术找到无约束且具有约束边界的给定函数的最优值 执行 在代码中执行以
Particle Swarm.pdf
09-22
Differential Evolution, Particle Swarm optimization
matlab开发-particleswarmoptimerationso教程
08-21
matlab开发-particleswarmoptimerationso教程。这个文件有一个PDF文件来详细解释PSO算法。
matlab代码粒子群算法-ParticleSwarmMinimiser:寻找两个函数中最小值的粒子群优化算法
05-27
matlab代码粒子群算法粒子群最小化器 粒子群优化算法,用于查找两个函数中的最小值。 该算法以及将要最小化的两个功能在此处进行了描述: 该代码是用Matlab编写的。 要运行它,只需键入PSO22a以最小化所描述的两个函数中的第一个,或键入PSO22b以运行另一个函数
MATLAB粒子群工具箱 - Particle Swarm (PSO) Toolbox-beta-0.3.zip
05-09
MATLAB粒子群工具箱 - Particle Swarm (PSO) Toolbox-beta-0.3
粒子群工具箱 - Particle Swarm (PSO) Toolbox-beta-0.3_蚁群算法_matlab
04-10
资源名:粒子群工具箱 - Particle Swarm (PSO) Toolbox-beta-0.3_蚁群算法_matlab 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行...
粒子群优化算法 PSO算法(Particle Swarm Optimization)Python示例代码
08-10
# 粒子群优化算法 PSO算法(Particle Swarm Optimization)Python示例代码 粒子群优化算法(PSO)是一种基于群体智能的优化算法,用于解决各种优化问题。PSO算法通过模拟鸟群或鱼群等生物群体的行为,逐步搜索问题的...
Liziqun2_粒子群MATLAB算法_particleswarm_
09-29
粒子群算法文件,主程序+函数文件两个,可以直接用,改下函数
粒子群算法二元matlabparticleswarm
01-11
粒子群算法是一种基于群体智能的优化算法,常用于解决复杂的优化问题。而二元matlabparticleswarm则是将粒子群算法应用到二元优化问题中,并且使用matlab编程语言实现的工具箱。 二元优化问题是指优化变量只有两种取值,通常是0和1。而particleswarm算法则是通过不断调整粒子的位置来寻找最优解。在二元matlabparticleswarm中,首先需要定义目标函数和约束条件,然后设置优化参数如粒子数、迭代次数等。 在调用二元matlabparticleswarm函数时,需要传入定义好的目标函数和约束条件,同时可以设置一些其他的参数,如粒子数量、最大迭代次数等。然后算法会自动运行,不断更新粒子的位置,直到达到最大迭代次数或者满足停止条件为止。 通过二元matlabparticleswarm算法,我们可以高效地解决二元优化问题,而且使用matlab工具箱可以方便我们进行算法调用和结果分析。这种算法在解决诸如布尔函数优化、组合优化等问题时特别有效,可以得到较好的优化结果。 总之,二元matlabparticleswarm算法是粒子群算法在二元优化问题上的具体实现,可以帮助我们高效地解决这类问题,并且在matlab平台上使用方便,是一个很实用的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • linux查看操作系统版本、内存信息 182898
  • 详解Python中pyautogui库的最全使用方法 105436
  • matlab模糊控制工具箱使用和模糊控制pid实例参考 95231
  • matlab找出二维矩阵中最大值的位置或者最小值的位置 68271
  • Matlab中结构体struct创建和使用 44539

分类专栏

  • Matlab系列案例 485篇
  • 电机 22篇
  • 模糊控制 30篇
  • 数学建模 20篇
  • 神经网络 28篇
  • 优化算法 3篇
  • C++ 1篇
  • 深度学习 32篇
  • 算法 36篇
  • 图像处理 42篇
  • 服务器 12篇
  • FMI 1篇
  • 杂乱 7篇
  • centos 8篇
  • tensorflow 12篇
  • 工程 27篇
  • pytorch 4篇
  • if 3篇
  • 自动化办公 3篇
  • excel 4篇
  • find 2篇
  • opencv 20篇
  • 数据分析 5篇
  • 数据集 3篇
  • 爬虫 2篇
  • Pycharm 3篇
  • 计算机 4篇
  • shell 5篇
  • lua
  • 数值分析 7篇
  • HSV 1篇
  • 车牌识别 1篇
  • 自动控制 2篇
  • keras 1篇
  • 模型 2篇
  • conda 4篇
  • anaconda 2篇
  • 数据库 2篇
  • yolo 2篇
  • GPS 4篇
  • leetcode 5篇
  • 树莓派 2篇
  • 蓝牙 1篇
  • nginx 1篇
  • VC 1篇
  • 正则匹配 1篇
  • vi 1篇
  • python 126篇
  • linux 59篇
  • grep 7篇
  • matlab 197篇
  • 汽车 76篇
  • simulink 36篇
  • gui 6篇
  • java 5篇
  • win10 6篇
  • docker 13篇

最新评论

  • TensorFlow中loss与val_loss、accuracy和val_accuracy含义

    鱼小旭: 这种能不能用某个公式进行描述trainloss和testloss的这种关系

  • 滑模控制器理论推导和matlab/simulink实例分享

    元气少女狗柱: 如果r是一个常数,例如位置控制,那么r的导数是不是就为0了?

  • 汽车abs matlab仿真模糊pid控制

    2401_84875028: 求模型

  • 滑模控制器理论推导和matlab/simulink实例分享

    辰湘: 为什么e有两个表达的,一个是r➖y,还有一个是倒数的,那e2,应该怎么写,实是写倒数还是写差值呀

  • 分数阶混沌系统李雅普指数和分岔图

    studyer_domi: 1762016542

大家在看

  • 算法金 | LSTM 原作者带队,一个强大的算法模型杀回来了
  • Unity 编辑器扩展,获取目录下所有的预制件
  • c语言如何进行文件错误检查
  • 从零实现ChatGPT:第一章构建大规模语言模型的数据准备
  • JDK安装后的path和java_home环境变量的配置以及需要注意事项

最新文章

  • OrangePi AI Pro 测试体验
  • matlab 智能电器的状态监测故障模拟
  • 汽车ABS的bangbang控制和模糊PID控制
2024
06月 1篇
03月 24篇
02月 20篇
01月 12篇
2023年65篇
2022年410篇
2021年200篇
2020年165篇
2019年71篇
2018年5篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司拉萨建设网站多少钱陇南网络推广多少钱光明网站定制报价曲靖网站关键词优化公司宜宾网站建设哪家好沙井关键词按天计费多少钱景德镇关键词排名包年推广公司柳州网站建设武威网站改版推荐遵义模板制作价格黄山百度标王报价晋中网站优化按天扣费多少钱天津阿里店铺托管价格丹竹头模板网站建设公司大运网站制作设计价格西乡建设网站公司淮北SEO按天收费哪家好塔城seo优化多少钱忻州至尊标王报价中山阿里店铺运营黔东南网站搭建哪家好海北百度竞价多少钱丽江关键词排名推荐荆门至尊标王哪家好衡阳网站推广方案公司襄樊seo优化山南品牌网站设计多少钱随州网站搜索优化推荐池州推广网站哪家好汉中网站建设设计哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化