导航:首页 > 源码编译 > 遗传算法种群规模越小越好

遗传算法种群规模越小越好

发布时间:2022-04-01 12:26:46

A. 我用VB做遗传算法字符串学习,每个基因的适应度应该越来越大,可是却一直变小,不知道为什么

没有全部代码,无法测试,无法解析。所以,不知道在什么地方补充什么方面的代码

B. 基因遗传算法中,利用适应度函数表示参数值的大小,个体是否应该被淘汰

适应度用于评价个体的优劣程度,适应度越大个体越好,反之适应度越小则个体越差;根据适应度的大小对个体进行选择,以保证适应性能好的个体有更多的机会繁殖后代,使优良特性得以遗传。因此,遗传算法要求适应度函数值必须是非负数,而在许多实际问题中,求解的目标通常是费用最小,而不是效益最大,因此需要将求最小的目标根据适应度函数非负原则转换为求最大目标的形式。

C. 基本的遗传算法

在许多实际应用领域,无论是工程技术科学还是社会经济科学中,都会遇到全局最优化问题[53,56~59,61],这一类问题大多数可以形式化为一个对(S,f)的寻优问题,其中 S⊂R n 是 R n 中的有界集,f∶S→R是 n 维实值函数。所要求解的问题就是要找到一点 x best∈S,使得 f(xbest)是 S 上的全局最优解,可以是极大值或极小值。以极小值为例,即求一点 x min∈S,满足

含水层参数识别方法

尽管人们对这类问题进行了大量的研究,但得到的成绩仍不能令人满意,目前只能解决一些简单的问题。对于更复杂的全局最优化问题,通常是利用数值解法,但许多数值解法都不能找到最优解,只是返回一个接近于全局最优的值。

全局最优化数值方法可以分为两大类:确定性算法和随机算法。在随机算法中,最优化步骤在一定程度上依赖于概率事件,它排除了确定性算法中的一个最大障碍——预先详细说明一个问题的全部特征并针对问题的特征决定算法应采用的对策。与常规的优化算法相比,遗传算法有可能在更大的范围内探寻问题潜在的解。确定性算法没有用到概率信息。只有当对S上进行穷举搜索及对f规定附加的假设条件下,算法才能找到全局最优解。实行穷举搜索在很多情况下(如实数解)是不可能的,因此多采用对f规定附加的假设条件,这必然影响到最终解的可靠性。在这些算法中,搜索速度越快的算法往往意味着需要对f做更多的假设,或者不能保证搜索成功。与此相对照,许多随机算法都可以证明在概率意义下渐近收敛到全局最优解,即这些算法保证以概率1渐近收敛,而且随机算法的计算结果一般要优于那些确定性算法的结果。遗传算法就是其中具有代表性的随机算法。

常用的遗传算法操作有选择(Selection)、交叉(Crossover)、变异(Mutation)。复制是直接将个体的代码进行拷贝形成新个体。下面就选择、交叉与变异操作做一介绍。

7.3.1 选择过程

选择过程是以旋转赌轮Pop-Size次(种群规模,即群体中个体的总个数)为基础,每次旋转都为新的种群选择一个染色体。首先计算出个体i被选择的概率Pi,优秀的染色体其选择概率大,然后根据选择概率的大小将一个圆盘分为Pop-Size个扇形,每个扇形的中心角的大小为2πPi

每次进行选择时,先选择赌轮边界旁一个不动的参考点,赌轮随机地转动,若不动点停留在扇形j内,则选择个体j。个体的适应值越大,被选择的概率越大,从而其染色体被遗传到下一代的概率越大。

赌轮式选择的特点是对于种群内的所有个体,无论其适应值大小,都有被选择的机会。适应值大的个体被选择的概率大,适应值小的个体被选择的概率小。经过选择后适应值大的个体在种群中的数目会增加。这正体现了适者生存的原则。

7.3.2 交叉操作

交叉操作是个有组织的、随机的字符串间的信息交换过程。假设群体G(t)是模式库。历史信息以每个模式实例数目的形式存储于G(t)中。交叉作用产生模式库中已有模式的新的实例,同时也产生新的模式。简单的交叉操作分为三步:

(1)从当前群体G(t)中选择两个个体结构:A=a1a2…an,B=b1b2…bn

(2)以交叉概率 Pc 随机选择一个整数 x∈{1,2,…,n};

(3)交换A和B中位置x右边的元素,产生两个新的个体结构:a1a2…axbx+1…bn和b1b2…bxax+1…an

7.3.3 变异操作

对于群体G(t)中的每个个体A=a1a2…an,简单的变异操作过程如下:

1)每个位置的字符变量都有一个变异概率Pm,各位置互相独立,通过随机过程选择发生变异的位置x1,x2,…,xn

2)产生一个新个体结构 B=a1 a2……an ,其中是从对应位置x 1 的字符变量的值域中随机选择的一个取值。类似地,,…,可以同样得到。

如果每个位置的变异概率等于Pm,那么模式H(阶为o(H))发生一次或多次变异的概率是

含水层参数识别方法

遗传操作除了有选择、交叉、变异等算子外,还有染色体内部复制(Intrachromo-somal plication)、删除、易位(Translocation)、分异(Segregation)等。

D. 遗传算法

遗传算法是从代表问题可能潜在解集的一个种群开始的,而一个种群则由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因的组合,它决定了个体形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码。初始种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解。在每一代,根据问题域中个体的适应度(fitness)大小挑选(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。这个过程将导致种群自然进化一样的后生代种群比前代更加适应环境,末代种群中的最优个体经过编码(decoding),可以作为问题近似最优解。

5.4.1 非线性优化与模型编码

假定有一组未知参量

xi(i=1,2,…,M)

构成模型向量m,它的非线性目标函数为Φ(m)。根据先验知识,对每个未知量都有上下界αi及bi,即αi≤x≤bi,同时可用间隔di把它离散化,使

di=(bii)/N (5.4.1)

于是,所有允许的模型m将被限制在集

xii+jdi(j=0,1,…,N) (5.4.2)

之内。

通常目标泛函(如经济学中的成本函数)表示观测函数与某种期望模型的失拟,因此非线性优化问题即为在上述限制的模型中求使Φ(m)极小的模型。对少数要求拟合最佳的问题,求目标函数的极大与失拟函数求极小是一致的。对于地球物理问题,通常要进行杀重离散化。首先,地球模型一般用连续函数表示,反演时要离散化为参数集才能用于计算。有时,也将未知函数展开成已知基函数的集,用其系数作为离散化的参数集xi,第二次离散化的需要是因为每一个未知参数在其变化范围内再次被离散化,以使离散模型空间最终包含着有限个非线性优化可选择的模型,其个数为

地球物理数据处理教程

其中M为未知参数xi的个数。由此式可见,K决定于每个参数离散化的间隔di及其变化范围(αi,bi),在大多数情况下它们只能靠先验知识来选择。

一般而言,优化问题非线性化的程度越高,逐次线性化的方法越不稳定,而对蒙特卡洛法却没有影响,因为此法从有限模型空间中随机地挑选新模型并计算其目标函数 Φ(m)。遗传算法与此不同的是同时计算一组模型(开始时是随机地选择的),然后把它进行二进制编码,并通过繁殖、杂交和变异产生一组新模型进一步有限的模型空间搜索。编码的方法可有多种,下面举最简单的例说明之,对于有符号的地球物理参数反演时的编码方式一般要更复杂些。

假设地球为有三个水平层的层次模型,含层底界面深度hj(j=1,2,3)及层速度vj(j=1,2,3)这两组参数。如某个模型的参数值为(十进制):

h1=6,h2=18,h3=28,单位为10m

v1=6,v2=18,v3=28,单位为 hm/s

按正常的二进制编码法它们可分别用以下字符串表示为:

地球物理数据处理教程

为了减少字节,这种编码方式改变了惯用的单位制,只是按精度要求(深度为10m,波速为hm/s)来规定参数的码值,同时也意味着模型空间离散化间距di都规格化为一个单位(即10m,或hm/s)。当然,在此编码的基础上,还可以写出多种新的编码字符串。例如,三参数值的对应字节顺序重排,就可组成以下新的二进制码串:

地球物理数据处理教程

模型参数的二进制编码是一种数学上的抽象,通过编码把具体的非线性问题和生物演化过程联系了起来,因为这时形成的编码字符串就相当于一组遗传基因的密码。不仅是二进制编码,十进制编码也可直接用于遗传算法。根据生物系统传代过程的规律,这些基因信息将在繁殖中传到下一带,而下一代将按照“适者生存”的原则决定种属的发展和消亡,而优化准则或目标函数就起到了决定“适者生存”的作用,即保留失拟较小的新模型,而放弃失拟大的模型。在传带过程中用编码表示的基因部分地交合和变异,即字符串中的一些子串被保留,有的改变,以使传代的过程向优化的目标演化。总的来说,遗传算法可分为三步:繁殖、杂交和变异。其具体实现过程见图5.8。

图5.8 遗传算法实现过程

5.4.2 遗传算法在地震反演中的应用

以地震走时反演为例,根据最小二乘准则使合成记录与实测数据的拟合差取极小,目标函数可取为

地球物理数据处理教程

式中:Ti,0为观测资料中提取出的地震走时;Ti,s为合成地震或射线追踪算出的地震走时;ΔT为所有合成地震走时的平均值;NA为合成地震数据的个数,它可以少于实测Ti,0的个数,因为在射线追踪时有阴影区存在,不一定能算出合成数据Tj,0。利用射线追踪计算走时的方法很多,参见上一章。对于少数几个波速为常数的水平层,走时反演的参数编码方法可参照上一节介绍的分别对深度和速度编码方法,二进制码的字符串位数1不会太大。要注意的是由深度定出的字符串符合数值由浅到深增大的规律,这一约束条件不应在杂交和传代过程中破坏。这种不等式的约束(h1<h2<h3…)在遗传算法中是容易实现的。

对于波场反演,较方便的做法是将地球介质作等间距的划分。例如,将水平层状介质细分为100个等厚度的水平层。在上地壳可假定波速小于6400 m/s(相当于解空间的硬约束),而波速空间距为100m/s,则可将波速用100m/s为单位,每层用6位二进制字符串表示波速,地层模型总共用600位二进制字符串表示(l=600)。初始模型可随机地选取24~192个,然后通过繁殖杂交与变异。杂交概率在0.5~1.0之间,变异概率小于0.01。目标函数(即失拟方程)在频率域可表示为

地球物理数据处理教程

式中:P0(ωk,vj)为实测地震道的频谱;ωk为角频率;vj为第j层的波速;Ps(ωk,vj)为相应的合成地震道;A(ωk)为地震仪及检波器的频率滤波器,例如,可取

A(ω)=sinC4(ω/ωN) (5.4.6)

式中ωN为Nyquist频率,即ωN=π/Δt,Δt为时间采样率。参数C为振幅拟合因子,它起到合成与观测记录之间幅度上匹配的作用。C的计算常用地震道的包络函数的平均比值。例如,设E[]为波动信号的包络函数,可令

地球物理数据处理教程

式中:tmax为包络极大值的对应时间;J为总层数。包络函数可通过复数道的模拟取得。

用遗传算法作波速反演时失拟最小的模型将一直保存到迭代停止。什么时候停止传代还没有理论上可计算的好办法,一般要显示解空间的搜索范围及局部密度,以此来判断是否可以停止传代。值得指出的是,由(5.4.4)和(5.4.5)式给出的目标函数对于有误差的数据是有问题的,反演的目标不是追求对有误差数据的完美拟合,而是要求出准确而且分辨率最高的解估计。

遗传算法在执行中可能出现两类问题。其一称为“早熟”问题,即在传代之初就随机地选中了比较好的模型,它在传代中起主导作用,而使其后的计算因散不开而白白浪费。通常,增加Q值可以改善这种情况。另一类问题正相反,即传相当多代后仍然找不到一个特别好的解估计,即可能有几百个算出的目标函数值都大同小异。这时,最好修改目标函数的比例因子(即(5.4.5)式的分母),以使繁殖概率Ps的变化范围加大。

对于高维地震模型的反演,由于参数太多,相应的模型字符串太长,目前用遗传算法作反演的计算成本还嫌太高。实际上,为了加快计算,不仅要改进反演技巧和传代的控制技术,而且还要大幅度提高正演计算的速度,避免对遗传算法大量的计算花费在正演合成上。

E. 遗传算法的优缺点

优点:

1、遗传算法是以决策变量的编码作为运算对象,可以直接对集合、序列、矩阵、树、图等结构对象进行操作。这样的方式一方面有助于模拟生物的基因、染色体和遗传进化的过程,方便遗传操作算子的运用。

另一方面也使得遗传算法具有广泛的应用领域,如函数优化、生产调度、自动控制、图像处理、机器学习、数据挖掘等领域。

2、遗传算法直接以目标函数值作为搜索信息。它仅仅使用适应度函数值来度量个体的优良程度,不涉及目标函数值求导求微分的过程。因为在现实中很多目标函数是很难求导的,甚至是不存在导数的,所以这一点也使得遗传算法显示出高度的优越性。

3、遗传算法具有群体搜索的特性。它的搜索过程是从一个具有多个个体的初始群体P(0)开始的,一方面可以有效地避免搜索一些不必搜索的点。

另一方面由于传统的单点搜索方法在对多峰分布的搜索空间进行搜索时很容易陷入局部某个单峰的极值点,而遗传算法的群体搜索特性却可以避免这样的问题,因而可以体现出遗传算法的并行化和较好的全局搜索性。

4、遗传算法基于概率规则,而不是确定性规则。这使得搜索更为灵活,参数对其搜索效果的影响也尽可能的小。

5、遗传算法具有可扩展性,易于与其他技术混合使用。以上几点便是遗传算法作为优化算法所具备的优点。

缺点:

1、遗传算法在进行编码时容易出现不规范不准确的问题。

2、由于单一的遗传算法编码不能全面将优化问题的约束表示出来,因此需要考虑对不可行解采用阈值,进而增加了工作量和求解时间。

3、遗传算法效率通常低于其他传统的优化方法。

4、遗传算法容易出现过早收敛的问题。

(5)遗传算法种群规模越小越好扩展阅读

遗传算法的机理相对复杂,在Matlab中已经由封装好的工具箱命令,通过调用就能够十分方便的使用遗传算法。

函数ga:[x, fval,reason]= ga(@fitnessfun, nvars, options)x是最优解,fval是最优值,@fitnessness是目标函数,nvars是自变量个数,options是其他属性设置。系统默认求最小值,所以在求最大值时应在写函数文档时加负号。

为了设置options,需要用到下面这个函数:options=gaoptimset('PropertyName1', 'PropertyValue1', 'PropertyName2', 'PropertyValue2','PropertyName3', 'PropertyValue3', ...)通过这个函数就能够实现对部分遗传算法的参数的设置。

F. 遗传算法是不是种群规模选取越大,全局最优解越好!

种群规模是指任意一代中的个体总数,这个是人为设定的,种群规模越大越可能找到全局解,但运行时间也相对较长,一般在40-100之间取值,像我就习惯选60.
至于你所处理的问题,可以对比不同的种群规模下最优解和运行时间,然后折衷取。

G. 遗传算法中种群规模和个体个数的区别

种群规模就是个体总数,没有区别。

H. 遗传算法迭代次数比较小比如10,是不是比较不会陷入局部

在优化问题本身是凸优化问题的情况下,局部最优等于全局最优。在非凸优化的情况下,理论上是无法保证找到全局最优解的,但是可以通过例如改变初始值等方法找到尽量接近全局最优解的局部最优解。

I. 神经网络,隐含层节点数越多,遗传算法适应函数越小!这是怎么回事

1.为什么神经网络还要用遗传算法啊?为什么不是反向传播?隐含层节点的数目理论上是超参数,针对不同问题,不同数目的隐含层效果都不一样,一般还是得试错法。
2.如果最后一定要用遗传算法,那隐含层节点就组成你用来进行各种交叉、变异操作的权重(基因)向量。那这个向量的长度取决于你的目标函数,目标函数中你挑选出来的带权重的特征(已知的输入)的数目,就是权重向量的多少,这东西不能自己随便变。
3.写到这我突然明白了,你是找不到目标函数中的特征,想用神经网络提高维特征,然后再用遗传算法找这些特征的权重吗?既然特征的多少(即隐含层节点的数目)你是未知的,那同1,和普通的神经网络一样,对于不同的问题节点的数目是超参数,你只能通过实验法确定了。既然你试出来节点很高时适应度函数低,那就减少节点数目吧。
节点多,按照我的理解,最后可能可以更精确,但在一开始并不容易找到最优解的方向(也许永远找不到)。问题并不复杂就减少节点数目吧,节点太多也会过拟合。

阅读全文

与遗传算法种群规模越小越好相关的资料

热点内容
三洋空调压缩机参数 浏览:196
加密猫背后的故事 浏览:247
陕西不听命令 浏览:368
怎么把皮皮虾app表情弄到微信 浏览:291
安卓编译springboot 浏览:396
手机壁纸文件夹背景 浏览:792
target目录禁止编译 浏览:804
php打开html页面 浏览:616
python加密mp4 浏览:898
吃鸡如何把安卓平板亮度变亮 浏览:5
python中concatenate 浏览:37
程序员银行用的技术老旧 浏览:848
航天器控制算法软件 浏览:520
游戏不同的服务器有什么区别 浏览:73
jar线上编译 浏览:117
程序员论坛代码被怼 浏览:998
win7文件夹选项注册表 浏览:787
中央编译局常艳博士照片 浏览:308
濡沫江湖安卓怎么下载 浏览:956
陕西省电信dns服务器云服务器 浏览:828