位置: 编程技术 - 正文

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

  • 一般纳税人收到专票怎么认证
  • 金税四期如何应对
  • 单位给员工投保
  • 开专票需要交城建税吗
  • 环境保护税属于什么税种
  • 怎么知道对方的支付宝账号
  • 研究开发费用加计扣除多少
  • 个税起征点调整至5000
  • 上个月的进项发票可以这个月勾选吗
  • 自己生产的产品用于职工福利
  • 企业赔款可以抵税吗
  • 企业搬迁补偿款发放流程
  • 营改增转让土地税收政策
  • 餐饮服务业是否属于企业
  • 建筑企业如何才能上市
  • 增值税发票系统怎么升级
  • 车改补贴是否计入工资总额
  • 过路过桥费电子票验证
  • 优惠购房差价收益是否缴纳个人所得税?
  • 融资租赁销售方会计处理
  • 集体福利的增值税怎么算
  • 季报的利润表是填本期金额还是本年
  • 收到科技局研发的短信
  • windows更新显示
  • 财务预算业务制度有哪些
  • 财管如何区分金额大小
  • 合同作废印花税法规定
  • php中如何使用session
  • win10蓝牙添加设备闪退
  • 政策性搬迁补偿收入如何财税处理
  • autorun.exe
  • 公司转让股权交不交增值税
  • 事业单位会计专业知识考什么
  • 使用php进行mysql数据库编程的基本步骤
  • 冬日里的科赫尔湖,德国巴伐利亚州 (© Reinhard Schmid/eStock Photo)
  • 前端基础入门
  • php环境搭建apache
  • 补交之前年度税款怎么调账
  • 个体工商户经济类型是内资吗
  • 小企业会计准则 存货
  • 500元以下开收据要交税吗
  • 固定资产净残值账务处理
  • 内账收入和成本怎样做
  • 下月初可以认证上月的发票么
  • 季度报表利润表本期金额怎么填
  • 注册公司时的注册资金认缴是什么意思
  • 印花税的计算公式与计算注意事项
  • 国有土地使用权是什么意思
  • 进项票下月到,这个月怎么申报增值税
  • 过期产品进项税用转出吗
  • 高新技术企业奖励政策
  • 年末结转本年利润分录
  • 这个营业外支出怎么算
  • 私立医院怎么做不被骗的事情
  • 工资分摊计提分配方式?
  • 持有至到期投资改名为
  • 结算专用章是财务章吗
  • select语句中的select*说明
  • mysql5.7.29安装
  • win10 电池报告
  • ubuntu with linux
  • linux如何操作数据库
  • spvic.exe - spvic是什么进程 有什么作用
  • qq2440启动linux后插入u盘出现usb 1-1: device descriptor read/64, error -110,usb 1
  • win10系统电脑开机密码在哪里设置
  • js require()
  • 'GL_COMBINE_ARB' : undeclared 'GL_RGB_SCALE_ARB' : undeclared 问题
  • jquery操作html代码
  • win7怎么设定关机时间
  • js闭包作用问题解决应用
  • android手机传感器应用程序
  • js 在线调试
  • android连接手机
  • jquery网页跳转
  • javascript学习指南
  • 日历 caldav
  • 个人所得税完税证明网上打印
  • 国家审计署查民营企业
  • 在深圳,企业房贷怎么办
  • 开税票锁机怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设