遗传算法及其在函数优化问题中的应用.docVIP

  • 23
  • 0
  • 约1.63万字
  • 约 20页
  • 2017-11-27 发布于江西
  • 举报

遗传算法及其在函数优化问题中的应用.doc

遗传算法及其在函数优化问题中的应用

课程:算法设计与分析 题 目:遗传算法及其在函数优化问题中的应用 姓 名: 陈珍姗 学 院: 信息科学与技术学院 系: 自动化 专 业: 控制工程 年级:2009级 学 号: 23220091152865 老 师:罗德林 2010 年 1 月 4 日 遗传算法及其在函数优化问题中的应用 [摘要] 遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它最初由美国Michigan大学J.Holland教授于1975年首先提出来的,并出版了颇有影响的专著《Adaptation in Natural and Artificial Systems》,GA这个名称才逐渐为人所知,J.Holland教授所提出的GA通常为简单遗传算法(SGA)。遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体实际上是染色体(chromosome)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。遗传算法是解决搜索问题的一种通用算法,对于各种通用问题都可以使用。搜索算法的共同特征为: 首先组成一组候选解; 依据某些适应性条件测算这些候选解的适应度; 根据适应度保留某些候选解,放弃其他候选解; 对保留的候选解进行某些操作,生成新的候选解。 由于遗传算法的整体搜索策略和优化搜索方法在计算是不依赖于梯度信息或其它辅助知识,而只需要影响搜索方向的目标函数和相应的适应度函数,所以遗传算法提供了一种求解复杂系统问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以广泛应用于许多科学,下面我们将介绍遗传算法的一些主要应用领域: 1、 函数优化。 函数优化是遗传算法的经典应用领域,也是遗传算法进行性能评价的常用算例,许多人构造出了各种各样复杂形式的测试函数:连续函数和离散函数、凸函数和凹函数、低维函数和高维函数、单峰函数和多峰函数等。对于一些非线性、多模型、多目标的函数优化问题,用其它优化方法较难求解,而遗传算法可以方便的得到较好的结果。 2、 组合优化 随着问题规模的增大,组合优化问题的搜索空间也急剧增大,有时在目前的计算上用枚举法很难求出最优解。对这类复杂的问题,人们已经意识到应把主要精力放在寻求满意解上,而遗传算法是寻求这种满意解的最佳工具之一。实践证明,遗传算法对于组合优化中的NP问题非常有效。例如遗传算法已经在求解旅行商问题、 背包问题、装箱问题、图形划分问题等方面得到成功的应用。 此外,GA也在生产调度问题、自动控制、机器人学、图象处理、人工生命、遗传编码和机器学习等方面获得了广泛的运用。g=-f,即 Minf(x)=max g(x)=max{-f(x)} 假定目标函数f在其域内只取正值;若为负,可通过加入某个正常数C使之为正,即: Maxg(x)→max{g(x)+C} 现在,假设欲求一个有k个变量的函数的的最大值。进一步假设每个变量为域内的一个值,且对所有,。假定以某个要求的精度优化函数:这里取自变量小数点后第6位。 很明显,要达到这样的精度,每个域应该被分割成个等尺寸的区间。这里用表示使成立的最小整数。这样,对每个变量,由串长为的二进制编码表达显然能满足精度要求。下面的公式对应于每个串的自变量值: 其中表示二进制的十进制值。 现在,代表一个潜在解的染色体被长度为的二进制串表达:前位对应区间里的一个值,随后的位对应区间里的一个值

文档评论(0)

1亿VIP精品文档

相关文档