天天看点

遗传算法matlab_遗传算法 (GA) 进行多参数拟合 【MATLAB】

回顾一下数据拟合过程,我们有一组数据,并且知道一般表达式,以及表达式中参数的粗略值,也就是拟合参数的初始值,最后一般都能拟合出精确的参数值。

但是,如果表达式中参数个数较多,各个参数的粗略值估计不准,用一般的方法很容易找到一个局域最优解,而我们需要的是全局最优解。

接下来,我们通过一个简单的例子,来介绍利用 MATLAB 自带的

遗传算法

工具箱 (

ga

) 来进行数据拟合。

遗传算法数据拟合

创建一组数据,并加上随机噪声,其代码和图像如下。

x
           
遗传算法matlab_遗传算法 (GA) 进行多参数拟合 【MATLAB】

数据点满足的一般表达式写成

遗传算法matlab_遗传算法 (GA) 进行多参数拟合 【MATLAB】

为了拟合出参数值,写出最重要的

适应度函数

function
           

设置各个参数的大致范围

LB
           

用 ga 函数拟合

ObjectiveFunction 
           

最后得到结果

遗传算法matlab_遗传算法 (GA) 进行多参数拟合 【MATLAB】

得到的结果和其表达式 (

遗传算法matlab_遗传算法 (GA) 进行多参数拟合 【MATLAB】

) 中准确的参数 (

遗传算法matlab_遗传算法 (GA) 进行多参数拟合 【MATLAB】

) 还是挺相近的,偏差 (fval) 来自于加上的噪声。将拟合曲线和数据点画在同一张图中。

遗传算法matlab_遗传算法 (GA) 进行多参数拟合 【MATLAB】

用 ga 拟合的优点

对表达式参数的初值要求不高,适合多参数的拟合过程,最重要的是,不用自己写遗传算法真好。

在我的公众号后台回复

GAfit

即可获得源码。