探索生物形态:基于Dawkins算法的AI艺术创作

在数字艺术的世界里,生物形态(Biomorphs)是一种由计算机程序生成的随机图案。这些图案看似杂乱无章,但实际上是运行一种流行的AI程序的结果,这个程序执行的是Richard Dawkins在其著作《盲眼钟表匠》中描述的算法。Dawkins探索了仅仅通过变异和选择的组合,结合一个强大的发展(解码)过程,所能产生的可能性。

这基本上是一个递归算法,它有一些基因,并使用一些变异和一些随机选择。仅此而已。这就是产生各种各样迷人虚拟生物所需的一切,其中一些看起来非常具有遗传性。

Dawkins基础系统

在Dawkins的系统中,表型(即它的外观)基本上是分支树结构。一个扩展是向这个结构添加段(本文不包括此内容)。

基础系统有九个基因,控制诸如分支角度、分支深度、线条数量等。它使用递归算法来执行绘图;以下是示例代码:

private void draw(Graphics g, int i, int j) { tree(g, i / 2, j, order, 2); }

这段代码展示了如何在C#中实现Dawkins生物形态结构的绘制(此实现中没有分段)。

类设计

下面的图表说明了代码设计。在展示演示屏幕截图之前,将简要讨论每个类。

基本上,为本文创建了两种类型的生物形态。这些是:

  • BioMorph,它使用了以下类:
    • BiomorphPanel:提供原始Dawkins生物形态的渲染。
    • IBioEvolvalbe:由BiomorphPanel类实现的接口。
    • BiomorphLayoutPanel:托管多个BiomorphPanel对象。然后它被托管在Windows表单上,负责选择一个随机的BiomorphPanel,以产生新一代的Dawkins生物形态。
  • EvolvingCritter,它使用了以下类:
    • EvolvingCritterPanel:提供牛头骨类型生物形态的渲染。
    • IEvolvalbe:由EvolvingCritterPanel类实现的接口。
    • CritterLayoutPanel:托管多个EvolvingCritterPanel对象。然后它被托管在Windows表单上,负责选择最适应的EvolvingCritterPanel,以产生新一代的Dawkins生物形态。
    • EvolvingCritterComparator:提供了一个简单的IComparer实现,允许对EvolvingCritterPanel对象集合进行排序,以获得最适应的一个。

还有一个共同的接口:

  • ILayoutPanel:由BiomorphLayoutPanel和CritterLayoutPanel实现,允许托管这些面板之一的Windows表单生成新的生物种群。

运行中的应用程序截图

那么,应用程序是什么样子的呢?这取决于当前使用的是哪种生物形态。基本上,有两个链接,根据选择的链接,主面板将切换以显示正确的生物形态面板。它要么是BiomorphLayoutPanel(Dawkins生物形态),要么是CritterLayoutPanel(牛头骨生物形态)。让一起来看看吧?

在表单上放置了一个计时器,每1500毫秒,它将选择一个随机的Dawkins生物形态,并使用它来产生一群新的疯狂生物。这里只有随机选择(没有技巧),可以得到一些非常生物逻辑的生物。基本上,这完全取决于之前看到的巧妙的基因解码。

真的只是包括了创建其他风格的生物形态的可能性,只是为了好玩。这里的不同之处在于,这些家伙被评判以确定哪一个应该被用来繁殖。基本上,面积最大、首选眼睛颜色和首选组成部分的生物将获得更好的评分,因此它更有可能成为用于繁殖的alpha雄性。

注意:确实在这里挑选最适应的一个,所以人们会希望随着时间的推移,最终会得到形状或颜色相似的生物。但大自然有其他想法,变异是非常强大的。玩一会儿就知道了。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485