bjr*_*rnt 25 terminology genetic-programming genetic-algorithm
我想对遗传算法和遗传编程之间的差异做一个简单的解释(没有太多的编程术语).例子也将不胜感激.
显然,在遗传编程中,解决方案是计算机程序.另一方面,遗传算法将解决方案表示为一串数字.还有其他差异吗?
Joh*_*dol 41
遗传算法(GA)是模拟自然进化过程的搜索算法,其中每个个体都是候选解决方案:个体通常是"原始数据"(无论以何种编码格式定义).
遗传编程(GP)被认为是GA的一个特例,其中每个人都是计算机程序(不仅仅是"原始数据").GP探索算法搜索空间并演化计算机程序以执行定义的任务.
pet*_*est 21
遗传编程和遗传算法非常相似.通过比较多代中潜在候选人群中每个候选人的适应性,他们都习惯于发展问题的答案.
通过随机改变(突变)或交换其他候选者的部分(交叉)来找到每一代新候选者.最不合适的候选人将从人口中删除.
它们之间的主要区别在于算法/程序的表示.
甲遗传算法被表示为的动作和值的列表,通常是一个字符串.例如:
1+x*3-5*6
Run Code Online (Sandbox Code Playgroud)
必须为此编码编写解析器,以了解如何将其转换为函数.结果函数可能如下所示:
function(x) { return 1 * x * 3 - 5 * 6; }
Run Code Online (Sandbox Code Playgroud)
解析器还需要知道如何处理无效状态,因为变异和交叉操作不关心算法的语义,例如可以生成以下字符串:1+/3-2*
.需要决定处理这些无效状态的方法.
甲遗传程序被表示为行动和值,通常是一个嵌套的数据结构的树结构.这是一个相同的例子,如图所示:
-
/ \
* *
/ \ / \
1 * 5 6
/ \
x 3
Run Code Online (Sandbox Code Playgroud)
还必须为此编码编写解析器,但遗传编程不会(通常)产生无效状态,因为突变和交叉操作在树的结构内工作.
遗传算法
遗传计划