智能应用 影音
TERADYNE
ADI

模拟人生的方法

林一平手绘之狄更斯。林一平

最近大家都在高喊云端运算,谈虚拟化(Vitualization) 、负载平衡(Load Balancing)等等。其实这些技术的基本原理,在2、30年前就已存在。例如我的博士论文题目是平行模拟(Parallel Simulation),系以多部计算机来模拟离散的事件(Discrete Event) ,在负载平衡上就下了极大的工夫。

平行模拟最大的问题是,许多部计算机要共同模拟一个现象,彼此必须协调,相当困难。例如用10部计算机模拟一个系统在100分钟内的变化,这些计算机必须依时间的次序来模拟事件 (Event),因此要协调,避免后发生的事,被先模拟到。我们的研究显示,协调的成本甚高。

1980年代的有一天我突发奇想,做了另类思考,如果将前述100分钟的模拟,切成十份,第一个10分钟由第一部计算机模拟; 第二个10分钟由第二部计算机模拟,以下类推。所有计算机平行模拟时,彼此之间不需要做任何协调。当它们全部完成运算后,再将所有10分钟的结果依序串接回来,就完成整个模拟程序。我将这个方法叫作Time-Division Algorithm,发表于ACM Transactions on Modeling and Computer Simulation这个杂志的创号刊,颇受瞩目。

有不少学者持续我的研究,但将这个方法改名为Time-Partitioning Algorithm。这个方法其实并不容易使用。你必须先预测系统在第10分钟时,处于何种状态,如此第二部计算机才能正确的模拟第二个10分钟。这当中有一些数学理论,不在此说明。

在电话公司工作时,我曾用Time-Division Algorithm来模拟电信交换机的效能。后来我有点走火入魔的想,是否可以用这种方法快速模拟人的一生。例如针对一个20岁的人,我们先假设他在30岁时的状况(由关西摸骨算命师提供),再同时模拟他20~30岁及30~40岁发生的事,岂不有趣?其实狄更斯(Charles John Huffam Dickens;1812~1870) 在《小气财神》(A Christmas Carol) 这部小说,就用Time-Division Algorithm对主角Scoorge的一生快速模拟,然后让圣诞精灵分段放给Scoorge看。

做模拟研究的人,都会忍不住去偷嚐「模拟生命」这个禁果。我20年前的一位好友杰佛森 (David Jefferson)就是如此。杰佛森超级有个性,喜欢开跑车飙速,也很会「国骂」。我大部分的「美国俚语」,是向他学来的。他在UCLA升等为常聘副教授 (Tenured Associate Professor)没多久,打电话告诉我:「Jason, I fxxking left UCLA.」原来他一升等就决定换工作,跑去一家公司玩耍子去啦。

杰佛森发明了一种很特殊的平行模拟方法,叫做Time Warp,时间可以倒卷回来的意思(不过Len Klenirock好像也独立想出类似的方法)。Time Warp的计算机不互相协调,各自乱跑 (这和杰佛森的个性很像)。当一部计算机发现跑过头时,就将时间倒退,并取消(undo)超前模拟的事件。杰佛森这怪咖后来想到要模拟生命。他闯入了生物领域,进行人工生命(Artificial Life)的模拟,我一点都不惊讶。

现为国立阳明交通大学资工系终身讲座教授暨华邦电子讲座,曾任科技部次长,为ACM Fellow、IEEE Fellow、AAAS Fellow及IET Fellow。研究兴趣为物联网、移动计算及系统模拟,发展出一套物联网系统IoTtalk,广泛应用于智能农业、智能教育、智能校园等领域/场域。兴趣多元,喜好艺术、绘画、写作,遨游于科技与人文间自得其乐,着有<闪文集>、<大桥骤雨>。