⑴ 遗传算法具体应用
1、函数优化
函数优化是遗传算法的经典应用领域,也是遗传算法进行性能评价的常用算例,许多人构造出了各种各样复杂形式的测试函数:连续函数和离散函数、凸函数和凹函数、低维函数和高维函数、单峰函数和多峰函数等。
2、组合优化
随着问题规模的增大,组合优化问题的搜索空间也急剧增大,有时在目前的计算上用枚举法很难求出最优解。对这类复杂的问题,人们已经意识到应把主要精力放在寻求满意解上,而遗传算法是寻求这种满意解的最佳工具之一。
此外,GA也在生产调度问题、自动控制、机器人学、图象处理、人工生命、遗传编码和机器学习等方面获得了广泛的运用。
3、车间调度
车间调度问题是一个典型的NP-Hard问题,遗传算法作为一种经典的智能算法广泛用于车间调度中,很多学者都致力于用遗传算法解决车间调度问题,现今也取得了十分丰硕的成果。
从最初的传统车间调度(JSP)问题到柔性作业车间调度问题(FJSP),遗传算法都有优异的表现,在很多算例中都得到了最优或近优解。
(1)ga遗传算法精度扩展阅读:
遗传算法的缺点
1、编码不规范及编码存在表示的不准确性。
2、单一的遗传算法编码不能全面地将优化问题的约束表示出来。考虑约束的一个方法就是对不可行解采用阈值,这样,计算的时间必然增加。
3、遗传算法通常的效率比其他传统的优化方法低。
4、遗传算法容易过早收敛。
5、遗传算法对算法的精度、可行度、计算复杂性等方面,还没有有效的定量分析方法。
⑵ 遗传算法<sup>[1,]</sup>
遗传算法,又称基因算法(Genetic Algorithm,简称GA),也是一种启发式蒙特卡洛优化算法。遗传算法最早是由Holland(1975)提出,它模拟了生物适者生存、优胜劣汰的进化过程,具有不依赖于初始模型的选择、不容易陷入局部极小、在反演过程中不用计算偏导数矩阵等优点。遗传算法最早由Stoffa和Sen(1991)用于地震波的一维反演,之后在地球物理资料的非线性反演中得到广泛的应用。GA算法对模型群体进行追踪、搜索,即模型状态通过模型群体传送,具有比模拟退火法更大、更复杂的“记忆”,潜力更大。
遗传算法在反演中的基本思路和过程是:
(1)将生物体看成模型,模型参数看成染色体,有多少个模型的参数就有多少个染色体。对每个模型的参数(染色体)用二进制进行编码,这个编码就是基因。
(2)随机生成一个模型群体(相当于生物的种群),然后在模型群体中进行繁殖,通过母本的选择、交换和变异等遗传操作产生下一代,然后保留较好基因,淘汰较差基因。
(3)通过一代一代的繁殖优胜劣汰的进化过程,最后所剩下的种群基本上都是最优的基因,种群趋于一致。所谓群体“一致”,即群体目标函数的方差或标准差很小,或者群体目标函数的均值接近于极值(可能是极大值或极小值),从而获得非线性反演问题所对应的最优解或近似最优解。
下面以一个实例来简述遗传算法的基本过程。
[例1]设m是正整数,且0≤m≤127,求方程φ(m)=m2的极大值。
这个例子极为简单,只有一个模型参数,因此只有一条染色体,目标函数的极值是极大值(此例子来自阮百尧课件)。遗传算法通过以下7个步骤来实现:
(1)模型参数二进制编码。
每个模型参数就是一条染色体,把十进制的模型参数表示为二进制,这就是基因。首先确定二进制码的长度(基因的长度):
2N=[mmax(i)-mmin(i)]/Δm(i) (8.20)
其中:N为第i条染色体基因的长度(也就是第i个模型参数的二进制码位数);[mmin(i),mmax(i)]为第i个模型参数的取值范围;Δm(i)为第i个模型参数的分辨率。这样就把模型参数离散化了,它只能按Δm(i)的整数倍变化。基因的长度按下式计算:
地球物理反演教程
其中:c为实数;N为基因长度,是整数;int[ ]为取整函数。上式表示如果c不是整数,那么基因长度N就是对c取整后加1,这样保证最小分辨率。
基因的编码按下式进行:
地球物理反演教程
其中:式(8.22)是编码公式;k为基因编码的十进制数,是整数;int[ ]为取整函数。把k转化为二进制就是基因的编码。解码是按照式(8.23)进行的。首先把一个基因的二进制编码转化为十进制数k,然后按式(8.23)可以计算出第i个模型参数m(i)的十进制值。
例如:电阻率参数ρ(1),它的变化范围为10~5000Ω·m,分辨率为2Ω·m,设当前参数ρ(1)=133Ω·m,按式(8.21)计算得
c=11.28482,N=12
所以二进制基因长度为13位。
利用式(8.22)计算基因编码k的十进制数:
k=int[(133-10)/2]=61
把它转化为二进制数为:000000111101。所以ρ(1)=133 的二进制基因编码为:000000111101。
解码过程就是把二进制基因编码变为十进制数k后用式(8.23)计算:
ρ(1)=10+61×2=132(Ω·m)
注意:基因编码并不是直接把电阻率值变为二进制。此外,133这个值在基因里不会出现,因为分辨率是2,所以表示为最接近的132。
对于[例1]问题来说,选分辨率为1,0~127用二进制编码需7位。
(2)产生初始模型种群。
生物繁殖进化需要一定数量的生物体种群,因此遗传算法开始时需要一定数量的初始模型。为保证基因的多样性,随机产生大量的初始模型作为初始种群,按照上面的编码方式进行编码。个体在模型空间中应分布均匀,最好是模型空间各代表区域均有成员。初始模型群体大,有利于搜索,但太大会增加计算量。
为保证算法收敛,在初始模型群体中,有时候应增加各位都为0和都为1的成员。遗传算法就是在这个初始模型种群的基础上进行繁殖,进化求解的。
对于[例1]问题来说,模型空间是0~127个数字,这样初始种群最多具有128个个体。为了简单,随机选择4个个体作为初始种群。初始种群的编码、目标函数值见表8.1。
表8.1 初始种群编码表
(3)模型选择。
为了生成新一代模型,需要选择较优的个体进行配对。生物进化按照自然选择、优胜劣汰的准则进行。对应地,遗传算法按照一定的准则来选择母本(两个),然后进行配对繁殖下一代模型,这个选择称为模型选择。模型配对最基本的方法是随机采样,用各模型的目标函数值对所有模型目标函数的平均值的比值定义繁殖概率,即
地球物理反演教程
其中:p(mi)为繁殖概率;φ(mi)为第i个模型的目标函数;φAVG为目标函数的平均值。对于极小化问题来说,规定目标函数值高于平均值的不传代;对于极大化问题来说,反之即可。
就[例1]来说,要求目标函数取极大值,所以规定目标函数小于平均值的模型不传代,大于它的可以传代。对第一代,为了防止基因丢失,可先不舍去繁殖概率小的模型,让它与概率大的模型配对。如:本例中70与56配对,101与15配对产生子代,见表8.2。
表8.2 基因交换表
(4)基因交换。
将配对的两个亲本模型的部分染色体相互交换,其中交换点可随机选择,形成两个新的子代(见表8.2)。两个染色体遗传基因的交换过程是遗传算法的“繁殖”过程,是母本的重组过程。
为了使染色体的基因交换比较彻底,Stoffa等人提出了一个交换概率px来控制选择操作的效果。如果px的值较小,那么交换点的位置就比较靠低位,这时的交换操作基本是低位交换,交换前后模型的染色体变化不是太大。如果px的值较大,那么交换点的位置就比较靠高位,此时的交换操作可以在较大的染色体空间进行,交换前后模型数值变化可以很大。
在[例1]中:15、101和56、70作为母本通过交换繁殖出子代5、6、111、120。所选择的基因交换位置见表8.2。有下划线的,是要交换的基因位置。
(5)更新。
母本模型和子本模型如何选择保留一定数量作为新的母本,就是模型更新。不同的策略会导致不同的结果。一般而言,若产生的新一代模型较好,则选择新一代模型而淘汰上一代模型。否则,则必须根据一定的更新概率pu来选择上一代模型来取代新一代中某些较劣的模型。
经过更新以后,繁殖时对子代再进行优胜劣汰的选择。对于极大值问题,大于目标函数平均值的子代可以繁殖,小于目标函数平均值的子代不能繁殖。由于新的种群能繁殖的个体数量减小了,所以要多繁殖几次,维持种群个体的数量保持平衡。
在[例1]中,子代较好,所以完全淘汰上一代模型,完全用子代作为新的母本。选择子代目标函数最大的两个模型进行繁殖,分别是111、120。
(6)基因变异。
在新的配对好的母本中,按一定比例随机选择模型进行变异,变异操作就是模拟自然界中的环境因素,就是按比较小的变异概率pm将染色体某位或某几位的基因发生突变(即将0变为1或将1变为0)。
变异操作的作用是使原来的模型发生某些变化,从而成为新的个体。这样可使群体增加多样性。变异操作在遗传算法中也起着至关重要的作用。实际上,由于搜索空间的性质和初始模型群体的优劣,遗传算法搜索过程中往往会出现所谓的“早熟收敛”现象,即在进化过程中早期陷入局部解而中止进化。采用合适的变异策略可提高群体中个体的多样性,从而防止这种现象的出现,有助于模型跳出局部极值。表8.3为[例1]的基因变异繁殖表。
表8.3 基因变异繁殖表
在[例1]中,用111、120分别繁殖两次,形成4个子代,维持种群数量平衡。随机选择120进行变异,变异的位数也是随机的。这里把它的第2位进行变异,即从1变为0,繁殖后形成子代为:70、110、121、127。可以看出新的子代比初始种群要好得多,其中甚至已经出现了最优解。如果对于地球物理的极小值问题,我们可以预先设置一个拟合精度,只要在种群中出现一个达到拟合精度的模型就可以终止反演了。
(7)收敛。
重复(3)~(6)的步骤,模型群体经多次选择、交换、更新、变异后,种群个体数量大小不变,模型目标函数平均值趋于稳定,最后聚集在模型空间中一个小范围内,则找到了全局极值对应的解,使目标函数最大或最小的模型就是全局最优模型。
对于具有多解性的地球物理反演问题来说,通过这一步有可能找到满足拟合精度的多个模型,对于实际反演解释、推断具有较高的指导意义。
遗传算法中的各种概率包括交换概率px、变异概率pm以及更新概率pu,这些参数的选择与设定目前尚无统一的理论指导,多数都视具体问题而定。Stoffa等(1991)的研究表明,适中的交换概率(px≈0.6)、较小的变异概率(pm≈0.01)和较大的更新概率(pu≈0.9),遗传算法的性能较优。
与模拟退火反算法相同,遗传算法与传统的线性反演方法相比,该方法具有:不依赖初始模型的选择、能寻找全局最小点而不陷入局部极小、在反演过程中不用计算雅克比偏导数矩阵等优点。另外,遗传算法具有并行性,随着并行计算和集群式计算机技术的发展,该算法将会得到越来越广泛的研究与应用。
但是遗传算法作为类蒙特卡洛算法同样需要进行大量的正演计算,种群个体数量越大,繁衍代数越多,则计算量越大。所以和前面的最小二乘法相比,速度不是它的优势。
⑶ 遗传算法的优缺点
优点:
1、遗传算法是以决策变量的编码作为运算对象,可以直接对集合、序列、矩阵、树、图等结构对象进行操作。这样的方式一方面有助于模拟生物的基因、染色体和遗传进化的过程,方便遗传操作算子的运用。
另一方面也使得遗传算法具有广泛的应用领域,如函数优化、生产调度、自动控制、图像处理、机器学习、数据挖掘等领域。
2、遗传算法直接以目标函数值作为搜索信息。它仅仅使用适应度函数值来度量个体的优良程度,不涉及目标函数值求导求微分的过程。因为在现实中很多目标函数是很难求导的,甚至是不存在导数的,所以这一点也使得遗传算法显示出高度的优越性。
3、遗传算法具有群体搜索的特性。它的搜索过程是从一个具有多个个体的初始群体P(0)开始的,一方面可以有效地避免搜索一些不必搜索的点。
另一方面由于传统的单点搜索方法在对多峰分布的搜索空间进行搜索时很容易陷入局部某个单峰的极值点,而遗传算法的群体搜索特性却可以避免这样的问题,因而可以体现出遗传算法的并行化和较好的全局搜索性。
4、遗传算法基于概率规则,而不是确定性规则。这使得搜索更为灵活,参数对其搜索效果的影响也尽可能的小。
5、遗传算法具有可扩展性,易于与其他技术混合使用。以上几点便是遗传算法作为优化算法所具备的优点。
缺点:
1、遗传算法在进行编码时容易出现不规范不准确的问题。
2、由于单一的遗传算法编码不能全面将优化问题的约束表示出来,因此需要考虑对不可行解采用阈值,进而增加了工作量和求解时间。
3、遗传算法效率通常低于其他传统的优化方法。
4、遗传算法容易出现过早收敛的问题。
(3)ga遗传算法精度扩展阅读
遗传算法的机理相对复杂,在Matlab中已经由封装好的工具箱命令,通过调用就能够十分方便的使用遗传算法。
函数ga:[x, fval,reason]= ga(@fitnessfun, nvars, options)x是最优解,fval是最优值,@fitnessness是目标函数,nvars是自变量个数,options是其他属性设置。系统默认求最小值,所以在求最大值时应在写函数文档时加负号。
为了设置options,需要用到下面这个函数:options=gaoptimset('PropertyName1', 'PropertyValue1', 'PropertyName2', 'PropertyValue2','PropertyName3', 'PropertyValue3', ...)通过这个函数就能够实现对部分遗传算法的参数的设置。
⑷ 写一篇大一应用数学论文 谢谢!!!
并行遗传算法及其应用
1、遗传算法(GA)概述
GA是一类基于自然选择和遗传学原理的有效搜索方法,它从一个种群开始,利用选择、交叉、变异等遗传算子对种群进行不断进化,最后得到全局最优解。生物遗传物质的主要载体是染色体,在GA中同样将问题的求解表示成“染色体Chromosome”,通常是二进制字符串表示,其本身不一定是解。首先,随机产生一定数据的初始染色体,这些随机产生的染色体组成一个种群(Population),种群中染色体的数目称为种群的大小或者种群规模。第二:用适值度函数来评价每一个染色体的优劣,即染色体对环境的适应程度,用来作为以后遗传操作的依据。第三:进行选择(Selection),选择过程的目的是为了从当前种群中选出优良的染色体,通过选择过程,产生一个新的种群。第四:对这个新的种群进行交叉操作,变异操作。交叉、变异操作的目的是挖掘种群中个体的多样性,避免有可能陷入局部解。经过上述运算产生的染色体称为后代。最后,对新的种群(即后代)重复进行选择、交叉和变异操作,经过给定次数的迭代处理以后,把最好的染色体作为优化问题的最优解。
GA通常包含5个基本要素:1、参数编码:GA是采用问题参数的编码集进行工作的,而不是采用问题参数本身,通常选择二进制编码。2、初始种群设定:GA随机产生一个由N个染色体组成的初始种群(Population),也可根据一定的限制条件来产生。种群规模是指种群中所含染色体的数目。3、适值度函数的设定:适值度函数是用来区分种群中个体好坏的标准,是进行选择的唯一依据。目前主要通过目标函数映射成适值度函数。4、遗传操作设计:遗传算子是模拟生物基因遗传的操作,遗传操作的任务是对种群的个体按照它们对环境的适应的程度施加一定的算子,从而实现优胜劣汰的进化过程。遗传基本算子包括:选择算子,交叉算子,变异算子和其他高级遗传算子。5、控制参数设定:在GA的应用中,要首先给定一组控制参数:种群规模,杂交率,变异率,进化代数等。
GA的优点是擅长全局搜索,一般来说,对于中小规模的应用问题,能够在许可的范围内获得满意解,对于大规模或超大规模的多变量求解任务则性能较差。另外,GA本身不要求对优化问题的性质做一些深入的数学分析,从而对那些不太熟悉数学理论和算法的使用者来说,无疑是方便的。
2、遗传算法的运行机理:
对GA运行机理的解释有两类: 一是传统的模式理论;二是1990 年以后发展起来的有限状态马尔可夫链模型。
(1)模式理论:由Holland创建,主要包括模式定理,隐并行性原理和积木块假说三部分。模式是可行域中某些特定位取固定值的所有编码的集合。模式理论认为遗传算法实质上是模式的运算,编码的字母表越短,算法处理一代种群时隐含处理的模式就越多。当算法采用二进制编码时,效率最高,处理规模为N的一代种群时,可同时处理O(N3)个模式。遗传算法这种以计算少量编码适应度而处理大量模式的性质称为隐并行性。模式理论还指出,目标函数通常满足积木块假说,即阶数高,长度长,平均适应度高的模式可以由阶数低,长度短,平均适应度高的模式(积木块)在遗传算子的作用下,接合而生成。而不满足积木块假说的优化问题被称为骗问题(deceptive problem)。模式理论为遗传算法构造了一条通过在种群中不断积累、拼接积木块以达到全局最优解的寻优之路。但近十多年的研究,特别是实数编码遗传算法的广泛应用表明,上述理论与事实不符。
(2)有限状态马尔可夫链模型:由于模式理论的种种缺陷,研究者开始尝试利用有限状态马尔可夫链模型研究遗传算法的运行过程。对于遗传算法可以解决的优化问题,问题的可行域都是由有限个点组成的,即便是参数可以连续取值的问题,实际上搜索空间也是以要求精度为单位的离散空间,因此遗传算法的实际运行过程可以用有限状态马尔可夫链的状态转移过程建模和描述。对于有 m 个可行解的目标函数和种群规模为N的遗传算法,N 个个体共有 种组合,相应的马尔可夫模型也有 个状态。实际优化问题的可行解数量 m 和种群规模 N 都十分可观,马尔可夫模型的状态数几乎为天文数字,因此利用精确的马尔可夫模型计算种群的状态分布是不可能的。为了换取模型的可执行性,必须对实际模型采取近似简化,保持算法的实际形态,通过对目标函数建模,简化目标函数结构实现模型的可执行性。遗传算法优化的过程,可以看作算法在循环过程中不断对可行域进行随机抽样,利用前面抽样的结果对目标点的概率分布进行估计,然后根据估计出的分布推算下一次的抽样点。马尔可夫模型认为遗传算法是通过对搜索空间不同区域的抽样,来估计不同区域的适应度,进而估计最优解存在于不同区域的概率,以调整算法对不同区域的抽样密度和搜索力度,进而不断提高对最优解估计的准确程度。可见,以邻域结构为依据划分等价类的马尔可夫模型更符合实际,对问题的抽象更能体现优化问题的本质。
3、并行遗传算法(PGA)
虽然在许多领域成功地应用遗传算法,通常能在合理的时间内找到满意解,但随着求解问题的复杂性及难度的增加,提高GA的运行速度便显得尤为突出,采用并行遗传算法(PGA)是提高搜索效率的方法之一。由于GA从种群出发,所以具有天然的并行处理特性,非常适合于在大规模并行计算机上实现,而大规模并行计算机的日益普及,为PGA奠定了物质基础。特别是GA中各个体适值计算可独立进行而彼此间无需任何通信,所以并行效率很高。实现PGA,不仅要把串行GA等价地变换成一种并行方案,更重要的是要将GA的结构修改成易于并行化实现的形式,形成并行种群模型。并行种群模型对传统GA的修改涉及到两个方面:一是要把串行GA的单一种群分成多个子种群,分而治之;二是要控制、管理子种群之间的信息交换。不同的分治方法产生不同的PGA结构。这种结构上的差异导致了不同的PGA模型:全局并行模型、粗粒度模型、细粒度模型和混合模型。
3、1全局PGA模型
该模型又称主从PGA模型,它是串行GA的一种直接并行化方案,在计算机上以master-slave编程模式实现。它只有一个种群,所有个体的适应度都根据整个种群的适应度计算,个体之间可以任意匹配,每个个体都有机会和其他个体杂交而竞争,因而在种群上所作的选择和匹配是全局的。对于这个模型有多种实现方法:第一种方法是仅仅对适值度函数计算进行并行处理;第二种方法是对遗传算子进行并行处理。全局模型易于实现,如果计算时间主要用在评价上,这是一种非常有效的并行化方法。
它最大的优点是简单,保留了串行GA 的搜索行为,因而可直接应用GA 的理论来预测一个具体问题能否映射到并行GA上求解。对于适应度估值操作比其他遗传算子计算量大的多时,它是很有效的,并且不需要专门的计算机系统结构。
3、2粗粒度PGA模型
该模型又称分布式、MIMD、岛模式遗传算法模型,它是对经典GAs 结构的扩展。它将种群划分为多个子种群(又称区域),每个区域独自运行一个GA。此时,区域选择取代了全局选择,配偶取自同一区域,子代与同一区域中的亲本竞争。除了基本的遗传算子外,粗粒度模型引入了“迁移”算子,负责管理区域之间的个体交换。在粗粒度模型的研究中,要解决的重要问题是参数选择,包括:迁移拓扑、迁移率、迁移周期等。
在种群划分成子种群(区域)后,要为种群指定某种迁移拓扑。迁移拓扑确定了区域之间个体的迁移路径,迁移拓扑与特定的并行机结构有着内在的对应关系,大多采用类似于给定并行处理机的互连拓扑。如果在顺序计算机上实现粗粒度模型,则可以考虑采用任意结构。拓扑结构是影响PGA 性能的重要方面,也是迁移成本的主要因素。区域之间的个体交换由两个参数控制:迁移率和迁移周期。迁移基本上可以采用与匹配选择和生存选择相同的策略,迁移率常以绝对数或以子种群大小的百分比形式给出,典型的迁移率是子种群数目的10%到20%之间。迁移周期决定了个体迁移的时间间隔,一般是隔几代(时期) 迁移一次,也可以在一代之后迁移。通常,迁移率越高,则迁移周期就越长。有的采用同步迁移方式,有的采用异步迁移方式。迁移选择负责选出迁移个体,通常选择一个或几个最优个体,有的采用适应度比例或者排列比例选择来选择迁移个体,也有采用随机选取和替换的。在大多数情况下,是把最差或者有限数目的最差个体替换掉.与迁移选择类似,可采用适应度比例或者排列比例选择,确定被替换的个体,以便对区域内部的较好个体产生选择压力。
基于国内的现状,分布式PGA为国内PGA研究的主要方向。分布式PGA作为PGA的一种形式,一般实行粗粒度及全局级并行,各子种群间的相互关系较弱,主要靠一些几乎串行GA来加速搜索过程。采用分布式PGA求解问题的一般步骤为:(1)将一个大种群划分为一些小的子种群,子种群的数目与硬件环境有关;(2)对这些子种群独立的进行串行GA操作,经过一定周期后,从每个种群中选择一部分个体迁移到另外的子种群。对于个体迁移存在多种方法,第一种方法,在执行迁移操作时,每次从子种群中随机选择一部分染色体发送出去,接收的染色体数应该与发出的染色体相同。第二种方法,在执行迁移操作时,首先在每个子种群内只使用选择而不使用其它遗传算子繁殖一些后代,这些后代的数目与迁移数相同。然后再将这些后代的原子种群合并成一个大子种群并均匀随即地从该子种群中选择个体进行迁移。这样,待迁移后子种群的规模便又恢复到正常状态。而当子种群接收到从其他子种群迁移来的个体时则均匀随即地替换掉子种群内的个体。第三种方法,将其中一个子种群设置为中心子种群,其他子种群与中心子种群通信。中心子种群始终保持着整个种群中当前的最优个体,其他子种群通过“引进”中心子种群中的最优个体来引导其加快收敛速度,改善个体特征。
3、3 细粒度PGA模型
该模型又称领域模型或SIMD PGA模型,对传统GA作了修改。虽然细粒度模型也只有一个种群在进化,但在种群平面网格细胞上,将种群划分成了多个非常小的子种群(理想情况是每个处理单元上只有一个个体),子种群之间具有极强的通信能力,便于优良解传播到整个种群。全局选择被领域选择取代,个体适应度的计算由局部领域中的个体决定,重组操作中的配偶出自同一领域,且子代同其同一领域的亲本竞争空间,即选择和重组只在网格中相邻个体之间进行。细粒度模型要解决的主要问题是领域结构和选择策略。
领域结构既决定了种群中个体的空间位置,也确定了个体在种群中传播的路径。领域结构主要受特定并行计算机的内存结构和通信结构影响。领域拓扑确定一个个体的邻居,构成该个体的局部领域。通常,只有一个拓扑的直接领域才属于其局部领域,若把某个固定步数内所能到达的所有个体也包含在内,则可以扩大领域半径。在确定选择策略时,要考虑到选择压力的变化,而选择压力与领域结构有关。与全局匹配选择类似,局部匹配选择可以采用局部适应度比例、排列比例选择,以及随机行走选择。局部生存选择确定局部邻域中被替换的个体,如果子代自动替换邻域中心的那个个体,那么可以直接使用代替换作为局部生存策略。
3、4 混合PGA模型
该模型又称为多层并行PGA模型,它结合不同PGA模型的特性,不仅染色体竞争求取最优解,而且在GA结构上也引入了竞争以提供更好的环境便于进化。通常,混合PGA以层次结构组合,上层多采用粗粒度模型,下层既可采用粗粒度模型也可采用细粒度模型。或者,种群可以按照粗粒度PGA模型分裂,迁移操作可以采用细粒度PGA模型。
3、5 四种模型的比较
就现有的研究结果来看,很难分出各模型的高低。在评价并行模型的差异时,有时还得深入到实现细节上,如问题的差异、种群大小、或者不同的局部搜索方法等。但有一个结论是肯定的:不采用全局并行模型,而采用粗粒度模型或者细粒度模型通常能获得更好的性能。粗粒度模型与细粒度模型孰优孰劣,尚是一个未知数。
目前,以粗粒度模型最为流行,因为一是其实现较容易,只需在串行GA中增加迁移子例程,在并行计算机的节点上各自运行一个副本,并定期交换几个个体即可;二是在没有并行计算机时,也可在网络或单机系统上模拟实现。虽然并行GA能有效地求解许多困难的问题,也能在不同类型的并行计算机上有效地实现,但仍有一些基本的问题需要解决。种群大小可能既影响大多数GA的性能,也决定GA找到解所需时间的主要因素。在PGA中,另一个重要问题是如何降低通信开销,包括迁移率的确定,使得区域的行为象单个种群一样;确定通信拓扑,既能充分地组合优良解,又不导致过多的通信开销;能否找到一个最优的区域数等。
另外,对不同的应用问题,混合模型难以设定基本GA的参数,其节点的结构是动态变化的,它比粗粒度和细粒度模型更具有一般性,算法更为复杂,实现代价更高。
4、并行遗传算法的评价模型:
并行遗传算法的性能主要体现在收敛速度和精度两个方面,它们除了与迁移策略有关,还与一些参数选取的合理性密切相关,如遗传代数、种群数目、种群规模、迁移率和迁移间隔。
利用Amdahl定律评价并行遗传算法,即绝对加速比(speep) = Ts/Tp,其中,Ts为串行遗传算法(单个处理器)的执行时间;Tp为并行遗传算法的执行时间。Amdahl定律适用于负载固定的情况,对于并行遗传算法而言,就是适用于总种群规模不变的情况。所以,Amdahl定律适用于主从式和细粒度模型,在适应度评价计算量较大时,主从式模型可以得到接近线性的加速比。由于细粒度模型的应用较少,适用的SIMD并行机的可扩展性也不突出,所以很少有人评价细粒度模型的加速比。利用Amdahl定律评价粗粒度模型时,需保持总的种群规模,即子种群数量和子种群规模成反比。这种情况下粗粒度模型的加速比接近线性,这是由于粗粒度模型的通信开销和同步开销都不大。
5、实例:带约束并行多机调度
5、1 问题描述
最小化完工时间的带约束并行多机调度问题可描述如下:有 n 个相关的工件,m 台机器,每个工件都有确定的加工时间,且均可由 m 台机器中的任一台完成加工任务。要找一个最小调度,即确定每台机器上加工的工件号顺序,使加工完所有工件所需时间最短。
算法关键在于:
(1) 如何表示工件之间的关系。可以把 n 个相关工件表示成一个后继图,如上图所示。图中节点间的有向边表示工件之间的后继或编序关系。因此,Ti →Tj 表示工件 Tj 在完成之后才能启动工件Ti。显然对于 n 个相关工件,我们可以根据工件间的约束关系所表示成的后继图产生一符合约束条件的工件序列( a0,a1,…,ai,…,an-1) (0 ≤ai <n) ,其中ai 表示一个工件。例如,根据上图所示的后继图, 可产生工件序列(0,2,5,1,3,4,7,6,8),按该工件序列调度满足工件之间的约束关系。
(2) 如何表示问题的目标函数。设t(j)为机器加工工件 j 所需时间,tb(i ,j) 为机器 i 加工工件 j 的最早时刻。为了使GA算法解决问题方便,我们用x(i ,j) 表示工件 j 在机器 i 上是否加工,若x(i ,j) = 1,则表示工件 j 在机器 i 上加工;若x(i ,j) = 0,则表示工件 j 不在机器 i 上加工。因而x(i ,j ) t (j) 为机器 i 加工工件 j 的实际加工时间。
问题的目标函数可表示为:
minGms = min{max[ finish(0), finish(1), ...,finish(i), ..., finish (m - 1) ]}。其中finish(i)表示第 i 台处理机加工分配的工件所需时间。finish(i) = max{ x(0 , a0) [ tb(i, a0) + t(a0) ] ,x(1, a1) [ tb(i, a1) + t(a1) ], ..., x(n-1, an-1) [ tb(i, an-1) + t(an-1) ]}。
5、2 并行GA实现
带约束并行多机调度问题的并行GA实现如下:
(1) 产生一个进程(该进程为父进程,在进行串行GA的同时,用于存放和发送当前最优个体);
(2) 由父进程产生m - 1 个子进程(每个子进程用于实现串行GA);
(3) 各子进程(包括父进程)进行串行GA,当子进程中遗传代数(ge)被10整除,子进程发送最优个体至父进程;
(4) 父进程选择当前各子进程中最优个体(molist),发送给各子进程;
(5) 各子进程把molist替换各子进程当前代种群中适应值最低个体;
(6) 若ge = gmax (gmax为设定最大繁殖代数),转第(7)步,否则转第(3)步;
(7) 算法终止。
6、总结:
组合优化是遗传算法最基本的也是最重要的研究和应用领域之一。一般来说,组合优化问题通常带有大量的局部极值点,往往是不可微的、不连续的、多维的、有约束条件的、高度非线性的NP完全问题,因此,精确的求解组合优化问题的全局最优解一般是不可能的。遗传算法是一种新型的、模拟生物进化过程的随机化搜索、优化方法,近十几年来在组合优化领域得到了相当广泛的研究和应用,并已在解决诸多典型组合优化问题中显示了良好的性能和效果。
参考文献:
1、Zdeněk Konfrst. Parallel Genetic Algorithms: Advances, Computing Trends, Aplications and Perspectives. Proceedings of the 18th International Parallel and Distributed Proecessing Symposium, 2004.
2、郭彤城, 慕春棣. 并行遗传算法的新进展. 系统工程理论与实践, 2002.
3、曾国荪, 丁春玲. 并行遗传算法分析. 计算机工程, 2001.
4、王大明, 毛宗源. 并行遗传算法综述. 暨南大学学报(自然科学版), 1998.
5、吴昊. 并行遗传算法的研究与应用. 安徽大学硕士学位论文, 2001.
6、王冠. 并行遗传算法及其在组合优化问题上的分布式应用, 武汉理工大学硕士学位论文, 2003.
7、吴昊, 程锦松. 用并行遗传算法解决带约束并行多机调度问题. 微机发展, 2001.
⑸ 遗传算法代沟与精度问题
我也不懂哎,不好意思哈
⑹ 求遗传算法(GA)处理离散的整数型变量的程序。
两种编码都有,可以自己选择。 你在MATLAB2008里输入 gaoptimset 会弹出遗传算法的所有的设置选项及默认项。其中,第一行就是个体的编码方式,第一行如下 PopulationType: [ 'bitstring' | 'custom' | ] 其中,bitstring就是二进制编码,而'doubleVector'即实数编码(MATLAB里实数是用double双精度浮点数表示的,精度很高。大括号{}表示是默认设置。 而中间的'custom'是表示用户自己构造个体的编码形式。
⑺ 基本遗传算法介绍
遗传算法是群智能优化计算中应用最为广泛、最为成功、最具代表性的智能优化方法。它是以达尔文的生物进化论和孟德尔的遗传变异理论为基础,模拟生物进化过程和机制,产生的一种群体导向随机搜索技术和方法。
遗传算法的基本思想:首先根据待求解优化问题的目标函数构造一个适应度函数。然后,按照一定的规则生成经过基因编码的初始群体,对群体进行评价、遗传运算(交叉和变异)、选择等操作。经过多次进化,获得适应度最高的一个或几个最优个体作为问题的最优解。
编码是对问题的可行解的遗传表示,是影响算法执行效率的关键因素的之一。遗传算法中,一个解 称为个体或染色体(chromosome),染色体由被称为基因(gene)的离散单元组成,每个基因控制颜色体的一个或多个特性,通常采用固定长度的0-1二进制编码,每个解对应一个唯一的二进制编码串编码空间中的二进制位串称为基因型(genotype)。而实际所表示问题的解空间的对应点称为表现型(phenotype)。
种群由个体构成,每个个体的染色体对应优化问题的一个初始解。
适应度函数是评价种群中个体对环境适应能力的唯一确定性指标,体现出“适者生存,优胜劣汰”这一自然选择原则。
遗传算法在每次迭代过程中,在父代种群中采用某种选择策略选择出指定数目的哥特体提进行遗传操作。最常用的选择策略是正比选择(proportional selection)策略。
在 交叉算子中,通常由两个被称为父代(parent)的染色体组合,形成新的染色体,称为子代(offspring)。父代是在种群中根据个体适应度进行选择,因此适应度较高的染色体的基因更有可能被遗传到下一代 。通过在迭代过程中不断地应用交叉算子,使优良个体的基因得以在种群中频繁出现,最终使得整个种群收敛到一个最优解。
在染色体交叉之后产生的子代个体,其基因位可能以很小的概率发生转变,这个过程称为变异。变异是为了增强种群的多样性,将搜索跳出局部最优解。
遗传算法的停止准则一般采用设定最大迭代次数或适应值函数评估次数,也可以是规定的搜索精度。
已Holland的基本GA为例介绍算法等具体实现,具体的执行过程描述如下:
Step 1: 初始化 。随机生成含有 个个体的初始种群 ,每个个体经过编码对应着待求解优化问题的一个初始解。
Step 2: 计算适应值 。个体 ,由指定的适应度函数评价其适应环境的能力。不同的问题,适应度函数的构造方式也不同。对函数优化问题,通常取目标函数作为适应度函数。
Step 3: 选择 。根据某种策略从当前种群中选择出 个个体作为重新繁殖的下一代群体。选择的依据通常是个体的适应度的高低,适应度高的个体相比适应度低的个体为下一代贡献一个或多个后代的概率更大。选择过程提现了达尔文“适者生存”原则。
Step 4: 遗传操作 。在选出的 个个体中,以事件给定的杂交概率 任意选择出两个个体进行 交叉运算 ,产生两个新的个体,重复此过程直到所有要求杂交的个体杂交完毕。根据预先设定的变异概率 在 个个体中选择出若干个体,按一定的策略对选出的个体进行 变异运算 。
Step 5: 检验算法等停止条件 。若满足,则停止算法的执行,将最优个体的染色体进行解码得到所需要的最优解,否则转到 Step 2 继续进行迭代过程。
⑻ 遗传算法
优化的算法有很多种,从最基本的梯度下降法到现在的一些启发式算法,如遗传算法(GA),差分演化算法(DE),粒子群算法(PSO)和人工蜂群算法(ABC)。
举一个例子,遗传算法和梯度下降:
梯度下降和遗传算法都是优化算法,而梯度下降只是其中最基础的那一个,它依靠梯度与方向导数的关系计算出最优值。遗传算法则是优化算法中的启发式算法中的一种,启发式算法的意思就是先需要提供至少一个初始可行解,然后在预定义的搜索空间高效搜索用以迭代地改进解,最后得到一个次优解或者满意解。遗传算法则是基于群体的启发式算法。
遗传算法和梯度下降的区别是:
1.梯度下降使用误差函数决定梯度下降的方向,遗传算法使用目标函数评估个体的适应度
2.梯度下降是有每一步都是基于学习率下降的并且大部分情况下都是朝着优化方向迭代更新,容易达到局部最优解出不来;而遗传算法是使用选择、交叉和变异因子迭代更新的,可以有效跳出局部最优解
3.遗传算法的值可以用二进制编码表示,也可以直接实数表示
遗传算法如何使用它的内在构造来算出 α 和 β :
主要讲一下选择、交叉和变异这一部分:
1.选择运算:将选择算子作用于群体。选择的目的是把优秀(适应值高)的个体直接遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。
2.交叉运算:将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。交叉算子是将种群中的个体两两分组,按一定概率和方式交换部分基因的操作。将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。例如:(根据概率选取50个个体,两两配对,交换x,y,比如之前两个是(x1,y1),(x2,y2),之后变成了(x1,y2),(x2,y1))
3.变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。(x2可能变为x2+δ,y1变为y1+δ)
种群P(t)经过选择、交叉、变异运算之后得到下一代种群P(t+1)。
遗传算法就是通过对大量的数据个体使用选择、交叉和变异方式来进化,寻找适合问题的最优解或者满意解。
遗传算法参数的用处和设置:
1.编码选择:通常使用二进制编码和浮点数编码,二进制适合精度要求不高、特征较少的情况。浮点数适合精度高、特征多的情况
2.种群:种群由个体组成,个体中的每个数字都代表一个特征,种群个体数量通常设置在40-60之间;迭代次数通常看情况定若计算时间较长可以在100内,否则1000以内都可以。
3.选择因子:通常有轮盘赌选择和锦标赛选择,轮盘赌博的特点是收敛速度较快,但优势个体会迅速繁殖,导致种群缺乏多样性。锦标赛选择的特点是群多样性较为丰富,同时保证了被选个体较优。
4.交叉因子:交叉方法有单点交叉和两点交叉等等,通常用两点交叉。交叉概率则选择在0.7-0.9。概率越低收敛越慢时间越长。交叉操作能够组合出新的个体,在串空间进行有效搜索,同时降低对种群有效模式的破坏概率。
5.变异因子:变异也有变异的方法和概率。方法有均匀变异和高斯变异等等;概率也可以设置成0.1。变异操作可以改善遗传算法的局部搜索能力,丰富种群多样性。
6.终止条件:1、完成了预先给定的进化代数;2、种群中的最优个体在连续若干代没有改进或平均适应度在连续若干代基本没有改进;3、所求问题最优值小于给定的阈值.
⑼ 如何提高matlab的GA工具箱(遗传算法)的运算精度
options.TolFun=1e-10