位置: 编程技术 - 正文

Python编程实现粒子群算法(PSO)详解(python怎么编程)

编辑:rootadmin

推荐整理分享Python编程实现粒子群算法(PSO)详解(python怎么编程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python 编写,python怎样编写程序,python编程怎么做,python怎么编程,python怎么编程,python 编写,python编程如何,python 编写,内容如对您有帮助,希望把文章链接给更多的朋友!

1 原理

粒子群算法是群智能一种,是基于对鸟群觅食行为的研究和模拟而来的。假设在鸟群觅食范围,只在一个地方有食物,所有鸟儿看不到食物(不知道食物的具体位置),但是能闻到食物的味道(能知道食物距离自己位置)。最好的策略就是结合自己的经验在距离鸟群中距离食物最近的区域搜索。

利用粒子群算法解决实际问题本质上就是利用粒子群算法求解函数的最值。因此需要事先把实际问题抽象为一个数学函数,称之为适应度函数。在粒子群算法中,每只鸟都可以看成是问题的一个解,这里我们通常把鸟称之为粒子,每个粒子都拥有:

位置,可以理解函数的自变量的值;经验,也即是自身经历过的距离食物最近的位置;速度,可以理解为自变量的变化值;适应度,距离食物的位置,也就是函数值。

粒子群算法的过程

PSO流程图

初始化。包括根据给定的粒子个数,初始化粒子,包括初始化一下的值:

位置:解空间内的随机值;经验:与初始位置相等;速度:0;适应度:根据位置,带入适应度函数,得到适应度值。更新。包括两部分:粒子自身信息:包括根据下面的公式更新粒子的速度、位置,根据适应度函数更新适应度,然后和用更新后的适应度和自身经验进行比较,如果新的适应度由于经验的适应度,就利用当前位置更新经验;

Python编程实现粒子群算法(PSO)详解(python怎么编程)

速度更新公式

位置更新公式

上面公式中:i表示粒子编号;t表示时刻,反映在迭代次数上;w是惯性权重,一般设置在0.4左右;c表示学习因子,一般都取值为2;Xpbest表示的是粒子i的经验,也即是粒子i所到过最佳位置;Xgbest代表的是全局最优粒子的位置;r是0到1之间的随机值。

种群信息:把当前适应度和全局最优位置的适应度进行比较,如果当前适应度优于全局最优的适应度,那么久用当前粒子替换群居最优。

判断结束条件。结束条件包括最大迭代次数和适应度的阈值。

2 代码

实验环境为python 2.7.。

这个代码最初是用于求解一维最大熵分割图像问题的,因此是求解函数最大值,如果需要求解最小值,把代码中的大于号全部改成小于号就可以了。

首先需要解决的是粒子的存储,我第一反应是利用结构体来存储,但是python并没有相应的数据结构,所以我选择用一个类来表示粒子结构,该类的一个对象就是一个粒子,上代码:

接下来就是粒子群算法的主干部分,用一个类来封装,代码:

有了以上代码,只需要自定义适应度函数fitFunc就可以进行求解,但是需要注意的是只适用于求解 一维问题 。

总结

标签: python怎么编程

本文链接地址:https://www.jiuchutong.com/biancheng/372231.html 转载请保留说明!

上一篇:人工智能最火编程语言 Python大战Java!(人工智能最受欢迎的一门编程语言)

下一篇:Python编程实现蚁群算法详解(用python编写程序)

  • 个税申报数是按应发数还是实发数进行申报?
  • 农产品进项税额转出怎么算
  • 个人偶然所得税率多少
  • 统一社会信用代码查询企业名称
  • 公司车辆过户给个人需要交多少税
  • 知道含税价,税率,怎么算税金
  • 上个月工资没有发
  • 公司出售固定资产
  • 印花税小于1元显示无需申报
  • 负债类科目有借方余额吗
  • 借款业务的会计分录
  • 承兑多付了退现金网银备注什么
  • 公司购车按揭利息可以开票吗
  • 预付账款转入其他非流动资产
  • 举办活动的工作要求
  • 第三方用人单位应承担哪些责任
  • 外商投资企业清算审计报告
  • 借方增加的科目记忆口诀
  • 培训发票可以抵进项税吗
  • 劳务公司增值税怎么抵扣
  • 营改增后停车费税率
  • 记账凭证需要哪些人员签章
  • 软件公司客户经理一般月薪多少
  • 专项应付款转资本公积需要什么附件
  • 在Win10系统中卸载最近更新的补丁并重启电脑
  • 暂估成本跨月账务处理
  • 无形资产入账摊销
  • 月底财务为什么要关账,暂时开不了发票
  • 固定资产占资产总额比例
  • 如何养成良好的安全行为
  • 鸿蒙系统怎么开启OTG
  • ServiceLayer.exe - ServiceLayer是什么进程 有什么用
  • PHP:pg_escape_literal()的用法_PostgreSQL函数
  • 支付境外培训费要交税吗
  • 集团公司管理费提取办法
  • 缴住房公积金会计分录怎么写
  • PHP:imageinterlace()的用法_GD库图像处理函数
  • php中定义函数
  • 一般户需要做账报税吗
  • 关于机动车的法律定义
  • 分公司可以分配利润吗
  • 供应商发票多开了3毛钱能做到财务费吗
  • ps灰色模式怎么换回来快捷键
  • 免税产品出口是否可以退税
  • sqlserver2005 TSql新功能学习总结(数据类型篇)
  • 控股公司的收入怎么计算
  • mysql优化命令
  • 行政事业单位职工工伤有哪些待遇
  • 门市装修费用会计处理
  • 被挂靠方并收取管理费的公司怎样处理账务?
  • 冲减实收资本是什么意思
  • 扣缴个人所得税怎么计算
  • 低值易耗品摊销借贷方向
  • 当月管理费用为负数
  • 短期借款计提利息计入什么科目
  • mac截屏后的图片在哪里
  • win7系统安装软件闪退
  • 运行方式包括什么方式
  • windows8无线网络选项消失不见
  • 武汉做无创要预约吗
  • win8应用错误怎么办
  • win7系统屏幕保护设置禁用如何开启
  • win7屏幕刷新率怎么调高
  • win10系统出现问题怎么办
  • 怎么用批处理显示文字
  • js对象用法
  • jquery网页设计
  • Android性能优化的方面12个
  • python并发原理
  • 如何安装python环境安装包
  • jqueryapi手机版
  • h5实现微信分享
  • jQuery+Ajax实现限制查询间隔的方法
  • 深圳龙岗有几个街道
  • 党建工作领导小组会议
  • 双流税务总局电话
  • 河北税务云办税厅官方
  • 税是每个人都要交的吗
  • 豫麦336
  • 广西南宁地税局电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设