基因表达式编程算法制造技术

技术编号:2861541 阅读:237 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开一种基因表达式编程基因算法,其用于进行符号回归。算法通过实行反向地依赖于数学表达式复杂性的拟合函数,避免了表达式膨胀与过拟合。算法进化的群体成员表示为引用操作数与操作符的索引的数组集(例如以矩阵的形式),从而便利了在进化群体的过程中进行的选择、突变与交换操作。算法包括语法检查部分[108、110、112],其可以施加于群体成员而不必将群体成员首先转化为可执行程序。提供面向对象的编程语言的数据结构,用于为算法使用的每一密码子(例如操作数、操作符)封装基本数据。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及基因算法。
技术介绍
在应用科学与工程中,广泛使用这样的算法,其将实验数据拟合到一个或多个变量的线性方程或其它预先确定的函数。在将数据拟合到预先确定的函数时,确定该预先确定的函数的参数(例如,系数),其先验为未知的。在将数据拟合到函数时,确定这些参数,其可能代表理论常数(例如,电子质量),或者仅仅是刻画现象的经验值。在这样的情形中,由人基于技术知识或已有证据选择拟合数据的适当函数。例如,相关领域的专家可能知道特定类型的数据由特定数学函数描述。对哪种数学函数描述哪种类型的函数的发现来自于科学与工程的艰苦过程。类似地,在统计学领域,可将统计数据拟合到适当的分布函数,例如高斯分布,或二项式分布,以确定测量数据的平均值与方差。对于拟合任何给定数据集的适当分布函数的选择基于这样的考虑,即与每种类型的分布相关联的随机偏差类型是否对应于刻画收集到的数据的随机偏差。换言之,选择基本上是统计学技术人员的工作。特定统计包试图协助统计学家,其自动地尝试将数据集拟合到预先确定的分布函数集,并选择最好地拟合数据的分布函数。在上述情形中,拟合数据的函数是预先确定的,并且,通过猜想或从头开始推导来发现全新的可以应用到新类型的数据的函数,仍然是科学家或工程师的任务。换言之,发现数学函数的工作留给了人类智力。人工智能的领域包括基因算法的子领域。在基因算法领域中,试图模仿基因在进化生物学中的角色,以计算工程或其它问题的解。在基因算法中,一群假定的解以模仿达尔文进化论的方式“进化”。基因算法的领域包括称为基因编程的研究领域。在基因编程中,涉及的群体包括自身为程序的个体。在基因编程中,基于其在执行时解决特定问题的能力判断每个个体程序的适合度。基因编程被用于进行“符号回归”。在符号回归中,试图通过使用基因编程来取代人类智力,以发现最佳地描述数据集的数学表达式。在基于基因编程的符号回归中进化的个体程序代表数学方程,其基于一个或多个自变量的输入值给出因变量的值。主要的现有技术的基因编程算法以LISP编程语言实现,由实现者判断其特别适宜于此任务。在这样的算法中,使用LISP编程语言中的S表达式构造来代表数学表达式。在进行进化的过程中,直接操作这些S表达式,其扮演进化的群体成员的角色。这些现有技术的方法的一个局限是没有限制群体中的数学表达式的大小,导致所谓“表达式膨胀”,其中群体内的数学表达式不适当地变大。这些现有技术的方法的另一个局限是这些膨胀的表达式倾向于过拟合到基因编程算法用以检查数学表达式正确性的数据。过拟合意味着表达式非常接近地符合数据,包括数据中的测量误差,而不符合来自同一来源的额外数据,其之后被用于检查表达式的正确性。还一个局限是诸如Java、或C++等现代程序语言不支持S表达式构造,而这些语言被首选地用在科学与工程编程中。符号回归使用的另一种类型的基因算法是基因表达式编程(GEP)。在基因表达式编程中,表达式以符号串表示,其中每个符号表示数学表达式的一个记号(例如,操作数、操作符)。使用基因表达式编程时,要出现在基因编程算法正在寻找的表达式中的常数的值可能不能事先得知。因此,GEP算法可能不得不创建这样的程序,其在给定的常数(例如,零和一)的有限集合上进行不定数目的操作。后一必要性增大了基因表达式编程算法收敛的时间,并且也不必要地增大了找到的解程序的大小。而且,既然基因表达式编程算法产生的表达式被限制为有限大小,为获取所需常数所必需的操作可能消耗最大表达式大小的主要部分,并限制其它所需的操作符与变量可获得的部分。在基因表达式编程中,执行多种模仿群体进化中涉及的自然过程的行动。这包括一点与两点交换与突变(crossover and mutation)。这些过程涉及交换点的随机选择与在(染色体)表达的表示中替换已有记号(操作数或操作符)的新记号的随机选择。由于其随机本性,在基因表达式编程的情形中,这些对于进化适应而言重要的操作可能,不幸地,导致句法上不正确的表达式(程序)。对于候选的解决方案而言,这句法上的不正确是不合适的,并可能产生基因表达式编程算法中的程序执行错误。附图说明图1是算法流程图的第一部分,该算法遵照本专利技术的优选实施例进化数学表达式表示群体。图2是开始于图1的流程图的第二部分。图3显示用于存储数学表达式表示群体的矩阵,该群体由图1-2中显示的方法进化。图4是算法流程图,该算法遵照本专利技术的优选实施例验证数学表达式表示的语法。图5是操作符与操作数数组,其包括数学表达式表示。图6是索引数组,其表示图5中显示的数组。图7是图1中显示的方法要确定的假定数学表达式。图8是图7中显示的数学表达式的近似,其包括基于素数的常数。图9是表示图8中显示的方程的树形图。图10是电脑框图,该电脑用于遵照本专利技术的优选实施例执行图1、2与4中显示的算法。具体实施例方式图1是算法100的流程图的第一部分,该算法遵照本专利技术的优选实施例进化数学表达式表示群体,图2是开始于图1的流程图的第二部分。图1、2中显示的算法100是基因表达式编程(GEP)类型的基因算法(GA)。基因算法100用于确定良好地符合数据的数学表达式。该数据可包括一或多组相关联的自变量与因变量的值。根据要搜寻的数学表达式的特性,可能有一个或多个自变量。参照图1,在步骤102,读入要用的操作符与操作数的列表。该列表可保存于配置文件中。对于许多
而言,在步骤102读入的操作符中包括加法、减法、乘法、与除法是适宜的。在许多
中,包括三角函数操作符,例如正弦、余弦、正切,以及反三角函数操作符,例如反正弦、反余弦、反正切,也是适宜的。注意操作符可根据其操作的操作数的数目分类。也可包括其它类型的函数。MAX函数接受两个操作数或数学子表达式作为参数,评估两个参数,并返回较大的参数的值。也可包括互补的MIN函数。还可包括另一种类型的操作数,其类似于编程中的流控结构,也就是IF{子表达式一<=子表达式二}THEN{子表达式三}ELSE{子表达式四}(简称为IF操作符)。后者对于发现分段定义的函数是有用的。注意IF操作符接受四个参数,用于不等式条件的第一与第二子表达式,满足该条件时执行的第三子表达式,以及不满足该条件时计算的第四子表达式。包含基于经常在特定领域中出现的特定函数的操作符可能是适宜的。例如,如果要将算法100施加于神经网络领域,包括基于S形函数的操作符可能是适宜的。表I包括可在步骤102中读入的操作符的示例性的列表。在表I中,第一列指示操作符名称,第二列指示操作符类型,其等价于操作符作为自变量接受的操作数的数目,第三列为值保留(其不适用于操作符,因此在表I中没有值),第四列给出与每个操作符相关联的成本,该成本为每个操作符增加数学表达式复杂度的测度,第五列为引用操作符的索引。表I 在步骤102中读入的操作数包括常数与自变量。下面的表II包括在步骤102中读入的操作数的示例性的列表。表II中列的标识与表I中相同。表II中的索引号继续了始于表I的索引号序列。表II的第一行(索引号为行17)包括Pi,包括它是因为经验显示它经常出现在与科学和工程问题相关的数学表达式中而包括进来的。也可在表II中包括在许多领域中重要的其它适宜的常数(例如,自然对数基,e)或本文档来自技高网
...

【技术保护点】
一种基于基因算法的方法,用于确定描述实际数据集的数学表达式,所述方法包括以下步骤:生成数学表达式表示的初始群体,其包括多个素数;和从所述初始群体进化后继世代。

【技术特征摘要】
US 2002-3-18 10/101,8141.一种基于基因算法的方法,用于确定描述实际数据集的数学表达式,所述方法包括以下步骤生成数学表达式表示的初始群体,其包括多个素数;和从所述初始群体进化后继世代。2.如权利要求1所述的方法,其中,所述多个素数从预先定义的素数列表中选择。3.如权利要求1所述的方法,其中,所述的进化后继世代的步骤包括以下步骤对于多个后继世代,通过引入一个或多个素数的表示,从所述数学表达式表示的当前群体突变一个或多个数学表达式表示。4.如权利要求1所述的方法,其中,所述的进化后继世代的步骤包括以下步骤对于多个后继世代生成一组实现数学表达式的程序,所述数学表达式表示在当前世代的数学表达式表示的群体中;为一个或多个测试数据集执行所述程序集中的一个或多个,以获得与所述程序集中的所述一个或多个相对应的一个或多个结果;从所述一个或多个结果导出所述程序集中的所述一个或多个的一个或多个拟合性指示;基于所述拟合性指示,从所述当前世代的数学表达式表示的群体中选择一个或多个所述表示,以在后继世代中进行复制;在所述后继世代中的表示对之间进行一个或多个交换操作。5.如权利要求4所述的方法,其进一步包括以下步骤对于所述多个后继世代中的一个或多个,通过引入一个或多个素数的表示,从所述数学表达式表示的当前群体突变一个或多个数学表达式表示。6.如权利要求1所述的方法,其中,数学表达式表示的所述初始群体包括索引数组集,其中多个所述数组包括表示数学表达式的索引列表;和多个所述索引指示从包括操作符与操作数的组中选择的元素。7.一种基于基因算法的方法,用于确定描述实际数据集的数学表达式,所述方法包括以下步骤递归地生成一系列数学表达式表示群体,其中每个表示包括从操作符集中选择的一个或多个操作符的标识;和从包括常数与变量的操作数集中选择的一个或多个操作数的标识;其中所述操作数集中的每一操作数,以及所述操作符集中的每一操作符与一成本相关联;对于所述群体系列中的每第k个群体,生成一组实现数学表达式的程序,所述数学表达式表示在所述的第k个表示群体中;通过包括以下步骤的过程,为所述程序集中的每一程序导出第一拟合性测度在一个或多个测试数据集上运行所述程序,并比较输出值与预先确定的值,以获取残留误差的测度;通过包括以下步骤的过程,为所述程序集中的每一程序导出第二拟合性测度对所述程序内的每一操作符与操作数的成本求和;和在每一后继世代中,基于所述第一与第二拟合性测度,选择性地复制数学表达式的个体表示。8.如权利要求7所述的方法,其进一步包括以下步骤组合所述第一拟合性测度与所述第二拟合性测度,以获取总的拟合性测度。9.一种基于基因算法的方法,用于确定描述实际数据集的数学表达式,所述方法包括以下步骤将一系列数学表达式群体中的每一个表示为索引数组集,其中每一数组表示数学表达式,且所述索引数组集中的一个或多个索引指向从包含操作符与操作数的元素组中选择的表达式元素的表示;对于所述系列群体中的每第k个群体生成实现所述数学表达式的程序,所述数学表达式由所述群体中的所述数组集中的一个或多个中的每一个表示;导出每一程序的拟合性测度;基于所述拟合性测度,从所述数组集选择一个或多个高拟合性数组,以继续到第(k+1)世代;在所述的继续到第(k+1)世代的高拟合性数组中的一个或多个之间进行交换操作。10.如权利要求9所述的方法,其中,每一索引指向面向对象的编程语言的类的实例,所述类封装从包括操作符与操作数的组中选择的元素的标识。11.如权利要求9所述的方法,其中,所述的进行交换操作的步骤包括以下子步骤将高拟合性数组的一部分与第二数组的一部分交换,其中随机地选择所述高拟合性数组的一部分与所述第二数组的一部分的开始点。12.如权利要求9所述的方法,其中,所述数组集作为矩阵存储。13.一种基于基因算法的方法,用于确定描述实际数据集的数学表达式,所述方法包括以下步骤递归地生成符号序列的群体的一系列世代,其中每一符号序列表示数学表达式;对于每一世代,确定每一符号序列是否可转译为有生存力的程序,其通过对于每一符号序列初始化所需长度变量;从每一序列的第一符号开始,并且对于每一序列内的一系列第k个符号将所需长度变量增加根据语法规则使用所述第k个符号组成有生存力的操作所必需的符号的数目;如果所需长度变量在增加后等于k,报告有效语法;和如果所需长度变量在增加到k时超过最大序列长度,报告无效语法。14.如权利要求13所述的方法,其中,所述的递归地生成一系列世代的步骤包括以下子步骤在一个或多个符号序列中随机地改变符号。15.如权利要求13所述的方法,其中,所述的递归地生成以系列世代的步骤包括以下子步骤随机地选择一个或多个点,其定义符号序列的边界,以在所述群体中的符号序列之间进行交换。16.一种包含编程指令的计算机可读介质,其用于确定描述实际数据集的数学表达式,其包括以下编程指令生成数学表达式表示的初始群体,其包括多个素数;和从所述初始群体进化一系列后继世代。17.如权利要求16所述的计算机可读介质,其中,所述的进化后继世代的编程指令包括以下编程指令从预先确定的素数列表中选择所述的多个素数。18.如权利要求16所述的计算机可读介质,其中,所...

【专利技术属性】
技术研发人员:肖为民托马斯迈克尔蒂尔帕克
申请(专利权)人:摩托罗拉公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1