位置: 编程技术 - 正文

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

  • 纳税申报表上的二维码有什么用?
  • 公司举办年会的要求有哪些
  • 开票地址太长显示不全
  • 计提工资需要纳税调整吗
  • 增值税加计扣除5%政策
  • 等额本息还款的特点
  • 离职人员个税申报如何处理
  • 资产负债表应交税费期末余额是什么意思
  • 公司购买车辆抵扣税
  • 政策信息咨询服务要到哪个部门办理资质
  • 销售退回的增值税怎么处理
  • 销售旧房不能取得评估价格
  • 附加税按实际缴纳计提吗
  • 企业临时用工付出会计处理
  • 筹资活动现金净流量为正说明什么
  • 企业申请增值税专用发票
  • 少交了增值税怎么补
  • 简易计税 增值税专用发票
  • 关于油票的纳税人识别号
  • 提示没有安装QQ怎么处理
  • 2017企业所得税小微企业优惠政策
  • 退役士兵增值税优惠申报方法
  • 采购材料差旅费怎么入账
  • 固定资产减值账务处理怎么做
  • 备用金发票冲抵
  • 支付工资资产减少了吗
  • 预付账款如何计提折旧
  • 定向增发利好还是利空股票
  • 一次性支付一年租金怎么做账
  • php ftp函数
  • 委托境外研发费用加计扣除比例
  • 增值税税率为零的有哪些项目
  • php 调用函数
  • 龟背竹的养殖方法和管理
  • thinkphp save
  • 税前可扣除的税费
  • 税务稽查补税
  • 2021前端校招笔试
  • vue+element-ui项目
  • 公司搞研发是什么意思
  • 代垫运费增值税计入销项税额吗
  • 什么是零申报制度
  • 以下哪些企业需要填报
  • 民间非营利组织会计账务处理
  • 预存电费余额怎么突然多了
  • 补偿金是否应该上税
  • 以前年度损益调整结转到本年利润吗
  • 不能从销项税额中抵扣的进项税额为A购进货物运费准予
  • 商品进销差价是流动资产吗
  • 股东买房能在银行贷款吗
  • 公司收到注册资本金需要做哪些呢
  • Centos5.5中安装Mysql5.5过程分享
  • 应付职工薪酬完整会计处理
  • 可供出售金融资产和交易性金融资产
  • 营业收入和利润的区别
  • 小规模附加税优惠政策最新2023
  • 以前年度应收账款少记怎么处理
  • 土地发票可以抵扣吗
  • mysql5.7.17安装
  • 苹果mac怎么下载英雄联盟
  • mac wifi时断时续
  • centos6.10内核版本
  • Linux的文件系统采用树形结构()
  • suse配置网络
  • win10远程桌面连接教程
  • windows10分辨率太高
  • 跑酷游戏cs
  • 着色器问题
  • js datetime
  • node_modules复制
  • python ip地址转换
  • nodejs实现微信公众号发红包
  • python的math模块只有pass
  • android推送权限
  • python迭代器生成器
  • 如何设置python
  • 北京市国家税务局发票查询平台
  • 国家税务总局开票系统怎么开票
  • 什么叫做免抵税额
  • 税务绩效工作存在的问题
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设