目录
1 概述
遗传编程算法是一种基于达尔文自然选择思想和适者生存理论的优化方法,Koza 于1990 年提出其基本概念,并在 1992 年详细介绍和说明了遗传编程的原理与实现过程。
2 遗传编程与遗传算法
遗传编程本质上是遗传算法的一种改进[53],是在遗传算法的基础上引入自动程序设计的一种算法。遗传编程与遗传算法的根本区别在于进化的单位不同,即个体的表现形式不同。遗传算法的个体是固定长度的线性字符串,遗传编程的个体则是不同大小和形状的非线性实体。一般来说,遗传编程的方法被分为三种,分别为线性遗传编程、基于树的遗传编程、基于图的遗传编程。本文只讨论基于树的遗传编程。与遗传算法相比,遗传编程提供了更大的特征空间,通过终端集和非终端函数集的非线性随机组合来生成新的特征。
遗传编程是机器学习的一个归纳形式,最初的目标是设计一个计算机程序,然后这个程序去执行一组带有训练集的任务,最后自动的构建出解决问题的最佳方案。如今,它已被广泛的应用于各个方面。遗传编程可以通过自身的学习,快速发现数据与数学表达式之间的关系,将输出与输入变量之间的关系用方程式的形式表示出来。它可以用多种编程语言来实现。
Q:
(1)解的表示不同:如何表示为树的形式;
(2)基于树的遗传编程与决策树、回归树、随机森林区别在哪
(3)为什么可以自动构建出解决问题的最佳方案呢
3 基本原理
http://t.csdn.cn/RSOi7
4 特点分析
遗传编程总是被设计为产生紧急方案的有效方法之一[54]。遗传编程的实现不需要人们明确的告诉它采取什么步骤和以什么顺序来解决问题,通常人们也不知道解决方案时什么,它可以通过达尔文自然选择进化理论、随机的优化技术,选出最优的解决方案[55]。遗传编程的主要优点是,它可以应用于以下领域:
(1)对变量之间的相关性不够了解,或者变量之间的相关性有待深入认识与开发。
(2)寻找最终解较为困难。
(3)传统的数学分析不能够解决存在的问题。
(4)可以接受近似解或者是可以接受无限接近正确结果的解。
(5)微小的性能改进通常是可以衡量的(或容易衡量的),而且价值很高。
(6)大量的可以进行检查分类集成的数据,且这些数据能转换为计算机可读形式。
遗传编程的缺点是解决问题一般所需要的时间较长;当数据量巨大的时候,无法设置准确的停止准则,只能慢慢去尝试。这是因为遗传编程不能精确的描述结果,只能无限的接近,每一次都会出现不同的结果。而且在运算的过程中需要消耗大量的内存空间,当数据量大时每一代的进化都会比较慢。
5 Matlab实现
稍后上传
6 Reference
[1]李曼. 基于遗传编程的GPM卫星降水数据校准方法研究[D].南京邮电大学,2020.DOI:10.27251/d.cnki.gnjdc.2020.001292.
【遗传编程/基因规划】Genetic Programming:http://t.csdn.cn/RSOi7