人工生命:鸟以类聚
Shawn Carlson介绍了如何在计算机上模拟简单生物。
科学家们有时需要费尽九牛虎之力来了解动物——特别是群居动物一一为何表现出它们特有的种种行为。例如,一群鱼或一群鸟的行为在许多方面都像一条鱼或一只鸟。然而,这些动物的许多个体究竟是如何组织成一种“超级生物”的,在很大程度上仍是一个谜。
不过,信不信由你,现在人们对这样一些自组织的动物群体的认识,似乎已经越来越多地来自计算机爱好者,而非从事野外考察的生物学家。许多程序设计人员在他们的台式电脑上创造出栖息着模拟动物的虚拟环境,这些人工生物的特性通常取决于某一特殊的数据串,它相当于活的有机体的DNA蓝图,这一数字代码定义了一种有机体与其赛博环境(即计算机中虚拟环境)的互动方式,并确定了该模拟动物繁殖的可能性。
为了模拟真实的DNA程序应当设计得使赛博代码能够发生随机突变,这些突变可以改变人工动物的适应性,这样,只要连续跟踪这些模拟动物的许多代的演变过程,你就可以在儿分钟的时间观看它们的数字DNA是如何进化的。而对于真正的遗传编码来说,在自然界中完成此过程可能型花几万年的时间。现在这类软件有许多可以从网上弄到。因此,有兴趣的业余爱好者现任可以探索进化的奥秘至少是探索这些虚拟世界中进化的奥秘。
如果你接受了这一挑战、那么你就将加入Craig Reynolds等人的行列。Reynolds目前在索尼计算机娱乐公司任职,1986年他曾开发出了一个给人印像深刻的鸟群模型。他猜测,一群鸟中每只鸟都根据一组简单的指令采取行动。因此,他在编写程序时也使他创造的人工鸟类——他给这些鸟取了一个诡异的名字叫“boid”——遵循仅仅三条规则。第一条规则是,不要过分靠近任何东西,包括其它的boid。第二条规则是,尽量使你的速度与你周围的其它boid的速度保持一致。第三条规则是仟何情况下部要朝着附近的boid组成的一个集团的中心靠近。
他的模拟的结果十分引人注目。不管这些Boid开始时是如何分散,很快它们便会聚集成一个鸟群。当鸟群遇到赛博空间中的障碍时,它们便会分成两群,越过障碍后再重新汇合起来。
Reynolds的模拟鸟boid看来是对所谓的“自生行为”(emergent behavior)理论的有力支持。这令人着迷的理论阐述了当个体服从几个简单而特殊的规则时,如何能够产生复杂的社会相互作用。Reynolds的程序根本没有提到如何合成群,更没有指令来告诉鸟群应当如何飞跃障碍。而且,虽然大多数程序都无法应付程序设计师未曾预料到的情况,但在Reynolds的模拟中boid却能对没有遇见到的一些问题作出令人意外的各种各样合情合理的反应。Reynolds始终是虚拟领域的一位占领先地位的先驱:他把计算机动画用于动画片制作的成果,使他获得了1998年的学院奖。
以色列拉马特甘的一位计算机程序设计师在创造添加了有趣的一笔——他开发的一种食肉的boid取名“floy”。读者如果想见识一下Dolan的人工鸟场,可以上网站访问,您将找到一些Java程序来产生令您大饱眼福的模拟。
Dolan的floy只遵守两条规则:第一:跟上你的同伙,但不要靠的太近;第二,当你发现一只入侵者时,立即向它飞去并展开攻击。这两规则也能把floy汇集成一个鸟群。但是这种鸟群给鸟群的各个成员带来的好处却有点出人意料:避免彼此靠得太近就使floy所形成的鸟群分布在一个相当大的区域上、这样它们巡逻的空域就远远超过了任何一只floy凭自己的感官所能观察的范围每当一只外来入侵者接近鸟群,离它最近的floy就立即上前迎击。由于它的同类必须一直聚在一起,因此最靠近的那些floy也就跟着飞过去,而后者旁边的floy也如法炮制,最后整群floy都扑向入侵者。
效果非常惊人。当鸟群受到敌人挑战时,整个鸟群很快转过攻击入侵者,包括那些开始时因为离得太远还不知道有敌人来挑衅的floy。转瞬间一大群floy就把入侵者淹没了,后者只得为保住一条性命而战斗至死。这一情景与一只倒霉的水牛不幸闯进满布食人鱼的湖泊时所发生的场面没有什么不同。
同大吃大嚼的食人鱼一样.每只floy只要成功地对入侵者咬上一口,都可获得好处。在Dolan的“boid咬boid世界中,每咬一口部使一个单位的能量从被捕食者身上转到捕食者身上。飞得较快的floy有更多的机会咬吃被捕食者,但它们飞行时消耗能量的速度也比较快。飞得较慢的floy消耗的能量比较少,但它们往往最后赶到被捕食者所在的地方,因而吃到的东西也比较少。
Dolan的程序使控制速度和能量消耗的指令发生突变,同时也使其它一些参数(包括各个floy彼此可以靠得多近,它们加速有多快,乃至它们违背规则的可能性等)发生突变。Dolan的程序也确保能量最多的floy繁殖(从而把其特性遗传给下一代)的机遇也最大。这样随着人造生物在赛博空间中一代代地传去,群体就越来越适应于生活在它的虚拟环境中了。
有了Dolan的程序,再加上一点想象力,任何一位具备中等编程水平的人都能够搞各种各样有独创性的研究。我现在正在尝试弄清为何高度的进攻性行为能在一个群体中延续下来,尽管这种倾向看起来常常起着自相残杀的破坏作用。我自己的程序版本让两组floy互相争斗。一只floy在被敌对阵营的一只floy咬了时仍将丧失能量。但是,由于打斗的人在打中对手时自己并不会变得更强,因此我的模拟规定,成功的floy斗上咬了对方一口后并不获得能量。其结果是观察到一场混战,其中获胜者完全由数量、能量储备以及概率法则来决定。
我打算在这个程序作一些修改,使其floy具有三种不同层次的与生惧来的敌对性。当一只floy从它的赛博双亲那里各获得一个进攻性的赛博基因时,它就将变得特别好斗,并同所有的外来的floy拼斗到至死方休。当一只floy仅遗传了一个好斗基因时,它将在打斗到能量储备降到最低水平时退出战团。而一只未获得任何好斗基因的floy将避开一切纷争。
我想可能会发生下面的情况。当一群floy遇到一个实力压倒优势的敌对群体时,有一部分floy会投入打斗,而那些不好斗的floy则将退缩到一边袖手旁观。当能量储备最终降到低水平时.中等好斗的floy也将退出战斗,加入完全不好斗的一伙,但那些极其好斗的floy仍将继续与敌人厮杀得难解难分,从而保护退却下来的floy免遭敌人攻击。尽管这些顽固不化的好斗分子最终将被敌人消灭,但原先那个群体中的大部分floy则得以保住性命而生存下来一一这不是一件坏事,因为如果它们不是好斗分子的话,那结果将是被敌人消灭得一个不剩。此外,随着存活下来的那些带有单个好斗基因的floy交配繁殖,下一代中将会出现更多的超级好斗个体。因此,这一策略将会无限期地一直延续下去。这样一个喜欢打斗的群体中的部分个体可能始终都有一种极端好斗的倾向一一这不是为了保护自己,而是为了保证它们的那些爱好和平的伙伴能生存下去。Dolan的floy使我能够探索这样一种想法。
人工生物也可以用来考察与生物学毫无关系的问题。例如,某些研究人员利用这一类计算机模拟探索交通的难题(请读者上网访问WWW.the.physik.unistuiigart.de/treiber/MicraApplet/等网站)。我的好朋友Greg Sdamidt认为,Dolan的floy模型几乎不需要作什么修改,就可以用来模拟人类在加利福尼亚高速公路上驱车行驶的情况。同我的程序一样每一只floy的行为以部分地好斗参数所决定,它将使某些floy更喜欢加速,冲到其它floy的前面去,或者在交通拥挤期开到路的边缘上行驶。从对鸟的模拟中借鉴来的这样一种模型或许能使我们对交通管理获得某些深刻的认识,至少有朝一日,它或许能够解释为何任交通拥挤的公路容易火冒三丈的驾驶员总是象鸟鸦一样随处可见。
利用Craig Reynolds开发的软件可以在计算机上创造出赛博鸟,称为“boid”(左)每只虚拟鸟只受几条简单规则的支配但是一群这样的虚拟鸟在遇到障碍时(左下)。它将会分成两群(中),越过障碍后再重新汇合起来(右) 同真正的鸟群颇为相似。
有兴趣的网民可以利用Java Applet程序模拟名为“floy”的食肉鸟类(上)。右边从上到下的几幅快照显示了当一群floy(绿)发现一只孤独的入侵者(红)并在后者企图逃跑时穷追不舍的过程中发生的情况
郭凯声/译 向俊/校
请 登录 发表评论