首页 理论教育 地下结构最优化:遗传算法实现技术

地下结构最优化:遗传算法实现技术

时间:2023-08-24 理论教育 版权反馈
【摘要】:遗传算法的实现涉及参数编码、初始群体、适应度函数、遗传操作和控制参数等五个要素的选择和设计。2)适应度函数定标在遗传算法中,群体中个体被选择参与竞争的机会与适应度有直接关系。由于遗传算法仅靠适应度来评估和引导搜索,所以求解问题所固有的约束条件不能明确地表示出来。

地下结构最优化:遗传算法实现技术

遗传算法的实现涉及参数编码、初始群体、适应度函数、遗传操作和控制参数等五个要素的选择和设计。每个要素对应不同的环境有相应的设计策略和方法,而不同的策略和方法决定了相应的遗传算法具有不同的性能或特征。

1.编码

遗传算法不能直接处理问题空间的参数,必须把这些参数转换成遗传空间的由基因按一定结构组成的染色体或个体,这一转换操作就成为编码。

大多数问题都可以采用基因呈一维排列的染色体表现形式,尤其是基于{0,1}符号集的二值编码形式。编码的策略或方法直接影响遗传操作特别是交叉操作的设计与功能。在很多情况下,编码形式也决定了交叉操作、编码策略和交叉策略是互为依存的。

在编码时,我们需要将问题空间转换为GA空间。问题空间是指表现型个体(有效的候选解)的集合,GA空间是指基因型个体(染色体)的集合。问题空间可以根据不同问题千变万化,而GA空间则常常是某个“标准”空间,例如由{0,

1}符号向量组成的集合。由问题空间向GA空间的映射(即由表现型向基因型的映射)成为编码(Coding),而由GA空间向问题空间的逆映射(即由基因型向表现型的逆映射)成为译码(Decoding)。

常用的编码技术有一维染色体编码、多参数映射编码和长度可变染色体编码。一维染色体编码是指问题空间的参数映射到GA空间后,其相应的基因呈一维排列构成染色体向量。一维染色体编码中最常用的符号集是二值符号集{0,1},基于此符号集的个体呈二值码串。染色体向量的每个位置成为基因座,每个位置上的符号成为基因。

优化问题求解中经常会碰到多参数优化问题。对这类问题,遗传算法常采用多参数映射编码。其基本思想是把每个参数先进行二值编码得到子串,再把这些子串连成一个完整的染色体。根据各参数不同的数量级或精度要求,相应的各子串可用不同的串长度。

在自然界生物进化过程中,染色体的长度并不总是固定不变的。为了融入这种机制,Goldberg(1989)提出了一种称为Messy GA(MGA)的编码方法,具有以下几个特点:染色体长度可变,允许过指定和欠指定以及基于切断和拼接操作的交叉处理。

2.群体设定

群体设定的主要问题是群体规模(群体中包含的个体数目)的设定。作为遗传算法的控制参数之一,群体规模和交叉概率、变异概率等参数一样,直接影响遗传算法效能。当群体规模n太小时,遗传算法的搜索空间中解的分布范围会受到限制,因此搜索有可能停止在未成熟阶段,引起未成熟收敛(Premature Convergence)现象。较大的群体规模可以保持群体的多样性,避免未成熟收敛现象,减少遗传算法陷入局部最优解的机会。但较大的群体规模意味着较高的计算成本。在实际应用中应当综合考虑这两个因素,选择适当的群体规模。初始群体的设定一般采用如下策略:

1)根据对问题的了解,设法把握最优解在整个问题空间中的可能分布范围,然后,在此范围内设定初始群体。

2)先随机生成一定数目的个体,然后从中挑出最好的个体加到初始群体中。重复这一过程,直到初始群体中个体数目达到预先确定的规模。

3.适应度函数

遗传算法的适应度函数不受连续可微的限制,其定义域可以是任意集合。对适应度函数的唯一硬性要求是,对给定的输入能够计算出可以用来比较的非负输出,以此作为选择操作的依据。适应度函数设计的准则包括目标函数映射成适应度函数、适应度函数定标以及考虑约束条件的适应度函数。

1)目标函数映射成适应度函数

一个常用的办法是把优化问题中的目标函数映射成适应度函数。在优化问题中,有些是求费用函数(代价函数)g(x)的最小值,有些是求效能函数(或利润函数)g(x)的最大值。由于在遗传算法中要根据适应度函数值计算选择概率,所以要求适应度函数的值取非负值时,可采用如下变换式:

式中,Cmin是一个适当选取的常熟,例如当前群体或前k代群体中g(x)的最小值。类似地,当求解问题本身是最小化问题时,可采用如下交换式:

式中,Cmax是一个适当选取的常数,例如当前群体或前k代群体中g(x)的最大值。(www.xing528.com)

2)适应度函数定标(Scaling)

在遗传算法中,群体中个体被选择参与竞争的机会与适应度有直接关系。在遗传进化初期,有时会出现一些超常个体。若按比例选择策略,则这些超常个体有可能因竞争力太突出而控制选择过程,在群体中占很大比例,导致未成熟收敛,影响算法的全局优化性能。此时,应设法降低这些超常个体的竞争能力,这可以通过缩小相应的适应度函数值来实现。另外,在遗传进化过程中(通常在进化迭代后期),虽然群体中个体多样性尚存在,但往往出现群体的平均适应度已接近最佳个体适应度的情形,在这种情况下,个体间竞争力减弱,最佳个体和其他大多数个体在选择过程中有几乎相等的选择机会,从而使有目标的优化过程趋于无目标的随机漫游过程。对于这种情形,应设法提高个体间竞争力,这可以通过放大相应的适应度函数值来实现。这种对适应度的缩放调整成为适应度定标。定标方式主要有线性定标、幂函数定标和指数定标。

3)适应度函数与约束条件

在实际应用中,许多优化问题都是带约束条件的。由于遗传算法仅靠适应度来评估和引导搜索,所以求解问题所固有的约束条件不能明确地表示出来。用遗传算法求解此类问题时,可采用一些自然的方法来处理约束条件。例如,在进化过程中,每迭代一次就检测一下新的个体是否违背了约束条件。如果没有违背,则作为有效个体保留;反之,则作为无效个体从群体中除去。这种处理方法对于弱约束(不等式约束)问题是有效的,但对于强约束(等式约束)问题则难以奏效,因为此时寻找一个有效个体的难度可能不亚于寻找最优个体。

一种常用的对策是在目标函数中引入惩罚函数。其基本思想是设法对个体违背约束条件的情况给予惩罚,并将此惩罚体现在适应函数设计中。这样,一个约束优化问题就转换为一个附带了惩罚项的无约束优化问题。

把惩罚函数加到适应度函数中的思想是简单而直观的。但是,惩罚函数值在约束边界处会发生急剧的变化,常常引起问题,要加以注意。用遗传算法求解约束问题的对策除了从适应度函数设计着手外,还可以在编码设计和遗传操作设计等方面采取一定的措施。

4.遗传操作

1)遗传操作包括以下三个基本遗传算子:选择算子、交叉算子和变异算子。

(1)选择算子。从群体中选择优质个体,淘汰劣质个体的操作称为选择。选择算子亦称为再生算子(Reproduction Operator)。选择操作建立在对群体中个体的适应度进行评估的基础上。适应度比例方法,最佳个体保留方法、期望值方法、排序选择方法、随机联赛选择方法及排挤方法是常用的选择方法。

(2)交叉算子。遗传算法中起核心作用的是遗传操作的交叉算子。交叉是指对两个父代个体的部分结构进行重组而生成新个体的操作。交叉算子的设计应与编码设计协调进行,使之满足交叉算子的评估准则,即交叉算子需保证前一代中优质个体的性状能在下一代的新个体中尽可能地得到遗传和继承。

对二值码来说,交叉算子包括两个基本内容:一是从由选择操作形成的配对库(Mating Pool)中,对个体随机配对,并按预先设定的交叉概率Pc决定是否需要交叉操作。二是设定配对个体的交叉点(Cross Site),并对配对个体在这些交叉点前后的部分结构进行交换。

(3)变异算子。变异算子的作用是改变群体中个体串的某些基因座上的基因值。对于由字符集{0,1}生成的二值码串来说,变异操作就是把基因座上的基因值取反。变异算子操作的步骤为:首先在群体中所有个体的码串范围内随机地确定基因座,然后按预先设定的变异概率Pm对这些基因座的基因值进行变异。

遗传算法引入变异算子的目的,一是使算法具有局部随机搜索的能力,二是维持群体多样性。当遗传算法通过交叉算子的作用已接近最优解邻域时,利用变异算子的局部随机搜索能力可以加速向最优解收敛。显然,此时变异概率应取较小值,否则接近最优解的积木块会因变异而遭到破坏。

在遗传算法中,交叉算子因其全局搜搜能力而作为主要算子,变异算子因其局部搜索能力而作为辅助算子。遗传算法通过交叉和变异这一对既相互配合又相互竞争的操作而使其具备兼顾全局和局部的均衡搜索能力。当群体在进化中陷入搜索空间中某个超平面而仅靠交叉不能摆脱时,通过变异操作可有助于这种摆脱。而当通过交叉操作,算法已形成所期望的积木块时,变异操作又有可能破坏这些积木块。如何有效地配合使用交叉和变异操作,是提高遗传算法效能的一个重要研究课题。基本变异算子、逆转算子和自适应变异算子是遗传操作的常用方法。

2)这三类基本遗传算子有如下特点:

(1)它们都是随机化操作。因此,群体中个体向最优解迁移的规则和过程是随机的。需要指出,这种随机化操作和传统的随机搜索方法是有区别的。遗传操作进行的是高效有向的搜索,不同于一般随机搜索方法所进行的无向搜索。

(2)遗传操作的效果除了与编码方法、群体规模、初始群体以及适应度函数的设定有关外,还与上述三个遗传算子所取的操作概率密切相关。

(3)三个遗传算子的操作方法随具体求解问题的不同而异,也与个体的编码方式直接相关。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈