函数优化的遗传算法代码实现.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
龙源期刊网 函数优化的遗传算法代码实现 作者:宋建萍 来源:《软件导刊》2013年第02期 ????????摘 要:函数优化是遗传算法的经典应用领域,也是遗传算法进行性能评价的常用算例。对于一些非线性、多模型、多目标的函数优化问题,用其它优化方法较难求解,而用遗传算法则可以方便地得到较好的结果。用Matlab实现了函数优化的遗传算法源程序,该源程序可以直接运行。 ????????关键词:遗传算法;Matlab;函数优化 ????????中图分类号:TP312 文献标识码:A 文章编号2013)002004003 ????????0 引言 ????????遗传算法(Genetic Algorithm)是一类借鉴生物界的进化规律(适者生存、优胜劣汰遗传机制)演化而来的随机化搜索方法。它由美国的J.Holland教授于1975年首先提出,其主要特点是:直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,并自适应地调整搜索方向,不需要确定的规则。遗传算法的这些性质已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。它是现代有关智能计算中的关键技术。 ????????1 遗传算法实现步骤 ????????遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体实际上是染色体(chromosome)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(goodness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。这个过程将导致种群像自然进化一样,后生代种群比前代更能适应环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。 ????????遗传算法的基本运算过程如下: ????????(1)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。 ????????(2)个体评价:计算群体P(t)中各个体的适应度。 ????????(3)选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础之上的。 ????????(4)交叉运算:将交叉算子作用于群体。所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。遗传算法中起核心作用的就是交叉算子。 ????????(5)变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。 ????????群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t +1)。 ????????(6)终止条件判断:若t=T,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。 ????????2 遗传算法的Matlab代码实现 ????????下面将分别介绍算法的每个过程的编程思路,并分别给出相应的函数代码,然后给出整个程序的主函数。接下来分别介绍这些函数的编写过程。2.1 个体编码及初始种群设定 ????????编码是应用遗传算法时要解决的首要问题,也是设计遗传算法时的一个关键步骤。遗传算法的特点之一就是不直接对问题的实际决策变量直接进行操作,而是根据问题的可行解对遗传个体进行编码,然后对编码进行遗传运算,以达到优化的目的。实际的遗传算法常用的编码有二进制编码、格雷码编码、实数编码等,其中二进制编码简单易行、易于实现、便于利用模式定义对算法进行理论分析。因此,我们的算法使用二进制编码。 ????????进行二进制编码,就是要对种群中的所有个体给出一个二进制码。因此,需要根据问题的规模确定所要编码二进制的位数,这需要3个变量,即实际问题的上界max,下界min和问题的精度precision,根据这3个值即可求出所需要的二进制位数。同时还需要从所有的编码中随机地挑选一定数量的个体作为初始种群。实现的函数encodebi

文档评论(0)

展翅高飞2020 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档