自适应遗传算法讲解学习

合集下载

第五章基本自适应算法

第五章基本自适应算法

第五章基本自适应算法自适应算法是一种能够根据问题的性质和特点来调整自身参数以达到更好效果的算法。

在机器学习和优化问题的求解中,自适应算法可以提高算法的鲁棒性、收敛性和性能。

本章将介绍几种基本的自适应算法。

1.自适应学习率学习率是很多优化算法中的一个重要参数。

学习率过大会导致算法不稳定,学习率过小会导致算法收敛速度慢。

自适应学习率算法是一种能够根据问题的性质自动调整学习率的算法。

常见的自适应学习率算法有动态学习率和自适应学习率调整。

动态学习率是指学习率随着迭代次数的增加而不断减小。

自适应学习率调整是指根据每次迭代的损失函数值调整学习率。

这种方法可根据损失函数值的大小动态调整学习率,使得在损失函数较大时学习率较大,在损失函数较小时学习率较小,从而提高算法的收敛速度和性能。

2.自适应粒子群算法粒子群算法是一种模拟鸟群寻找食物的优化算法。

在标准粒子群算法中,粒子通过随机移动来最优解。

然而,随机性可能会导致算法陷入局部最优解。

为了克服这个问题,引入了自适应粒子群算法。

自适应粒子群算法基于控制参数的统计特性来调整方向和速度。

通过自适应调整的参数,算法可以自动适应问题的特性,从而达到更好的效果。

3.自适应遗传算法遗传算法是一种模拟生物进化的优化算法。

在标准遗传算法中,通过交叉和变异产生新的个体,并通过适应度函数选择优秀个体进行下一代的繁衍。

然而,遗传算法的结果可能会受到参数的选择和问题的变化的影响。

为了提高算法性能,自适应遗传算法引入了自适应策略。

自适应策略通过根据个体适应度来调整交叉和变异参数,从而使算法能够自动适应问题的特性。

这样可以提高算法的鲁棒性和性能。

4.自适应步长差分进化算法差分进化算法是一种基于种群的优化算法。

在标准差分进化算法中,通过选择个体的差分向量来产生新的个体,并通过适应度函数选择优秀个体进行下一代的繁衍。

然而,差分进化算法的步长参数对算法的性能有很大的影响。

为了提高算法的性能,自适应步长差分进化算法引入了自适应步长。

双种群自适应遗传算法

双种群自适应遗传算法

双种群自适应遗传算法
双种群自适应遗传算法是一种优化算法,在解决多目标问题和复杂问题方面具有很好的应用前景。

该算法基于遗传算法的基础上,将种群分为两个子种群,一个主种群和一个辅种群。

主种群和辅种群分别采用不同的参数设置和策略演化,以达到更好的优化效果。

在算法的初始阶段,主种群和辅种群采用相同的参数设置和策略演化。

随着算法的迭代进程,主种群和辅种群的参数设置和策略演化会逐渐发生差异。

主种群的进化策略更加注重全局搜索,而辅种群的进化策略更加注重局部搜索。

通过不同的进化策略,主种群和辅种群在相同的进化代数内可以更好地探索搜索空间。

在双种群自适应遗传算法中,主种群和辅种群之间通过交换个体来保持多样性和避免陷入局部最优解。

同时,算法还引入了自适应机制,根据种群的演化情况自动调整进化参数,以保证算法的收敛性和有效性。

与传统的遗传算法相比,双种群自适应遗传算法具有更好的全局搜索能力和更高的优化效率。

该算法已经成功应用于多目标优化、机器学习、智能控制等领域,并得到了广泛的研究和应用。

- 1 -。

自适应遗传算法3

自适应遗传算法3

自适应遗传算法3在计算机科学领域,自适应遗传算法(Adaptive Genetic Algorithm,AGA)是一种优化算法,它结合了遗传算法和自适应技术的优点,能够在求解复杂问题时具有较好的性能和适应性。

本文将介绍自适应遗传算法的原理、应用领域和优势。

一、自适应遗传算法的原理自适应遗传算法是在传统遗传算法的基础上引入了自适应机制,使得算法的执行过程更加灵活和智能化。

其主要原理如下:1.1 遗传算法的基本原理遗传算法是一种模拟生物进化过程的优化算法,其基本原理是通过模拟自然选择、交叉和变异等操作,逐代演化出适应度更高的个体。

具体而言,遗传算法包括以下步骤:(1)初始化种群:随机生成一组初始个体,构成初始种群。

(2)评估个体适应度:根据问题的具体情况,使用适应度函数评估每个个体的适应度。

(3)选择操作:按照一定的选择策略,从当前种群中选择一部分个体作为父代。

(4)交叉操作:对选中的父代个体进行交叉操作,生成子代个体。

(5)变异操作:对子代个体进行变异操作,引入新的基因信息。

(6)更新种群:将父代和子代个体合并,得到新的种群。

(7)重复执行:循环执行上述步骤,直到满足终止条件。

1.2 自适应机制的引入传统遗传算法中,选择、交叉和变异等操作的参数通常是提前固定的,不具备自适应能力。

而自适应遗传算法通过引入自适应机制,可以根据问题的特点和种群的演化状况,动态调整这些参数,提高算法的性能和适应性。

自适应机制的具体实现方式有很多种,常见的有参数自适应和操作自适应两种。

参数自适应主要是通过调整选择、交叉和变异等操作的参数值,以适应不同问题的求解需求。

操作自适应则是根据当前种群的状态,动态选择适应的操作策略,如选择操作中的轮盘赌选择、锦标赛选择等。

二、自适应遗传算法的应用领域自适应遗传算法广泛应用于各个领域的优化问题,特别是那些复杂、非线性、多目标和约束条件较多的问题。

下面分别介绍几个典型的应用领域。

2.1 工程优化自适应遗传算法在工程优化中有着广泛的应用,例如在结构优化、参数优化和路径规划等方面。

交叉算子自适应遗传算法

交叉算子自适应遗传算法

交叉算子自适应遗传算法
自适应遗传算法(Adaptive Genetic Algorithm,AGA)是对基本遗传算法的一种改进,它通过对遗传参数的自适应调整,大大提高了遗传算法的收敛精度,加快了收敛速度。

适应度函数是评价个体适应环境的能力,在进行选择操作时经常用到,它的选取是否恰当直接影响到遗传算法的性能,所以就形成了很多计算适应度的函数,改进这些适应度函数是为了使适应度能更好的反映个体的优劣,使得适应度低的个体被淘汰,适应度高的个体被保留。

自适应的适应度函数可以随着种群代数的增加自适应的调整,在算法的开始阶段,适应度差别较大,为了防止一些适应度较差的个体在一开始就丢失,可以通过改变适应度函数使得它们得以保留下来,另外,当种群趋于收敛时,适应度差别很小,这时为了加快收敛的速度,应对适应度进行调整,使得个体适应度差别增大,从而更快的收敛到全局最优解。

常用的适应度变换方法有:线性变换、幂函数变换和指数变换。

另外,采用适应度结合了模拟退火的思想。

选择的作用是按某种方法从父代群体中选取一些将要进行交叉的个体,常用的选择方法很多,它们大多有一个共同的特点,就是都是基于适应度的选择,适应度大的个体被选中的概率就大,适应度小的个体被选中的概率就小。

常用的选择算法有适应度比例法、精英保留策略、联赛选择法等。

另外,也可以将这些选择算法混合使用,如今还出现了启发式的搜索选择策略,这种策略是用每个个体所带有的启发信息来确定它被选中的概率。

自适应遗传算法3

自适应遗传算法3

自适应遗传算法3自适应遗传算法(Adaptive Genetic Algorithm,AGA)是一种基于遗传算法的优化方法,它通过自适应地调整遗传算法的参数来提高求解效果。

本文将介绍自适应遗传算法3的原理和应用。

一、自适应遗传算法3的原理自适应遗传算法3在传统遗传算法的基础上进行了改进,引入了自适应的变异率和自适应的交叉率。

传统遗传算法中,变异率和交叉率是固定的,但在实际应用中,不同问题的求解难度不同,固定的变异率和交叉率可能无法达到最优解。

自适应遗传算法3通过不断地迭代优化,自适应地调整变异率和交叉率。

具体来说,它根据每一代种群的适应度情况,动态地调整变异率和交叉率,使得适应度较差的个体有更大的机会进行变异,适应度较好的个体有更大的机会进行交叉。

这样一来,种群的多样性得到保持,局部最优解得以避免,整体求解效果得到提高。

二、自适应遗传算法3的应用自适应遗传算法3在许多领域都有广泛应用。

以下将介绍几个常见的应用案例。

1. 优化问题求解:自适应遗传算法3可以应用于各种优化问题的求解,如旅行商问题、背包问题等。

通过自适应地调整变异率和交叉率,可以得到更优的解。

2. 机器学习:自适应遗传算法3可以用于机器学习领域中的参数优化问题。

通过自适应地调整变异率和交叉率,可以更好地搜索参数空间,提高模型的性能。

3. 调度问题:自适应遗传算法3可以用于各种调度问题的优化,如车辆路径问题、作业调度问题等。

通过自适应地调整变异率和交叉率,可以得到更合理的调度方案。

4. 组合优化问题:自适应遗传算法3可以应用于组合优化问题的求解,如图的着色问题、集合覆盖问题等。

通过自适应地调整变异率和交叉率,可以得到更优的组合方案。

三、总结自适应遗传算法3是一种基于遗传算法的优化方法,通过自适应地调整变异率和交叉率来提高求解效果。

它在优化问题求解、机器学习、调度问题和组合优化问题等领域有广泛应用。

自适应遗传算法3的原理和应用案例的介绍,希望能给读者带来一些启发和思考。

自适应遗传算法

自适应遗传算法

自适应遗传算法
自适应遗传算法是一种改进的遗传算法,它是一种自适应机制,用于提高遗传算法的收敛速度和搜索能力。

它主要用于优化复杂的多目标函数、多约束条件和变分问题。

自适应遗传算法的核心思想是通过模拟生物进化的过程,模拟种群中个体的遗传进化,从而寻求最优解,最终实现目标函数的优化。

自适应遗传算法的基本过程是:首先,从初始种群中初始化一组可行解;其次,根据遗传算法的基本原理,依次执行变异、交叉和选择操作,从而生成新的种群;然后,根据变量的取值范围,采用自适应策略调整变量的值,使其符合约束条件;最后,根据适应度函数的值,选择出最优解,作为下一次迭代的初始种群,重复执行上述过程,直至收敛为止。

自适应遗传算法的优点在于:它可以在解的搜索过程中自动调整参数,使算法能够快速收敛,从而提高搜索效率;其次,它可以更好地处理多目标函数和多约束条件的问题;此外,它可以有效地控制变量的取值范围,避免出现取值范围过大的情况。

总而言之,自适应遗传算法是一种有效的优化算法,它可以提高搜索效率并有效地控制变量的取值范围,使得搜索过程更加高效、准确。

它已经被广泛应用于多目标优化、多约束优化和变分优化等领域。

自适应遗传算法的应用

自适应遗传算法的应用

自适应遗传算法的应用说起自适应遗传算法,这玩意儿听起来挺高大上的,但其实啊,它就是咱们在解决复杂问题时的一个得力助手。

别看我平时对着一堆代码敲敲打打,其实心里头对这玩意儿还是挺有感情的。

今天,我就跟大伙儿聊聊我在项目里头是怎么用这自适应遗传算法来“大展拳脚”的。

记得那会儿,公司接了个棘手的活儿,要给一个大型物流系统优化路径。

那系统啊,简直就是个大迷宫,成千上万的包裹要在最短的时间内从一个点送到另一个点,还不能出错,你说头疼不头疼?一开始,我们团队那是各种算法轮番上阵,结果都不尽如人意。

眼看项目截止日期一天天逼近,我这心里啊,跟热锅上的蚂蚁似的,急得团团转。

就在这时,我灵光一闪,想到了自适应遗传算法。

这算法好啊,就像是大自然里的进化过程,一代一代地筛选优化,最终找到那个最优解。

说干就干,我立马开始动手。

首先,我得把问题抽象成一个个的“基因”,也就是路径方案。

每个方案都是一个潜在的“生物个体”,它们会在一个虚拟的“环境”里进行竞争。

这个环境啊,就是我设计的适应度函数,它能根据每个方案的优劣给出相应的评分。

评分高的,自然就是“强者”,能在下一代中留下更多的“后代”。

刚开始的时候,我随机生成了一大堆路径方案,简直就是个大杂烩。

有的路径绕得跟迷宫似的,有的则相对简洁明了。

但没关系,咱们有自适应遗传算法呢!它就像是有一双无形的手,在幕后默默地推动着这些方案不断进化。

每一代,我都会根据适应度函数筛选出最优秀的几个方案,然后让它们进行“交叉”和“变异”。

交叉就像是两个优秀方案的结合,取其精华,去其糟粕;而变异呢,则是给方案加点随机性,说不定能碰撞出意想不到的火花。

就这样,经过无数代的迭代,那些优秀的路径方案逐渐被筛选出来,就像是大浪淘沙,留下的都是真金白银。

最终,我找到了那个近乎完美的路径方案,它不仅大大缩短了配送时间,还降低了成本,简直是双赢!当我拿着这个方案给团队看的时候,大家都惊呆了。

项目经理更是拍着我的肩膀说:“小子,行啊!这次多亏了你和这自适应遗传算法,咱们算是捡了个大便宜!”那一刻,我心里别提多美了。

遗 传 算 法 详 解 ( 含 M A T L A B 代 码 )

遗 传 算 法 详 解 ( 含 M A T L A B 代 码 )

遗传算法入门(上)代码中的进化学说与遗传学说写在之前算法所属领域遗传算法的思想解析为什么要用遗传算法?科研现状应用现状遗传算法入门系列文章:(中篇)遗传算法入门(中)实例,求解一元函数最值(MATLAB版)(下篇)遗传算法入门(下)实例,求解TSP问题(C++版)写在之前说明:本想着用大量篇幅写一篇“关于遗传算法的基本原理”作为本系列入门的第一篇,但是在找寻资料的过程中,看到网络上有大量的关于遗传算法的介绍,觉得写的都挺好,所以本文我就简单写点自己的理解。

推荐几篇关于遗传算法的介绍性文章:遗传算法详解(GA)(个人觉得很形象,很适合初学者)算法所属领域相信每个人学习一门知识之前,都会想知道这门知识属于哪一门学科范畴,属于哪一类技术领域?首先对于这种问题,GA是没有绝对的归属的。

算法的定义是解决问题的一种思想和指导理论。

而遗传算法也是解决某一问题的一种思想,用某一编程语言实现这种思想的程序具有很多特点,其中一个便是智能性和进化性,即,不需要大量的人为干涉,程序本身能够根据一定的条件自我筛选,最终得出令人满意的结果。

所以按照这种特性,把它列为人工智能领域下的学习门类毫无疑问是可以的。

遗传算法的思想是借鉴了达尔文的进化学说和孟德尔的遗传学说,把遗传算法说成是一门十足的仿生学一点都不过分。

然而从应用的角度出发,遗传算法是求最优解问题的好方法,如信号处理中的优化、数学求解问题、工业控制参数最优解、神经网络中的激活函数、图像处理等等,所以把遗传算法说成优化范畴貌似也说的过去。

为了方便理解,我们可以暂时将其定位为人工智能–智能优化,这也是很多书中描述遗传算法的惯用词汇。

遗传算法的思想解析遗传算法(gentic algorithms简称GA)是模拟生物遗传和进化的全局优化搜索算法我们知道,在人类的演化中,达尔文的进化学说与孟德尔的遗传学说起着至关重要的理论指导。

每个人作为一个个体组成一个人类种群,正是经历着物竞天择,才会让整个群体慢慢变的更好,即更加适应周围的环境。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

自适应遗传算法自适应遗传算法一.主要流程:1. 参数的初始化。

设定遗传种群规模N ,阵元数M ,信源数P 等。

2. 编码。

采用十进制编码方法。

3. 初始种群的产生。

随机数生成。

4. 适应度函数的评价。

选取()()R P ΘA )tr f = (1)其中,H 1H )(A A A A P A -= (2)P A 是A 的投影矩阵,A 是阵列流型。

∑==Li L 1H 1XX R ) (3)R )是数据协方差矩阵的最大似然估计。

5. 选择。

比例选择方法与精英选择方法结合使用,在当代种群中选择优良个体遗传到下一代。

既保证了种群的多样性,也使最优个体得以保留。

1)比例选择方法(赌轮盘法):每个个体被选中的概率与它的适应度函数值大小成正比,即适应度函数越高的个体被选中的概率也就越高。

2)精英选择方法:让种群中适应度函数值最高的个体不进行配对交叉,直接复制到下一代中。

但是容易陷入局部最优解,全局搜索能力差。

6. 交叉。

按照概率P c 对种群中个体两两配对,进行交叉操作。

本文中选取算数交叉的方式。

算数交叉:是由两个个体的线性组合来产生新的个体,假设第t 代的两个个体为A (t)、B (t),则算数交叉后产生的新个体是()()()()t t t A B A αα-+=+11 (4)()()()()t t t B A B αα-+=+11 (5)其中,α选取(0,1)之间的随机数。

交叉概率:使交叉概率随着遗传代数的增长,逐渐减小,目的是进化前期注重交叉运算,全局搜索能力强。

2.02cos *4.0+⎪⎭⎫⎝⎛*=πK T P c (6)其中,T 是进化代数,K 是总进化次数。

7.变异。

按照概率P m 对种群个体进行变异。

本文中选取均匀变异的方式。

均匀变异:如某基因座上的基因值为X k ,其取值范围为[Umin,Umax],对其进行变异后的值为)U -r(U +U =X min max min k (7)其中,r 选取[0,1]之间的随机数。

变异概率:使变异概率随着遗传代数的增长,逐渐增加,目的是进化后期注重变异运算,局部搜索能力强。

005.02sin *045.0+⎪⎭⎫⎝⎛*=πK T P m (8)其中,T 是进化代数,K 是总进化次数。

8.终止条件判断。

若已达到设定的最大遗传代数,则迭代终止,输出最优解;若不满足终止条件,则返回第4步,进行迭代寻优过程。

图1 遗传算运算流程图二.仿真实验1.种群容量对角度均方根误差的影响实验条件:由8个阵元构成均匀线性阵列,阵元间距为半个波长,空间中有2个互不相关的窄带信号源,存在于该阵列的远场区域内。

两个信号源的波达方向分别为-20°和60°,快拍数取值128,信噪比取值20dB 。

种群容量范围[50,400],间隔50取值,循环代数200,交叉概率取值2.02cos *4.0+⎪⎭⎫ ⎝⎛*=πK T P c ,变异概率取值005.02sin *045.0+⎪⎭⎫⎝⎛*=πK T P m 。

蒙特卡洛实验次数200。

图2 种群容量对角度均方根误差的影响通过图2可知,当循环代数一定时,随着种群容量的增加,角度均方根误差逐渐减小。

2.循环代数对角度均方根误差的影响实验条件:由8个阵元构成均匀线性阵列,阵元间距为半个波长,空间中有2个互不相关的窄带信号源,存在于该阵列的远场区域内。

两个信号源的波达方向分别为-20°和60°,快拍数取值128,信噪比取值20dB 。

种群容量200,循环代数范围[50,400],间隔50取值,交叉概率取值2.02cos *4.0+⎪⎭⎫ ⎝⎛*=πK T P c ,变异概率取值005.02sin *045.0+⎪⎭⎫⎝⎛*=πK T P m 。

蒙特卡洛实验次数200。

图3 循环代数对角度均方根误差的影响通过图3可知,当种群容量一定,随着循环代数的增加,角度均方根误差曲线平稳,角度测量准确度无改善。

3.信噪比对角度均方根误差的影响实验条件:由8个阵元构成均匀线性阵列,阵元间距为半个波长,空间中有2个互不相关的窄带信号源,存在于该阵列的远场区域内。

两个信号源的波达方向分别为-20°和60°,快拍数取值128,信噪比取值[-10,20]dB,步进4dB 。

种群容量200,循环代数200,交叉概率取值2.02cos *4.0+⎪⎭⎫ ⎝⎛*=πK T P c ,变异概率取值005.02sin *045.0+⎪⎭⎫⎝⎛*=πK T P m 。

蒙特卡洛实验次数200。

图4 信噪比对角度均方根误差的影响通过图4可知,随着信噪比的增加,角度均方根误差逐渐减小,并趋于平稳,小于1°。

4.小快拍数下角度差值对角度均方根误差的影响实验条件:由8个阵元构成均匀线性阵列,阵元间距为半个波长,空间中有2个互不相关的窄带信号源,存在于该阵列的远场区域内。

两个信号源的入射角相差[5,35]°,步进5°,快拍数取值20,信噪比取值20dB 。

种群容量200,循环代数200,交叉概率取值2.02cos *4.0+⎪⎭⎫ ⎝⎛*=πK T P c ,变异概率取值005.02sin *045.0+⎪⎭⎫⎝⎛*=πK T P m 。

蒙特卡洛实验次数100。

图5 小快拍条件下入射角度差值对均方根误差的影响通过图5可知,在相同条件下,随着入射角度之间差值增大,对角度测量的误差减小。

5.低信噪比下快拍数对角度均方根误差的影响实验条件:由8个阵元构成均匀线性阵列,阵元间距为半个波长,空间中有2个互不相关的窄带信号源,存在于该阵列的远场区域内。

两个信号源的入射角分别为-20°、50°,快拍数取值[25,150],步进5,信噪比取值-10dB 。

种群容量200,循环代数200,交叉概率取值2.02cos *4.0+⎪⎭⎫ ⎝⎛*=πK T P c ,变异概率取值005.02sin *045.0+⎪⎭⎫⎝⎛*=πK T P m 。

蒙特卡洛实验次数100。

图6 低信噪比下快拍数对角度均方根误差的影响通过图6可知,低信噪比情况下,随着快拍数的增长,角度均方根误差的逐渐减小,但是角度估计的准确度低。

6.高信噪比下快拍数对角度均方根误差的影响实验条件:由8个阵元构成均匀线性阵列,阵元间距为半个波长,空间中有2个互不相关的窄带信号源,存在于该阵列的远场区域内。

两个信号源的入射角分别为-20°、50°,快拍数取值[25,150],步进5,信噪比取值20dB 。

种群容量200,循环代数200,交叉概率取值2.02cos *4.0+⎪⎭⎫ ⎝⎛*=πK T P c ,变异概率取值005.02sin *045.0+⎪⎭⎫⎝⎛*=πK T P m 。

蒙特卡洛实验次数100。

图7 高信噪比下快拍数对角度均方根误差的影响通过图7可知,在信噪比较大的情况下,在不同的快拍数下,角度均方根误差变化趋于平稳,波动小。

三.仿真程序1.基于自适应遗传算法的最大似然估计% 下面举例说明遗传算法 %% 求下列函数的最大值 %% 适应值函数:max{trace(PA*R)}, theta∈[-90,90] %%十进制种群均匀线阵赌轮盘法精英选择法% 编程%-----------------------------------------------clear allclcticM=8;doa=[-20 50];f=1000;%中心频率c=1500;%速度lambda=c/f;%波长d=lambda/2;%阵元间距%SNR=[-10:2:20];SNR=20;%信噪比N=128;%快拍数K=10;%试验次数%Iterations=[50:50:400];循环次数%popsize=[51:50:401];种群容量popsize=201;for g=1:length(SNR)%可以在这里修改循环条件%阵列流型Afor i=1:PA(:,i)=exp(-j*2*pi*d*[0:M-1]'/lambda*sin(doa(i)/180*pi));%均匀线性阵的阵列流型矢量。

end%信源模型建立S=zeros(P,N(g));for k=1:PS(k,:)=sqrt(10.^(SNR/10))*(randn(1,N(g))+j*randn(1,N(g)));%sqrt(10.^( snr/10))使信号符合该信噪比。

end%接收信号模型建立X=A*S+1/sqrt(2)*(randn(M,N(g))+j*randn(M,N(g)));%1/sqrt(2)使高斯白噪声的能量为1。

R=X*X'/N(g);[V,D]=eig(R);% [V,D]=eig(A):求矩阵R的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。

[Y,I]=sort(diag(D));%diag是将对角阵的对角元素提取成一个向量.如果A是向量,sort(A) 对A中元素按照升序排列。

% 如果A是矩阵sort(A) 对A按每一列元素按照升序排列。

Y为排列后矩阵,I 是原矩阵中各元素位置所组成的新矩阵。

Un=V(:,I(1:M-P));%把原矩阵第1到M-P列中的数对应到V矩阵中的列数,建立新的矩阵赋值给Un。

Us=V(:,I(M-P+1:M));%信号子空间for k=1:K %试验次数%popsize=201; %群体大小chromlength=2; %字符串长度(个体长度)pop=initpop(popsize,chromlength);%随机产生初始群体for i=1: 200 %200为迭代次数pc=0.4*cos(i*pi/(2*200))+0.2; %交叉概率,进行自适应改变,随着代数增加,逐渐减小。

pm=0.045*sin(i*pi/(2*200))+0.05; %变异概率,随着代数增加,逐渐变大。

[objvalue]=calobjvalue(pop,M,d,lambda,R);%计算目标函数[newpop1]=selection(pop,objvalue);%复制[newpop2]=crossover(newpop1,pc); %交叉[newpop3]=mutation(newpop2,pm);%变异pop=newpop3;end[objvalue]=calobjvalue(newpop3,M,d,lambda,R);%计算目标函数[bestindividual,bestfit]=best(newpop3,objvalue); %求出群体中适应值最大的个体及其适应值y(k,:)=bestindividual;%最优个体y(k,:)=sort(y(k,:),2);%测得角度按顺序排列mistake(g,2*k-1:2*k)=y(k,:)-sort(doa);%每次实验的误差矩阵endRMSE(g,:)=sqrt(sum(mistake(g,:).^2,2)/2/K);%均方根误差endToc2.种群生成初始化(编码)% initpop.m函数的功能是实现群体的初始化,popsize表示群体的大小,chromlength 表示染色体的长度.%遗传算法子程序%Name: initpop.m%初始化function pop=initpop(popsize,chromlength)pop=(rand(popsize,chromlength)-0.5*ones(popsize,chromlength))*180; %行数为popsize,列数为chromlength的矩阵,%这样产生的初始种群。

相关文档
最新文档