我想简单解释一下遗传算法和遗传编程之间的区别(没有太多的编程术语)。举个例子也会受到欢迎。
显然,在遗传编程中,解决方案是计算机程序。另一方面,遗传算法将解决方案表示为一串数字。还有其他区别吗?
发布于 2016-01-07 19:24:19
遗传编程和遗传算法非常相似。它们都用于通过比较潜在候选者群体中每个候选者在许多代中的适应度来进化出问题的答案。
每一代,通过随机改变(变异)或交换其他候选者的部分(交叉)来发现新的候选者。最不“适合”的候选人被从群体中剔除。
结构差异
它们之间的主要区别是算法/程序的表示形式。
遗传算法表示为动作和值的列表,通常是一个字符串。例如:
1+x*3-5*6必须为这种编码编写一个解析器,以了解如何将其转换为函数。生成的函数可能如下所示:
function(x) { return 1 * x * 3 - 5 * 6; }解析器还需要知道如何处理无效状态,因为变异和交叉操作并不关心算法的语义,例如,可以生成以下字符串:1+/3-2*。需要决定一种方法来处理这些无效状态。
遗传程序被表示为动作和值的树形结构,通常是嵌套数据结构。下面是相同的示例,如一棵树所示:
-
/ \
* *
/ \ / \
1 * 5 6
/ \
x 3还必须为这种编码编写解析器,但遗传编程(通常)不会产生无效状态,因为变异和交叉操作在树的结构中工作。
实际差异
遗传算法
减法本身具有固定的长度,这意味着结果函数具有有界的无效状态( complexity
Genetic programs
状态本身具有可变的长度,这意味着它们更灵活,但在complexity
发布于 2010-09-29 20:56:00
遗传算法( Genetic algorithms,GA)是模拟自然进化过程的搜索算法,其中每个个体都是一个候选解决方案:个体通常是“原始数据”(以任何已定义的编码格式)。
遗传程序设计( Genetic programming,GP)被认为是GA的一个特例,其中每个个体都是一个计算机程序(而不仅仅是“原始数据”)。GP探索算法搜索空间,并发展计算机程序来执行指定的任务。
发布于 2010-09-29 16:44:56
简单地说,(在我看来)遗传编程是遗传算法的一种应用。遗传算法用于通过计算机程序创建另一个解决方案。
https://stackoverflow.com/questions/3819977
复制相似问题