在内存寄存器中明确定义常量,而不是最初用常量播种个体并通过遗传算子使它们变异,有哪些优点和缺点?
具体来说,从我的一本关于线性遗传规划的书中读到这个:
在我们的实现中,所有寄存器都保存浮点值。在内部,常量存储在写保护的寄存器中,即不能成为目标寄存器。结果,这组可能的常数保持不变。
我想知道的是,这是否比最初随机生成常量并将它们集成到程序中,然后通过训练过程改进它们更好的方法。
谢谢
在内存寄存器中明确定义常量,而不是最初用常量播种个体并通过遗传算子使它们变异,有哪些优点和缺点?
具体来说,从我的一本关于线性遗传规划的书中读到这个:
在我们的实现中,所有寄存器都保存浮点值。在内部,常量存储在写保护的寄存器中,即不能成为目标寄存器。结果,这组可能的常数保持不变。
我想知道的是,这是否比最初随机生成常量并将它们集成到程序中,然后通过训练过程改进它们更好的方法。
谢谢
根据您对记忆寄存器一词的使用,我假设您指的是记忆增强的遗传编程技术。
即使使用内存寄存器,使用常量也是不正常的。取而代之的是,在遗传编程中使用内存等技术可以让您缓慢地改变您的内存寄存器,而不是进行突然的更改,使内存变得无关紧要。尽管如此,引入随机初始化的值仍然很常见,因此您可以进行随机重新启动以尝试逃避局部最优。
也许您正在考虑将所有内存寄存器设置为零或一些人工估计值?
编辑:
听起来他们有一些价值观,他们希望在不改变的情况下延续到所有世代。就个人而言,假设您的 GA 所在的环境可以更好地代表这种价值,假设它们在所有实例中共享。
如果它们没有跨实例共享,那么这可能反映了在设置中使用一些随机值播种种群的意图,这些随机值不应该被允许进化(至少,在给定的运行期间)。
如果您需要在复杂的背景下进化,并且希望在尝试更好地适应更复杂的可变环境情况之前,首先要很好地适应固定环境,那么第一种类型的常数(环境常数)可能很有用。
第二种常量(每个 DNA 实例)不是我使用过的东西,但我想如果分析师已经确定了一些“易失”变量,这些变量太混乱而无法持续进化,那么将它们“保护”为常量可能会很有用跑步。