摘要遗传算法作为一种近代最优化方法,广泛地用于计算科学、模式识别和智能故障诊断等方面,它适用于解决复杂的非线性和多维空间寻优问题,近年来也得到了较为广阔的应用。本文介绍了遗传算法基本原理并且对测试函数进行了遗传算法的matlab仿真。关键词:遗传算法最优化1.引言遗传算法(GeneticAlgorithm)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法。它是由美国的J.Holland教授1975年首先提出,其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。它是现代有关智能计算中的关键技术。2.遗传算法过程遗传算法的基本流程:初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。个体评价:计算群体P(t)中各个个体的适应度。选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。交叉运算:将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t+1)。终止条件判断:若t=T,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。遗传算法流程图遗传算法的关键在于迭代过程中的选择,交叉,变异。选择选择是用来确定交叉个体,以及被选个体将产生多少个子代个体。其主要思想是个体的复制概率正比于其适应值,但按比例选择不一定能达到好的效果。选择操作从早期的轮盘赌选择发展到现在有最佳个体保存法、排序选择法、联赛选择法、随机遍历抽样法、局部选择法、柔性分段复制、稳态复制、最优串复制、最优串保留等。交叉交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作,其作用是组合出新的个体,在空间进行有效搜索,同时降低对有效模式的破坏概率。各种交叉算子均包含两个基本内容:确定交叉点的位置和进行部分基因的交换。生成初始种群种群中个体适应渡的计算与评价价物种的选择交叉变异常用的交叉操作方法有单点交叉、双点交叉、一致交叉、均匀交叉、算术交叉、二维交叉、树结构交叉、部分匹配交叉、顺序交叉和周期交叉等等。变异变异是指将个体中的某些基因值用其它基因值来替换,形成一个新的个体。遗传算法中的变异运算是产生新个体的辅助方法,其目的是使遗传算法具有局部的随机搜索能力和保持群体的多样性。变异算法包括确定变异点的位置和进行基因值替换。常见的变异算子有基本位变异、均匀变异、高斯变异、二元变异、逆转变异、自适应变异等。3.测试对1f函数进行最优化处理:其中n=6,k依次取0,0.1,0.2,0.3,0.5,1,每次的最后种群作为下一次的初始种群流程如下:第一步:初始化参数:设定进化代数为200代,种群规模为100,交叉概率为0.85,变异概率为0.001;第二步:产生初始化群体:产生随机初始种群数,将k=0的最后种群作为k=0.1的初始化种群,将k=0.1的最后种群作为k=0.3的初始化种群,将k=0.3的最后种群作为k=0.5的初始化种群,将k=0.5的最后种群作为k=1的初始化种群。选择初始种群后计算每个个体的适应度,平均适应度,最有适应度,这里的适应度即为函数值,最优为最小的;第三步:进化开始:选择个体进行后面的交叉和变异,选择方法为转种群规模次轮盘,随机选择种群规模个个体序号,选择的序号可能重复即后面可能发生同一个体与不同个体交叉;第四步:交叉:每个被选序号进行交叉判定,先判定其交叉概率,发生交叉事件后,采用比例交叉法,即随机生成一个pick范围(0~1),选择x1个体的x1(pos)项与x2个体的x2(pos)项进行等比例交叉,x1(pos)=pick*x1(pos)+(1-pick)*x2(pos),其中pos为随机序号,x2的交叉同理;第五步:变异:变异概率取为0.001,每个个体进行变异判定,变异事件发生后,随机选择变异的项进行编译算法;第六步:计算种群中每个个体的适应度值,选出最优个体,并与之前的最优个体进行比较并判断是否替换,并把最优个体替换最差个体进行下一次迭代;第七步:重复第一步直到迭代次数达到要求次数。当n=2,时k=[00.10.20.30.51]时的三维图N=6时收敛图X1X2X3X4X5X6函数值收敛代数K=00.3166-0.78542.11940.397571.2733-0.917021.2473119K=0.10.3166-0.78542.13100.39751.2733-0.782523.7433189K=0.22.4380-1.47212.13100.47262.4446-0.370338.1960104K=0.32.5925-1.47212.13100.55032.4453-0.337640.4759186K=0.52.614-2.01521.78220.81632.4760-0.313942.9121167K=12.6145-1.99002.15220.91612.4737-0.733569.29921604.总结本文分析了遗传算法的基本流程,并且在matlab上进行了仿真测试,对测试函数使用遗传算法进行了求极小值运算。传统的函数优化方法都是以梯度为基础的,其中有部分最优化方法还需要进行求导运算,对于简单的函数传统的优化方法可以达到最优。然而对于很多复杂的最优化问题,特别是理论研究或工程应用的实际问题,目标函数往往很复杂,很难找出一种普遍的方法进行最优求解,其局部极值的求解也很困难,传统的最优化方法很难使用与此类问题。而遗传算法能够使用较为通用的方法解决此类问题,当遇到工程或科研的最优化问题,而又很难求解时,遗传算法可以给人一种新的解决思路。
本文标题:遗传算法动态寻优
链接地址:https://www.777doc.com/doc-7382100 .html