2

所以,既然这个问题的答案基本上是说我真的应该研究编码我的生物的基因*,我做到了!

因此,我创建了以下简洁的 (byte[]-) 结构:

基因 = { X, X, X, X, Y, Y, Y, Y, Z, Z, Z, Z }

在哪里

  • X = 代表生物的某种特征。

  • Y = 这些块控制交叉和突变如何、是否以及何时发生(16 个可能的值,我认为应该绰绰有余!)

  • Z = 链的长度(基本上,这是为了将来的构建,我想让进化控制甚至整个链的长度)。

(所以 Z 和 Y 可以被认为是元信息)

(在你问之前,是的,那是一个 12 字节的 :))

我的问题如下:

我如何将这些与每个“生物”的特征联系起来?

基本上,我是这样看的(这可能是我实现它的方式):每个“生物”都可以跑来跑去,吃东西和繁殖,基本的东西。我不认为(我当然不希望如此!)我本身需要一个健身功能,但我希望进化,就像在食物、伙伴和空间的竞赛中一样,将推动生物进化。

这种观点是错误的吗?将其视为一个大图并“简单地”从那里获取它会更容易(请注意,我是程序员,而不是数学家!)?

或者,tl;dr:你能给我指出正确的方向吗?文章、研究和/或实施的例子?

(更重要的是;博士;我如何将基因翻译成例如腿的长度?)

*阅读问题,我正在构建一种模拟器。

4

2 回答 2

1

查看 Mitchell,1998,遗传算法简介,第 1 章。3.3,我找到了 Forrest 和 Jones,1994,Modeling Complex Adaptive Systems with Echo 的参考资料。 那是指似乎可以做您正在寻找的事情的软件 Echo(世界中不断发展的生物)。目前我找不到它的链接,但这里有一篇关于实施jEcho的论文,作者是 Brian McIndoe。

于 2011-09-16T16:49:13.703 回答
1

我以前没有在遗传算法的基因序列中看到像你的 Y 和 Z 这样的元信息(在我有限的技术接触中)。您的遗传算法是非传统算法吗?

一个生物有多少特征?如果您的 X 代表性状的值,并且基因序列可以具有可变长度 (Z),那么如果没有为所有性状定义足够的 X,会发生什么?如果一个生物的 X 比你拥有的特征多,会发生什么?

  • Z 应该是一个固定值。
  • Y 应该是你的基因进化程序的参数
  • 生物的每个特征都应该有一个 X(或一组 X)(不多也不少)

如果您拥有的 X 的数量是固定的,那么对于每个特征,您分配一个特定的索引(或一组索引)来表示该特征。

编辑:

您应该确定X应该表示的特征的编码:对于腿的长度,例如,您可以有几个字节表示腿的长度。如果字节 3-5 是腿的长度,则可以像这样表示X向量中的长度:

[...101......]

点是其他特征表示。上面的代码片段代表 5 的腿长(不管是什么意思)。下面的基因组仍然有 5 作为腿长,但也填写了其他特征。

[001101011011]

于 2011-09-21T15:44:15.240 回答