遗传算法优化函数加程序总结.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微波//毫米波工程中的优化方法 作业报告 编写优化程序(用Matlab、C、Fortran语言等方式), 优化下列函数: 通过查找资料,最后选择应用遗传算法来进行函数的优化,并通过C语言编写程序,最后得到优化结果。 1遗传算法简介 近年发展起来的遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应、全局优化概率搜索算法。其主要特征是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和良好的全局寻优能力;采用概率化的寻优方法;能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则;遗传算法这些性质,已被人们广泛地应用于组合优 化、机器学习、信号处理、自适应控制和人工生命领域,它是现代有关智能计算中的关键技术之一。 遗传算法搜索最优解的方法是模仿生物的进化过程,即通过选择与染色体之间的交叉和变异来完成的。遗传算法主要使用选择算子、交叉算子与变异算子来模拟生物进化,从而产生一代又一代的种群 (1)选择算子:是模拟自然选择的操作,反映“优胜劣汰”原理。它根据每一个个体的适应度,按照一定规则或方法,从t 代种群中选择出一些优良的个体(或作为母体,或让其遗传到下一代种群)。 (2)交叉算子:是模拟有性繁殖的基因重组操作,它将从种群所选择的每一对母体,以一定的交叉概率交换它们之间的部分基因。 (3)变异算子:是模拟基因突变的遗传操作,它对种群中的每一个个体,以一定的变异概率改变某一个或某一些基因座上的基因值为其他的等位基因。 交叉算子与变异算子的作用都在于重组染色体基因,以生成新的个体。 实践表明,遗传算法求解函数优化问题的计算效率比较高、适用范围相当广。与传统的优化方法相比,遗传算法具有如下特点:具有简单通用、鲁棒性强、适于并行处理以及高效、实用等显著优点。 2 遗传算法的运算过程 1、初始化 确定种群规模N,交叉概率Pc,变异概率Pm和终止进化准则;随机生成N个个体作为初始种群; 2、个体评 计算评估中各个体的适应度。 3、种群进化 (1)选择(母体)从中运用选择算子选择出M/2对母体(M≥N)。 4、终止检验 如已满足终止准则,则输出中具有最大适应度的个体作为最优解,终止计算。否则置t←t+1并转步骤2。 3 需求分析 1、本程序演示的是用简单遗传算法随机一个种群,然后根据所给的交叉率,变异率,世代数计算最大适应度所在的代数。 2、演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的命令;相应的输入数据和运算结果显示在其后。 3、测试数据 f(x1,x2,x3)=(3*x1+x2-2*x3+0.8)/(2*x1-x2+x3)+(4*x1-2*x2+x3)/(7*x1+3*x2-x3)并根据题给的x1,x2,x3的约束条件作适应度函数求最大适应度即为函数的最大值。 4 程序的各函数简单算法说明 (1)void generateinitialpopulation ()和void input ()初始化种群和遗传算法参数。 input() 函数输入种群大小,染色体长度,最大世代数,交叉率,变异率等参数。 (2) void calculateobjectvalue();计算适应度函数值 。 根据给定的变量用适应度函数计算然后返回适度值。 (3)选择函数selectoperator() 在函数selectoperator()中首先用rand ()函数产生0~1间的选择算子,当适度累计值不为零时,比较各个体所占总的适应度百分比的累计和与选择算子,直到达到选择算子的值那个个体就被选出,即适应度为fi的个体以fi/∑fk的概率继续存在crossoveroperator() 这是遗传算法中的最重要的函数之一,它是对个体两个变量所合成的染色体进行交叉,而不是变量染色体的交叉,这要搞清楚。首先用rand ()函数产生随机概率,若小于交叉概率,则进行染色体交叉,同时交叉次数加1。这时又要用rand()函数随机产生一位交叉位,把染色体的交叉位的后面部分交叉即可;若大于交叉概率,则进行简单的染色体复制即可。 (5)染色体变异函数mutation() 变异是针对染色体字符变异的,而不是对个体而言,即个体变异的概率是一样。随机产生比较概率,若小于变异概率,则1变为0,0变为1,同时变异次数加1。 (6)long decodechromosome(char *,int,int) 本函数是染色体解码函数,它将以数组形式存储的二进制数转成十进制数,然后才能用适应度函数计算。 (7)void findbestandworstindividual()本函数是求最大适应度个体的,每一代的所

文档评论(0)

a336661148 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档