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