基于粒子群算法与最小二乘拟合函数参数

本文介绍了如何使用粒子群算法进行函数参数的优化,对比了最小二乘法在参数多时的局限性,并通过一个数学建模案例展示了粒子群算法在拟合函数`y=e^{-k_1x_1}sin(k_2x_2)+x_3^2`中的应用。通过MATLAB实现,粒子群算法在200次迭代后达到收敛,残差平方和明显降低。
摘要由CSDN通过智能技术生成

前言

今天更新较晚主要还是学业繁忙,学习素材也不是很好找,可能很多同学们都在做数学建模以及应用统计时都会涉及到函数参数拟合的问题,一般最常用的方法是最小二乘法,但是当函数参数很多时,往往去普通最小二乘法迭代次数过多,容易陷入局部最优解的情况,因此,在参数拟合部分会用到现代优化算法,现代优化算法常用的有遗传算法,模拟退火,蚁群算法,粒子群算法等等由于之前地统计实验遗传写的拟合变异函数比较容易陷入局部最优,也找了不少资料去优化,但是仍然找不到比较好的方法,因此还是换一个比较好的算法来进行拟合效果会比较好,通常情况下,粒子群的收敛要比遗传收敛性要好,这句话不记得是在哪儿说的了。

1基本原理介绍

1.1最小二乘拟合

给定输入输出数列 x , y x,y x,y求参量 c c c使得
m i n ∑ i ( F ( c , x i ) − y i ) 2 min \sum_{i}(F(c,x_i)-y_i)^2 mini(F(c,xi)yi)2
其实就是要求得在参数 c c c的情况下,函数拟合值与真实值的残差平方和最小,即为最小二乘拟合参数的原理

1.2粒子群算法

粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation)。源于对鸟群捕食的行为研究。粒子群优化算法的基本思想:是通过群体中个体之间的协作和信息共享来寻找最优解.
  PSO的优势:在于简单容易实现并且没有许多参数的调节。目前已被广泛应用于函数优化、神经网络训练、模糊系统控制以及其他遗传算法的应用领域
算法流程如下:
1、初始化
首先,我们设置最大迭代次数,目标函数的自变量个数,粒子的最大速度,位置信息为整个搜索空间,我们在速度区间和搜索空间上随机初始化速度和位置,设置粒子群规模为M,每个粒子随机初始化一个飞翔速度。
2、 个体极值与全局最优解
定义适应度函数,个体极值为每个粒子找到的最优解,从这些最优解找到一个全局值,叫做本次全局最优解。与历史全局最优比较,进行更新。
3、 更新速度和位置的公式
更新公式为:
V i d = w V i d + C 1 r a n d o m ( 0 , 1 ) ( p i d − X i d ) + C 2 r a n d o m ( 0 , 1 ) ( P g d − X i d ) X i d = X i d + V i d V_{id}=wV_{id}+C_1random(0,1)(p_{id}-X_{id})+C_2random(0,1)(P_{gd}-X_{id})\\ X_{id}=X_{id}+V_{id} Vid=wVid+C1random(0,1)(pidXid)+C2random(0,1)(PgdXid)Xid=Xid+Vid
其中, w w w为惯性因子, C 1 C_1 C

  • 22
    点赞
  • 144
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值