遗传算法——耐心看完-你就掌握了遗传算法

遗传算法——耐心看完-你就掌握了遗传算法
遗传算法——耐心看完-你就掌握了遗传算法

遗传算法入门到掌握

读完这个讲义,你将基本掌握遗传算法,要有耐心看完。

想了很久,应该用一个怎么样的例子带领大家走进遗传算法的神奇世界呢?遗传算法的有趣应用很多,诸如寻路问题,8数码问题,囚犯困境,动作控制,找圆心问题(这是一个国外网友的建议:在一个不规则的多边形中,寻找一个包含在该多边形内的最大圆圈的圆心。),TSP问题(在以后的章节里面将做详细介绍。),生产调度问题,人工生命模拟等。直到最后看到一个非常有趣的比喻,觉得由此引出的袋鼠跳问题(暂且这么叫它吧),既有趣直观又直达遗传算法的本质,确实非常适合作为初学者入门的例子。这一章将告诉读者,我们怎么让袋鼠跳到珠穆朗玛峰上去(如果它没有过早被冻坏的话)。

问题的提出与解决方案

让我们先来考虑考虑下面这个问题的解决办法。

已知一元函数:

图2-1

现在要求在既定的区间内找出函数的最大值。函数图像如图2-1所示。

极大值、最大值、局部最优解、全局最优解

在解决上面提出的问题之前我们有必要先澄清几个以后将常常会碰到的概念:极大值、最大值、局部最优解、全局最优解。学过高中数学的人都知道极大值在一个小邻域里面左边的函数值递增,右边的函数值递减,在图2.1里面的表现就是一个“山峰”。当然,在图上有很多个“山峰”,所以这个函数有很多个极大值。而对于一个函数来说,最大值就是在所有极大值当中,最大的那个。所以极大值具有局部性,而最大值则具有全局性。

因为遗传算法中每一条染色体,对应着遗传算法的一个解决方案,一般我们用适应性函数(fitness function)来衡量这个解决方案的优劣。所以从一个基因组到其解的适应度形成一个映射。所以也可以把遗传算法的过程看作是一个在多元函数里面求最优解的过程。在这个多维曲面里面也有数不清的“山峰”,而这些最优解所对应的就是局部最优解。而其中也会有一个“山峰”的海拔最高的,那么这个就是全局最优解。而遗传算法的任务就是尽量爬到最高峰,而不是陷落在一些小山峰。(另外,值得注意的是遗传算法不一定要找“最高的山峰”,如果问题的适应度评价越小越好的话,那么全局最优解就是函数的最小值,对应的,遗传算法所要找的就是“最深的谷底”)如果至今你还不太理解的话,那么你先往下看。本章的示例程序将会非常形象的表现出这个情景。

“袋鼠跳”问题

既然我们把函数曲线理解成一个一个山峰和山谷组成的山脉。那么我们可以设想所得到的每一个解就是一只袋鼠,我们希望它们不断的向着更高处跳去,直到跳到最高的山峰(尽管袋鼠本身不见得愿意那么做)。所以求最大值的过程就转化成一个“袋鼠跳”的过程。下面介绍介绍“袋鼠跳”的几种方式。

爬山法、模拟退火和遗传算法

解决寻找最大值问题的几种常见的算法:

1. 爬山法(最速上升爬山法):

从搜索空间中随机产生邻近的点,从中选择对应解最优的个体,替换原来的个体,不断重复上述过程。因为只对“邻近”的点作比较,所以目光比较“短浅”,常常只能收敛到离开初始位置比较近的局部最优解上面。对于存在很多局部最优点的问题,通过一个简单的迭代找出全局最优解的机会非常渺茫。(在爬山法中,袋鼠最有希望到达最靠近它出发点的山顶,但不能保证该山顶是珠穆朗玛峰,或者是一个非常高的山峰。因为一路上它只顾上坡,没有下坡。)

2. 模拟退火:

这个方法来自金属热加工过程的启发。在金属热加工过程中,当金属的温度超过它的熔点(Melting Point)时,原子就会激烈地随机运动。与所有的其它的物理系统相类似,原子的这种运动趋向于寻找其能量的极小状态。在这个能量的变

迁过程中,开始时。温度非常高,使得原子具有很高的能量。随着温度不断降低,金属逐渐冷却,金属中的原子的能量就越来越小,最后达到所有可能的最低点。利用模拟退火的时候,让算法从较大的跳跃开始,使到它有足够的“能量”逃离可能“路过”的局部最优解而不至于限制在其中,当它停在全局最优解附近的时候,逐渐的减小跳跃量,以便使其“落脚”到全局最优解上。(在模拟退火中,袋鼠喝醉了,而且随机地大跳跃了很长时间。运气好的话,它从一个山峰跳过山谷,到了另外一个更高的山峰上。但最后,它渐渐清醒了并朝着它所在的峰顶跳去。)

3. 遗传算法:

模拟物竞天择的生物进化过程,通过维护一个潜在解的群体执行了多方向的搜索,并支持这些方向上的信息构成和交换。以面为单位的搜索,比以点为单位的搜索,更能发现全局最优解。(在遗传算法中,有很多袋鼠,它们降落到喜玛拉雅山脉的任意地方。这些袋鼠并不知道它们的任务是寻找珠穆朗玛峰。但每过几年,就在一些海拔高度较低的地方射杀一些袋鼠,并希望存活下来的袋鼠是多产的,在它们所处的地方生儿育女。)(后来,一个叫天行健的网游给我想了一个更恰切的故事:从前,有一大群袋鼠,它们被莫名其妙的零散地遗弃于喜马拉雅山脉。于是只好在那里艰苦的生活。海拔低的地方弥漫着一种无色无味的毒气,海拔越高毒气越稀薄。可是可怜的袋鼠们对此全然不觉,还是习惯于活蹦乱跳。于是,不断有袋鼠死于海拔较低的地方,而越是在海拔高的袋鼠越是能活得更久,也越有机会生儿育女。就这样经过许多年,这些袋鼠们竟然都不自觉地聚拢到了一个个的山峰上,可是在所有的袋鼠中,只有聚拢到珠穆朗玛峰的袋鼠被带回了美丽的澳洲。)

下面主要介绍介绍遗传算法实现的过程。

遗传算法的实现过程

遗传算法的实现过程实际上就像自然界的进化过程那样。首先寻找一种对问题潜在解进行“数字化”编码的方案。(建立表现型和基因型的映射关系。)然后用随机数初始化一个种群(那么第一批袋鼠就被随意地分散在山脉上。),种群里面的个体就是这些数字化的编码。接下来,通过适当的解码过程之后,(得到袋鼠的位置坐标。)用适应性函数对每一个基因个体作一次适应度评估。(袋鼠爬得越高,越是受我们的喜爱,所以适应度相应越高。)用选择函数按照某种规定择优选择。(我们要每隔一段时间,在山上射杀一些所在海拔较低的袋鼠,以保证袋鼠总体数目持平。)让个体基因交叉变异。(让袋鼠随机地跳一跳)然后产生子代。(希望存活下来的袋鼠是多产的,并在那里生儿育女。)遗传算法并不保证你能获得问题的最优解,但是使用遗传算法的最大优点在于你不必去了解和操心如何去“找”最优解。(你不必去指导袋鼠向那边跳,跳多远。)而只要简单的“否定”一些表现不好的个体就行了。(把那些总是爱走下坡路的袋鼠射杀。)以后你会慢慢理解这句话,这是遗传算法的精粹!

题外话:

这里想提一提一个非主流的进化论观点:拉马克主义的进化论。

法国学者拉马克(Jean-Baptiste de Lamarck,1744~1891)的进化论观点表述在他的《动物学哲学》(1809)一书中。该书提出生物自身存在一种是结构更加复杂化的“内驱力”,这种内驱力是与生俱来的,在动物中表现为“动物体新器官的产生来自它不断感觉到的新需要。”不过具体的生物能否变化,向什么方向变化,则要受环境的影响。拉马克称其环境机制为“获得性遗传”,这一机制分为两个阶段:一是动物器官的用与不用(即“用进废退”:在环境的作用下,某一器官越用越发达,不使用就会退化,甚至消失。);二是在环境作用下,动物用与不用导致的后天变异通过繁殖传给后代(即“获得性遗传”)。

德国动物学家魏斯曼(August Weismann,1834~1914)对获得性遗传提出坚决的质疑。他用老鼠做了一个著名的“去尾实验”,他切去老鼠的尾巴,并使之适应了短尾的生活。用这样的老鼠进行繁殖,下一代老鼠再切去尾巴,一连切了22代老鼠的尾巴,第23代老鼠仍然长出正常的尾巴。由此魏斯曼认为后天后天获得性不能遗传。(择自《怀疑----科学探索的起点》)

我举出这个例子,一方面希望初学者能够更加了解正统的进化论思想,能够分辨进化论与伪进化论的区别。另一方面想让读者知道的是,遗传算法虽然是一种仿生的算法,但我们不需要局限于仿生本身。大自然是非常智慧的,但不代表某些细节上人不能比她更智慧。另外,具体地说,大自然要解决的问题,毕竟不是我们要解决的问题,所以解决方法上的偏差是非常正常和在所难免的。(下一章,读者就会看到一些非仿生而有效的算法改进。)譬如上面这个“获得性遗传”我们先不管它在自然界存不存在,但是对于遗传算法的本身,有非常大的利用价值。即变异不一定发生在产生子代的过程中,而且变异方向不一定是随机性的。变异可以发生在适应性评估的过程当中,而且可以是有方向性的。(当然,进一步的研究有待进行。)

所以我们总结出遗传算法的一般步骤:

开始循环直至找到满意的解。

1.评估每条染色体所对应个体的适应度。

2.遵照适应度越高,选择概率越大的原则,从种群中选择两个个体作为父方和母方。

3.抽取父母双方的染色体,进行交叉,产生子代。

4.对子代的染色体进行变异。

5.重复2,3,4步骤,直到新种群的产生。

结束循环。

接下来,我们将详细地剖析遗传算法过程的每一个细节。

编制袋鼠的染色体----基因的编码方式

通过前一章的学习,读者已经了解到人类染色体的编码符号集,由4种碱基的两种配合组成。共有4种情况,相当于2 bit的信息量。这是人类基因的编码方式,那么我们使用遗传算法的时候编码又该如何处理呢?

受到人类染色体结构的启发,我们可以设想一下,假设目前只有“0”,“1”两种碱基,我们也用一条链条把他们有序的串连在一起,因为每一个单位都能表现出 1 bit的信息量,所以一条足够长的染色体就能为我们勾勒出一个个体的所有特征。这就是二进制编码法,染色体大致如下:

010010011011011110111110

上面的编码方式虽然简单直观,但明显地,当个体特征比较复杂的时候,需要大量的编码才能精确地描述,相应的解码过程(类似于生物学中的DNA翻译过程,就是把基因型映射到表现型的过程。)将过份繁复,为改善遗传算法的计算复杂性、提高运算效率,提出了浮点数编码。染色体大致如下:

1.2 – 3.3 –

2.0 – 5.4 – 2.7 – 4.3

那么我们如何利用这两种编码方式来为袋鼠的染色体编码呢?因为编码的目的是建立表现型到基因型的映射关系,而表现型一般就被理解为个体的特征。比如人的基因型是46条染色体所描述的(总长度两米的纸条?),却能解码成一个个眼,耳,口,鼻等特征各不相同的活生生的人。所以我们要想为“袋鼠”的染色体编码,我们必须先来考虑“袋鼠”的“个体特征”是什么。也许有的人会说,袋鼠的特征很多,比如性别,身长,体重,也许它喜欢吃什么也能算作其中一个特征。但具体在解决这个问题的情况下,我们应该进一步思考:无论这只袋鼠是长短,肥瘦,只要它在低海拔就会被射杀,同时也没有规定身长的袋鼠能跳得远一些,身短的袋鼠跳得近一些。当然它爱吃什么就更不相关了。我们由始至终都只关心一件事情:袋鼠在哪里。因为只要我们知道袋鼠在那里,我们就能做两件必须去做的事情:

(1)通过查阅喜玛拉雅山脉的地图来得知袋鼠所在的海拔高度(通过自变量求函数值。)以判断我们有没必要把它射杀。

(2)知道袋鼠跳一跳后去到哪个新位置。

如果我们一时无法准确的判断哪些“个体特征”是必要的,哪些是非必要的,我们常常可以用到这样一种思维方式:比如你认为袋鼠的爱吃什么东西非常必要,那么你就想一想,有两只袋鼠,它们其它的个体特征完全同等的情况下,一只爱吃草,另外一只爱吃果。你会马上发现,这不会对它们的命运有丝毫的影响,它们应该有同等的概率被射杀!只因它们处于同一个地方。(值得一提的

遗传算法的c语言程序

一需求分析 1.本程序演示的是用简单遗传算法随机一个种群,然后根据所给的交叉率,变异率,世代数计算最大适应度所在的代数 2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的命令;相应的输入数据和运算结果显示在其后。3.测试数据 输入初始变量后用y=100*(x1*x1-x2)*(x1*x2-x2)+(1-x1)*(1-x1)其中-2.048<=x1,x2<=2.048作适应度函数求最大适应度即为函数的最大值 二概要设计 1.程序流程图 2.类型定义 int popsize; //种群大小 int maxgeneration; //最大世代数 double pc; //交叉率 double pm; //变异率 struct individual

{ char chrom[chromlength+1]; double value; double fitness; //适应度 }; int generation; //世代数 int best_index; int worst_index; struct individual bestindividual; //最佳个体 struct individual worstindividual; //最差个体 struct individual currentbest; struct individual population[POPSIZE]; 3.函数声明 void generateinitialpopulation(); void generatenextpopulation(); void evaluatepopulation(); long decodechromosome(char *,int,int); void calculateobjectvalue(); void calculatefitnessvalue(); void findbestandworstindividual(); void performevolution(); void selectoperator(); void crossoveroperator(); void mutationoperator(); void input(); void outputtextreport(); 4.程序的各函数的简单算法说明如下: (1).void generateinitialpopulation ()和void input ()初始化种群和遗传算法参数。 input() 函数输入种群大小,染色体长度,最大世代数,交叉率,变异率等参数。 (2)void calculateobjectvalue();计算适应度函数值。 根据给定的变量用适应度函数计算然后返回适度值。 (3)选择函数selectoperator() 在函数selectoperator()中首先用rand ()函数产生0~1间的选择算子,当适度累计值不为零时,比较各个体所占总的适应度百分比的累计和与选择算子,直到达到选择算子的值那个个体就被选出,即适应度为fi的个体以fi/∑fk的概率继续存在; 显然,个体适应度愈高,被选中的概率愈大。但是,适应度小的个体也有可能被选中,以便增加下一代群体的多样性。 (4)染色体交叉函数crossoveroperator() 这是遗传算法中的最重要的函数之一,它是对个体两个变量所合成的染色体进行交叉,而不是变量染色体的交叉,这要搞清楚。首先用rand ()函数产生随机概率,若小于交叉概率,则进行染色体交叉,同时交叉次数加1。这时又要用rand()函数随机产生一位交叉位,把染色

用遗传算法求解Rosenbrock函数最优解实验报告

姓名学号 实验 成绩 华中师范大学计算机科学系 实验报告书 实验题目:用遗传算法求解Rosenbrock函数的最大值问题课程名称:智能计算 主讲教师:沈显君 辅导教师: 课程编号: 班级:2011级 实验时间:2011.11

用遗传算法求解Rosenbrock函数最大值问题 摘要: 本文利用遗传算法研究了求解Rosenbrock函数的最大值问题.在较多的计算机模拟实验结果中表明,用遗传算法可以有效地解决这一问题.文中分析了一种基于遗传算法对Rosenbrock函数最大值问题的求解,得到了适于解决此问题的合理的遗传操作,从而为有效地解决最速下降法所不能实现的某一类函数代化问题提供了一种新的途径.通过对基于遗传算法对Rosenbrock函数最大值问题的求解,进一步理解遗传算法对解决此类问题的思想。 关键词:遗传算法,Rosenbrock函数,函数优化,最速下降法。 Abstract: This paper deals with the maximum of Rosenbrock s function based ongenetic algorithms. The simulated results show that the problem can be solved effectivelyusing genetic algorithms. The influence of some rnodified genetic algorithms on searchspeed is also examined. Some genetic operations suitable to the optimization technique areobtained, therefore, a novel way of solving a class of optimizations of functions that cannot be realized using the method of steepest descent is proposed.Through dealing with the maximum of Rosenbrock s function based ongenetic algorithms,a better understanding of the genetic algorithm to solve such problems thinking. Keyword:ongenetic algorithms,Rosenbrock function,function optimization,Steepest descent method

遗传算法的研究及应用毕业设计

毕业设计 遗传算法的研究及应用 摘要 本文分为三部分:第一部分:遗传算法的概述。主要介绍了遗传算法的基本思想、遗传算法的构成要素、遗传算法的特点、遗传算法的基本模型、遗传算法的应用情况及今后的研究方向等等的内容。第二部分:基于Matlab 7.0下的遗传算法求解函数最值问题。遗传算法作为一种新的优化方法,广泛地用于计算科学、模式识别和智能故障诊断等方面,它适用于解决复杂的非线性和多维空间寻优问题,近年来也得到了较为广阔的应用。本人选择了函数优化这个应用领域,按照遗传算法的步骤,即编码、解码、计算适应度(函数值)、选择复制运算、交叉运算和变异运算,对函数进行求解最值。第三部分:对遗传算法求函数最值问题的改进。这部分主要针对本文第二部分进行改进,通过改变基本遗传算法运行参数值,如改变交叉概率Pc值和变异概率Pm值,从而使最优值更加接近相对标准下函数的最值。 关键词:遗传算法适应度交叉概率变异概率

目录 1 前言 (1) 2 遗传算法概述 (1) 2.1生物进化理论和遗传学的基本知识 (1) 2.2遗传算法的基本思想 (3) 2.3遗传算法的构成要素 (3) 2.3.1 染色体编码方法 (3) 2.3.2 适应度函数 (4) 2.3.3 遗传算子 (4) 2.3.4 基本遗传算法运行参数 (5) 2.4遗传算法的特点 (6) 2.5遗传算法的基本模型 (7) 2.6遗传算法的应用 (8) 2.7遗传算法今后的研究方向 (10) 3 基于MATLAB 7.0下的遗传算法求解函数最值问题 (11) 3.1遗传算法的标准函数 (11) 3.2解题步骤说明 (12) 3.2.1 编码问题 (12) 3.2.2 选择运算 (12) 3.2.3 交叉运算 (13) 3.2.4 变异运算 (13) 3.3运行参数说明 (14) 3.4对遗传算法求得的最值的分析 (14) 3.5运行程序以及对其解释 (14) 3.6从数学的角度求解函数最优值 (18) 3.6.1 自变量x以0.2为步进单位 (18) 3.6.2 自变量x以0.1为步进单位 (19) 3.6.3 自变量x以更精确的数为步进单位 (21)

遗传算法的优缺点

遗传算法属于进化算法( Evolutionary Algorithms) 的一种, 它通过模仿自然界的选择与遗传的机理来寻找最优解. 遗传算法有三个基本算子: 选择、交叉和变异. 。数值方法求解这一问题的主要手段是迭代运算。一般的迭代方法容易陷入局部极小的陷阱而出现"死循环"现象,使迭代无法进行。遗传算法很好地克服了这个缺点,是一种全局优化算法。 生物在漫长的进化过程中,从低等生物一直发展到高等生物,可以说是一个绝妙的优化过程。这是自然环境选择的结果。人们研究生物进化现象,总结出进化过程包括复制、杂交、变异、竞争和选择。一些学者从生物遗传、进化的过程得到启发,提出了遗传算法( GA)。算法中称遗传的生物体为个体( individual ),个体对环境的适应程度用适应值( fitness )表示。适应值取决于个体的染色体(chromosome),在算法中染色体常用一串数字表示,数字串中的一位对应一个基因 (gene)。一定数量的个体组成一个群体(population )。对所有个体进 行选择、交叉和变异等操作,生成新的群体,称为新一代( new generation )。遗传算法计算程序的流程可以表示如下[3]:第一步准备工作 (i)选择合适的编码方案,将变量(特征)转换为染色体(数字串,串长为m。通常用二 进制编码。 (2 )选择合适的参数,包括群体大小(个体数M)、交叉概率PC和变异概率Pm (3、确定适应值函数f (x、。f (x、应为正值。 第二步形成一个初始群体(含M个个体)。在边坡滑裂面搜索问题中,取已分析的可能滑裂 面组作为初始群体。 第三步对每一染色体(串)计算其适应值fi ,同时计算群体的总适应值。 第四步选择 计算每一串的选择概率Pi=fi/F 及累计概率。选择一般通过模拟旋转滚花轮 ( roulette ,其上按Pi大小分成大小不等的扇形区、的算法进行。旋转M次即可选出M个串来。在计算机 上实现的步骤是:产生[0,1]间随机数r,若rpc ,则该串参加交叉操作,如此选出参加交叉的一组后,随机配对。 (2)对每一对,产生[1 , m]间的随机数以确定交叉的位置。 第六步变异 如变异概率为Pm则可能变异的位数的期望值为Pm x mx M,每一位以等概率变异。具体为 对每一串中的每一位产生[0 , 1]间的随机数r,若r

MATLAB课程遗传算法实验报告及源代码

硕士生考查课程考试试卷 考试科目: 考生姓名:考生学号: 学院:专业: 考生成绩: 任课老师(签名) 考试日期:年月日午时至时

《MATLAB 教程》试题: A 、利用MATLA B 设计遗传算法程序,寻找下图11个端点最短路径,其中没有连接端点表示没有路径。要求设计遗传算法对该问题求解。 a e h k B 、设计遗传算法求解f (x)极小值,具体表达式如下: 321231(,,)5.12 5.12,1,2,3i i i f x x x x x i =?=???-≤≤=? ∑ 要求必须使用m 函数方式设计程序。 C 、利用MATLAB 编程实现:三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自己划行,随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货,但是如何乘船渡河的大权掌握在商人手中,商人们怎样才能安全渡河? D 、结合自己的研究方向选择合适的问题,利用MATLAB 进行实验。 以上四题任选一题进行实验,并写出实验报告。

选择题目: B 、设计遗传算法求解f (x)极小值,具体表达式如下: 321231(,,)5.12 5.12,1,2,3i i i f x x x x x i =?=???-≤≤=? ∑ 要求必须使用m 函数方式设计程序。 一、问题分析(10分) 这是一个简单的三元函数求最小值的函数优化问题,可以利用遗传算法来指导性搜索最小值。实验要求必须以matlab 为工具,利用遗传算法对问题进行求解。 在本实验中,要求我们用M 函数自行设计遗传算法,通过遗传算法基本原理,选择、交叉、变异等操作进行指导性邻域搜索,得到最优解。 二、实验原理与数学模型(20分) (1)试验原理: 用遗传算法求解函数优化问题,遗传算法是模拟生物在自然环境下的遗传和进化过程而形成的一种自适应全局优化概率搜索方法。其采纳了自然进化模型,从代表问题可能潜在解集的一个种群开始,种群由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体;初始种群产生后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的解:在每一代,概据问题域中个体的适应度大小挑选个体;并借助遗传算子进行组合交叉和主客观变异,产生出代表新的解集的种群。这一过程循环执行,直到满足优化准则为止。最后,末代个体经解码,生成近似最优解。基于种群进化机制的遗传算法如同自然界进化一样,后生代种群比前生代更加适应于环境,通过逐代进化,逼近最优解。 遗传算法是一种现代智能算法,实际上它的功能十分强大,能够用于求解一些难以用常规数学手段进行求解的问题,尤其适用于求解多目标、多约束,且目标函数形式非常复杂的优化问题。但是遗传算法也有一些缺点,最为关键的一点,即没有任何理论能够证明遗传算法一定能够找到最优解,算法主要是根据概率论的思想来寻找最优解。因此,遗传算法所得到的解只是一个近似解,而不一定是最优解。 (2)数学模型 对于求解该问题遗传算法的构造过程: (1)确定决策变量和约束条件;

遗传算法求解函数最大值

人工智能 遗传算法函数优化

目录 1引言 (3) 1.1 摘要 (3) 1.2 背景 (3) 2 实验过程 (4) 2.1 程序目标 (4) 2.2 实验原理及步骤 (4) 2.3程序 (5) 2.3.1程序理解: (5) 2.3.3调试程序: (5) 2.4 实验总结 (18)

1引言 1.1 摘要 函数优化是遗传算法的经典应用领域,也是对遗传算法进行性能评价的常用算例。本文将用一个详细的例子来说明用遗传算法解一个简单参数优化问题的过程。这里求解的是一个函数的最大值的问题。 1.2 背景 遗传算法采纳自然进化模型。通过保持一个潜在解的群体执行了多方向的搜索并支持这些方向上的信息构成和交换。群体经过一个模拟进化的过程:在每一代,相对“好”的解产生,相对“差”的解死亡。为区别不同解,我们使用了一个目标(评价)函数,它起着一个环境的作用。 选择是用来确定管理费用或交叉个体,以及被选个体将产生多少个代个体。 杂交组合了两个亲代染色体的特征,并通过交换父代相应的片断形成了两个相似的后代。杂交算子的意图是在不同潜在解之间进行信息交换。 变异是通过用一个等于变异率的概率随机地改变被选择染色体上的一个或多个基因。变异算子的意图是向群体引入一些额外的变化性。 运用遗传算法解题必经的五个步骤: 1.对问题潜在解的遗传表达。 2.产生潜在解初始群体的方法。 3.起环境作用的用“适应值”评价解的适应程度的评价函数。 4.改变后代组成的各种遗传算子。 5.遗传算法所使用的各种参数:群体规模、应用遗传算子的概率等。

2 实验过程 2.1 程序目标 在实验过程中,我们应用遗传算法来模拟一个函数优化的问题。程序所要解决的问题是求f(x1,x2)=21.5+x1*sin(4pi*x1)+x2*sin(20pi*x2)的最大值,其中-3.0≤x1≤12.1及4.1≤x2≤5.8。 2.2 实验原理及步骤 1 )首先确立变量x1的定义域长度为15.1;所要求的小数点以后第四位精度意味着区间[-3.0, 12.1]应该至少被分成15.1*10000个等距区间,即染色体的第一部分需要18位;自变量x2域长度为 1.7,精度要求区间[4.1, 5.8]应该至少被分成1.7*10000个等距区间,即染色体的第二部分需要15位。所以染色体总长度为33位。用遗传算法的优化函数f,产生了一个有pop_size = 20个染色体的群体。所有染色体的33位都是随机初始化。对每个染色体进行解码并计算解码后的(x1,x2)的适应函数值,eval(vi) (i=1,..,pop_size) = f(x1,x2)。 2)为选择过程建立一个轮盘。计算群体的总适应值F,并计算每个染色体vi (i=1,..,pop_size)的选择概率pi:pi = eval(vi) / F 和累积概率qi: qi = p1 + .. + pi. 3)转动轮盘20次,每次为新群体选择一单个染色体。生成一个区间[0,1]里的20个数的一个随机序列。如果一个随机数位于qi于q(i+1)之间,则q(i+1)被选择。4)对新群体中的个体应用杂交算子。杂交概率pc = 0.25,所以预计染色体中平均有25%将经历杂交。杂交按照下面的方法进行:对新群体中的每个染色体,产生在区间[0,1]里的随机数r,并从随机序列中选出r<0.25的染色体进行杂交。 5)对被选择的染色体随机进行配对。并从区间[1,32]里产生一个随机整数pos。数字pos表示杂交点的位置。 6)算子变异。在一位一位基础上执行。变异概率pm = 0.01,所以我们预计平均将有1%的位经历变异。整个群体共有m*pop_size = 660位,可以预计平均每代有6.6次变异。因为每一位都有均等的机会被变异,所以对群体中的每一位可以产生区间

大学课件--遗传算法应用的分析与研究-

遗传算法应用的分析与研究 福州八中钱自强 【摘要】 随着科技水平的不断发展,人们在生产生活中遇到的问题也日益复杂,这些问题常常需要在庞大的搜索空间内寻找最优解或近似解,应用传统算法求解已经显得相当困难。而近年来,生物学的进化论被广泛地应用于工程技术、人工智能等领域中,形成的一类有效的随机搜索算法——进化算法,有效的解决了诸多生产生活中的难题而显得越来越流行。 本文的首先将介绍进化算法的原理以及历史使大家对进化算法有一个初步的了解,其次将详细介绍应用遗传算法解题的步骤,并提出有效改进和应用建议。紧接着通过一个NP难题的优化实例让大家对遗传算法有更深刻的了解,最后通过数据分析证明其方法的有效性。 【关键词】 人工智能;进化算法;遗传算法(GA);多目标最小生成树 目录 一、进化算法理论 1.1进化算法概述- 2- 1.2遗传算法介绍- 2- 二、遗传算法 2.1遗传算法基本流程- 3- 2.2遗传算法中各重要因素分析- 3- 2.3重要参数设置- 6- 三、遗传算法在多目标最小生成树问题中的应用 3.1多目标最小生成树- 7- 3.2应用遗传算法解决多目标最小生成树- 9- 3.3测试-11- 四、结束语-15- 附录-16-

一. 进化算法理论 1.1进化算法概述 从远古时代单细胞开始,历经环境变迁的磨难,生命经历从低级到高级,从简单到复杂的演化历程。生命不断地繁衍生息,产生出具有思维和智能的高级生命体。人类得到生命的最佳结构与形式,它不仅可以被动地适应环境,更重要的是它能够通过学习,模仿与创造,不断提高自己适应环境的能力。 进化算法就是借鉴生物自然选择和遗传机制的随机搜索算法。进化算法通过模拟“优胜劣汰,适者生存”的规律激励好的结构,通过模拟孟德尔的遗传变异理论在迭代过程中保持已有的结构,同时寻找更好的结构。作为随机优化与搜索算法,进化算法具有如下特点:进化算法不是盲目式的乱搜索,也不是穷举式的全面搜索,它根据个体生存环境即目标函数来进行有指导的搜索。进化算法只需利用目标的取值信息而不需要其他信息,因而适用于大规模、高度非线性的不连续、多峰函数的优化,具有很强的通用性;算法的操作对象是一组个体,而非单个个体,具有多条搜索轨迹。 1.2遗传算法 遗传算法(Genetic Algorithm)是进化算法的一个重要分支。它由John Holland提出,最初用于研究自然系统的适应过程和设计具有自适应性能的软件。近来,遗传算法作为问题求解和最优化的有效工具,已被非常成功地应用与解决许多最优化问题并越来越流行。 遗传算法的主要特点是群体搜索策略和群体中个体之间的信息互换,它实际上是模拟由个体组成的群体的整体学习过程,其中每个个体表示问题搜索空间中的一个解点.遗传算法从任一初始的群体出发,通过随机选择,交叉和变异等遗传操作,使群体一代代地进化到搜索空间中越来越好的区域,直至抵达最优解点. 遗传算法和其它的搜索方法相比,其优越性主要表现在以下几个方面:首先,遗传算法在搜索过程中不易陷入局部最优,即使在所定义的适应度函数非连续.不规则也能以极大的概率找到全局最优解,其次,由于遗传算法固有的并行性,使得它非常适合于大规模并行分布处理,此外,遗传算法易于和别的技术(如神经网络.模糊推理.混沌行为和人工生命等)相结合,形成性能更优的问题求解方法.

基于遗传算法的matlab源代码

function youhuafun D=code; N=50;%Tunable maxgen=50;%Tunable crossrate=0.5;%Tunable muterate=0.08;%Tunable generation=1; num=length(D); fatherrand=randint(num,N,3); score=zeros(maxgen,N); while generation<=maxgen ind=randperm(N-2)+2;%随机配对交叉 A=fatherrand(:,ind(1:(N-2)/2)); B=fatherrand(:,ind((N-2)/2+1:end)); %多点交叉 rnd=rand(num,(N-2)/2); ind=rnd tmp=A(ind); A(ind)=B(ind); B(ind)=tmp; %%两点交叉 %for kk=1:(N-2)/2 %rndtmp=randint(1,1,num)+1; %tmp=A(1:rndtmp,kk); %A(1:rndtmp,kk)=B(1:rndtmp,kk); %B(1:rndtmp,kk)=tmp; %end fatherrand=[fatherrand(:,1:2),A,B]; %变异 rnd=rand(num,N); ind=rnd[m,n]=size(ind); tmp=randint(m,n,2)+1; tmp(:,1:2)=0; fatherrand=tmp+fatherrand; fatherrand=mod(fatherrand,3); %fatherrand(ind)=tmp; %评价、选择 scoreN=scorefun(fatherrand,D);%求得N个个体的评价函数 score(generation,:)=scoreN; [scoreSort,scoreind]=sort(scoreN); sumscore=cumsum(scoreSort); sumscore=sumscore./sumscore(end); childind(1:2)=scoreind(end-1:end); for k=3:N tmprnd=rand; tmpind=tmprnd difind=[0,diff(t mpind)]; if~any(difind) difind(1)=1; end childind(k)=scoreind(logical(difind)); end fatherrand=fatherrand(:,childind); generation=generation+1; end %score maxV=max(score,[],2); minV=11*300-maxV; plot(minV,'*');title('各代的目标函数值'); F4=D(:,4); FF4=F4-fatherrand(:,1); FF4=max(FF4,1); D(:,5)=FF4; save DData D function D=code load youhua.mat %properties F2and F3 F1=A(:,1); F2=A(:,2); F3=A(:,3); if(max(F2)>1450)||(min(F2)<=900) error('DATA property F2exceed it''s range (900,1450]') end %get group property F1of data,according to F2value F4=zeros(size(F1)); for ite=11:-1:1 index=find(F2<=900+ite*50); F4(index)=ite; end D=[F1,F2,F3,F4]; function ScoreN=scorefun(fatherrand,D) F3=D(:,3); F4=D(:,4); N=size(fatherrand,2); FF4=F4*ones(1,N); FF4rnd=FF4-fatherrand; FF4rnd=max(FF4rnd,1); ScoreN=ones(1,N)*300*11; %这里有待优化

一个简单实用的遗传算法c程序完整版

一个简单实用的遗传算 法c程序 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

一个简单实用的遗传算法c程序(转载) 2009-07-28 23:09:03 阅读418 评论0 字号:大中小 这是一个非常简单的遗传算法源代码,是由Denis Cormier (North Carolina State University)开发的,Sita (University of North Carolina at Charlotte)修正。代码保证尽可能少,实际上也不必查错。对一特定的应用修正此代码,用户只需改变常数的定义并且定义“评价函数”即可。注意代码的设计是求最大值,其中的目标函数只能取正值;且函数值和个体的适应值之间没有区别。该系统使用比率选择、精华模型、单点杂交和均匀变异。如果用Gaussian变异替换均匀变异,可能得到更好的效果。代码没有任何图形,甚至也没有屏幕输出,主要是保证在平台之间的高可移植性。读者可以从,目录 coe/evol中的文件中获得。要求输入的文件应该命名为‘’;系统产生的输出文件为‘’。输入的文件由几行组成:数目对应于变量数。且每一行提供次序——对应于变量的上下界。如第一行为第一个变量提供上下界,第二行为第二个变量提供上下界,等等。 /**************************************************************************/ /* This is a simple genetic algorithm implementation where the */ /* evaluation function takes positive values only and the */ /* fitness of an individual is the same as the value of the */ /* objective function */ /**************************************************************************/ #include <> #include <> #include <> /* Change any of these parameters to match your needs */ #define POPSIZE 50 /* population size */

遗传算法的研究及应用

龙源期刊网 https://www.360docs.net/doc/a618464114.html, 遗传算法的研究及应用 作者:彭志勇邓世权 来源:《计算机光盘软件与应用》2013年第07期 摘要:遗传算法是一种典型的优化搜索算法,它的构造是使用人工的方式,并对生物遗传学和自然选择机理来进行模仿,是一种典型的数学仿真,而这种数学仿真是通过生物进化的过程来进行的,它是进化计算的一种非常重要的形式,它可以应用与生活中的很多领域。 关键词:遗传算法;函数优化;生产调度;自动控制 中图分类号:TP183文献标识码:A文章编号:1007-9599 (2013) 07-0000-02 遗传算法是一种典型的优化搜索算法,它的构造是使用人工的方式,并对生物遗传学和自然选择机理来进行模仿,是一种典型的数学仿真,而这种数学仿真是通过生物进化的过程来进行的,它是进化计算的一种非常重要的形式。与传统的数学模型进行比较,遗传算法有很多的不同的地方,因为它能够解决很多复杂的问题,而传统的数学模型却没办法做到。 1遗传算法的理论研究 1.1遗传算法的由来。美国密西根大学的霍兰德(Holland)将该算法应用于自然和人工系统的自适应行为的研究之中,并且在二十世纪七十年代中期,出版他的第一部著作《自然与人工系统中的适应》。随后,Holland与他的学生们将该算法进行了大力的推广,并把它应用到优化及机器学习等问题之中,而且正式定名为遗传算法。 1.2遗传算法的发展。遗传算法的兴起于20世纪70年代,而到了20世纪80年代的时 候,它正好属于一个发展中的过程,到了20世纪90年代时,它已经发展到了颠疯时刻。为一种实用性较强而又很有效率的优化技术,遗传算法的发展还是非常迅速,在国内外已经造成了非常大的影响力。 1.3遗传算法的基本思想。遗传算法是从一个种群(population)开始的,而这个种群代表问题可能潜在解集的,一个种群是由经过基因(gene)编码(coding)的一定数目的个体(individual)所组成。染色体是遗传物质的主要载体,它是由多个基因的集合,其内部表现是某种基因组合决定的。自从初始种群产生以后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解。在每一代,根据问题域中个体的适应度(fitness)大小来挑选(selection)个体,遗传算法是采纳了选择、交叉、变异、迁移、局域 与邻域等自然进化模型,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),从而产生出代表新的解集的种群。 遗传算法和传统搜索算法有很大的不同,它是通过一组随机产生的初始解开始搜索过程。染色体是类似于二进制串的一串符号,对于染色体的测量,我们通常是用适应度来它的好坏

遗传算法

遗传算法的基本理论 一、起源: 早在20世纪50年代和60年代,就有少数人几个计算机科学家独立地进行了所谓的“人工进化系统”研究,其出发点是进化的思想可以发展成为许多工程问题的优化工具。早期的研究形成了遗传算法的雏形,如大多数系统都遵循“适者生存”的仿自然法则,有些系统采用了基于群体(population)的设计方案,并且加入了自然选择与变异操作,还有一些系统对生物染色体编码进行了抽象处理,应用二进制编码。由于缺乏一种通用的编码方案,人们只能依赖变异而非交叉来产生新的基因结构,早期的算法收敛甚微。20世纪60年代中期,美国Michigan大学的John Holland在A.S.Fraser和H.J.Bremermann等人工作的基础上提出了位串编码技术。这种编码既适用于变异操作,又适用于交叉(即杂交)操作。并且强调将交叉作为主要的遗传操作。随后,Holland将该算法用于自然和人工系统的自适应行为的研究中,并于1975年出版了其开创性著作“Adaption in Natural and Artificial System”。以后,Holland等人将该算法加以推广,应用到优化及机器学习等问题中,并正式定名为遗传算法。遗传算法的通用编码技术和简单有效的遗传操作作为其广泛、成功地应用奠定了基础。Holland早期有关遗传算法的许多概念一直沿用至今,可见Holland对遗传算法的贡献之大。他认为遗传算法本质上是适应算法,应用最多的是系统最优化的研究。 二、发展: 年份贡献者内容 1962Holland程序漫游元胞计算机自适应系统框架 1968Holland模式定理的建立 1971Hollstein具有交配和选择规则的二维函数优化 1972Bosworth、Foo、Zeigler提出具有复杂变异、类似于遗传算法的基因操作1972Frantz位置非线性和倒位操作研究 1973Holland遗传算法中试验的最优配置和双臂强盗问题 1973Martin类似遗传真法的概率算法理论 1975De Jong用于5个测试函数的研究基本遗传算法基准参数 1975Holland 出版了开创性著作《Adaptation in Natural and Artificial System》 1981Bethke应用Walsh函数分析模式 1981Brindle研究遗传算法中的选择和支配问题 1983Pettit、Swigger遗传算法应用于非稳定问题的粗略研究1983Wetzel用遗传算法解决旅行商问题(TSP) 1984Mauldin基本遗传算法小用启发知识维持遗传多样性1985Baker试验基于排序的选择方法 1985Booker建议采用部分匹配计分、分享操作和交配限制法1985Goldberg、Lingle TSP问题个采用部分匹配交叉 1985Grefenstette、Fitzpattrick对含噪声的函数进行测试 1985Schaffer多种群遗传算法解决多目标优化问题1986Goldberg最优种群大小估计 1986Grefenstette元级遗传算法控制的遗传算法 1987Baker选择中随机误差的减少方法 1987Goldberg复制和交叉时最小欺骗问题(MDP) 1987Goldberg、Richardson借助分享函数的小生境和物种归纳法

遗传算法理论及其研究进展

遗传算法理论及其应用研究进展 摘要:本文阐述了遗传算法的基本原理以及求解问题的一般过程,讨论了遗传算 法存在的不足和针对其不足采取的弥补措施,概述了遗传算法常见的应用领域。最后,讨论了遗传算法的未来研究方向。 关键词:遗传算法;算子;优化 Development on Genetic Algorithm Theory And Its Application Liu Jun (201320620181) (College of Mecha ni cal Engin eeri ng of Un iversity of South Chi na Hen gya ng Hunan 421001) Abstract: This paper stated the basic theory of Genetic Algorithm (GA) and the process of sol ving the problem, discussed the weak ness of gen etic algorithm and the impro ving measures about gen etic algorithm. Then summarized the com mon applicati on fields of gen etic algorithm. Fin ally, poin ted out the gen etic algorithm ' research direct ions in the future. Keywords: gen etic algorithm (GA); operator; optimizati on 遗传算法是一种借鉴生物界自然选择和进化机制发展起来的高度并行、随机、自适应搜索算法。它来源于达尔文的进化论、魏茨曼的物种选择学说和孟德尔的群体遗传学说。遗传算法是模拟自然界生物进化过程与机制求解极值问题的一类自组织、自适应人工智能技术,其基本思想是模拟自然界遗传机制和生物进化论而形成的一种过程搜索最优解的算法,具有坚实的生物学基础;它提供从智 能生成过程观点对生物智能的模拟,具有鲜明的认知学意义;它适合于无表达或有表达的任何类函数,具有可实现的并行计算行为;它能解决任何种类实际问题,具有广泛的应用价值。因此,遗传算法广泛应用于自动控制、计算科学、模式识别、工程设计、智能故障诊断、管理科学和社会科学等领域,适用于解决复杂的非线性和多维

遗传算法的应用研究_赵夫群

2016年第17期 科技创新科技创新与应用 遗传算法的应用研究 赵夫群 (咸阳师范学院,陕西咸阳712000) 1概述 遗传算法(Genetic Algorithms,GA)一词源于人们对自然进化系统所进行的计算机仿生模拟研究,是以达尔文的“进化论”和孟德尔的“遗传学原理”为基础的,是最早开发出来的模拟遗传系统的算法模型。遗传算法最早是由Fraser提出来的,后来Holland对其进行了推广,故认为遗传算法的奠基人是Holland。 随着遗传算法的不断完善和成熟,其应用范围也在不断扩大,应用领域非常广泛,主要包括工业控制、网络通讯、故障诊断、路径规划、最优控制等。近几年,出现了很多改进的遗传算法,改进方法主要包括:应用不同的交叉和变异算子;引入特殊算子;改进选择和复制方法等。但是,万变不离其宗,都是基于自然界生物进化,提出的这些改进方法。 2遗传算法的原理 遗传算法是从某一个初始种群开始,首先计算个体的适应度,然后通过选择、交叉、变异等基本操作,产生新一代的种群,重复这个过程,直到得到满足条件的种群或达到迭代次数后终止。通过这个过程,后代种群会更加适应环境,而末代种群中的最优个体,在经过解码之后,就可以作为问题的近似最优解了。 2.1遗传算法的四个组成部分 遗传算法主要由四个部分组成[1]:参数编码和初始群体、适应度函数、遗传操作和控制参数。编码方法中,最常用的是二进制编码,该方法操作简单、便于用模式定理分析。适应度函数是由目标函数变换而成的,主要用于评价个体适应环境的能力,是选择操作的依据。遗传操作主要包括了选择、交叉、变异等三种基本操作。控制参数主要有:串长Z,群体大小size,交叉概率Pc,变异概率Pm等。目前对遗传算法的研究主要集中在参数的调整中,很多文献建议的参数取值范围一般是:size取20~200之间,Pc取0.5~1.0之间,Pm取0~0.05之间。 2.2遗传算法的基本操作步骤 遗传算法的基本操作步骤为: (1)首先,对种群进行初始化;(2)对种群里的每个个体计算其适应度值;(3)根据(2)计算的适应度,按照规则,选择进入下一代的个体;(4)根据交叉概率Pc,进行交叉操作;(5)以Pm为概率,进行变异操作;(6)判断是否满足停止条件,若没有,则转第(2)步,否则进入(7);(7)得到适应度值最优的染色体,并将其作为问题的满意解或最优解输出。 3遗传算法的应用 遗传算法的应用领域非常广泛,下面主要就遗传算法在优化问题、生产调度、自动控制、机器学习、图像处理、人工生命和数据挖掘等方面的应用进行介绍。 3.1优化问题 优化问题包括函数优化和组合优化两种。很多情况下,组合优化的搜索空间受问题规模的制约,因此很难寻找满意解。但是,遗传算法对于组合优化中的NP完全问题非常有效。朱莹等[2]提出了一种结合启发式算法和遗传算法的混合遗传算法来解决杂货船装载的优化问题中。潘欣等[3]在化工多目标优化问题中应用了并行遗传算法,实验结果表明该方法效果良好。王大东等[4]将遗传算法应用到了清运车辆路径的优化问题求解中,而且仿真结果表明算法可行有效。 3.2生产调度 在复杂生产调度方面,遗传算法也发挥了很大的作用。韦勇福等[5]将遗传算法应用到了车间生产调度系统的开发中,并建立了最小化完工时间目标模型,成功开发了车间生产调度系统模块,并用实例和仿真验证了该方法的可行性。张美凤等[6]将遗传算法和模拟退火算法相结合,提出了解决车间调度问题的混合遗传算法,并给出了一种编码方法以及建立了相应的解码规则。 3.3自动控制 在自动控制领域中,遗传算法主要用于求解的大多也是与优化相关的问题。其应用主要分为为两类,即离线设计分析和在线自适应调节。GA可为传统的综合设计方法提供优化参数。 3.4机器学习 目前,遗传算法已经在机器学习领域得到了较为广泛的应用。邢晓敏等[7]提出了将遗传算子与Michigan方法和基于Pitt法的两个机器学习方法相结合的机器学习方法。蒋培等[8]提出了一种基于共同进化遗传算法的机器学习方法,该方法克服了学习系统过分依赖于问题的背景知识的缺陷,使得学习者逐步探索新的知识。 3.5图像处理 图像处理是一个重要的研究领域。在图像处理过程中产生的误差会影响图像的效果,因此我们要尽可能地减小误差。目前,遗传算法已经在图像增强、图像恢复、图像重建、图像分形压缩、图像分割、图像匹配等方面应用广泛,详见参考文献[9]。 4结束语 遗传算法作为一种模拟自然演化的学习过程,原理简单,应用广泛,已经在许多领域解决了很多问题。但是,它在数学基础方面相对不够完善,还有待进一步研究和探讨。目前,针对遗传算法的众多缺点,也相继出现了许多改进的算法,并取得了一定的成果。可以预期,未来伴随着生物技术和计算机技术的进一步发展,遗传算法会在操作技术等方面更加有效,其发展前景一片光明。 参考文献 [1]周明,孙树栋.遗传算法原理及应用[M].国防工业出版社,1999,6. [2]朱莹,向先波,杨运桃.基于混合遗传算法的杂货船装载优化问题[J].中国船舰研究,2015:10(6):126-132. [3]潘欣,等.种群分布式并行遗传算法解化工多目标优化问题[J].化工进展,2015:34(5):1236-1240. [4]王大东,刘竞遥,王洪军.遗传算法求解清运车辆路径优化问题[J].吉林师范大学学报(自然科学版),2015(3):132-134. [5]韦勇福,曾盛绰.基于遗传算法的车间生产调度系统研究[J].装备制造技术,2014(11):205-207. [6]黄巍,张美凤.基于混合遗传算法的车间生产调度问题研究[J].计算机仿真,2009,26(10):307-310. [7]邢晓敏.基于遗传算法的机器学习方法赋值理论研究[J].软件导刊[J].2009,8(11):80-81. [8]蒋培.基于共同进化遗传算法的机器学习[J].湖南师范大学自然科学学报,2004,27(3):33-38. [9]田莹,苑玮琦.遗传算法在图像处理中的应用[J].中国图象图形学报,2007,12(3):389-396. [10]周剑利,马壮,陈贵清.基于遗传算法的人工生命演示系统的研究与实现[J].制造业自动化,2009,31(9):38-40. [11]刘晓莉,戎海武.基于遗传算法与神经网络混合算法的数据挖掘技术综述[J].软件导刊,2013,12(12):129-130. 作者简介:赵夫群(1982,8-),女,汉族,籍贯:山东临沂,咸阳师范学院讲师,西北大学在读博士,工作单位:咸阳师范学院教育科学学院,研究方向:三维模型安全技术。 摘要:遗传算法是一种非常重要的搜索算法,特别是在解决优化问题上,效果非常好。文章首先介绍了遗传算法的四个组成部分,以及算法的基本操作步骤,接着探讨了遗传算法的几个主要应用领域,包括优化、生产调度、机器学习、图像处理、人工生命和数据挖掘等。目前遗传算法以及在很多方面的应用中取得了较大的成功,但是它在数学基础方面相对还不够完善,因而需要进一步研究和完善。 关键词:遗传算法;优化问题;数据挖掘 67 --

相关文档
最新文档