- 6
- 0
- 约8.9千字
- 约 13页
- 2017-04-11 发布于贵州
- 举报
心人工智能作业心人工智能作业
《 人工智能 》
实验大作业
实验题目: 基于简单遗传算法求函数最大值问题
专业 信息与计算科学
年级 09级
姓名 王安心
学号 091001112
指导老师 时华
日 期 2012-12-10
简单遗传算法
一、实验目的:
熟悉和掌握遗传算法的基本思想和基本方法,通过实验培养学生利用遗传算法进行问题求解的基本技能,并且了解进化计算其他分支的基本思想和基本方法。
二、实验方法:
1.先熟悉进化计算中遗传算法的基本思想和流程;
2.用C、C++、JAVA或Prolog 语言编程实现实验内容。
三、实验背景知识:
生物群体的生存过程普遍遵循达尔文的物竞天择、适者生存的进化准则。群体中的个体根据对环境的适应能力而被大自然所选择或淘汰。进化计算(evolutionary computation, EC)就是通过模拟自然物群进化的一类非常鲁棒的优化算法,它们模拟群体(其中组成群体的每个个体表示搜索问题解空间中的一个解)的集体学习过程,从任意初始群体出发,通过随机选择、变异和交叉过程,使群体进化学习到搜索空间中越来越好的区域。进化计算中选择过程使群体中适应性好的个体比适应性差的个体有更多的机会遗传到下一代中,交叉算子将父代信息结合在一起并他们遗传给下一代个体,而变异过程在群体中引入新的变种。进化计算包括遗传算法(evolutionary algorithm,EA)、进化策略(evolution strategy, ES)、进化编程(evolutionary programming, EP)、遗传编程(genetic programming, GP)。
遗传算法是模仿生物遗传学和自然选择机理,通过人工方式构造的一类优化搜索算法,是对生物进化过程的一种数学仿真,是进化计算的一种最重要形式。遗传算法为那些那些难以找到传统数学模型的难题找出了一个解决方法。自从Holland于1975年在其著作《Adaptation in Natural and Artificial Systems》中首次提出遗传算法以来,经过近30年的研究,现在已发展到一个比较成熟的阶段,并且在实际中已经得到了很好的应用。
1.简单遗传算法的构成要素
(1)染色体编码和解码方法
在实现对一个问题用遗传算法之前,我们必须先对问题的解空间进行编码,以便使得它能够由遗传算法进行操作。解码就是把遗传算法操作的个体转换成原来问题结构的过程。常见的编码方法有:二进制编码、浮点数编码、格雷码等。以二进制为例:假设某一参数的取值范围是[A,B],A<B,我们有长度为l的二进制编码串来表示该参数,将[A,B]等分成2l -1个子部分,每个等分的长度为δ,则它能够产生 2l 种不同的编码。
00000000000…0000000000 = 0 → A
00000000000…0000000001 = 1 → A + δ
11111111111……1111111111 = → B
二进制编码的最大缺点是使得遗传算法操作的个体位串太长,这容易降低遗传算法的运行效率,很多问题采用其他编码方法可能更有利。如对于函数优化问题,浮点数编码方法就更有效,而二进制编码方法不但容易降低遗传算法的运行效率,而且会产生精度损失。浮点数编码方法是指个体的每个染色体用某一范围内的一个浮点数表示,个体的编码长度就等于问题变量的个数。
在实际运用遗传算法解决问题时,一般都需要根据具体的问题采用合适的编码方法,这样更有利于遗传算法搜索到问题的最优解。
(2)适应度函数
遗传算法在进化搜索中基本上不用外部信息,仅用目标函数也就是适应度函数为依据。适应度函数是用于度量问题中每一个染色体优劣程度的函数,体现了染色体的适应能力。遗传算法的目标函数不受连续可微的约束且定义域可以是任意集合。但对适应度函数有一个要求就是针对输入可以计算出的能加以比较的结果必须是非负的。
在具体应用中,适应度函数的设计要结合求解问题本身的要求而设计。因为适应度函数对个体的评估是遗传算法进行个体选择的唯一依据,因此适应度函数的设计直接影响到遗传算法的性能。对于很多问题,可以直接把求解问题的目标函数作为适应度函数使用,但也存在很多问题需要进行一定的转换才能使得目标函数可以用作遗传算法的适应度函数。
(3)遗传算子
遗传算法主要有三种操作算子:选择(selection)、交叉(crossover)、变异(mutation
原创力文档

文档评论(0)