非线性遗传算法
‘壹’ 神经网络遗传算法函数极值寻优
对于未知的非线性函数,仅通过函数的输入输出数据难以准确寻找函数极值。这类问题可以通过神经网络结合遗传算法求解,利用神经网络的非线性拟合能力和遗传算法的非线性寻优能力寻找函数极值。本文用神经网络遗传算法寻优如下非线性函数极值,函数表达式为
函数图形如下图1所示。
从函数方程和图形可以看出,该函数的全局最小值为0,对应的坐标为(0,0)。虽然从函数方程和图形中很容易找出函数极值及极值对应坐标,但是在函数方程未知的情况下函数极值及极值对应坐标就很难找到。
神经网络遗传算法函数极值寻优主要分为BP神经网络训练拟合和遗传算法极值寻优两步,算法流程如下图2所示。
神经网络训练拟合根据寻优函数的特点构建合适的BP神经网络,用非线性函数的输出数据训练BP网络,训练后的BP神经网络就可以预测函数输出。遗传算法极值寻优把训练后的BP神经网络预测结果作为个体适应度值,通过选择、交叉和变异操作寻找函数的全局最优值及对应输入值。
本文根据非线性函数有2个输入参数、1个输出参数,确定BP神经网络结构为2-5-1.取函数的4 000组输入输出数据,从中随机选取3 900组数据训练网络,100组数据测试网络性能,网络训练好后用于预测非线性函数输出。
遗传算法中个体采用实数编码,由于寻优函数只有2个输入参数,所以个体长度为2。个体适应度值为BP神经网络预测值,适应度值越小。交叉概率为0.4,变异概率为0.2。
用函数输入输出数据训练BP神经网络,使训练后的网络能够拟合非线性函数输出,保存训练好的网络用语计算个体适应度值。根据非线性函数方程随机得到该函数的4 000组输入输出数据,存储于data.mat中,其中input为函数输入数据,output为函数对应输出数据,从中随机抽取3 900组训练数据训练网络,100组测试数据测试网络拟合性能。最后保存训练好的网络。
把训练好的BP神经网络预测输出作为个体适应度值。
BP神经网络拟合结果分析
本文中个体的适应度值为BP神经网络预测值,因此BP神经网络预测精度对于最优位置的寻找具有非常重要的意义。由于寻优非线性函数有2个输入参数、1个输出参数,所以构建的BP神经网络的结构为2-5-1。共取非线性函数4 000组输入输出数据,从中随机选择3 900组数据训练BP神经网络,100组数据作为测试数据测试BP神经网络拟合性能,BP神经网络预测输出和期望输出对比如下图3所示。
从BP神经网络预测结果可以看出,BP神经网络可以准确预测非线性函数输出,可以把网络预测近似看成函数实际输出。
遗传算法寻优结果分析 BP神经网络训练结束后,可以利用遗传算法寻找该非线性函数的最小值。遗传算法的迭代次数是100次,种群规模是20,交叉概率为0.4,变异概率为0.2,采用浮点数编码,个体长度为21,优化过程中最优个体适应度值变化曲线如下图4所示。
本文所使用的方法有比较重要的工程应用价值,比如对于某项试验来说,试验目的是获取到最大试验结果对应的实验条件,但是由于时间和经费限制,该试验只能进行有限次,可能单靠试验结果找不到最优的试验条件。这时可以在已知试验数据的基础上,通过本文介绍的神经网络遗传算法寻找最优试验条件。
思路就是先根据试验条件数和试验结果数确定BP神经网络结构;然后把试验条件作为输入数据,试验结果作为输出数据训练BP网络,使得训练后的网络可以预测一定试验条件下的试验结果;最后把试验条件作为遗传算法中的种群个体,把网络预测的试验结果作为个体适应度值,通过遗传算法推导最优试验结果及其对应试验条件。
‘贰’ 遗传算法
遗传算法是从代表问题可能潜在解集的一个种群开始的,而一个种群则由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因的组合,它决定了个体形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码。初始种群产生之后,按照适者生存和优胜劣汰的原理,逐代(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=(bi-αi)/N (5.4.1)
于是,所有允许的模型m将被限制在集
xi=αi+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的变化范围加大。
对于高维地震模型的反演,由于参数太多,相应的模型字符串太长,目前用遗传算法作反演的计算成本还嫌太高。实际上,为了加快计算,不仅要改进反演技巧和传代的控制技术,而且还要大幅度提高正演计算的速度,避免对遗传算法大量的计算花费在正演合成上。
‘叁’ 遗传算法有哪些应用
遗传算法的搜索策略和优化搜索方法是不依附于梯度信息及其它的辅助知识,而只需要影响搜索方向的目标函数和相应的适应度函数,所以遗传算法提供了一种求解复杂系统问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以广泛应用于许多科学。遗传算法的应用领域有很多,下面针对一些主要的应用领域做简单的介绍。
1.函数优化:该领域是遗传算法得以应用的经典领域,同时它也是遗传算法进行性能评价的常用算例,许多人构造出了各种各样复杂形式的测试函数:连续函数和离散函数、凸函数和凹函数、低维函数和高维函数、单峰函数和多峰函数等。对于函数优化问题,如一些非线性、多模型、多目标等函数问题用遗传算法很容易得到较好的结果,而用其他算法则较难。
2.组合优化:由于组合优化问题的搜索空间在不断地增大,有时用枚举法很难得到最优解。对这类复杂的问题,人们已经意识到应把主要精力放在寻求满意解上,而遗传算法是寻求这种满意解的最佳工具之一。实践证明,遗传算法对于组合优化中的NP问题非常有效。比如,在旅行商问题、装箱问题及图形划分等问题上,已经成功得以应用了遗传算法。
‘肆’ 遗传算法1——ga与fmincon求解非线性规划模型的对比
题目:
一、ga求解模型
[x,fval]=ga(@fitnessfun,nvars,A,b,Aeq,beq,lb,ub,@nonlcon,options)
二、fmincon求解模型
x = fmincon(@fitnessfun,x0,A,b,Aeq,beq,lb,ub,@nonlcon,options)
ga函数中包含nvars(适应度函数的独立变量个数),而 fmincon 函数 中需要变量初值x0,这是二者的不同之处。
三、结果对比
总之,遗传算法适用于求解非标准算法无法求解的问题,即目标函数不连续、不可微、随机或高度非线性的问题。 当然, 用 遗传 算法去求解相 对简单的问题 有助于 理解 其具体原理,相对于研究复杂问题,较简单的问题同样可以用于学习遗传算法。
‘伍’ 非线性解析反演与遗传算法的结合反演方法
周辉
(青岛海洋大学海洋地球科学学院,青岛266003)
何樵登
(长春地质学院地球物理系,长春130026)
摘要各向异性介质参数反演通常为非线性优化问题。非线性反演方法可以分为两大类:随机搜索方法,如Monte Carlo法、模拟退火和遗传算法及基于非线性最小平方理论的非线性解析反演方法。遗传算法能寻找到全局最优解,但它为一种较费时的方法。非线性解析反演方法能给出一个与初始模型有关的局部最优解。然而,这种方法具有较快的收敛速度。遗传算法与非线性解析反演方法相结合的反演方法利用这两种反演方法的优点而克服其缺点。因此,结合反演方法既能快速收敛,又能寻找到全局最优解。如何合理地将遗传算法和非线性解析反演方法结合是十分重要的。本文提出一种结合方案,即在连续若干次遗传算法迭代后作一次非线性解析反演。理论算例表明结合反演方法具有上述特点。
关键词遗传算法非线性解析反演非线性结合反演各向异性介质
1引言
遗传算法为随机搜索类方法之一,它以概率论为理论基础,用于求解多极值复杂优化问题[9]。遗传算法不要求已知模型空间中后验概率密度的形状并能广泛搜索模型空间。遗传算法模拟自然选择和遗传规律,并遵循适者生存的原则。
遗传算法由Holland在1975年提出[4]。Berg首先将遗传算法应用于地球物理优化问题[1]。Stoffa等系统地研究了种群大小、交叉概率、选择概率和变异概率对多参数优化问题收敛性和收敛速度的影响[11]。Sen等讨论了在选择概率中引入温度参数的作用并提出一些退火方案[10]。周辉等则研究了目标函数与收敛速度和解的精度的关系[16]。
基于最小平方优化理论的非线性反演方法是两大类反演方法之一。当给定的初始模型位于目标函数全局最优解所在的峰谷附近时,这种下降类方法能给出正确解而与初始模型位置无关。下降类算法研究得较深入,应用较广。
Tarantola提出一种基于广义最小二乘法的多维多偏移距声波地震波形解释的一般性非线性地震波形反演方法[12]。随后,Tarantola将该理论推广于各向同性介质的弹性波反演[13]。Gauthier等用理论数据验证了Tarantola提出的方法的正确性[2]。稍后,Tarantola研究非线性解析法反射波弹性反演的策略,指出以纵横波的波阻抗和密度作为反演参数,才尽可能使反演参数之间相互独立[14]。Pan用τ—P变换研究层状声学介质中平面波地震记录非线性解析反演的理论和可行性[6]。为了更多地利用地震数据中的信息,包括VSP资料中反射和转换信息,Mora作了一些工作[5]。当仅用反射数据时反演主要解决引起反射的P波和S波的波阻抗突变。当利用转换数据时,则能分辨大尺度的P波和S波速度变化。Sambridge等改进了修改模型的方法[8]。在子空间中,可同时得到P波、S波波阻抗和密度。周辉等将非线性梯度反演方法推广于多维、多道、多分量任意弹性各向异性介质参数的反演[17]。
非线性解析反演方法和遗传算法结合的反演方法利用非线性解析反演和遗传算法的优点,克服它们的缺点。因此,结合反演方法不仅能搜索到全局最优解,而且能较快地收敛。Porsani等在遗传算法和广义线性反演方法相结合方面作了一些研究[7]。
本文讨论各向异性介质的非线性解析反演方法和遗传算法与非线性解析反演方法相结合的结合反演方法[17]。对于遗传算法读者可参考遗传算法的相关文献[3,9~11]。
2各向异性介质参数非线性解析反演方法
2.1共轭梯度法
反演的目的是利用地面或井中测得的位移场ui(xr,t)求取地下介质密度分布ρ(x)和弹性参数分布Cijkl(x)。ρ(x)、Cijkl(x)称为模型参数。x为研究介质中或边界上任一点,x=(x1,x2,x3),xr为接收点。反演的目标是使目标函数
岩石圈构造和深部作用
取极小值。其中Cd、Cm分别为数据(波场)和模型参数的协方差算子。m0为先验模型参数,m为反演过程中求得的模型参数。由于模型参数有多个,故用向量表示。ucal为给定m的波动方程正演记录,uobs为观测波场,上角标t表示转置。地震记录u和模型参数m之间的函数关系为
岩石圈构造和深部作用
g为非线性算子,(2)式为波动方程的算子形式。记第n次迭代时的模型参数为mn,则有
岩石圈构造和深部作用
及共轭梯度法的迭代公式[15]
岩石圈构造和深部作用
其中Gn为g对mn的Frechet导数,ηn为一常数,可由多种方法计算[5,8]。
梯度
式(4)为梯度反演方法的基本公式。当该公式中的每一量都已知时,迭代就可进行。在这些变量中,最关键的是梯度向量。
2.2目标函数
在最小二乘理论中,权函数是协方差算子逆的核。假设数据集中的误差是不相关的,它仅取决于时间或源和接收器的位置,那么有[14]
岩石圈构造和深部作用
其中σ为数据的均方差。
2.3各向异性介质中的弹性波动方程
令fi(x,t;xs)是第s次激发的内体力密度,Ti(x,t;xs)是地球表面S的应力矢量分量,ni(x)是表面的单位法向分量。那么与第s次激发相应的位移由以下微分方程组给出[15]
岩石圈构造和深部作用
2.4梯度向量
式(4)中梯度向量的分量为[17]
岩石圈构造和深部作用
其中,T为地震记录的长度,
岩石圈构造和深部作用
其中,t∈[T,0],
3结合反演方法
3.1遗传算法和非线性解析反演方法的优缺点
遗传算法是利用概率论来求解多极值复杂优化问题的一种随机搜索方法,由一组随机选取的模型开始,不需要更多的先验信息,广泛而有效地对模型空间的最优部分采样。尽管遗传算法是基于自然选择、遗传规律,搜索模型空间的最优部分而求得最优解,但它是一种计算量很大的方法。由于地震模型空间大,用全局最优化方法估计各向异性介质参数的地震波形反演十分费时。
目标函数的梯度信息是非线性解析反演方法修改模型参数的依据,它能给出一个接近初始模型的一个局部最优解。如果初始模型选择得合适,即当初始模型处在全局最优解所在的目标函数低谷时,非线性解析反演方法能收敛于全局最优解。然而,恰好给出一个接近全局最优解的初始模型的概率是非常小的,尤其对没有模型参数的任何先验信息的情况。但应强调的是,非线性解析反演方法具有较快的收敛速度。
发挥非线性解析反演方法快速收敛和遗传算法能搜索到全局最优解的优点,而克服前者仅能寻找到局部最优解和后者运算量大的缺点是很有意义的。非线性解析反演方法和遗传算法相结合的反演方法可达到上述目的。在结合反演方法中,遗传算法的作用是提供接近全局最优解的模型,非线性解析反演的作用是尽快求出全局最优解。因此,结合反演方法具有搜索到全局最优解的能力和比遗传算法收敛速度快的特点。
3.2结合方案
遗传算法在优化过程中连续不断地搜索整个模型空间。在每次迭代结束后,得到一个本代的最优模型。根据遗传算法的数学原理[3],最优模型的数量在下一代中得以增加,同时经交叉和变异作用又有新的模型产生。在下一代种群中,最优模型可能与前一代的相同,也有可能劣于前一代的最优模型。所有这些最优模型可能在目标函数的同一低谷处,也有可能在其它低谷处。遗传算法寻找最优模型要经过多次迭代才能确定一个极值。遗传算法的随机性导致遗传算法是一种费时的方法。然而正是遗传算法的这种随机性保证了它能搜索到全局最优解。
如果将每次遗传算法迭代的最优解作为非线性解析反演的初始模型,非线性解析反演可以找出与初始模型毗邻的局部最优解。由于非线性解析反演是一种确定性的方法,它按目标函数的梯度方向修改模型,所以非线性解析反演方法只需几次迭代即可收敛。非线性解析反演求得的解是否为全局最优解,非线性解析反演方法本身是无法得以保证的。只有当遗传算法提供接近全局最优解的初始模型时,非线性解析方法反演才能收敛到全局最优解。
结合反演方法中遗传算法和非线性解析反演方法的匹配方式是十分重要的。非线性解析反演方法得到接近遗传算法提供的初始模型的局部最优解后,在以后若干代中因遗传算法的随机性而使其最优解与该局部最优解相同。如果每次遗传算法迭代后作非线性解析反演,那么结合反演的结果在几代内都是相同的。显然其中的一些非线性解析反演是没有必要的。因此,结合方式应为在连续多次遗传算法迭代后作一次非线性解析反演,然后将非线性解析反演的结果作为下一代种群中的一个母本模型。图1为结合反演的框图。
图1结合反演框图
4算例
为了验证结合反演方法的优越性,对一维多层横向各向同性介质参数的反演理论实例作了分析。
图2是目标函数值与迭代次数的关系图。在该结合反演算例中每次遗传算法迭代后就作一次非线性解析反演迭代。结合反演的误差在开始几次迭代中下降很快,尤其在前3次。结合反演方法在第10次迭代达到的较小误差,遗传算法在第42次迭代才达到。结合反演的误差比遗传算法的跳跃得严重。这是因为非线性解析反演得到的模型在遗传算法中作为母代参加繁衍。这个模型因遗传算法的随机性常常被新的模型替代。这两个模型可能位于目标函数两个不同的低谷中,因此非线性解析反演的结果不同。
尽管结合反演的目标函数有些振荡,但也存在连续几次迭代目标函数几乎不变的现象。这意味着这几次迭代的最优模型是很接近的。在这种情况下非线性解析反演不能提供较大的改进。所以,此时的非线性解析反演是没有必要的,否则只能增加计算量。
图2结合反演(实线)和遗传算法(虚线)的误差与迭代次数的关系
结合反演中每次遗传算法迭代后作一次非线性解析反演迭代
图3是另一个例子。在该结合反演例子中,每五次遗传算法迭代作一次非线性解析反演。在这里遗传算法占主要地位。此时结合反演的误差函数明显比遗传算法的小。结合反演的误差在第5次迭代末突然下降,并在第10次迭代时的小误差,遗传算法在42代才达到。遗传算法始终没有到达结合反演的最小误差。结合反演的误差在后期迭代过程中平稳下降,这是遗传算法占主导地位的原因。
从该例可知,若遗传算法与非线性解析反演方法比较合理地结合,结合反演方法比遗传算法具有快得多的收敛速度。
5结论
非线性结合反演方法扬遗传算法和非线性解析反演方法之长,抑其之短,它是一种具有较快收敛速度的全局反演方法。
在结合反演中遗传算法和非线性解析反演方法的结合方式是重要的。从算例可得出,五次遗传算法迭代后作一次非线性解析反演的结合反演的效果明显优于每次遗传算法迭代后都作非线性解析反演的结合反演的效果。但是在结合反演中连续作多少次遗传算法迭代及连续迭代次数在整个迭代过程中的可变性还有待于进一步研究。
图3结合反演(实线)和遗传算法(虚线)的误差与迭代次数的关系
结合反演中每五次遗传算法迭代后作一次非线性解析反演迭代
在结合反演中遗传算法的作用是提供接近全局最优解的初始模型。结合反演的运算速度主要取决于遗传算法的运算速度。均匀设计理论可以应用于遗传算法以加快随机搜索的速度。
与遗传算法相同,其它随机搜索方法也可用来与非线性解析反演方法形成结合反演方法。
参考文献
[1]E.Berg.Simple convergent genetic algorithm for inversion of multiparameter data.SEG60 Expanded Abstracts,1990,Ⅱ,1126~1128.
[2]O.Gauthier,J.Virieux and A.Tarantola.Two-dimensional nonlinear inversion of seismic waveforms:Numerical results.Geophysics,1986,51,1387~1403.
[3]D.E.Goldberg.Genetic Algorithms in Search,Optimiztion,and Machine Learning.Addison-Wesley,Reading,MA,1989.
[4]J.H.Holland.Adaptation in Natural and Artifical Systems.The University of Michigan Press,Ann Arbor,1975.
[5]P.Mora.2D elastic inversion of multi-offset seismic data.Geophysics,1988,52,2031~2050.
[6]G.S.Pan,R.A.Phinney,and R.I.Odom.Full-waveform inversion of plane-wave seismograms in stratified acoustic media:Theory and feasibility.Geophysics,1988,53,21~31.
[7]M.J.Porsani,P.L.Stoffa,M.K.Sen,et al..A combined Genetic and linear inversion algorithm for seismic wave-form inversion.SEG63 Expanded Abstracts,1993,692~695.
[8]M.S.Sambridge,A.Tatantola and Kennet.An alternative strategy for nonlinear inversion of seismic waveforms.Geophysical Prospecting,1991,39,723~736.
[9]M.Sambridge,and G.Drijkoningen.Genetic algorithms in seismic waveform inversion.Geophys.J.Int.,1992,109,323~342.
[10]M.K.Sen,P.L.Stoffa.Rapid sampling of model space using genetic algorithms:examples from seismic waveform inversion.Geophys.J.Int.,1992,109,323~342.
[11]P.L.Stoffa,M.K.Sen.Nonlinear multiparametre optimization using genetic algorithms:Inversion of plane-wave seismograms.Geophysics,1991,56,1794~1810.
[12]A.Tarantola.Inversion of seismic reflection data in the acoustic approximation.Geophysics,1984(a),49,1259~1266.
[13]A.Tarantola.The seismic reflection inverse problem.In:F.Santosa,Y.-H.Pao,W.W.System,and C.Holland Eds.Inverse problems of acoustic and elastic waves.Soc.Instr.Appl.Math.,1984(b),104~181.
[14]A.Tarantola.A strategy for nonlinear elastic inversion of seismic reflection data.Geophysics,1986,51,1893~1903.
[15]A.Tarantola.Inverse problem theory:Methods for data fitting and model parameter estimation.Elsevier Science Publ.Co.Inc.,1987.
[16]周辉,何樵登.遗传算法在各向异性介质参数反演中的应用.长春地质学院学报,1995,25,增刊1,62~67.
[17]周辉.各向异性介质波动方程正演及其非线性反演方法研究.长春地质学院博士论文,1995.
‘陆’ 求助大神 利用遗传算法解决非线性规划问题,最好有MATLAB代码
%%%%%%%%%%%
无聊到专门帮你写了个程序。不想全部写完,自己补完。PS:这题怎么看都是线性规划
&&&&&&&&&&&&&&
%%%%%%%%%%%%%%利用遗传算法计算最优化问题%%%%%%%
%遗传算法参数设置
popsize=200; %种群个数
generation=500;%种群迭代次数,繁殖后代数
pc=0.4; %两个体之间交叉概率
pm=0.05; %个体变异的概率
yueshu=0; %约束成立的标志为1
%初始化群体
for i=1:popsize
while(yuesu==0) %当约束成立时,不再变异。约束不成立时变异。
x(i,1)=randint(1,1,[0,35]); %随机生成(0-35)的整数
x(i,2)=randint(1,1,[0,60]);
x(i,3)=randint(1,1,[0,40]);
x(i,4)=randint(1,1,[0,40]);
x(i,5)=randint(1,1,[0,30]);
x(i,6)=randint(1,1,[0,30]);
x(i,7)=randint(1,1,[0,35]);
x(i,8)=randint(1,1,[0,20]);
%这里自己写几行程序就好
if
%这里判断约束条件,若符合,yueshu=1;
end
end
end
for n=1:generation
%计算适应度
[row col]=size(x);
for i=1:row
fitness(i)=(x(i,1)+x(i,2)+x(i,3)+x(i,5)+x(i,6)+x(i,7)+x(i,8))/20;
end
%轮盘赌选择
zong=sum(fitness);
xt=x;
for i=1:row
temp=rand(1);
for j=1:row
if temp< fitness(j)/zong
break;
end
end
x(i,:)=xt(j,:);
end
%两个个体交叉变异
x2=x;
[row col]=size(x);
for i=1:2:row
temp=rand(1);
if temp<pc
%%%%%%%%%%%%%这里还要自己写个程序判断是否符合约束,不符合一直交叉,直到交叉到符合约束
point=randint(1,1,[1,8]);
x(i,point:8)=x2(i+1,point:8);
x(i+1,1:point)=x2(i,1:point);
end
end
%单个点变异
x3=x;
[row col]=size(x);
for i=1:row
for j=1:8
temp=rand(1);
if(temp<pm)
yueshu=0;
while(yueshu==0) %当约束成立时,不再变异。约束不成立时变异。
if j==1 x(i,1)=randint(1,1,[0,35]);end
if j==2 x(i,2)=randint(1,1,[0,60]);end
if j==3 x(i,3)=randint(1,1,[0,40]);end
if j==4 x(i,4)=randint(1,1,[0,40]);end
if j==5 x(i,5)=randint(1,1,[0,30]);end
if j==6 x(i,6)=randint(1,1,[0,30]);end
if j==7 x(i,7)=randint(1,1,[0,35]);end
if j==8 x(i,8)=randint(1,1,[0,20]);end
%这里自己写程序啊
if
%这里判断约束条件,若符合,yueshu=1;
end
end
end
end
end
end
[row col]=size(x);
for i=1:row
fitness(i)=(x(i,1)+x(i,2)+x(i,3)+x(i,5)+x(i,6)+x(i,7)+x(i,8))/20;
end
maxx=find(fitness==max(fitness));
x(maxx,:)
‘柒’ 遗传算法非线性约束问题
很多时候遗传算法并不能给出合理的答案,你可以考虑适当的更改初始种群的大小、迭代次数的上限、函数精度等处理一下!工具箱中的函数往往是通用的,必要的时候你需要自己提供种群初始函数,甚至优胜劣汰、变异等等,建议复杂的优化问题还是交给lingo吧!
‘捌’ matlab 非线性多目标的遗传算法问题
用matlab的ga()遗传算法函数求非线性多目标的最小值(或最大值),其解决帮助如下:
1、首先建立自定义目标函数,y=FitFun(x)
2、其二建立自定义约束函数,[c,ceq]=NonCon(x)
3、最后,根据已知条件,用ga()函数求解。
为了说明问题,没有用你随意给的问题。下面,给你一个例子作参考。
FitFun.m
function f = FitFun(x,a1)
f = exp(x(1))*(4*x(1)^2 + 2*x(2)^2 + 4*x(1)*x(2) + 2*x(2) + a1);
end
NonCon.m
function [c,ceq] = NonCon(x,a2)
c = [1.5 + x(1)*x(2) - x(1) - x(2);-x(1)*x(2) - a2];
ceq = [];
end
ga_main.m
a1 = 1; a2 = 10;
options = gaoptimset('MutationFcn',@mutationadaptfeasible);
x = ga(@(x)FitFun(x,a1),2,[],[],[],[],[],[],@(x)NonCon(x,a2),options)
运行结果
‘玖’ Matlab中用遗传算法求解带约束的非线性规划问题
按我的理解x是个6元向量
那么就没有问题 在第一个M文件最后加个f=fsum;
直接
ga(@fitnessfun,6,[],[],[],[],[],[],@nonlconstr)
‘拾’ 遗传算法具体应用
1、函数优化
函数优化是遗传算法的经典应用领域,也是遗传算法进行性能评价的常用算例,许多人构造出了各种各样复杂形式的测试函数:连续函数和离散函数、凸函数和凹函数、低维函数和高维函数、单峰函数和多峰函数等。
2、组合优化
随着问题规模的增大,组合优化问题的搜索空间也急剧增大,有时在目前的计算上用枚举法很难求出最优解。对这类复杂的问题,人们已经意识到应把主要精力放在寻求满意解上,而遗传算法是寻求这种满意解的最佳工具之一。
此外,GA也在生产调度问题、自动控制、机器人学、图象处理、人工生命、遗传编码和机器学习等方面获得了广泛的运用。
3、车间调度
车间调度问题是一个典型的NP-Hard问题,遗传算法作为一种经典的智能算法广泛用于车间调度中,很多学者都致力于用遗传算法解决车间调度问题,现今也取得了十分丰硕的成果。
从最初的传统车间调度(JSP)问题到柔性作业车间调度问题(FJSP),遗传算法都有优异的表现,在很多算例中都得到了最优或近优解。
(10)非线性遗传算法扩展阅读:
遗传算法的缺点
1、编码不规范及编码存在表示的不准确性。
2、单一的遗传算法编码不能全面地将优化问题的约束表示出来。考虑约束的一个方法就是对不可行解采用阈值,这样,计算的时间必然增加。
3、遗传算法通常的效率比其他传统的优化方法低。
4、遗传算法容易过早收敛。
5、遗传算法对算法的精度、可行度、计算复杂性等方面,还没有有效的定量分析方法。