A. 什么是遗传算法
遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(indivial)组成。每个个体实际上是染色体(chromosome)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。
B. 遗传算法都能干啥啊
遗传算法的应用有很多,一般用于解决工程优化问题。像选址问题、排班问题、路线优化、参数优化、函数求极值等等
C. 数据挖掘算法有哪些
统计和可视化要想建立一个好的预言模型,你必须了解自己的数据。最基本的方法是计算各种统计变量(平均值、方差等)和察看数据的分布情况。你也可以用数据透视表察看多维数据。数据的种类可分为连续的,有一个用数字表示的值(比如销售量)或离散的,分成一个个的类别(如红、绿、蓝)。离散数据可以进一步分为可排序的,数据间可以比较大小(如,高、中、低)和标称的,不可排序(如邮政编码)。图形和可视化工具在数据准备阶段尤其重要,它能让你快速直观的分析数据,而不是给你枯燥乏味的文本和数字。它不仅让你看到整个森林,还允许你拉近每一棵树来察看细节。在图形模式下人们很容易找到数据中可能存在的模式、关系、异常等,直接看数字则很难。可视化工具的问题是模型可能有很多维或变量,但是我们只能在2维的屏幕或纸上展示它。比如,我们可能要看的是信用风险与年龄、性别、婚姻状况、参加工作时间的关系。因此,可视化工具必须用比较巧妙的方法在两维空间内展示n维空间的数据。虽然目前有了一些这样的工具,但它们都要用户“训练”过他们的眼睛后才能理解图中画的到底是什么东西。对于眼睛有色盲或空间感不强的人,在使用这些工具时可能会遇到困难。聚集(分群)聚集是把整个数据库分成不同的群组。它的目的是要群与群之间差别很明显,而同一个群之间的数据尽量相似。与分类不同(见后面的预测型数据挖掘),在开始聚集之前你不知道要把数据分成几组,也不知道怎么分(依照哪几个变量)。因此在聚集之后要有一个对业务很熟悉的人来解释这样分群的意义。很多情况下一次聚集你得到的分群对你的业务来说可能并不好,这时你需要删除或增加变量以影响分群的方式,经过几次反复之后才能最终得到一个理想的结果。神经元网络和K-均值是比较常用的聚集算法。不要把聚集与分类混淆起来。在分类之前,你已经知道要把数据分成哪几类,每个类的性质是什么,聚集则恰恰相反。关联分析关联分析是寻找数据库中值的相关性。两种常用的技术是关联规则和序列模式。关联规则是寻找在同一个事件中出现的不同项的相关性,比如在一次购买活动中所买不同商品的相关性。序列模式与此类似,他寻找的是事件之间时间上的相关性,如对股票涨跌的分析。关联规则可记为A==>B,A称为前提和左部(LHS),B称为后续或右部(RHS)。如关联规则“买锤子的人也会买钉子”,左部是“买锤子”,右部是“买钉子”。要计算包含某个特定项或几个项的事务在数据库中出现的概率只要在数据库中直接统计即可。某一特定关联(“锤子和钉子”)在数据库中出现的频率称为支持度。比如在总共1000个事务中有15个事务同时包含了“锤子和钉子”,则此关联的支持度为1.5%。非常低的支持度(比如1百万个事务中只有一个)可能意味着此关联不是很重要,或出现了错误数据(如,“男性和怀孕”)。要找到有意义的规则,我们还要考察规则中项及其组合出现的相对频率。当已有A时,B发生的概率是多少?也即概率论中的条件概率。回到我们的例子,也就是问“当一个人已经买了锤子,那他有多大的可能也会买钉子?”这个条件概率在数据挖掘中也称为可信度,计算方法是求百分比:(A与B同时出现的频率)/(A出现的频率)。让我们用一个例子更详细的解释这些概念: 总交易笔数(事务数):1,000包含“锤子”:50包含“钉子”:80包含“钳子”:20包含“锤子”和“钉子”:15包含“钳子”和“钉子”:10包含“锤子”和“钳子”:10包含“锤子”、“钳子”和“钉子”:5 则可以计算出: “锤子和钉子”的支持度=1.5%(15/1,000)“锤子、钉子和钳子”的支持度=0.5%(5/1,000)“锤子==>钉子”的可信度=30%(15/50)“钉子==>锤子”的可信度=19%(15/80)“锤子和钉子==>钳子”的可信度=33%(5/15)“钳子==>锤子和钉子”的可信度=25%(5/20)
D. 遗传算法的优缺点
优点:
1、遗传算法是以决策变量的编码作为运算对象,可以直接对集合、序列、矩阵、树、图等结构对象进行操作。这样的方式一方面有助于模拟生物的基因、染色体和遗传进化的过程,方便遗传操作算子的运用。
另一方面也使得遗传算法具有广泛的应用领域,如函数优化、生产调度、自动控制、图像处理、机器学习、数据挖掘等领域。
2、遗传算法直接以目标函数值作为搜索信息。它仅仅使用适应度函数值来度量个体的优良程度,不涉及目标函数值求导求微分的过程。因为在现实中很多目标函数是很难求导的,甚至是不存在导数的,所以这一点也使得遗传算法显示出高度的优越性。
3、遗传算法具有群体搜索的特性。它的搜索过程是从一个具有多个个体的初始群体P(0)开始的,一方面可以有效地避免搜索一些不必搜索的点。
另一方面由于传统的单点搜索方法在对多峰分布的搜索空间进行搜索时很容易陷入局部某个单峰的极值点,而遗传算法的群体搜索特性却可以避免这样的问题,因而可以体现出遗传算法的并行化和较好的全局搜索性。
4、遗传算法基于概率规则,而不是确定性规则。这使得搜索更为灵活,参数对其搜索效果的影响也尽可能的小。
5、遗传算法具有可扩展性,易于与其他技术混合使用。以上几点便是遗传算法作为优化算法所具备的优点。
缺点:
1、遗传算法在进行编码时容易出现不规范不准确的问题。
2、由于单一的遗传算法编码不能全面将优化问题的约束表示出来,因此需要考虑对不可行解采用阈值,进而增加了工作量和求解时间。
3、遗传算法效率通常低于其他传统的优化方法。
4、遗传算法容易出现过早收敛的问题。
(4)遗传算法适合什么性别扩展阅读
遗传算法的机理相对复杂,在Matlab中已经由封装好的工具箱命令,通过调用就能够十分方便的使用遗传算法。
函数ga:[x, fval,reason]= ga(@fitnessfun, nvars, options)x是最优解,fval是最优值,@fitnessness是目标函数,nvars是自变量个数,options是其他属性设置。系统默认求最小值,所以在求最大值时应在写函数文档时加负号。
为了设置options,需要用到下面这个函数:options=gaoptimset('PropertyName1', 'PropertyValue1', 'PropertyName2', 'PropertyValue2','PropertyName3', 'PropertyValue3', ...)通过这个函数就能够实现对部分遗传算法的参数的设置。
E. 遗传算法有哪些特点
经现代医学研究表明,DNA是现存生命最重要的遗传物质。而遗传则是指经由基因的传递,使后代获得亲代的特征。遗传学正是研究遗传这一现象的一门学科,除遗传因素外,还有环境,以及环境与遗传的交互作用也是决定生物特征的因素。
遗传算法是一种可用于复杂系统优化的一种搜索算法,与传统的算法相比,具有以下4个特点:第一,它是以决策变量的编码作为运算对象;第二,遗传算法直接以适应度作为搜索信息,无需导数等其他辅助信息;第三,遗传算法使用多个点的搜索信息,具有隐含并行性;最后,它没有使用非确定性规则,而是采用了概率搜索技术。
F. 基因遗传算法主流
基因遗传算法是一种灵感源于达尔文自然进化理论的启发式搜索算法 该算法反映了自然选择的过程 即最适者被选定繁殖 并产生下一代
自然选择的过程从选择群体中最适应环境的个体开始 后代继承了父母的特性 并且这些特性将添加到下一代中 如果父母具有更好的适应性 那么它们的后代将更易于存活 迭代地进行该自然选择的过程 最终 我们将得到由最适应环境的个体组成的一代
这一概念可以被应用于搜索问题中 我们考滤一个问题的诸多解决方案 并从中搜寻出最佳方案
遗传算法含以下五步
1.初始化
2.个体评价(计算适应度函数)
3.选择运算
4.交叉运算
5.变异运算
初始化
该过程从种群的一组个体开始 且每一个体都是待解决问题的一个候选解
个体以一组参数(变量)为特征 这些特征被称为基因 串联这些基因就可以组成染色体(问题的解)
在遗传算法中 单个个体的基因组以字符串的方式呈现 通常我们可以使用二进制(1和0的字符串)编码 即一个二进制串代表一条染色体串 因此可以说我们将基因串或候选解的特征编码在染色体中
个体评价利用适应度函数评估了该个体对环境的适应度(与其它个体径争的能力)每一个体都有适应评分 个体被选中进行繁殖的可能性取决于其适应度评分 适应度函数是遗传算法进化的驱动力 也是进行自然选择的唯一标准 它的设计应结合求解问题本身的要求而定
选择运算的目的是选出适应性最好的个体 并使它们将基因传到下一代中 基于其适应度评分 我们选择多对较优个体(父母)适应度高的个体更易被选中繁殖 即将较优父母的基因传递到下一代
交叉运算是遗传算法中最重要的阶段 对每一对配对的父母 基因都存在随机选中的交叉点
变异运算
在某些形成的新后代中 它们的某些基因可能受到低概率变异因子的作用 这意味着二进制位串中的某些位可能会翻转
变异运算前后
变异运算可用于保持群内的多样性 并防止过早收敛
终止
在群体收敛的情况下(群体内不产生与前一代差异较大的后代)该算法终止 也就是说遗传算法提供了一组问题的解
G. 遗传算法婚姻法
遗传算法的应用领域:
计算机自动设计 (N700列车“气动双翼”的独特空气动力造型车鼻;是遗传算法运算结果)
工业工程与运作管理
物流系统设计
生产调度
制造系统控制
系统优化设计
汽车设计,包括材料选择、多目标汽车组件设计、减轻重量等。
机电系统设计。
分布计算机网络的拓扑结构。
电路设计,此类用途的遗传算法叫做进化电路。
电子游戏设计,例如计算平衡解决方案。
机器智能设计和机器人学习。
模糊控制系统的训练。
移动通讯优化结构。
时间表安排,例如为一个大学安排不冲突的课程时间表。
旅行推销员问题。
神经网络的训练,也叫做神经进化。
有什么不懂的可以继续提问。
H. 遗传算法有哪些应用
遗传算法的搜索策略和优化搜索方法是不依附于梯度信息及其它的辅助知识,而只需要影响搜索方向的目标函数和相应的适应度函数,所以遗传算法提供了一种求解复杂系统问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以广泛应用于许多科学。遗传算法的应用领域有很多,下面针对一些主要的应用领域做简单的介绍。
1.函数优化:该领域是遗传算法得以应用的经典领域,同时它也是遗传算法进行性能评价的常用算例,许多人构造出了各种各样复杂形式的测试函数:连续函数和离散函数、凸函数和凹函数、低维函数和高维函数、单峰函数和多峰函数等。对于函数优化问题,如一些非线性、多模型、多目标等函数问题用遗传算法很容易得到较好的结果,而用其他算法则较难。
2.组合优化:由于组合优化问题的搜索空间在不断地增大,有时用枚举法很难得到最优解。对这类复杂的问题,人们已经意识到应把主要精力放在寻求满意解上,而遗传算法是寻求这种满意解的最佳工具之一。实践证明,遗传算法对于组合优化中的NP问题非常有效。比如,在旅行商问题、装箱问题及图形划分等问题上,已经成功得以应用了遗传算法。
I. 遗传算法
遗传算法是从代表问题可能潜在解集的一个种群开始的,而一个种群则由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因的组合,它决定了个体形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码。初始种群产生之后,按照适者生存和优胜劣汰的原理,逐代(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的变化范围加大。
对于高维地震模型的反演,由于参数太多,相应的模型字符串太长,目前用遗传算法作反演的计算成本还嫌太高。实际上,为了加快计算,不仅要改进反演技巧和传代的控制技术,而且还要大幅度提高正演计算的速度,避免对遗传算法大量的计算花费在正演合成上。
J. 建模,遗传算法适用哪些帮忙再总结下其他的。
遗传算法一般用于处理旅行商问题、车辆路径问题、背包问题等组合优化问题