【问题标题】:How to translate a set of/a chromosome/s to an attribute?如何将一组/一条染色体翻译成一个属性?
【发布时间】:2011-09-15 23:21:51
【问题描述】:

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

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

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

在哪里

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

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

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

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

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

我的问题如下:

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

基本上,我是这样看的(这可能就是我将如何实现它): 每个“生物”都可以跑来跑去,吃东西和繁殖,基本的东西。我不认为(至少我确实希望如此!)我需要一个适应度函数本身,但我希望进化,就像在比赛中一样为了食物,伙伴和空间将推动这些生物进化。

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

或者,tl;dr:您能否为我指明正确的方向来阅读文章、研究和/或实施示例?

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

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

【问题讨论】:

  • Fitness 只是“描述了生存和繁殖的能力”所以...... :)
  • 虽然 实际上 匹配适合度作为数学模型(或终止循环的布尔函数或其他),但它不匹配适合度本身 在我的特殊情况下,因为我真的对哪个小生物幸存下来(或者更不用说它有什么属性)感兴趣。但是感谢您的链接,有趣的阅读:)

标签: genetic-algorithm artificial-life


【解决方案1】:

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

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

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

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

编辑:

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

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

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

[001101011011]

【讨论】:

  • 我对这个的了解可能比你还少(至少听起来是这样!)。基本上,我认为我可以简单地枚举每个 X 并以编程方式计算基因中表示的特征的属性(是的,你可以像“遗传算法的运行时参数上的遗传算法”一样表达它,我想要它尽可能与实际结果分开(即尽可能抽象))。
  • 除了基因的实际编码和结构之外,我将如何从拥有 {X, [..] } 到(例如!)腿的属性?更好的提问方式可能是,我如何使用 {X, [..]} 计算某事物的属性(例如长度)?
  • @MarcusHasson,我添加了一些关于如何从表示中获取特征的详细说明。这真的取决于您来确定您的编码应该如何。需要注意的是,编码可能会影响您的遗传算法的执行方式,以及您选择的变异和组合规则。
  • 啊,这解释了很多!那么除了进行简单的原始二进制到十进制转换之外,没有实际的计算吗?所以,基本上,编码你的特征的唯一真正原因是因为这样更容易处理交叉和突变!先生,您是英雄!无论如何谢谢:)
【解决方案2】:

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

【讨论】:

  • 虽然我没有太多时间真正阅读所有内容,但我有时间阅读的内容看起来很有希望。
猜你喜欢
  • 2012-03-28
  • 1970-01-01
  • 2018-05-05
  • 2018-09-13
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多