位置: 编程技术 - 正文

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

  • 小企业会计准则适用于哪些企业
  • 房产等价置换是否需要缴纳契税?
  • 去年少交增值税的会计处理
  • 小规模企业所得税计算
  • 小汽车的增值税怎么算
  • 公司名称变更发票还能认证吗
  • 买车支付的车辆购置税怎么入账
  • 收取违约金如何处罚
  • 外购低值易耗品支付价款16万元
  • 持有至到期投资在资产负债表怎么填
  • 股权转让是把公司卖了吗
  • 培训相关的场地租赁费可以列入职工教育经费税前扣除吗?
  • 筹建期间职工福利费都要通过应付职工薪酬核算吗
  • 退休人员取得单位证明
  • 代开的发票没有打印怎么作废
  • 对方发票丢失开什么证明
  • 收到劳务公司缴税怎么办
  • 分配利润账务处理
  • 供应商返点抵应怎么做账
  • 保洁属于劳务报酬吗
  • 会展服务可以入管理费用的哪个明细费用
  • 职工报销子女医药费
  • 收到预付款是否确认收入
  • 应发工资包含罚款吗
  • 怎么把公司账户的钱转到个人账号
  • 企业为员工缴纳社保可以抵税吗
  • rcapi.exe - rcapi是什么进程 有什么用
  • 出租商品计入什么科目
  • 商业自持店铺出租合法吗
  • 无产权买卖
  • linux系统中pwd命令的作用
  • 财政拨款结转的明细科目中,年末结转后有余额的是
  • 长期待摊费用与预付账款的区别
  • 中科大ustc-guest
  • ci框架教程
  • 供电企业接收用户资产
  • php怎么定义全局变量
  • 盈余公积弥补以前亏损分录
  • 企业所得税不得核定征收行业
  • 对公账户和私人账户怎么区分
  • 应计入营业外支出的科目有
  • 在成本了核算工资怎么算
  • pd python
  • 股权转让分期付款风险
  • 去银行取对账单需要带什么
  • php配置文件在哪
  • 建筑公司收到劳务发票会计分录
  • 异地预缴税款少交了城建税怎么办
  • 医疗收费票据管理制度
  • 购进固定资产的账务处理
  • 不动产租赁开票税率
  • 账务处理的种类有哪些
  • 为什么小规模不可以收专票
  • 财产清查怎么做分录
  • 成本费用总额包括营业外支出吗
  • 付款退回在现金里怎么查
  • 母公司代子公司收款,子公司开具发票
  • 申请到了专利费多少钱
  • 记账凭证附单据数怎么算
  • 个税专项扣除住房租金标准
  • 向非关联企业捐赠现金能不能抵扣
  • 小企业会计准则会计科目表
  • Windows Server 2003几个实用小技巧
  • win8系统怎样查看本机的ip地址
  • 如何创作图文并茂的图片
  • 苹果电脑注释
  • linux修改时间格式
  • macbook屏幕自动亮度调节
  • 模型图怎么画
  • javascript中匿名函数
  • excel表格布局
  • Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
  • 一些实用性较高的东西
  • js中math.pow
  • python自定义min_self函数
  • 四川省国税局
  • 医院的电子收据怎么查
  • 西安市经开区管委会官网
  • 完税证明可以自己在官网打印吗
  • 烟叶税的税收优惠
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设