功能:采用遗传算法进行逻辑函数(Logical Function)拟合Sigmoid

格式:

[a,er,l]=SigmoidFitGA(x,y,a0,MaxA,MinA,LoopSum,Error,Nbird)
[a,er,l]=SigmoidFitGA(x,y,a0,MaxA,MinA,LoopSum,Error)
[a,er,l]=SigmoidFitGA(x,y,a0,MaxA,MinA,LoopSum)
[a,er,l]=SigmoidFitGA(x,y,a0,MaxA,MinA)
[a,er,l]=SigmoidFitGA(x,y,a0,MaxA)
[a,er,l]=SigmoidFitGA(x,y,a0)
[a,er,l]=SigmoidFitGA(x,y)

x:一个m*n的样本数据矩阵,每一行对应采样数
y:一个m*1的矩阵变量,每一行对应x当中的每一行
a0:拟合系数的初始值,如果为矩阵变量必须为1*(n+1)的矩阵变量,表示给每个拟合变量赋初值,默认为0
MaxA:对应a0中变量拟合的上限,默认为10
MinA:对应a0中变量拟合的下限,默认为-10
LoopSum:循环迭代的最大次数,默认为3000
Error:跳出循环的控制误差,默认为1E-16
Nbird:种群数,默认为200

a:返回的最佳拟合系数
er:返回的残差平方和
l:返回的最终迭代次数

原理:

1、本函数拟合的函数形式为如下,其中x(1)、x(2)、……、x(n)分别代表x的第1、2、……、n列

   y = 1 / ( 1 + {Exp<矩阵运算\Exp>}( a(0) + a(1)*x(1) + a(2)*x(2) + …… + a(n)*x(n)) )

2、本函数在正式开始遗传算法求解之前先进行方程变形求解

3、然后采用遗传算法进行求解

例子:

x={Rand<矩阵运算\rand>}(10,20,3);
x1=x(,1);
x2=x(,2);
x3=x(,3);
z=2+0.1*x1-0.3*x2+0.45*x3;
y=1/(1+{Exp<矩阵运算\Exp>}(z));

//通过上面的代码产生x、y原始数据
[a,b,l]=SigmoidFitGA(x,y)//执行本代码可以得到类似如下的结果
a =
[ 7.51216718132387    1.42291528655037    0.43257471980471   -2.89482372826135 ]
b =
[ 7.1268526753E-19 ]
l =
[ 11.0000000000000 ]