位置: 编程技术 - 正文

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编写程序)

  • 个人所得税纳税记录
  • 小规模纳税人收入超过500万怎么办
  • 税务清算需要什么条件
  • 递延所得税资产和负债怎么计算
  • 向银行借款存入银行会引起
  • 未开发票如何确认收入并进行申报
  • 公允价值变动借方是增加还是减少
  • 自产委托加工用于简易计税
  • 开具了红字发票信息表的税额需要转出吗
  • 超标的职工教育经费为什么是可抵扣
  • 法院拍卖土地欠土地使用税
  • 按工人工资比例结转制造费用的科目
  • 补充医疗保险 个人账户可以报销吗
  • 公路工程营改增
  • 工程施工开具发票
  • 一般纳税人企业所得税税率2023
  • 两家公司合租一个房子
  • 查账征收改为核定征收需要什么资料
  • 电子银行汇票 票据承兑
  • 应付短期租入固定资产的租金计入什么科目
  • 如何设置电脑任务栏显示
  • 其他应收款会计科目
  • 企业所得税汇算清缴补缴税款分录
  • mac切换不了中文怎么回事
  • 劳务费费用
  • 苹果电脑 浏览器
  • 年终结算增值税怎么算
  • 企业并购特殊性税务处理
  • 培养自己的php编程能力
  • 未按规定开具发票怎么处罚
  • 什么情况下个人需缴纳房产税
  • 企业重组特殊性税务处理计税基础
  • 自查补缴增值税如何申报
  • 股东以固定资产入股需要交税吗
  • 工业企业制造费用包括哪些
  • 大前端需要掌握什么技能
  • 路由配置中network怎么用
  • 其他权益工具投资公允价值变动怎么计算
  • 高新技术企业福利费扣除比例
  • 商品流通企业商品验收入库流程
  • 弥补亏损的会计分录
  • php网站首页的源码在哪里
  • python字符串的符号
  • ajax写接口
  • 滴滴票可以抵扣吗?
  • 生产车间劳务费会计分录
  • 分公司转款总公司总公司怎样会计处理
  • 电脑管理费用入什么账户
  • 账务核对的主要内容
  • 个体工商户是否属于企业
  • mysql主从配置详解
  • 电脑bak文件怎么打开
  • 进口退货退税
  • 哪些增值税可以免税
  • 结转周转材料成本
  • 费用报销单干嘛用
  • 往来核算会计实训总结
  • 工厂宿舍水电费怎么扣
  • 产品是如何产生的
  • 如何设计高效合理的未来课程
  • sql server的mdf文件怎么导入数据库
  • sql server的go
  • Win10预览版拆弹
  • win10系统怎么修改用户名称
  • 装xp系统鼠标键盘没有驱动
  • SWNETSUP.EXE - SWNETSUP是什么进程 有什么用
  • 系统运行缓慢解决方法
  • mac如何搜索应用
  • win8如何查看所有程序
  • PHP 7.0.0 Alpha 2 发布
  • node.js怎么搭建服务器
  • 公认的经典
  • css 相对定位
  • unity游戏换皮教程
  • 税务局上班吗今天
  • 税务申报显示重名怎么办
  • 医保预交金可以取出来吗
  • 你需要了解什么 英语
  • 12366纳税服务热线存在的问题
  • 非房地产企业转让旧房土地增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设