82
精灵
Forest Spirits
1 概念
精灵是为2010年北京地坛灯光节所做的互动装置,包含50
个人工生命体。精灵乍看起来似乎与建筑设计没有任何联系,但
它所用到的设计方法以及所涉及的背景理论实际涵盖了“参数
化”的多个方面,从某种意义上讲,它是更加纯粹的参数化设计
作品。
复杂理论(Complex Theory)是参数化设计的核心理论之
一,自组织、涌现等等也是参数化设计的重要概念。在这个作品
中,50个“精灵”构成一个没有司令官和层级的复杂自组织网
络,网络中的每个个体根据特定的规则运行,个体之间互相联
系、互相影响,涌现出集群整体的状态。“整体大于部分之和”
这一参数化设计的核心基础理论在这里被充分运用,并成为整个
作品的灵魂。
每个精灵由单片机、无线网络传输器、高能电池及精灵本
体组成,其中10个精灵具有红外传感器,用来检测进入竹林的人
群。精灵体内LED灯的不同状态成为其生命体的表征,它根据此
精灵此刻所具有的DNA进行闪烁,向外界传达信息,每个精灵会
不定时地通过无线网络向其他精灵发出自身所具有的DNA信息,
其他精灵根据一定概率接收信息,并将所接收到的信息与自身所
具有的DNA进行交叉变换,从而获得新的DNA。这一过程有些类
似遗传基因算法(详见第2节)。
这个作品旨在探讨人类与自然界之间的关系。50个具有生
命特征的人工生命体构成了一个栖息在竹林里的小生物种群,它
们有着自己的生存方式,互相之间保持着信息的沟通。进入竹林
的人群会对精灵的生存环境产生影响,精灵则会对这种改变做出
反应,改变它们自身的生存状态。这种影响可能是不经意的,貌
似轻微的,但后果未必是不严重的。在试验中发现,种群行为的
改变大多数情况是不被人察觉的,但当某种状态发生时,整个种
群会在集体闪烁若干次后全部关闭,不再启动。
2 算法描述
基于集群智能理论的算法成为其生命的源动力,以下是精
灵算法的详细描述(在作品中通过JAVA及C语言实现)。该算
法使用DNA控制灯的动作,DNA结构为一个长度为11的一维数
组,每个数的范围为0~255,最后一位标示它的状态是不完整的
(nDNA)还是完整的(DNA)。
(1)灯群互相交叉DNA
每个灯保有一条完整的DNA。每隔一段时间(n秒),每一
只灯都会把自己的DNA发给所有的灯,而每个灯会有5%的机率
接受这条DNA,一旦接受了DNA,就用自己的DNA和这条DNA
交叉,用得到的新DNA更新自己的DNA。因为这些灯不是在同一
个时间启动的,所以基本不会同时发出DNA,如果一个灯同时接
收2个以上DNA,则选择任意一个接收,其他舍去。
DNA的交叉规则即,第一条DNA的上半部分和第二条DNA
的上半部分交换,或者第一条DNA的下半部分和第二条DNA的下
半部分交换,这两种情况随机选择一种,然后保留第一条DNA作
为该灯新的DNA。
(2)传感器发出DNA影响整个灯群
每只传感器保有一条不完整的nDNA。系统运作初始,某一
个传感器第一次被触发,它将此次触发从接通到断开的时间转化
为一个数值,具体映射为0~秒对应输出一个0~255的数值,
超过秒也输出255。这支传感器发出一条不完整的nDNA,其
中只含有第一个位置的数值即为刚刚传感器被触发获取的数值,
其他位置标为空,所有传感器都会收到这条nDNA,更新现有的
DNA。
当某一个传感器被触发的时候,会在现有的这条nDNA上加
设计 HHD_FUN (华汇设计北京分公司)
程序设计 高聪 陈济林
83
上一个新的数值,再发给其他传感器,当最后一个数值被填满的
时候,这个传感器把这个nDNA作为一条完整的DNA发向整个系
统,每支灯都有5%的可能性接收这条DNA,并用自己的DNA和
它交叉。传感器发出DNA后还会再发出一条全为空的nDNA,让
所有的传感器状态清零。
(3)将DNA翻译为灯的动作
以m秒为一个灯闪动的循环周期,DNA前10位数据代表这个
部分“精灵”的构件尺寸
精灵分解图
致谢:
精灵在技术实现上得到了南开大学机器人研究所刘景泰所长及其学生们的大力支持,在此表示诚挚的感谢!
周期中0、m/10⋯⋯9m/10秒十个关键时刻灯的亮度,从一个关
键时刻到另一个关键时刻的亮度变化是连续的,变化速度和两个
关键时刻之间的亮度差距成正比。灯在每次循环周期开始都要翻
译一次DNA。上一次DNA翻译出的第10个数值和这一次翻译出的
第1个数值决定这一次循环的第一个“渐变”是从某个亮度以某
个速度变化到另一个亮度。