基于小生境遗传算法的多峰函数优化问题的研究.docx
- 文档编号:5859440
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:50
- 大小:326.88KB
基于小生境遗传算法的多峰函数优化问题的研究.docx
《基于小生境遗传算法的多峰函数优化问题的研究.docx》由会员分享,可在线阅读,更多相关《基于小生境遗传算法的多峰函数优化问题的研究.docx(50页珍藏版)》请在冰豆网上搜索。
基于小生境遗传算法的多峰函数优化问题的研究
摘要
【摘要】遗传算法由于其良好的搜索特性,在函数优化问题上取得了很多的应用。
但简单遗传算法(SGA)的解决多峰函数的优化问题时,具有诸多不足之处,主要是早熟收敛现象。
为了提高遗传算法的性能,提出基于淘汰机制的小生境的遗传算法。
在matlab上实现算法,测试了8个函数与SGA相比较,无论是一维的还是多维的多峰函数,小生境遗传具有更快的收敛速度,收敛概率以及收敛精度,更好的效果,更高的可靠性。
【关键词】遗传算法;多峰函数优化;淘汰小生境
英文题目
Abstract
【ABSTRACT】becauseofitsexcellentsearchfeatures,Geneticalgorithmsmadealotofapplicationsinfunctionoptimizationproblems.Butthesimplegeneticalgorithm(SGA)hasmanyshortcomingswhensolvemultimodalfunctionoptimizationproblems,mainlyprematureconvergencephenomenon.Inordertoimprovetheperformanceofgeneticalgorithm,iproposedanichegeneticalgorithmbasedoneliminationmechanism.Algorithmedinmatlab,andtesteightfunctioncomparedwiththeSGA,bothone-dimensionalormulti-dimensionalmulti-peakfunction,nichegeneticalgorithmwithhasfasterconvergencerate,betterconvergenceprobabilityandbetterconvergenceprecision,betterresultsandmorehighreliability.
【KEYWORDS】Geneticalgorithms;multimodalfunctionoptimization;niche.
第一章绪论
1.1函数优化与优化算法
1.1.1最优化问题
在工程应用中,经常会遇到最优化的问题,比如在安排生产计划方面,如何在现有的人力,物力等条件下,合理的安排生产,使总生产和总利润最高,这就是一个实际应用中的一个最优化问题,即从多个可能的方案中选出最合理的、能实现预定最优目标的方案,这个方案就叫做最优方案。
然后找到最优方案的方法就叫最优化方法。
然后找到最优方案的方法就叫最优化方法。
优化问题涉及到的区域很多,总的来说可以分为函数优化和组合优化。
函数优化对应的是连续函数,组合优化对应的是离散函数。
[12]。
1.1.2函数优化和组合优化
函数优化的一般问题描述:
令S为R上的一个子集(即变量的定义域),
为n维实质数,函数f在定义域内的求解最小值优化问题就是寻求点
使得
在S这个域上全局最小,即
(1-1)
组合优化(CombinatorialOptimization)问题的目标是从组合问题的可行解集中求出最优解,通常可描述为:
令
为所有状态构成的解空间,
为状态si对应的目标函数值,要求寻找最优解
,使得对于所有的
,有
。
组合优化往往涉及排序、分类、筛选等问题,它属于运筹学的一个分支。
组合优化的典型问题有旅行商问题(TravelingSalesmanProblem-TSP)、0-1背包问题(KnapsackProblem)等。
这些问题描述非常简单,并且有很强的工程代表性,但是求解却显得非常的困难,因为如果运用已有的算法去求解的话将要花费相当大的时间和存储空间,很难再目前的计算机上完成。
正是这样的困难的问题的出现激起了众多学者们去对它进行研究。
1.1.3优化算法
所谓优化算法,就是搜索最优解的过程中的一种规则或协议。
通过一定的途径或规则来得到满足用户的问题的解。
就优化机制与行为来分,目前工程中常用的优化算法主要可分为:
经典优化算法、智能优化算法、构造型优化算法、混合型优化算法。
1)经典优化算法
以传统运筹学中的线性规划和整数规划等为代表,算法计算规模一般很大,一般适用于小规模的优化问题。
2)构造型优化算法
快速的构造问题的解,但是一般算法的优化性能差,不能达到相应的要求。
例如,调度问题中的典型构造方法也有:
johnson法、Palmer法、Gupta法、CDS法NEH法等
3)智能优化算法
智能优化算法是通过仿真一些某些自然规律或现象而来的,也像一般的搜索方法一样是通过不断的迭代来显示的,无需利用到函数的的微分和倒数等的特性,是从产生第一组解开始,同时把问题用一种规则进行编码,反映成一种可以进行启发操作的数学构造,只需用到问题的函数值,就没有必要用到倒数微分等信息,从而减小了计算的复杂性,而且整个搜索过程是随机进行的。
优点:
具有良好的具有优化能力,具有鲁棒性,通用性能好,应用比较广泛,尤其适合在大规模的场合下进行。
主要有进化算法、蚁群算法等等。
4)混合算法
指上述算法从结构或者操作上相混合而产生的各类算法,取长补短,提高算法的性能,有着更多应用。
1.2智能优化算法:
遗传算法的应用
遗传算法以其鲁棒性,众多的优点被成功应用到优化问题中,但是在许多其他的领域也获得了许多的应用。
(1)函数优化
函数优化是遗传算法最早也最成功应用的领域。
因此人们构造了许多的测试函数来评价各种遗传算法的优劣。
在一些非线性的、多峰函数等等,以前的哪些优化算法不能求解,然后对于遗传算法却是轻松加愉快。
(2)组合优化
对于离散的组合优化问题,以前可以用枚举的方法来求解,但是如果更复杂,规模更大的问题,枚举话显得有些吃力了。
遗传算法也成功的应用到组合优化领域,成功的解决了TSP等组合优化问题。
(3)生产调度问题
生产调度一般是通过把问题建立数学模型后来求解的,不说建模的过程是不是准确,是不是能实现,就算是建模完成后,问题的求解可能也会比较困难。
遗传算法的发展也成功解决了这一难题,在生产车间中获得了许多的应用。
(4)自动控制
其实属于优化问题中的一类。
因为自动控制的过程也是需要求解的。
(5)机器人学
遗传算法算法是仿生的,机器人学也是属于仿生学,是不是能将两个仿生学成功的结合呢。
也是一个方向。
(6)图像处理
对于复杂的图像处理系统。
遗传算法也能成功的应用,在识别,特征选择和特征提取等方面取得较好的效果。
(7)人工生命
人工系统一个很重要的方面就是需要有自适应能力和学习能力。
遗传算法本来就是自适应的搜索算法,加上他的知识约简的发展,将会很快的应用到人工生命。
(8)遗传编程
1989年,美国斯坦福大学的Koza教授提出了遗传编程。
通过学习自适应的编写出程序,还处于启蒙阶段。
(9)机器学习
自适应系统的一个重要能力就是学习知识。
相信通过遗传算法能实现一种分类器,类似于神经网络等等。
(10)数据挖掘
Sunil已成功地开发了一个基于遗传算法的数据挖掘工具13]。
1.3遗传算法的国内外研究现状
20世纪90年代,是遗传算法发展的繁荣时期,对它的论文眼还是对它的应用的研究都是非常活跃的。
理论基础的不断完善也增加了它在各个领域的实际应用,从以前简单的函数优化应用到各种更复杂的更系统的实际工程应用中。
而且理论的研究也不断的浮现,各种改善的遗传算法不断的出现,例如各种混合的遗传算法,还有小生境遗传算法等等。
现在对遗传算法的研究主要主要集中在以下几个:
(1)机器学习。
这个的应用是遗传算法从一种原有的搜索算法到知识学习算法的一种巨大的转变,给遗传算法发展注射了新的血液。
(2)混合的遗传算法
取长补短经常是用来解决一些问题的方法手段,这在遗传算法的发展上也有着同样的效果,遗传算法与其他算法的结合有着重大的意义。
(3)并行的遗传算法
D.Whitey提出了领域交叉算子。
成功的应用到了TSP问题中。
D.H.Ackley等提出了随机迭代遗传爬山法。
他们模仿了人们选举干部的一个过程,并成功的应用到遗传算法,与经典的遗传算法相比有着更好的性能。
H.Bersini和G.Seront又对遗传算法的交叉算子进行了研究和改良,提出了一种多亲交叉算子,与传统的交叉算子相比,这种算子具有很好的性能。
国内的研究主要有以下代表:
戴晓明等的并行遗传算法,多个种群并行的进行搜索,而且不同的种群应用进行相对应的遗传操作,提高了遗传算法在局部搜索能力不足的问题。
赵宏立等提出了并行遗传算法,编码方式是采用了一种新的基因快编码方式,能有效的解决复杂的组合优化问题性能不足的问题。
后面江雷研究发现了一种弹性策略,利用这种策略来保持种群的多样性,避免算法的局部收敛,成功的应用到求解TCP问题。
1.4本论文的选题意义
对于目标函数的多个极值点,通常人们只关心目标函数的全局最优点,但有时函数的多个、甚至所有极值点都是有意义的。
像在很多实际应用问题中,如工程设计、组合优化、决策等问题中都存在多个解,算法的任务就并不是简单的找到最优解,甚至要找到全部的解,这些问题经过简化处理后,可以归结为多峰函数求解问题。
所以对多峰函数求解方法的研究具有较重要的应用价值。
对于解决复杂的函数优化问题,遗传算法是通常解决的方法,但是遗传算法的一个主要缺点就是早熟收敛现象,主要表现在:
种群进化到后期在一个极值点出停滞不前。
另外就是虽然遗传算法具有较强的全局优化能力,但是局部优化能力不足。
简单遗传算法(SGA)在每次收敛时,一般能找到函数的一个全局最优解(或者是局部的)。
但是要得到多峰函数的多个极值点,一种最直接的方法就是用SGA算法对可行解空间进行重复多次的搜索,可能能找到多个解。
但是这种方法的缺点在于计算效率比较低,而且求解结果随机性,如果假定算法的每次搜索过程都是互相独立的,并且算法搜索到目标函数q个极值点的概率都是相同的,那么算法要得到目标函数的所有极值点就平均需要搜索
(1-2)
次[1]。
如果概率不同的话,那搜索的次数更是难以想象的,而且搜索的随机性,难免会进行对同一区域重复搜索,所以效率不行,精度更是不可靠。
针对遗传算法的不足,我们可以引入小生境的概念,本来遗传算法的搜索过程是整个种群单一性的进行的,我们可以将种群分为多个小生境,每个小生境同时执行一个子任务即进行搜索的过程,这样即避免了重复搜索,也挺高了搜索的效率。
所以本文提出了小生境遗传算法。
“物以类聚,人以群分”是对生物学中小生境(niche)现象的一种概括,小生境是指特定环境下的一种组织结构。
在自然界中,往往特征,形状相似的物种相聚在一起,并在同类中交配繁衍后代,引入小生境的方法提高了种群的多样性,对于求解多峰函数的全局最优解有着良好的效果。
经过8个复杂的多峰函数测试,小生境遗传算法具有更好的可靠性与更快的收敛速度。
总体效果明显优与简单遗传算法(SGA)
1.5本论文的主要工作
在文章的上面提到,工程领域设计中会存在各种优化问题,遗传算法是通常解决的方法,但是遗传算法一个最主要的缺陷就是它的早熟收敛现象,导致算法收敛到局部最优解,还有就是它的局部搜索能力不行,虽然变异算子有效的提高了他的局部搜索能力,但仅靠那么低的变异概率是完全不够的。
所以本论文就是基于遗传算法在解决多峰函数问题时表现的缺陷与不足,提出了改进。
从执行策略部分对遗传算法进行改进,即提出小生境的遗传算法,所谓“物以类聚人以群分”,这这就是生物小生境的思想。
小生境遗传算法是用来解决多峰优化问题的有效手段。
目前,小生境遗传算法中用得最多的是基于共享函数的遗传算法。
这类算法需要事先估计解空间的峰半径和峰个数。
然而,实际多峰优化问题的峰半径往往无法事先估计[5]。
针对上述问题,本文在阅读大量国内外文献的基础上,对小生境遗传算法进行了深入的理论研究和试验分析,主要包括以下内容:
(1)简要介绍了遗传算法的发展历史和研究现状,并阐述了遗传算法的基本原理、基本概念以及主要实现技术,同时分析了遗传算法的局限性,并提出算法所需解决的关键问题与改进部分。
设计在在matlab上完成了基本遗传算法的编程。
(2)首先介绍了小生境技术的生物学原理,再详细介绍了目前常见的3种小生境遗传算法。
阐述了每一种小生境算法的主要思想和算法步骤,并对三种算法进行了简单的分析,然后介绍了小生境遗传算法的发展历史。
(3)针对遗传算法在解决多峰函数问题时的早熟收敛问题,提出了基于淘汰机制的小生境遗传算法,详细的介绍了淘汰机制的原理及其实现。
并用几个多峰函数进行测试,与基本遗传算法进行对比分析。
基于淘汰机制的小生境遗传算法在收敛概率、收敛速度、和收敛精度上都明显优于基本遗传算法,最优保存策略的引入也保证了算法的收敛与加快了收敛速度。
但是淘汰机制的小生境遗传算法受限与小生境半径L。
以下是论文每章的主要内容:
第一章概述了遗传算法的发展历史应用领域,并简述了论文的主要内容。
第二章阐述了遗传算法的基本概念和基本原理,详细介绍了遗传算法实现技术的五大要素。
内容包括参数编码、初始群体的设定、适应度函数的设定、遗传算子、遗传算法的控制参数。
在此基础上,分析了遗传算法的局限性并提出需要解决的关键性问题。
第三章详细介绍小生境技术和三种小生境遗传算法,内容包括:
适应值共享遗传算法、拥挤遗传算法、阐述了每一种小生境算法的主要思路和算法步骤,并做了简单的分析。
简单的描述了小生境的发展历史。
第四章提出一种基于淘汰机制的小生境遗传算法,介绍了它的基本原理与详细的实现方法,并用8个多峰函数进行了测试,做了定性的分析
第五章总结本文的主要内容与突出点,并分析论文不足之处,提出了展望。
第二章遗传算法的基本理论
2.1遗传算法的生物学基础
“适者生存”生物想要在自然界生存,生物必须有良好的自适应能力,否则将会被淘汰。
通过对生物学上的研究,人们发现可以将这个模仿到人工的自适应系统里。
遗传算法就是这写研究的产物。
通过模仿生物学上的复制和进化,遗传算法让各类人工系统具有良好的自适应能力和优化能力。
遗传算法的生物学基础。
生长、复制、选择与变异是生命的基本特征。
也就是生命都是通过进化的而来的。
伟大的达尔文在1858年用自然选择(naturalselection)来诠释物种的起源和生物的进化,给我们带来深刻的影响,思想包括以下三个方面:
(1)遗传(heredity)。
我们很小的时候就知道“种瓜得瓜,种豆得豆”,也就是父代把生物的遗传信息传递给子代,子代根据接收到的信息发育、分化,所以子代总是和父代具有相似的性状。
这是生物的普遍特征,正是这个特性征,物种才能延续下去。
(2)变异(variation)。
父代和子代之间以及不同的子代之间肯定会有差异,这就是变异。
变异是在遗传和分化时随机发生的,这是产生新物种或者高适应的物种所必要的条件,
(3)生存斗争和适者生存。
“优胜劣汰,适者生存”,这是自然界永恒的规律。
变异是随机的,但如果朝着能适应环境的方向的变异的话,该个体将会被保存下来,因为他适应了这个环境,同时,变异后不能适应的个体将会被环境所淘汰。
适应的过程是长期的缓慢的,通过一代代的变异,适应,从而最终会产生一个能适应这个环境然后与它的祖先有着完全不一样的特征的个体。
遗传算法是一种模拟生物进化过程的随机优化方法,我简单列举几个生物学的基本概念和术语:
染色体(chromosome),遗传信息的载体,由DNA、RNA和蛋白质构成的,其形态和数目具有种系的特性。
遗传因子(gene),DNA或RNA长链结构中占有一定位置的基本遗传单位,也称为基因。
个体(individual),具有特征染色体的实体。
种群(population),个体的集合称为种群。
该集合内个体数目的多少称就是种群的大小的大小。
进化(evolution),生物为了生存,为了适应环境不多的进行体质的优化,这种生命现象称为进化。
适应度(fitness),个体对环境的适应能力。
选择(selection),一定的概率从种群中选择若干个体的操作。
基本上是进行优胜劣汰。
复制(reproduction),细胞在分裂时,DNA转移到新个体的过程。
交叉(crossover),又称基因重组,有性个体互换染色体从而产生新个体的过程
变异(mutation),在细胞进行复制时微小的概率产生一些复制的差异,因而会使DNA发生某种差异从而产生出不同特征的染色体。
。
编码(coding),DNA里遗传信息在一个长链上按一定的模式排列。
解码(decoding),从遗传子型到表现型的映射[10]。
2.2遗传算法的发展概况
遗传算法最早是在20世纪60年代在密歇根大学启蒙的,Holland博士对大自然和各种的自适应系统进行了研究,并发现也可以叫这些思想应用到优化问题中,而且发现了选择、交叉、变异的必要性。
然后Bagley最早给他命名为“遗传算法”,与此同时,他还发表了最早的一种二倍体编码,能够模仿生物学上的复制、突变等情况。
Holland对遗传算法的起步时做了巨大的贡献的,他接着在1968年之后的三年内,不断的晚上了遗传算法的一个模式理论,并介绍了二进制编码和格雷编码的优缺点,还给出了许多不同的遗传算子,接着在1975年发表了《自然系统和人工系统的自适应性》一书,介绍了遗传算法的基本理论,并在数学上对遗传算法进行了证明,对后面的学者们具有很好的指导意义。
1975年是遗传算法不平凡的一年,DeJong将的智慧结晶都浓缩到《遗传自适应系统的行为分析》这著作上,该书深入的阐述了遗传算法的原理,并有大量的实用的实验数据,并做了许多正确的结论,对遗传算法在今后研究和发展具有划时代的意义。
到了80年代,各种人工智能优化算法不断的出现和发展起来。
Bridle提出了6个选择算子,很好的解决了轮盘选择的不足。
之后对遗传算法研究比较有名的应算是Goldberg,他再1989年出版了《搜索、优化和机器学习中的遗传算法》一书,该书可以说是遗传算法的白皮书,从各方面详细的介绍了遗传算法的基本原理,组成,应用和实现[19]。
90年代是遗传算法的鼎盛时期,经过30年的发展,遗传算法不断的完善和发展,各种自适应和混合遗传算法等等改良遗传算法层出不穷,这也是切合实际应用发展所需要的。
遗传算法也不断的成功应用到新的领域里。
2.3遗传算法的结构与实现
2.3.1遗传算法的结构
遗传算法(GeneticAlgorithms,GA)是一类仿生物学上的遗传进化的随机机化搜索算法。
它模拟生物学上的自然选择,遗传学里的复制,杂交和基因突变等过程,你每一代迭代中选取一个准最优解,并根据一定的规则确定一个为最终解,不断的重复这个过程,以找到最优解。
2.3.2遗传算法概要
求函数最大值或最小值的优化问题已经是一个老生常谈的问题了,以下我们建立数学规划模型来进行分析:
式中,
为决策向量,,式(2-1)为约束条件,满足式(2-1)的解X称为可能解,所有可能解的组成了可能解集合。
它们之间的联系如下:
图2.1最优化问题的可能解区域及可能解总和
以上我们提到的最优化的问题,由于目标函数和约束条件类型复杂,除了线性、非线性,连续、离散,还有单峰值和多峰值的。
经过长期的研究,我们渐渐明白要在很多复杂情况下要想完全精确的求出其最优解几乎是不可能的,因此,学者们就退而求其次,致力于求出其近似最优解或满意解。
一般我们会用一下三种方法进行求解:
(1)枚举法。
所谓枚举法就是把可能解集合内的所有可能解列举出来,并从中找出认为是精确的最优解。
当然,枚举法也存在缺陷,问题小点还好,就是当枚举空间比较大时,可能解集合将会很大,这种求解速率就显得很低,甚至还会找不到。
(2)启发式求解。
通过寻求一种可能性解的启发式规则,以找到一个近似最优解。
这种方法的优点就是求解速率较高,但是每个问题需要对应不同的规则,这就限制了他的应用。
(3)搜索算法。
顾名思义就是在一个指定区域内不断的搜索,这个区域就是可能解的一个子集。
从而在这个子集中搜索出最优解或近似最优解。
但是这种方法不一定能找到最优解,还需一定的启发知识。
由于问题规模的不断扩大,种类的复杂多变,以目前的能力来解决这些最优化问题几乎是一个登天的难题。
但是,遗传算法为我们提供了有效的求解工具,具有良好的全局优化能力
2.3.3遗传算法的实现
遗传算法里,将n维决策向量
用n个记号来表示:
(2-2)
Xi的所有可能值称等位基因,所以X就是一个染色体。
一般n是固定的,但也可以不是固定的,但情况较少。
等位基因可以是数组成,或者是实数值,更能使一组记号,这就是所需要的编码策略。
最早的等位基因就是以1和0组成的,对应的染色体就可以又一串二进制的来表示,即二进制编码。
X就是一个个体,按照一定的策略求出他的适应度,适应度大的个体就更接近目标个体;反之,越小越远离。
决策变量X就是函数解空间。
通过搜索X的最大适应度个体来找到最优解,所有X就是函数的搜索空间。
生物进化是呈群体性的。
M个个体组成了遗传算法里面的群体。
生物的进化是一代代进行的,遗传算法的运算过程也是不过的迭代的过程。
从第一代开始,进化到第t代,群体就记作P(t),再经过一次遗传进化,得到P(t+1)代。
整个群体就不过的进行优胜略太的方式迭代下去,直到找打最佳个体既适应度最高的个体。
所对应的X就是最优解X*。
遗传算法如同生物学上的进化,进化是通过遗传操作完成的,既选择交叉变异。
选择(selection):
以预定的规则策略,根据个体的适应度大小,在群体P(t)中挑选出一些相对优良的个体遗传到下一代群体P(t+1)中。
交叉(crossover):
随机配对p(t)群体里的两个个体,以一定的概率交叉互换染色体,从而产生新的个体遗传到P(t+1)中
变异(mutation):
以很小的概率改变染色体中的一个部分,从而产生新的染色体。
具体流程:
1):
开始。
选定进化代数T,用以停止算法;随机生成初始群体P(0)。
2):
计算个体适应度。
用适应度函数计算群体P(t)中各每个个体的适应度大小。
3):
选择。
群体进行选择操作。
4):
交叉。
群体进行交叉操作。
5):
变异。
群体进行变异操作。
产生新一代群体P(t+1)。
6):
停止。
是否达到最大迭代次数,若否,转到步骤二;若是,停止算法输出最优个体。
遗传算法的流程图如下:
图2.2遗传算法的流程图
2.4遗传算法的操作
2.4.1编码策略
实际问题如果要进行求解的话就要转换为数学模型,这个数学模型就是对该问题的一个映射,而遗传算法不仅仅是转换为一个数学模型,它与传统优化算法的区别也更是在此,遗传算法进行时需要对问题按照一定的策略映射到可以搜索的空间,这就是所谓的编码。
经过编码的参数我们可以称为个体。
遗传算法的运行过程就是不断的搜索,直到找到最优个体的过程。
遗传算法的操作对象所以不在是函数实际的决策变量,而是经过编码后的编码串。
所以,编码是遗传算法的一个前提,编码策略决定了染色体的构成,同时有怎么样的编码方式就需要怎么样的解码方式与之相对应。
同时遗传算子的选择也与编码方式息息相关,例如,二进制的编码方式交叉算子就用简单的单点交叉,而,用实数编码编码情况下则是用均匀交叉算子。
综上所诉,选择一个正确的稳定的编码方式对遗传算法的性能和实现有着至关重要的作用。
从二进制编码的开始,学者们对编码方式的研究从没停止过,然而一个完美无瑕的编码方式现在来说至
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 小生境 遗传 算法 函数 优化 问题 研究