遗传编程综述:常用技术、基本要素、软件工具与应用
https://dergipark.org.tr/en/download/article-file/1284370

摘要
遗传编程(Genetic Programming, GP)是进化计算(Evolutionary Computation, EC)方法之一,长期以来受到众多研究者的广泛关注。自GP首次提出以来,因其在众多不同学科中成功应用,并展现出解决各类复杂实际问题的巨大潜力,迅速成为一种广受欢迎的计算智能方法。随着GP被应用于各种广泛领域,为更有效地解决不同应用领域中的计算问题,众多GP变体方法相继涌现。因此,GP拥有极为丰富的文献资料,并且这一文献体系仍在持续增长。在GP算法发展过程中,也开发出了许多GP软件工具。当前亟需对从GP诞生之初至今的整个GP文献进行一次全面综述,以揭示GP在计算智能领域中所扮演的角色。本综述研究旨在以系统化的方式对不断增长的GP文献进行全面概述。需要实施GP方法的研究人员可借此深入了解GP方法的潜力、其固有缺陷以及普遍优势。相应地,本文通过系统回顾主流GP方法,提出了GP方法的分类体系。具体而言,GP方法根据其程序(染色体)表示方式和方法论上的差异,被划分为两大主要类别进行分析。此外,本文还总结了GP在各类问题中的应用情况。本综述对于新进入该领域的研究人员尤其有用,可帮助他们在将GP方法应用于自身问题之前,获得所需的宏观视角。
关键词:遗传编程,GP类型,GP应用,GP软件
随着标准GP在跨学科领域的广泛应用,研究人员发现,标准GP的计算能力在面对某些学科中极其困难的计算问题时可能并不充分 [3–5]。这一局限性成为开发更先进GP算法的核心动因,由此提出了多种增强型GP变体,以应对实际应用中遇到的复杂难题。研究人员主要将精力集中在改进GP程序(即种群中的个体)的表示形式上。
纵观现有文献可见,GP在需要符号回归(symbolic regression)进行数据建模的问题中被广泛采用 [6]。相应地,GP的应用已出现在众多不同学科中,例如分类问题 [7]、生产调度 [8]、气候变化分析 [9]、能源与节能 [10–12],以及教育技术 [13]、城市化 [14]、建筑 [15]、水文学 [16] 和医学 [17] 等领域。此外,GP在诸多计算机科学问题中也得到了广泛应用,如计算机视觉 [18]、图像处理 [19]、信号处理 [20] 以及人工神经网络设计 [21]。同时,GP方法还被用于进化硬件 [22] 和电路设计 [23] 领域。在经济学领域,例如金融 [24] 和交易 [25] 问题中,也可找到大量GP应用实例。
GP方法在上述及更多未提及的众多学科和领域中的广泛应用,表明它是一种广受欢迎且具有高度通用性的计算智能方法。
本文旨在对GP文献进行综述,使读者无需具备深厚的GP专业知识,即可全面了解GP算法的发展历程、GP结构的基础原理、主流GP趋势以及相关软件工具。为此,本研究涵盖GP基本概念的介绍、主流方法与实践的回顾,并提供GP方法学最新进展的近期视角。GP作为一种日益流行的计算工具,已积累了丰富的文献资料。本研究在综述GP文献时,避免深入复杂的GP算法与工具技术细节,以保持内容的可读性。
本文的组织结构如下:第2节对基本GP方法进行比较性介绍;第3节从两个主要分支出发,根据GP方法在表示形式和方法论上的差异,构建GP方法的分类体系;第4节概述重要的GP应用;第5节介绍研究人员开发和使用的GP软件工具。

根据目标问题的需求,具有最优解的程序能够在进化过程中持续存在。因此,该程序是该问题的最佳适应解,能够一直保留到GP算法的终止条件被满足为止 [26]。这一特性在进化计算中被称为“精英主义”(elitism)。GP方法采用精英进化策略,以获得更优的个体,通常会将适应度值较高的个体直接传递到下一代。这种策略有助于缓解GP方法中的“膨胀”(bloat)问题 [27]。
标准GP与遗传算法(Genetic Algorithm, GA)的主要区别在于:GP中的程序表示可以是变长的,而GA通常采用固定长度的表示形式,例如比特串、实数或符号等 [8], [26]。
GP方法尤其适用于以下情况:问题中相关变量之间的相互关系未知或理解不足,或者对已知参数间关系的正确性存在疑问 [28]。换言之,当问题缺乏已知或有效的数学模型时,GP可以通过模型探索提供可接受的解决方案,并最终给出对该问题拟合度最高的解。
此外,如果存在大量数据,需要在计算机上进行深入的分析、分类和聚类,GP也能取得令人满意的结果。这一优势的主要原因在于:GP中代表候选解的个体比其他元启发式方法更具灵活性和适应性。
为了对文献知识进行分类组织,本文构建了一个GP方法的层次结构,该结构分为两个主要分支,分别基于程序表示形式和方法论上的差异。
3.1 根据程序表示形式划分的遗传编程类型
文献中最常用的GP程序表示形式包括树状表示、线性表示和图形表示。例如,标准GP [1] 采用基于树的表示,笛卡尔遗传编程(Cartesian Genetic Programming, CGP)[29] 采用图形表示,而线性遗传编程(Linear Genetic Programming, LGP)[30] 则采用线性表示。
3.1.1 基于树的遗传编程
基于树的GP是最早且应用最广泛的表示形式 [1]。因此,这种表示类型在文献中被称为标准GP。通常,在软件开发过程中,程序由可重用的程序部件(如子函数、函数和类)组成,以重复执行的步骤形式实现。相比之下,在基于树的GP中,种群个体通常以语法树(syntax trees)的形式表示,而非代码行 [2], [28]。
图2展示了基于树的GP结构及其进化步骤。例如,程序表达式 x×y/min(5,7)的树状表示在图中的进化操作部分进行了处理。该程序中的变量和常量 {x,y,5,7}位于树的叶节点,称为“终结符”(terminals);而算术运算符 {∗,/,min()}位于内部节点,称为“函数”(functions)。在基于树的GP中,程序表示(即候选解)通过将终结符和函数放置在树图的节点上而构成。

3.1.2 笛卡尔遗传编程(Cartesian Genetic Programming, CGP) 笛卡尔遗传编程(CGP)由Miller于1999年首次引入文献 [31],并在2000年代初被采纳为一种创新的遗传编程类型 [29]。如图3所示,CGP中的程序直接以网格图形的形式表示。这种图形由一个二维计算节点网格组成。“笛卡尔”(Cartesian)这一术语也正源于这种实体的网格状排列方式。在CGP中,构成基因型(即个体表示)的基因是整数,用于表示某个节点从何处获取其输入数据,以及在该节点上对数据执行何种操作。节点处理后的输出数据将作为后续节点的输入进行进一步处理 [32–33]。

与树状表示不同,CGP 可以用图形化的方式表示个体,其解可以具有多个输出,并且节点可以在重复结构中被多次复用。特别是,CGP 是一种广受欢迎且易于适应的表示方法,适用于求解许多问题。此外,CGP 也是一种合适的 GP 方法,可用于表示多种计算过程,例如方程、状态机、神经网络、算法和电子电路 [33]。 如图3所示,CGP 允许内部计算对数据进行复用,因为图中节点的输出可以被多次重复使用。这一特性自 CGP 首次提出以来,便引起了进化计算和遗传编程领域研究人员的广泛关注。
为了克服工程问题中遇到的困难,文献中已提出了多种具有不同特性的CGP变体。图4展示了递归CGP(Recurrent CGP)[35],这是一种允许构建重复性/循环结构图的CGP类型。由于本综述文章的重点并非对所有CGP变体进行全面详述,因此关于CGP变体的更多细节,读者可参考一些专门聚焦于CGP方法的文献 [32], [36]。

3.1.3 线性遗传编程 线性遗传编程(Linear Genetic Programming, LGP)是另一种GP变体,其区别在于程序的表示形式。LGP中的个体(即程序)采用线性代码结构表示,如图5(b)所示。LGP与基于树的GP之间的主要区别在于:LGP不使用程序的树状图表示,而是由一组指令组成,这些指令类似于寄存器中的机器代码 [30], [37]。

在图5中,f[0] 表示程序的临时变量,而 L 表示指令行。在此结构中,LGP 允许变量在每条指令行中取不同的值。每条指令结构包含一个操作符、一个函数数组和一个返回值 [39]。由于 LGP 的表示形式与编程语言非常相似,因此在合成计算机程序方面,它可能比标准 GP 更有效 [40–41]。
3.1.4 基于栈的遗传编程 基于栈的遗传编程(Stack-based Genetic Programming, SBGP)是 GP 的另一种变体,由 Perkis 提出 [42]。SBGP 的表示形式由函数或终结符节点组成的列表构成,这些节点从栈中获取输入,并将其输出结果压入栈中 [43]。与其他表示形式相比,这是一种较少被采用的表示格式。
3.2 根据方法论差异划分的GP类型
由于标准GP在求解复杂问题时会遇到技术性困难(例如膨胀问题、复杂度不断增长等),除了文献中基于新表示形式的进展外,研究者还提出了许多不同的GP变体,通过对GP方法进行方法论层面的改进,以提升GP的性能。
3.2.1 强类型遗传编程
强类型遗传编程(Strongly-typed Genetic Programming, STGP)[44] 是标准GP的一种改进类型,通过引入数据类型限制来实现。STGP与标准GP类似,但其程序结构中每个节点具有不同的数据类型。
如图6所示,在强类型遗传编程(STGP)中,必须明确指定函数和终结符的数据类型,因此种群仅由语法正确的分解树构成,这显著缩小了搜索空间 [45]。在标准GP中,若程序节点没有数据类型限制,GP可能会生成大量无效的树组合进行处理;而在STGP中,每个节点的特性是预先确定的。

3.2.2 多基因遗传编程
多基因遗传编程(Multi-Gene Genetic Programming, MGGP)[46] 可被视为标准GP [1] 的一种多基因形式。传统的符号回归问题通常采用标准GP,演化出以单棵树形式表示的程序种群,其中每棵树代表一个数学表达式,作为该回归问题的候选解。相比之下,MGGP采用一种数学表达式,该表达式是多个GP树输出结果的加权线性组合 [47]。MGGP最初是在解决一个复杂的符号回归问题的研究中被提出的 [46]。MGGP可被视为一种强大的GP变体,能够有效整合标准GP解的能力,从而增强回归模型的预测性能 [47]。因此,它非常适合用于解决回归与建模问题。
与标准GP相比,MGGP中基因的树表示深度可以保持相对较浅,这有助于缓解膨胀(bloating)问题。典型的多基因模型如图7所示。该模型通过两个树表达式(基于三个输入变量

)的加权和,生成一个输出变量的数学表达式。研究表明,这种MGGP表达形式在非线性问题中比标准GP更为高效 [53–54]。

3.2.3 多目标遗传编程
标准GP通常针对单一目标进行优化,并仅使用一个适应度函数 [50], [51]。因此,在多目标优化任务中,标准GP显得力不从心。在多目标遗传编程(Multi-Objective Genetic Programming, MOGP)问题中,问题的解需同时针对多个目标或多个目标函数进行优化 [2]。
在GP优化过程中仅使用单一目标的一个缺点是,进化所得的解模型可能会变得极其复杂。因此,MOGP通常设定两个主要目标:在最大化适应度值的同时,最小化解的复杂度 [51]。
3.2.4 基因表达编程
在基因表达编程(Gene Expression Programming, GEP)中,基因组(或染色体)由一个或多个表达式树(Expression Trees, ET)组成,这些表达式树具有线性、符号化且固定长度的结构,并包含一个或多个基因 [52]。GEP是众多不同领域中最常被使用的GP类型之一。
GEP的基因由“头”(head)和“尾”(tail)两部分组成。尽管“头”部分包含代表函数(来自函数集 F)和终结符(来自终结符集 T)的符号,但“尾”部分仅包含终结符。对于某一特定问题,若令 t表示尾的长度,h表示头的长度,n表示函数的最大参数个数(即函数元数),则这些变量之间的关系由以下公式(1)表示:

图8所示的程序表示实际上是GEP个体的表型(phenotype),其基因型(genotype)可按如下方式轻松地从该表型生成:

GEP 根据个体的适应度,使用一个或多个遗传算子来选择种群中的个体,并提供多种遗传变异方式 [52]。在 GEP 中,个体由固定长度的字符串结构组成,这些字符串被表达为不同大小和形状的非线性实体,例如表达式树 [52]。由于 GEP 采用相对简单的遗传操作,大大降低了对高性能硬件的需求,因此能够在个人计算机上求解高复杂度的问题 [52]。
3.2.5 语法引导遗传编程 语法引导遗传编程(Grammar-Guided Genetic Programming, GGGP 或 G3P)[55–56] 是原始 GP 的一种变体。在文献中,语法引导 GP 也被称为基于语法的 GP(grammar-based GP)。语法为 GP 带来了诸多优势,其中无疑最重要的优势在于:语法可作为一种限制工具,用于约束灵活的搜索空间 [57]。
基于语法的表达形式是计算机科学中的基本表示结构 [57]。它们通过限制可使用的表达式,在广泛领域中被普遍用于表达约束条件。GGGP 的个体可以同时采用线性和树状表示方法。图9展示了一个基于语法的树状表示示例。

3.2.6 语法进化(Grammar Evolution, GE) 作为 GGGP 的一种子类型,语法进化(GE)[59] 是一种在可变长度二进制字符串上执行进化过程的 GP 方法,而非直接在实际程序上操作。GE 采用一种映射技术,利用二进制字符串通过巴科斯-诺尔范式(Backus-Naur Form, BNF)语法中的规则,生成任意编程语言的程序。该方法旨在从一个二进制字符串中生成语法上合法的表达式,随后可通过适应度模型对该表达式进行评估 [59]。
其目的和主要循环过程基本上与标准GP相同,但在解的生成和更新方式上有所不同 [61]。 图10展示了一个使用GE进行解码的示例。若想使用GE求解某个问题,首先需要定义一个合适的语法,通常采用巴科斯-诺尔范式(Backus-Naur Form, BNF)来完成。因此,这一步至关重要,因为它定义了问题解的搜索空间,而计算表达式(即个体)将位于该搜索空间之内 [62]。

3.2.7 几何语义遗传编程 几何语义遗传编程(Geometric Semantic Genetic Programming, GSGP)[63] 是近年来提出的一种GP类型。GSGP构建了一个语义空间(semantic field),利用候选解的语义信息,并借助不同的距离度量方式,来衡量GP个体对问题解的适配程度。 定义种群程序语义的方法有多种。根据所采用距离度量的特性,该语义空间可呈现出不同的锥形结构。GSGP在程序的语义空间中搜索解,从而有助于在解空间中更高效地进行搜索 [64]。
几何语义算子通过在语义空间中对程序进行变换,从而生成新的程序 [66]。图11展示了语义空间中几何语义交叉操作的一个示例。在交叉操作之前,每个个体在语义空间中都有其自身的位置;交叉操作之后,会为新生成的子代程序分配一个对应的语义点(值)。类似地,在变异过程中,会对程序个体执行相应的语义操作,并根据新程序的适配程度为其分配几何语义值 [65]。

3.3 一些流行的GP类型

展示各类流行GP方法的年度发表分布情况,有助于揭示GP类型之间的新兴趋势。图X(或相关数据)对比了2014年至2019年间各类GP方法的年度发表数量。尽管基于树的GP存在第2节中提到的种种缺点,但它仍然是主流方法;同时也可以观察到,GEP、GGGP和笛卡尔GP(Cartesian GP)等变体在文献中也得到了频繁使用。这些GP类型被广泛采用的主要原因在于它们易于应用,并且已有大量相关的软件工具和文献资料可供使用。
符号回归(Symbolic Regression):符号回归是应用数学与计算机科学交叉领域的一个课题,旨在寻找能够最佳描述一组已知自变量与对应因变量之间关系的符号化数学表达式 [67]。GP方法的机制非常适合符号回归问题的特性,因此在该领域得到了广泛应用 [64], [68]–[70]。
人工神经网络(ANN)设计:人工神经网络(ANN)与进化算法(EA)的结合构成了机器学习的一个分支,称为神经进化(NeuroEvolution, NE)[71], [72]。已有大量研究 [21], [72]–[74] 利用CGP优化ANN的拓扑结构和网络参数。基于此,研究者提出了多种GP与ANN协同的混合方法 [75]。此外,还专门开发了一种用于ANN的CGP变体,即递归CGP(Recurrent CGP, RCGP)[34]。
计算机视觉(Computer Vision):GP算法已被应用于多种计算机视觉任务,例如人体动作识别 [18]、提升用于人体检测的梯度方向直方图(HOG)算法性能 [76]、机器人学 [77]、人体运动建模 [78]、图像边缘检测的改进 [79],以及模式识别问题 [80] 等。
电路设计与可进化硬件(Circuit Design and Evolvable Hardware):可进化硬件(Evolutionary Hardware, EHW)是一种利用可重构硬件结构自动设计实现特定功能电路的方法。借助GP算法,无需人工电路设计师即可自动完成硬件设计 [22]。由于程序表示形式非常适合表达硬件结构,CGP方法在电路设计工作中被广泛采用。因此,GP在EHW研究中得到了广泛应用 [22], [81], [82]。此外,GP也频繁用于数字电路设计任务 [23], [83]–[85]。
调度(Scheduling):调度是指在给定时间范围内分配有限资源的过程,广泛应用于众多生产与服务行业 [86]。GP已被频繁用于多种时序问题,例如动态作业车间调度(JSS)[8], [87]、生产调度 [88]、动作调度 [89],以及异构网络中的调度 [90], [91]。
环境、自然灾害与农业:GP方法尤其被用于碳排放建模 [92]、火山监测 [93]、地震预测 [94]、大气研究 [95]、气流测量 [96]、雨水水质建模 [97]、农作物产量响应分析 [98],以及水库调度与灌溉管理 [9] 等领域的数据建模与预测。
分类(Classification):所选特征的相关性是影响分类性能的重要因素之一。恰当的特征选择可增强类别间的可区分性。然而,在某些现实世界的分类应用中,可能缺乏关于可用特征的充分信息 [99]。GP已被用于探索分类问题中的有效特征 [7], [94], [99],以及关联分类(associative classification)[100]。
城市化与建筑:能源管理与基础设施规划问题往往需要高度复杂的计算模型。为针对效率与可持续性问题提出可行解决方案,亟需有效的计算智能方法以应对这类模型的复杂性。因此,GP算法已在相关问题中得到应用,例如建筑能效优化 [11], [101]、地基与土壤分析 [15], [102]、城市交通与基础设施规划 [14], [103]。
金融、贸易与经济:金融市场呈现出高度复杂、非平稳且混沌的数据模型。为应对这一挑战,研究者已实施GP方法,并报告了成功的结果。GP在金融、商业和经济问题中的应用实例包括:供应商选择 [104]、投资管理 [105]–[107]、市场分析 [108]、金融安全 [24]、股票分析与管理 [109–110] 等。
图像处理:数字成像技术与图像处理被广泛应用于医学、气象学、地质学和生物学等多个领域。这些图像可能包含噪声,因此需要预处理步骤 [111]。图像处理领域的研究人员已在多项研究中应用GP方法,例如噪声抑制 [111–112]、图像重建 [113]、特征提取 [114]、图像分类 [115] 等。
信号处理:GP算法已被用于脑电图(EEG)信号的分类 [116],这在癫痫发作 [117]、睡眠障碍 [141] 等多种疾病和障碍的诊断中是一项非常重要的任务。此外,GP还被应用于其他医学信号的处理,例如心电图(ECG)信号的分类 [20], [118]——这些信号用于诊断心脏疾病。GP在信号处理中的另一项应用涉及音频信号处理,例如音频信号重建 [119]。
教育:随着工业4.0时代的开启,人工智能技术将被更频繁地用于减轻教师工作负担,并为教育系统提供更贴近学生需求的解决方案。如今,在线智能学习系统已能够自动评估学习活动,因此计算智能在教育领域正发挥着日益重要的作用 [120]。在此背景下,GP方法已被用于学生学业表现预测 [13], [121–122]。
水文学(Hydrology):水文学是水资源科学的一个分支,广泛依赖预测模型。GP已被广泛应用于水文学领域,例如降水预测与测量 [123]、降雨-径流建模 [124–125]、地下水水质预测 [126]、蒸散发量估算 [127] 等。另有一项综合性综述研究专门聚焦于GP在水文学中的应用 [128]。
医学、生物学与生物信息学:GP方法在医学、生物学和生物信息学领域得到了广泛应用,尤其用于诊断、分类、预测和建模等目的。例如:血液化学物质的分析与建模 [17], [129](如对糖尿病至关重要的葡萄糖动力学模型)、医学数据挖掘 [37](用于哮喘与过敏流行病学分析 [58])、药代动力学参数预测 [130]、糖尿病预测 [131],以及帕金森病的自动诊断 [132] 等。
时间序列预测:时间序列广泛应用于统计学和计量经济学等多个领域。GP方法已被用于时间序列预测研究 [133–137]。
能源:当今,由于全球对能源需求的不断增长,通过更高效地利用能源资源、优化能源生产与供需平衡、预测能源消耗以及减少能源损耗等方式,提升能源效率与可靠性变得至关重要。GP方法已在能源领域得到应用,例如能源消耗预测分析 [138–139]、能源需求估算 [60]、生物质能源分析 [140]、核能系统风险分析 [141],以及垃圾焚烧发电系统中的灵活性分析 [142] 等。
DEAP:DEAP [143] 是一个基于Python的高级开源进化计算软件工具,可快速适配和测试目标问题。
GPLEARN:Gplearn [144] 是一个基于Python的开源GP库,采用基于树的表示形式。该工具非常适合符号回归问题。
GELAB:GELAB 是一个基于Matlab的开源库 [145], [146],可在Matlab环境中用于实现语法引导遗传编程(GGGP)类型的应用。
CGP4Matlab:CGP4Matlab [147] 是另一个开源软件工具,支持在Matlab环境中开发笛卡尔遗传编程(CGP)应用。该工具专为信号处理和图像处理问题而开发 [148]。
GPTIPS 2:GPTIPS [149] 也是一个开源的Matlab GP软件开发工具。许多研究论文 [150–152] 使用了该工具,表明研究人员对其在实际工作中的应用具有浓厚兴趣。此外,GPTIPS 工具也被用于符号回归问题 [153]。
PonyGE2:PonyGE2 [154–155] 是一个开源软件工具,提供基于Python语言的开发环境。该工具支持基于语法的GP类型。
GeneXproTools:GeneXproTools [156] 是一款桌面端商业软件,支持多种数据模型的分析。该专业软件面向具备统计学、数学、机器学习或编程知识的专业人士开发。它包含GEP(基因表达编程)类型,已被用于情感分类研究 [157] 和土壤温度分析 [158]。
GEP4J:GEP4J [159] 是一个开源的Java库,支持在Java环境中开发GEP应用。
PyGEP:PyGEP [160] 是一个开源的Python库,支持在Python中实现GEP应用。
JGEP:JGEP [161] 是另一个开源的Java库,可用于开发GEP应用。
EpochX:EpochX [162] 是一个开源的GP软件开发包,具有专为分析进化式自动编程而设计的Java框架。EpochX 采用 GNU LGPL 第3版许可证。
Karoo GP:Karoo GP [163] 是一个用Python编写的开源GP软件包。借助该工具,可轻松开展符号回归和分类研究。Karoo GP 是一个可扩展平台,支持多核计算和TensorFlow [164],有助于处理真实世界数据。Karoo GP 采用 MIT 许可证。
GISMO:GISMO [165] 是一个开源、多用途的GP研究软件包,具备并行计算能力 [166–167]。
KNIME:KNIME [168–169] 是一个跨平台的数据分析、报告和集成平台。此外,KNIME 还支持以新模块或节点的形式执行数据处理和可视化操作。KNIME 提供商业版和免费版,研究人员可使用免费版本并参与其功能改进 [170]。
GSGP-C++:GSGP-C++ 2.0 [171] 是一个开源的C++ GP开发库,支持几何语义遗传编程(GSGP)[172–173]。
GPLAB:GPLAB [174] 是一个用于在Matlab环境中开发GP应用的软件包。有研究指出,GPLAB 可有效控制GP中的膨胀(bloating)问题 [175]。
7. 结论
本文综述揭示了一个事实:GP已发展成为一个快速增长的跨学科领域,其强大而灵活的计算潜力已被广泛应用于众多学科中各类现实世界问题的求解。因此,GP文献已大幅扩展,并仍在持续增长——不断涌现出新的GP类型,因为标准GP已难以充分应对问题类型及其难度水平日益增长的多样性。随着问题日益复杂,对GP算法持续进步的需求也愈发迫切。
本文还重点分析了2014年至2019年间各类GP变体的年度发表趋势,以及GP应用日益集中的领域。这些分析为了解GP算法的最新发展趋势及其应用领域的扩展提供了重要线索。此外,本文还为初涉GP领域的研究人员列出了详细的GP软件开发工具清单。许多GP软件工具的开发者致力于提供用户友好的工具,不仅供软件专家使用,也便于无编程背景的研究人员操作。同时,得益于当今计算机日益提升的计算能力和高性能处理器,GP算法的运行速度比以往更快。这一进步使得GP作为一种有效的计算智能工具,能够被应用于更加复杂和困难的现实问题。
本综述亦旨在为希望开展GP算法研究的新手研究人员提供一个良好的起点。因此,本文全面概述了GP领域及其发展阶段。
综上所述,考虑到近期GP相关研究成果数量的持续增长,可以预见:GP将在未来应用中不断提升其影响力,并作为计算智能的一个重要分支继续蓬勃发展。通过在GP基本特性基础上不断增添新功能,涌现出具备更强计算能力的新型GP方法,并在更复杂、更困难的问题中取得更优结果,将成为一种持续的发展趋势。
原文链接:https://dergipark.org.tr/en/download/article-file/1284370