卡尔曼滤波器总结

上传人:lis****211 文档编号:107814097 上传时间:2022-06-15 格式:DOCX 页数:12 大小:74.80KB
返回 下载 相关 举报
卡尔曼滤波器总结_第1页
第1页 / 共12页
卡尔曼滤波器总结_第2页
第2页 / 共12页
卡尔曼滤波器总结_第3页
第3页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1. 卡尔曼全名RudolfEmilKalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位。1957年于哥伦比亚大学获得博士学位。我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文ANewApproachtoLinearFilteringandPredictionProblems(线性滤波与预测问题的新方法)。基于状态空间描述对混有噪声的信号进行滤波的方法,简称卡尔曼滤波。这种方法是R.E.卡尔曼和R.S.布什于1960和1961年提出的。卡尔曼滤波是一种切实可行和便于应用的滤波方法,其计算过程通常需要在计算机上实现。实现卡尔曼滤波的装置或软件称为卡尔曼滤波器。卡尔曼滤波器(KalmanFilter)是在克服以往滤波方法局限性的基础上提出来的,是一个最优化自回归数据处理算法(optimalrecursivedataprocessingalgorithm)。它是针对系统的部分状态或是部分状态的线性组合,且量测值中有随机误差(常称为量测噪声)c将仅与部分状态有关的测量进行处理,得出从某种统计意义上讲误差最小的更多状态的估值,从而将混有噪声(干扰)的信号中噪声滤除、提取有用信号。卡尔曼滤波是一种递推线性最小方差估计,以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。现设线性时变系统的离散状态方程和观测方程为:Xk+1=Fk*XkGkukw(k)Yk+1二Hk+1*Xk+1vk+1其中Xk和丫k分别是k时刻的状态矩阵和测量矩阵Fk为状态转移矩阵Gk为系统控制项矩阵uk为k时刻对系统的控制量wk为k时刻动态噪声,其协方差QkHk为k时刻观测矩阵vk为k时刻测量噪声,其协方差Rk则卡尔曼滤波的算法流程为:状态的一步预估计Xk+1k=Fk?kkGkuk一步预估计协方差矩阵Ck+1k=Fk*CkkFkQk计算卡尔曼增益矩阵Sk+1=Hk+1Ck+1kHk+1Rk1丄Kk+1=Ck+1kHk+1k1状态更新方程Xk+1k+1=Xk+1k+1Kk+1Vk+1Vk+1j=Zk+1-Zk+1k?k+1k=Hk15?k+1k计算更新后估计协方差矩阵Ck+1k+1二I-Kk+1Hk+1Ck+1k或是Ck+1k+1二Ck+1k-Kk+1Hk+1Ck+1kw(_k_)|动态方程比I测量方程X(k);:T*X(k+1jF(kPiH(k)pG(k)离散时间线性系统初始状态估计初始协方差状态方程X(k+1尸F(k严(k)4G(ky(k)+w(k)测量方程Yk+1=Hk+1Xk+1vk+1k时刻的状态估计x(kk)T状态的一步预测X(k+1k)=F(k)j?(k|kI测量预测2(k+1k)=H(k+1J?(k+1k)+新息V(k+1pz(k+1”f(k+1|k:J状态更新方程X(k+1k+1pX(k+1k+1)4K(k+1评(k+1)k时刻的状态估计的协方差Ckk协方差的一步预测C(k+1|k)=F(k)*C(kk尸(kJ1Q(k)新信息协方差Sk+1=Hk+1Ck+1kHk+1Rk1增益Kk+1二Ck+1k1初k+1S_k1协方差更新方程Ck+1k+1二Ck+1k-Kk+1Hk+1Ck+1k卡尔曼滤波算法流程卡尔曼滤波器(KalmanFilter)是一个最优化自回归数据处理算法(optimalrecursivedataprocessingalgorithm)。应用在很多领域,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。它适合于实时处理和计算机运算。特点:从混有噪声(干扰)的信号中滤除噪声、提取有用信号是滤波的基本目的。在卡尔曼滤波出现以前,已经建立了采用最小二乘法处理观测数据和采用维纳滤波方法处理平稳随机过程的滤波理论。但这些滤波方法或因功能不够,或因条件要求苛刻,而不便于实用。卡尔曼滤波是在克服以往滤波方法的局限性的基础上提出来的,是滤波方法的重大演进。卡尔曼滤波比维纳滤波有以下优点:在卡尔曼滤波中采用物理意义较为直观的时间域语言,而在维纳滤波中则采用物理意义较为间接的频率域语言。卡尔曼滤波仅需要有限时间内的观测数据,而维纳滤波则需要用过去的半无限时间内的全部观测数据。卡尔曼滤波可使用比较简单的递推算法,而维纳滤波则需要求解一个积分方程。卡尔曼滤波可以推广到非平稳随机过程的情况,而维纳滤波只适用于平稳随机过程。卡尔曼滤波所需数据存储量较小,便于用计算机进行实时处理,而维纳滤波的计算复杂,步骤冗长,不便于实时处理。在相同条件下,卡尔曼滤波能得出与维纳滤波相同的结果。在实用上,卡尔曼滤波比维纳滤波功能强,用途广。卡尔曼滤波已在航天技术、通信工程、工业控制等领域中得到比较广泛的应用。卡尔曼滤波的局限性表现在只能用于线性的信号过程,即状态方程和观测方程都是线性的随机系统,而且噪声必须服从高斯分布。虽然不少实际问题都可满足这些限制条件,但当实际系统的非线性特性稍强或者噪声特性偏离高斯分布较大时,卡尔曼滤波就不能给出符合实际的结果。卡尔曼滤波是一种最优估计技术。工程中,为了了解工程对象(滤波中称为系统)的各个物理量(滤波中称为状态)的确切数值,或为了达到对工程对象进行控制的目的,必须利用测量手段对系统的各个状态进行测量。但是,量测值可能仅是系统的部分状态或是部分状态的线性组合,且量测值中有随机误差(常称为量测噪声)。最优估计就是针对上述问题的一种解决方法。它能将仅与部分状态有关的测量进行处理,得出从某种统计意义上讲误差最小的更多状态的估值。误差最小的标准常称为估计准则,根据不同的的估计准则和估计计算方法,有各种不同的最优估计,卡尔曼滤波是一种递推线性最小方差估计。现设线性时变系统的离散状态防城和观测方程为:2. X(k)=F(k,k-1)X(k-1)+T(k,k-1)U(k-1)Y(k)=H(k)X(k)+N(k)其中X(k)和Y(k)分别是k时刻的状态矢量和观测矢量F(k,k-1)为状态转移矩阵U(k)为k时刻动态噪声T(k,k-1)为系统控制矩阵H(k)为k时刻观测矩阵N(k)为k时刻观测噪声则卡尔曼滤波的算法流程为:预估计X(k)A=F(k,k-1)X(k-1)计算预估计协方差矩阵C(k)A=F(k,k-1)xC(k)xF(k,k-1)+T(k,k-1)xQ(k)xT(k,k-1)Q(k)=U(k)xU(k)计算卡尔曼增益矩阵K(k)=C(k)AxH(k)xH(k)xC(k)AxH(k)+R(k)F(-1)R(k)=N(k)xN(k)更新估计X(k)=X(k)A+K(k)xY(k)-H(k)xX(k)A计算更新后估计协防差矩阵C(k)=I-K(k)xH(k)xC(k)AxI-K(k)xH(k)+K(k)xR(k)xK(k)X(k+1)=X(k)C(k+1)=C(k)重复以上步骤卡尔曼滤波的应用斯坦利.施密特(StanleySchmidt)首次实现了卡尔曼滤波器.卡尔曼在NASA埃姆斯研究中心访问时,发现他的方法对于解决阿波罗计划的轨道预测很有用,后来阿波罗飞船的导航电脑使用了这种滤波器关于这种滤波器的论文由Swerling(1958),Kalman(1960)与KalmanandBucy(1961)发表.目前,卡尔曼滤波已经有很多不同的实现.卡尔曼最初提出的形式现在一般称为简单卡尔曼滤波器.除此以外,还有施密特扩展滤波器,信息滤波器以及很多Bierman,Thornton开发的平方根滤波器的变种.也行最常见的卡尔曼滤波器是锁相环,它在收音机,计算机和几乎任何视频或通讯设备中广泛存在卡尔曼滤波的一个典型实例是从一组有限的,对物体位置的,包含噪声的观察序列预测出物体的坐标位置及速度在很多工程应用(雷达,计算机视觉)中都可以找到它的身影同时,卡尔曼滤波也是控制理论以及控制系统工程中的一个重要话题比如,在雷达中,人们感兴趣的是跟踪目标,但目标的位置,速度,加速度的测量值往往在任何时候都有噪声卡尔曼滤波利用目标的动态信息,设法去掉噪声的影响,得到一个关于目标位置的好的估计。这个估计可以是对当前目标位置的估计(滤波),也可以是对于将来位置的估计(预测),也可以是对过去位置的估计(插值或平滑).实例分析为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。但是,他的5条公式是其核心内容。结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。假设我们要研究的对象是一个房间的温度。根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单位)。假设你对你的经验不是100%的相信,可能会有上下偏差几度。我们把这些偏差看成是高斯白噪声(WhiteGaussianNoise),也就是这些偏差跟前后时间是没有关系的而且符合高斯分配(GaussianDistribution)。另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测量值会比实际值偏差。我们也把这些偏差看成是高斯白噪声。好了,现在对于某一分钟我们有两个有关于该房间的温度值:你根据经验的预测值(系统的预测值)和温度计的值(测量值)。下面我们要用这两个值结合他们各自k-1时刻的温度值,来预k时刻的温度预测值是跟5度(5是这样得到的:的噪声来估算出房间的实际温度值。假如我们要估算k时刻的是实际温度值。首先你要根据测k时刻的温度。因为你相信温度是恒定的,所以你会得到k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)。然后,你从温度计那里得到了k时刻的温度值,假设是25度,同时该值的偏差是4度。由于我们用于估算k时刻的实际温度有两个温度值,分别是23度和25度。究竟实际温度是多少呢?相信自己还是相信温度计呢?究竟相信谁多一点,我们可以用他们的协方差(covarianee)来判断。因为KgA2=5A2/(5A2+4A2),所以Kg=0.78,我们可以估算出k时刻的实际温度值是:23+0.78*(25-23)=24.56度。可以看出,因为温度计的covarianee比较小(比较相信温度计),所以估算出的最优温度值偏向温度计的值。现在我们已经得到k时刻的最优温度值了,下一步就是要进入k+1时刻,进行新的最优估算。到现在为止,好像还没看到什么自回归的东西出现。对了,在进入k+1时刻之前,我们还要算出k时刻那个最优值(24.56度)的偏差。算法如下:(1-Kg)*5A2)A0.5=2.35差,得出的2.35就是进入k+1时刻以后上面的3)。就是这样,卡尔曼滤波器就不断的把值。他运行的很快,而且它只保留了上一时刻的。这里的5就是上面的k时刻你预测的那个23度温度值的偏k时刻估算出的最优温度值的偏差(对应于covarianee递归,从而估算出最优的温度covarianee。上面的Kg,就是卡尔曼增益(KalmanGain)。他可以随不同的时刻而改变他自己的值,是不是很神奇!卡尔曼滤波器算法(TheKalmanFilterAlgorithm在这一部分,我们就来描述源于涉及一些基本的概念知识,包括概率(高斯或正态分配(GaussianDistribution卡尔曼滤波器的详细证明,这里不能一一描述。首先,我们先要引入一个离散控制过程的系统。程(LinearStochasticDiferenceequationX(k)=AX(k-1)+BU(k)+W(k)再加上系统的测量值:)DrKalman的卡尔曼滤波器。下面的描述,会Probability),随机变量(RandomVariable),等等。但对于还有State-spaceModel该系统可用一个线性随机微分方)来描述:Z(k)=HX(k)+V(k)上两式子中,X(k)是k时刻的系统状态,是系统参数,对于多模型系统,他们为矩阵。_的参数,对于多测量系统,U(k)是k时刻对系统的控制量。A和BZ(k)是k时刻的测量值,H是测量系统H为矩阵。W(k)和V(k)分别表示过程和测量的噪声。,他们的covarianee分别是他们被假设成高斯白噪声(WhiteGaussianNoise)里我们假设他们不随系统状态变化而变化)对于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声滤波器是最优的信息处理器。下面我们来用他们结合他们的统的最优化输出(类似上一节那个温度的例子)covariances),卡尔曼来估算系首先我们要利用系统的过程模型,来预测下一状态的系统。假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:X(k|k-1)=AX(k-1|k-1)+BU(k),.(1)式(1)中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。可是,对应于X(k|k-1)的covarianee到现在为止,我们的系统结果已经更新了,还没更新。我们用P表示covarianee:covarianee,P(k-1|k-1)是Q是系统过程的covarianeeX(k-1|k-1)。式子1,2P(k|k-1)=AP(k-1|k-1)A+Q,”(2)式(2)中,P(k|k-1)是X(k|k-1)对应的对应的covarianee,A表示A的转置矩阵,就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。结合预测值和测量值,我们可以得到现在状态(k)的最优化估算值X(k|k):X(k|k)=X(k|k-1)+Kg(k)(Z(k)-HX(k|k-1),(3)其中Kg为卡尔曼增益(KalmanGain):Kg(k)=P(k|k-1)H/(HP(k|k-1)H+R),(4)到现在为止,我们已经得到了k状态下最优的估算值X(k|k)。但是为了要另卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新k状态下X(k|k)的covariance:P(k|k)=(I-Kg(k)H)P(k|k-1),(5)其中I为1的矩阵,对于单模型单测量,I=1。当系统进入k+1状态时,P(k|k)就是式子(2)的P(k-1|k-1)。这样,算法就可以自回归的运算下去。卡尔曼滤波器的原理基本描述了,式子1,2,3,4和5就是他的5个基本公式。根据这5个公式,可以很容易的实现计算机的程序。下面,我会用程序举一个实际运行的例子。这里我们结合第二第三节,举一个非常简单的例子来说明卡尔曼滤波器的工作过程。所举的例子是进一步描述第二节的例子,而且还会配以程序模拟结果。根据第二节的描述,把房间看成一个系统,然后对这个系统建模。当然,我们见的模型不需要非常地精确。我们所知道的这个房间的温度是跟前一时刻的温度相同的,所以A=1。没有控制量,所以U(k)=O。因此得出:X(k|k-1)=X(k-1|k-1),.(6)式子(2)可以改成:P(k|k-1)=P(k-1|k-1)+Q,(7)因为测量的值是温度计的,跟温度直接对应,所以H=1。式子3,4,5可以改成以下:X(k|k)=X(k|k-1)+Kg(k)(Z(k)-X(k|k-1),(8)Kg(k)=P(k|k-1)/(P(k|k-1)+R),(9)P(k|k)=(1-Kg(k)P(k|k-1),(10)现在我们模拟一组测量值作为输入。假设房间的真实温度为25度,我模拟了200个测量值,这些测量值的平均值为25度,但是加入了标准偏差为几度的高斯白噪声(在图中为蓝线)。为了令卡尔曼滤波器开始工作,我们需要告诉卡尔曼两个零时刻的初始值,是X(0|0)和P(0|0)。他们的值不用太在意,随便给一个就可以了,因为随着卡尔曼的工作,X会逐渐的收敛。但是对于P,般不要取0,因为这样可能会令卡尔曼完全相信你给定的X(0|0)是系统最优的,从而使算法不能收敛。我选了X(0|0)=1度,P(0|0)=10。该系统的真实温度为25度,图中用黑线表示。图中红线是卡尔曼滤波器输出的最优化结果(该结果在算法中设置了Q=1e-6,R=1e-1)。附matlab下面的kalman滤波程序:clearN=200;w(1)=0;w=randn(1,N)x(1)=0;a=1;fork=2:N;x(k)=a*x(k-1)+w(k-1);endV=randn(1,N);q1=std(V);Rvv=q1.A2;q2=std(x);Rxx=q2.A2;q3=std(w);Rww=q3.A2;c=0.2;Y=c*x+V;p(1)=0;s(1)=0;fort=2:N;p1(t)=a.A2*p(t-1)+Rww;b(t)=c*p1(t)/(c.A2*p1(t)+Rvv);s(t)=a*s(t-1)+b(t)*(Y(t)-a*c*s(t-1);p(t)=p1(t)-c*b(t)*p1(t);endt=1:N;plot(t,s,r,t,Y,g,t,x,b);functionx,V,VV,loglik=kalman_filter(y,A,C,Q,R,init_x,init_V,varargin)%Kalmanfilter.%x,V,VV,loglik=kalman_filter(y,A,C,Q,R,init_x,init_V,.)%INPUTS:%y(:,t)-theobservationattimet%A-thesystemmatrix%C-theobservationmatrix%Q-thesystemcovariance%R-theobservationcovariance%init_x-theinitialstate(column)vector%init_V-theinitialstatecovariance%OPTIONALINPUTS(string/valuepairsdefaultinbrackets)ones(1,T)dimension,%model-model(t)=mmeansuseparamsfrommodelmattimet%Inthiscase,alltheabovematricestakeanadditionalfinal%i.e.,A(:,:,m),C(:,:,m),Q(:,:,m),R(:,:,m).%However,init_xandinit_Vareindependentofmodel(1).%u-u(:,t)thecontrolsignalattimet%B-B(:,:,m)theinputregressionmatrixformodelm%OUTPUTS(whereXisthehiddenstatebeingestimated)%x(:,t)=EX(:,t)|y(:,1:t)%V(:,:,t)=CovX(:,t)|y(:,1:t)%VV(:,:,t)=CovX(:,t),X(:,t-1)|y(:,1:t)t=2%loglik=sumt=1TlogP(y(:,t)%Ifaninputsignalisspecified,wealsoconditiononit:%e.g.,x(:,t)=EX(:,t)|y(:,1:t),u(:,1:t)%Ifamodelsequenceisspecified,wealsoconditiononit:%e.g.,x(:,t)=EX(:,t)|y(:,1:t),u(:,1:t),m(1:t)osT=size(y);ss=size(A,1);%sizeofstatespace%setdefaultparamsmodel=ones(1,T);u=;B=;ndx=;args=varargin;nargs=length(args);fori=1:2:nargsswitchargscasemodel,model=argsi+1;caseu,u=argsi+1;caseB,B=argsi+1;casendx,ndx=argsi+1;otherwise,error(unrecognizedargumentargs)endendx=zeros(ss,T);V=zeros(ss,ss,T);VV=zeros(ss,ss,T);loglik=0;fort=1:Tm=model(t);ift=1%prevx=init_x(:,m);%prevV=init_V(:,:,m);prevx=init_x;prevV=init_V;initial=1;elseprevx=x(:,t-1);prevV=V(:,:,t-1);initial=0;endifisempty(u)x(:,t),V(:,:,t),LL,VV(:,:,t)=.kalman_update(A(:,:,m),C(:,:,m),prevV,initial,initial);elseifisempty(ndx)x(:,t),V(:,:,t),LL,VV(:,:,t)=.kalman_update(A(:,:,m),C(:,:,m),prevV,.initial,initial,u,u(:,t),B,B(:,:,m);elsei=ndx;%Q(:,:,m),R(:,:,m),y(:,t),prevxQ(:,:,m),R(:,:,m),y(:,t),prevxcopyoverallelements;onlysomewillgetupdatedx(:,t)=prevx;prevP=inv(prevV);prevPsmall=prevP(i,i);prevVsmall=inv(prevPsmall);x(i,t),smallV,LL,VV(i,i,t)=.kalman_update(A(i,i,m),C(:,i,m),prevVsmall,.Q(i,i,m),R(:,:,m),y(:,t),prevx(i),initial,initial,u,u(:,t),B,B(i,:,m);smallP=inv(smallV);prevP(i,i)=smallP;V(:,:,t)=inv(prevP);endendloglik=loglik+LL;endkalman滤波的matlab程序clearN=200;w(1)=0;w=randn(1,N)x(1)=0;a=1;fork=2:N;x(k)=a*x(k-1)+w(k-1);endV=randn(1,N);q1=std(V);Rvv=q1.A2;q2=std(x);Rxx=q2.A2;q3=std(w);Rww=q3.A2;c=0.2;Y=c*x+V;p(1)=0;s(1)=0;fort=2:N;p1(t)=a.A2*p(t-1)+Rww;b(t)=c*p1(t)/(c.A2*p1(t)+Rvv);s(t)=a*s(t-1)+b(t)*(Y(t)-a*c*s(t-1);p(t)=p1(t)-c*b(t)*p1(t);endt=1:N;plot(t,s,r,t,Y,g,t,x,b);4.一种基于遗传算法和卡尔曼滤波的运动目标跟踪方法胡建华1,2,徐健健2(1.中国药科大学计算机教研室,江苏南京210009;2.南京大学应用物理研究所,江苏南京210093)第27卷第4期2007年4月计算机应用运动目标跟踪是计算机视觉领域一个富有挑战性的课题,在视觉监控、视频编码、军事、交通等领域有着重要而广泛应用1,2。跟踪的实质是在下一帧图像中寻找目标所在的位置,一般利用全局搜索的方法总能找到。由于跟踪过程中要求能够实时地跟踪视场范围内运动目标,而被跟踪的目标往往运动速度快,受周围环境干扰强,因此如何获得具有满意效果的跟踪方法,具有较好的实时性和鲁棒性是比较困难的。目标跟踪时,目标本身以及目标所处的环境差别很大,例如目标的大小,目标是否是刚体或非刚体,目标大小是否变化,运动是平缓还是剧烈,背景是否复杂,摄像机是否运动,是多目标还是单目标跟踪等。根据不同情况,有多种不同的图像跟踪算法被提出,主要分为基于模型的方法,基于区域的方法,基于特征的方法和基于变形模板的方法等四类3。这些方法都各有自己的优点和缺点,在一定条件下可以获得较好的跟踪效果。遗传算法是一种应用广泛的寻优方法,具有很强的鲁棒性以及全局优化特性,在图像的分割、识别等方面已获得了初步的应用46。卡尔曼滤波通常被用来对被跟踪目标运动状态进行预测,可以减少搜索区域的大小,提高跟踪的实时性7,8。本文利用了这两种技术的优越性能,根据跟踪目标的灰度特征,利用卡尔曼滤波预测确定目标匹配的候选区域,然后采用遗传算法对候选区域进行搜索匹配,提高跟踪的实时性和鲁棒性。搜索时利用目标的灰度特征进行匹配,并且在候选区域具有全局最优的特点,提高了跟踪的准确性,对目标部分遮挡也能很好地处理。遗传算法遗传算法是一类基于自然选择和遗传学原理的有效搜索方法,它从一个初始种群开始,利用选择、交叉和变异等遗传算子对种群进行不断进化,最后得到全局最优解4。在遗传算法中将问题的求解表示成类似生物遗传物质“染色体”,通常是二进制字符串表示,其本身不一定是解。遗传算法的基本步骤是首先随机产生一个初始种群,然后使用一个适应度函数对该种群中个体进行评价,根据评价的结果进行选择产生新种群,对新种群进行交叉和变异操作。交叉和变异操作的目的是挖掘种群中个体的多样性,避免有可能陷入局部解。经过上述运算产生的染色体称为后代。最后,对新的种群(即后代)重复进行选择、交叉和变异操作,经过给定次数的迭代处理以后,把最好的个体作为优化问题的最优解。遗传算法应用过程中通常包含五个基本要素:1)参数编码。遗传算法是采用问题参数的编码集进行工作的,而不是采用问题参数本身,通常采用二进制编码。2)初始种群设定。遗传算法随机产生一个由N个个体(染色体)组成的初始种群,也可根据一定的限制条件来产生。种群规模是指种群中所含染色体的数目。3)适应度函数的设定。适值度函数是用来区分种群中个体好坏的标准,是进行选择的唯一依据。可以通过目标函数映射成适值度函数。4)遗传操作设计。遗传算子是模拟生物基因遗传的操作,遗传操作的任务是对种群的个体按照它们对环境适应的程度施加一定的算子,从而实现优胜劣汰的进化过程。遗传基本算子包括:选择算子,交叉算子,变异算子和其他高级遗传算子。5)控制参数设定。在遗传算法的应用中,要首先给定一组控制参数:种群规模,杂交率,变异率和进化代数等。图2H标跟踪算法流程
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!