线性遗传编程常数

时间:2012-05-02 10:24:54

标签: artificial-intelligence machine-learning genetic-algorithm genetic-programming

在内存寄存器中明确定义常量有哪些优点和缺点,而不是最初为个体提供常量并通过遗传算子进行变异?

具体来说,从我对线性遗传编程的书中读到这个:

在我们的实现中,所有寄存器都保存浮点值。在内部, 常数存储在写保护的寄存器中,即可能不会成为 目的地登记。结果,这组可能的常数 仍然是固定的。

我想知道的是,这是一种比最初随机生成常量并将它们集成到程序中更好的方法,然后通过培训过程对它们进行改进。

由于

1 个答案:

答案 0 :(得分:1)

从使用术语记忆寄存器开始,我将假设您指的是记忆增强型遗传编程技术。

即使使用内存寄存器,使用常量也是不正常的。相反,像Memory with memory in genetic programming这样的技术可以让你慢慢改变你的内存寄存器,而不是做出突然的改变,使内存无关紧要。尽管如此,通常会随机初始化引入值,因此您可以进行随机重启以尝试转义本地优化。

也许您正在考虑将所有内存寄存器设置为零或某些人为估计值?

编辑:

听起来他们有一些他们希望通过未经修改的代代相传的价值观。就个人而言,假设它们在所有实例中共享,那么您认为这种价值会更好地代表您所在的环境

如果它们在实例之间共享,那么这可能反映了在设置中使用一些随机值为种群播种的意图,这些随机值不应该被允许进化(至少,不是在给定的运行期间) )。

第一种类型的常量(环境常量)可能非常有用,如果您需要针对复杂背景进行演变,并且希望在尝试获得良好之前先适应固定环境首先适合更复杂环境的复杂情况。

第二种常数(每个DNA实例)不是我用过的东西,但我想如果分析师发现了一些“易变”的变量太混乱而不能继续进化,那么“保护”可能是有用的。它们作为跑步的常数。