递归自我改进

问题描述:

开发了一个演示基本智能的简单算法,我渴望得到递归自我改进,我遇到的问题是由于我对递归缺乏理解。递归自我改进

据我所知,如果我有一些说明我用来改进的算法的“健身”(我提供的算法是二进制表示的自身),那么它使用基本智能来生成一个新的二进制算法,比自己更好)。

但是我需要知道的是,我该如何评估算法的适应性?我通常会做到这一点

if @variable == true 
    fitness += 1 
end 

但如果健身是我如何衡量这一点,因为衍生的算法不能没有它spawing一个新的算法本身等进行测试,从算法本身催生了算法的能力。 ..

干杯 马丁

def self_improve(level) 
    return level if level == 100 #this is the brake 
    level += 1 
    self_improve(level) 
end 

p self_improve(1) #=>100 

递归几乎总是可以使用另一种方法来实现的算法是一个坏主意。在极端堆栈深度工作时,Ruby会遇到很多问题,如增加垃圾收集成本,大量堆栈开销以及可能导致“堆栈级别太深”错误的相对较低的上限。

您可能会更好地创建不共享状态的独立对象。迭代,而不是递归。在适用的情况下,使用您自己的自我管理堆栈,例如来自您的pushshift元素的数组。

一些示例代码可能是:

candidate = stack.shift 

if (candidate.fitness > minimum_fitness) 
    stack.push(candidate.spawn) 
end 

spawn的方法会做你需要做的,并返回一个,独立实例什么神奇的事情GA。如果需要的话,可以将其与其他候选人结合使用。