算法分析与设计课程资料:蚂蚁算法的初步研究与计算机模拟
整理:Ackarlix
近年来在人工智能界引出的新的研究小热点----蚂蚁算法,以及我们对蚂蚁算法的一些研究成果。我们从完全不同的观点来研究蚂蚁等昆虫群体智能的现象,即从进化的过程来对待昆虫的群体智能的现象。提出一个用一种特殊的人工神经网络来描述“群体智能”的数学模型,最后用计算机对筑巢过程进行模拟。
1.引:蚂蚁是大家司空见惯的一种昆虫,而他们的群体合作的精神令人钦佩。他们的寻食、御敌、筑巢(蚂蚁的筑窝,蜜蜂建巢)之精巧令人惊叹。若我们是能从他们身上学习到一些什么的话,也将是一件非常有益之事
关于蜜蜂觅食,人们已经做过很彻底地了解,据说它们是用飞行的舞姿(兜圈圈)来传递信息,圈子的轴方向表示花蜜的方向,用飞行的圈数表示有花蜜地方的距离,别的蜜蜂得此信号,就纷拥向该方向飞去。
而蚂蚁觅食的方法,却另有一番世界,据研究当蚂蚁找到食物并将它搬回来时,就会在其经过的路径上留下一种“外激素”,其他蚂蚁嗅到这个激素的“味道”,就沿该路奋勇向前,觅食而去。不但如此而且还会沿着最短的路径奔向食物。
20世纪90年代初意大利学者Dorigo,Maniezzo提出的第一个“蚂蚁算法(ant colony algorithm)”。就是依照蚂蚁觅食原理,设计的一个群体智能的算法。
2.简单的蚂蚁算法
如前所述,蚂蚁能很快地找到通向食物的最短路径,下面我们较仔细地分析一下蚂蚁是如何找到到食物地点的最短程的。
设一群蚂蚁(随机地)向四面八方去觅食,当某只蚂蚁觅到食物时,一般就沿原路回巢,同时在归途上留下外激素,外激素随着向四周散发其浓度会不断下降。若有两只蚂蚁都找到食物,且沿原路返回(见图一)设OA 比OBA短,当第一只蚂蚁回到O点时,第二只蚂蚁(沿OBA的蚂蚁)才回到C点。于是OA路上有两次外激素的遗留物(去一次、回来一次),而在OC路是只有去一次的外激素遗留物,故OA的外激素浓度比OC上大,据研究蚂蚁一般会沿外激素浓度大的路径上前行。于是后面的蚂蚁会渐渐地沿由O到A的最短程到达A点(指所有已求到的路径中的最短者)。以上就是蚂蚁能以最短和找到食物的原因。
我们下面简单介绍,人们是如何根据这个原理设计出求最短程的“蚂蚁算法”的。下面以求通过n个城市的最短回路为例。
设有n个,设在t时刻在第i个城市上有蚂蚁ai(t)个, 令共有m个蚂蚁.
设在t时刻在连接第i,j两城市间的道路留下的外激素量为bij(t)
规定每个蚂蚁,在未完成一个回路时,不重复走已走过的城市.
第k个蚂蚁从i城市到j城市的概率
其中外激素量bij(t)有许多不同的定义,如可定义为:b(t)=e-ct,c>0;或定义为:
其中d、e是一正常量. (1)
这样每只蚂蚁经过n次迁移后就得到一条回路,其长度记为Lk.若满足要求,则停止.不然, 利用(1)式重新计算各边的外激素浓度,进行第二轮的搜索….
以上是利用蚂蚁算法求解最短回路的简单介绍,有兴趣的读者可参考有关的文献。
借助蚂蚁的启迪,不但可以开发出求最短程的算法,还可以开发出其它的算法,下面再举一、二。
据说蚂蚁很爱卫生,对其窩内经常进行大扫除,将垃圾堆在一起,然后拉到窩外。根据蚂蚁的上述行为,人们以蚂蚁为师设计分类算法:
一群蚂蚁随机出发,遇到垃圾,就将其拉走(拉的方向也是随机的),拉垃圾时,若遇到某一堆垃圾时,就放下。放下垃圾后,再次进行拉垃圾行为。。。。当然还要加了一些限制,才能达到人们所希望的结果。
另外,蚂蚁同心协进行搬运食物,是我们见得最多的蚂蚁行为,有人以此为兰本设计出几个机器人共同推盒子的算法。如美国阿尔伯塔大学设计出几个机器人共同推盒子的实验。
借助蚂蚁分工合作的特点(蚁皇管生男育女、工蚁管干活、兵蚁管保卫)的启迪,人们设计了求解任务分配问题的蚂蚁算法,并应用于工厂中汽车喷漆问题。如美国西北大学将蚂蚁算法用于卡车厂油漆车间,负责给离开装配线的卡车上漆的工作安排。他们采取工人分组,各组只喷一种颜色,只有当某小组任务特别紧张时,才分配另一小组前去帮助。通过这种设计后工厂各车间改变颜色的次数更少,从而提高了整体的生产率。
又如美国MCIWorld-com公司一直研究人工蚂蚁,并用于管理公司的电话网,对用户记帐收费等工作。另外,还设计“人工蚂蚁”打算用于因特网的路由管理。
国内也有研究者用蚂蚁算法求解全国144个城市的最短回路问题,求得的解同其它方法求到得解一样精确,这说明蚂蚁算法不但是求解组合优化问题的可行方法,而且是一种很有竞争力的算法。
3.蚂蚁筑巢的启迪------群体智能
蚂蚁群最令惊叹的能力是“筑巢”, 这类“群体智能”是自然界中普遍存在的现象,其中道理我们并不清楚,但我们可以对这种现象进行“唯象”地建模研究。
蚂蚁能筑巢,我们感到很惊讶。而看到人建筑高楼大厦并不感到惊奇。这也许是因为,认为人有一个聪明的脑袋,故能设计建筑高楼大厦。那么,为什么有一个聪明的脑袋,就能完成各种工作,而没有聪明脑袋的动物就不能完成复杂的任务?是不是只有“聪明的脑袋”才能完成复杂的任务?若是这样,那么“脑袋”是什么?是否都一定象我们现在看到的那样?是否可以有其它形式?比如我们可否将整个”蚁群”看成一个“松散的脑袋”?我想是可以这样看的。因为人和蚂蚁都是从低等单细胞生物进化而来的。一个分支进化成像人这样的大型动物(包括其中的脑袋),另一分支进化成像蚂蚁一样的蚁群。两者的不同在于前者(脑袋)是连通的,后者(蚁群)是离散的。在这样的看法下,一个蚂蚁就相当于脑中的一个细胞(神经元),蚂蚁之间的信息交流,就相当于大脑中各个细胞之间的联接。那么人工智能界用人工神经网络的技术来模拟人的大脑中某些功能,我们不就也可以用某种数学的模型来模拟“群体智能”,用来说明蚂蚁筑巢的功能。所不同点在于一个是用固定连接的神经网络来模拟,另一个是用离散随机连接的神经网络来模拟。我们正是以这种想法为出发点,提出“群体智能”新的数学模型,并研究其基本性质(目前研究“群体智能”的方法多是将“群体”看成为一个多Agent系统进行研究。我们是从一个全新的观点出发,进行“群体智能”的研究)。下面简单介绍我们在这方面的工作。
假设:群体智能是指:由众多简单的个体组成的群体,若具有能通过之间的简单合作来完成一个整体的任务的能力,则称该群体具有“群体智能”。
“简单个体”就是指单个个体只具有很简单的能力,这种能力我们将用某一简单功能函数来表示(就象神经元一样,用一种很简单的功能函数来表示)。
“简单合作”能力,就是指个体只能与其邻近的个体进行某种简单的通讯和协同动作,(如几个蚂蚁共同搬动一个物体)能力(这与前向神经网络中各神经元只与其前面一层中的神经元,可以通讯一样)。或通过环境间接与其它个体通讯(如一蚂蚁将外激素留在环境中,而其它的蚂蚁可从留下的外激素中得到一些有用的信息)。
这样,我们就可以建立“群体智能”的数学模型。
设有一群体,包含有n个个体(各个体的能力是相同的),每个个体具有一个能力f。即每个个体能完成某一函数运算f。其次,每个个体能与其邻近的个体进行“通讯”,即将一信息传给对方。各个体的行动是随机的、并行进行的。各个体接收终止的指令,就停止工作。这时,整个任务就完成。
在这种假设下,我们的“蚁群”就象一个随机连接的神经网络,若神经网络能模拟人的某些“智能”能力。那么,上述的随机连接的神经网络,就有可能模拟“松散的脑袋”----群体智能.
下面以“蚂蚁筑巢”为兰本,建立群体智能数学模型。
蚂蚁能力:f(x),即它能将在x处的“材料”(如泥巴)搬到f(x)处。(简单的个体)。
运货回来的蚂蚁A遇到迎面的蚂蚁B,能告诉B,自己从何处来(x处来) (简单的通讯能力),则B就将所搬的”材料”放到f(x)处.
开始时,各蚂蚁是随机进行搬运的.最后有一个终止指令.“听到”终止指令后,就停止工作。
五. 计算机模拟结果
按照上述的模型,我们设计一个蚂蚁筑窝的算法,即设计对应的f(x)函数(建筑一个形如开了一个天窗的蒙古包),计算机简单模拟的结果如下:
建筑第一层的情况
正在建筑第二层的情况(其中紫色的点表示第二层垒上的点,右边是府视图)
第二层已筑完毕
整个蚁窝筑成后的投影图(图中只简单表示出其中五层的情况,其中左下图是筑成后蚁巢的透视图)
4.结论
本文简单介绍了“蚂蚁算法”,主要两个内容,一是介绍目前国内外热衷研究的蚂蚁算法(主要是求最短程的算法);其次介绍我们提出的“松散脑袋”蚂蚁建筑巢模型,我们的工作还很初步,希望能起着“抛砖引玉”的作用。
参考文献
[1] Dorigo M,Gambardella L M.Ant colony system: A cooperative learning approach to the traveling salesman problem,IEEE Trans. Evolutionary Computation,1997,1(1):53-66.
[2]“Flocking and Collective Movement”,
http://leanair4.mit.edu/docushare/dscgi/ds.py/Get/File-376/OH_EE141_W2flocking.pdf
[3]李夏,戴汝为,“系统科学与复杂性”,自动化学报,第24卷第4期,1998/7
[4] 樊玮,朱军,“软件Agent技术的研究”, 航空计算技术,第29卷第4期,1999/12
[5]K. Sugawara et al., “Foraging Behavior of Multi-robot System and Emergence of Swarm Intelligence”, Systems, Man, and Cybernetics, 1999. IEEE SMC’99 Conference Proceedings. 1999 IEEE International Conference on, Volume:3, 1999 Page(s):257-262 vol 3
[6]Bill Fulkerson, Van Parunak,“The Living Factory: Applications of Artificial Life to Manufacturing”,IEEE 1995
[7]“Swarm intelligence-what is it and why is it interesting?”
http://www.micro.caltech.edu/Courses/EE150/dungeon/Week1/OH_W1SwarmIntel.pdf
[8]Tony White,“Swarm Intelligence: A Gentle Introduction With Application”,
http://www.sce.carleton.ca/netmanage/tony/swarm-presentation/index.htm
[9] http://www.micro.caltech.edu/Courses/EE141/Lecture/W1/RG_EE141_W1intro.pdf
[10]“Ant-Colony Optimization Algorithms(ACO)”,
http://leanair4.mit.edu/docushare/dscgi/ds.py/Get/File-378/RG_EE141_W8ACO.pdf