美文网首页1班互动区
创建种群的代码1--种群

创建种群的代码1--种群

作者: 大龙10 | 来源:发表于2022-08-12 04:41 被阅读0次

书名:代码本色:用编程模拟自然系统
作者:Daniel Shiffman
译者:周晗彬
ISBN:978-7-115-36947-5
第9章目录

9.7 创建种群的代码

第1步:初始化种群

  • 如果我们要创建一个种群,首先要做的就是用一个数据结构存放种群中的个体元素。
  • 在大部分情况下(比如猴子敲键盘的例子),种群的个体数量是固定的,因此可以用数组存放个体(在后面的例子中,种群中的个体数量会发生变化,我们会用ArrayList实现它)。
  • 数组中应该存放什么对象?我们还应该用一个存放基因信息的对象表示个体。
    它可以称为DNA对象:
class DNA {
}
  • 种群就是由DNA对象组成的数组。
    DNA[] population = new DNA[100]; 100个DNA对象组成的种群
  • DNA类应该包含哪些内容?
    对于敲击键盘的猴子,DNA就是它打出来的随机语句,也就是一个字符串。
class DNA {
    string phrase;
}

这样的实现是合理的,但我们不想把String对象用做遗传密码。相反,我们想用字符串数组表示遗传密码。

class DNA {
    char[] genes = new char[18]; 每个“基因”都是数组中的元素,我们需要18个基因,因为“to be or not to be"
}
  • 用数组的好处是:我们可以很方便地把这些代码扩展到其他例子中。
    举些例子:在一个物理系统中,生物的DNA可能是由向量组成的数组;对于一个图像对象,个体的DNA就是整型(RGB值)数组。
    我们可以用数组描述任意属性的集合。尽管字符串非常适用于本例,但数组可以作为未来扩展的基础。

  • 遗传算法要求我们为种群创建N个个体,每个个体的DNA都是随机生成的。因此,在对象的构造函数中,我们用随机方式确定数组中的每个字符。

class DNA {
    char[] genes = new char[18];
    DNA() {
        for (int i = 0; i < genes.lenght; i++) {
            genes[i] = (char) random(32,128); 从编号为32~128的ASCII字符中随机选择一系列字}
        }
    }
  • 我们已经有了构造函数,以下代码初始化种群数组中的DNA对象。
DNA[] population = new DNA[100];
void setup() {
    for (int i = 0; i < population.length; i++) {
        population[i] = new DNA(); 初始化种群中的每个成员
    }
}
  • DNA类根本没有完成。为了执行遗传算法的其他任务,我们还需要在其中加入更多函数。

下面我们将实现遗传算法的第2步和第3步。

相关文章

  • 创建种群的代码1--种群

    书名:代码本色:用编程模拟自然系统作者:Daniel Shiffman译者:周晗彬ISBN:978-7-115-3...

  • 创建种群的代码3--繁殖

    书名:代码本色:用编程模拟自然系统作者:Daniel Shiffman译者:周晗彬ISBN:978-7-115-3...

  • 创建种群的代码2--选择

    书名:代码本色:用编程模拟自然系统作者:Daniel Shiffman译者:周晗彬ISBN:978-7-115-3...

  • 各种群

    自从疫情逐步升级,我的微信群增加了很多,有各个社区群细分到小区群楼栋群,还有各个购物群,细分到蔬菜群烤鸡群老鹅群海...

  • 生态系统

    复习引入 讨论这些生态系统常见的有哪些? 有哪些种群? 生:农田生态系统有青菜种群、蚯蚓种群… 生:森林种群有松树...

  • Go 种群统计

    种群统计:返回一个数字中被置位的个数(值为1) 2.3 使用循环重写PopCount来代替单个表达式 2.4 写一...

  • 我们的Alpha Male情绪

    自然界动物种群中有一个个体被称为Alpha male ,它是这个动物种群的首领,在种群中处于不可替代的最高地位,有...

  • 再活一次的机会

    智利高山地区有一种短尾猴,群居生活。但这个种群和与其他种群不太一样,别的种群的猴子非常团结,任何群落里的成员都相互...

  • 《乌合之众》第一卷第一章群体的一般性(二)

    种群的想法很难过于描述,因为组织化的差异不仅仅归于种群的种类和组成,同时也掺杂着种群所归属的令人兴奋原因的强度和自...

  • 3. 漂变有多强?

    遗传漂变是一个随时存在的过程。在小种群中作用强,大种群中作用弱,只有无限大的种群才是对漂变免疫的。[但是地球上不存...

网友评论

    本文标题:创建种群的代码1--种群

    本文链接:https://www.haomeiwen.com/subject/tplwwrtx.html