![]() |
|
Spaces home 0 一壶单片机 0PhotosProfileFriendsMore ![]() | ![]() |
0 一壶单片机 0单片机开发,技术研究。
欢迎留言,感谢访问!
|
July 08 转载:蚁群算法ACO(ant colony optimization)的原理及实现之前说的算法基本上都比较枯燥的(废话,算法都很枯燥……),这次要介绍的蚁群算法(Ant Colony Algorithm)却是一种源 于自然现象的算法,也是一种 meta heuristic,即与具体问题关系不大的优化算法,也就是它是一种用来在图中寻找优化路 径的机率型技术。Marco Dorigo于1992年在他的博士论文中引入,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。 小小的蚂蚁总是能够找到食物,他们具有什么样的智能呢?设想,如果我们要为蚂蚁设计一个人工智能的程序,那么这个程序 要多么复杂呢?首先,你要让蚂蚁能够避开障碍物,就必须根据适当的地形给它编进指令让他们能够巧妙的避开障碍物,其 次,要让蚂蚁找到食物,就需要让他们遍历空间上的所有点;再次,如果要让蚂蚁找到最短的路径,那么需要计算所有可能的 路径并且比较它们的大小,而且更重要的是,你要小心翼翼的编程,因为程序的错误也许会让你前功尽弃。这是多么不可思议 的程序!太复杂了,恐怕没人能够完成这样繁琐冗余的程序。 为什么这么简单的程序会让蚂蚁干这样复杂的事情?答案是:简单规则的涌现。事实上,每只蚂蚁并不是像我们想象的需要知 道整个世界的信息,他们其实只关心很小范围内的眼前信息,而且根据这些局部信息利用几条简单的规则进行决策,这样,在 蚁群这个集体里,复杂性的行为就会凸现出来。这就是人工生命、复杂性科学解释的规律! 下面就是实现如此复杂性的七条简单规则: 1、范围: 蚂蚁观察到的范围是一个方格世界,蚂蚁有一个参数为速度半径(一般是3),那么它能观察到的范围就是3*3个方格世界,并 且能移动的距离也在这个范围之内。 2、环境: 蚂蚁所在的环境是一个虚拟的世界,其中有障碍物,有别的蚂蚁,还有信息素,信息素有两种,一种是找到食物的蚂蚁洒下的 食物信息素,一种是找到窝的蚂蚁洒下的窝的信息素。每个蚂蚁都仅仅能感知它范围内的环境信息。环境以一定的速率让信息 素消失。 3、觅食规则: 在每只蚂蚁能感知的范围内寻找是否有食物,如果有就直接过去。否则看是否有信息素,并且比较在能感知的范围内哪一点的 信息素最多,这样,它就朝信息素多的地方走,并且每只蚂蚁多会以小概率犯错误,从而并不是往信息素最多的点移动。蚂蚁 找窝的规则和上面一样,只不过它对窝的信息素做出反应,而对食物信息素没反应。 4、移动规则: 每只蚂蚁都朝向信息素最多的方向移,并且,当周围没有信息素指引的时候,蚂蚁会按照自己原来运动的方向惯性的运动下 去,并且,在运动的方向有一个随机的小的扰动。为了防止蚂蚁原地转圈,它会记住最近刚走过了哪些点,如果发现要走的下 一点已经在最近走过了,它就会尽量避开。 5、避障规则: 如果蚂蚁要移动的方向有障碍物挡住,它会随机的选择另一个方向,并且有信息素指引的话,它会按照觅食的规则行为。 7、播撒信息素规则: 每只蚂蚁在刚找到食物或者窝的时候撒发的信息素最多,并随着它走远的距离,播撒的信息素越来越少。 下面的程序开始运行之后,蚂蚁们开始从窝里出动了,寻找食物;他们会顺着屏幕爬满整个画面,直到找到食物再返回窝。 其中,‘F’点表示食物,‘H’表示窝,白色块表示障碍物,‘+’就是蚂蚁了。 参数说明: 最大信息素:蚂蚁在一开始拥有的信息素总量,越大表示程序在较长一段时间能够存在信息素。信息素消减的速度:随着时间 的流逝,已经存在于世界上的信息素会消减,这个数值越大,那么消减的越快。 错误概率表示这个蚂蚁不往信息素最大的区域走的概率,越大则表示这个蚂蚁越有创新性。 速度半径表示蚂蚁一次能走的最大长度,也表示这个蚂蚁的感知范围。 记忆能力表示蚂蚁能记住多少个刚刚走过点的坐标,这个值避免了蚂蚁在本地打转,停滞不前。而这个值越大那么整个系统运 行速度就慢,越小则蚂蚁越容易原地转圈。 February 23 猫咪的叫声打招呼,撒娇—它會绕著你的脚,不断的用头来磨噌。你把它摆在桌上,它會用头、下巴,不断的磨你的脸。欢迎—当你回家时,它會跑到门口坐著,缓慢而幅度很大地摇晃著尾巴表示“很高兴,你回来了,欢迎欢迎”。 高兴—吃饱了,擦过嘴,舔过脚掌,坐定,摇尾巴,表示“我吃饱了,好满足,好高兴。” 信赖—它會四脚朝天,在地上翻滚,表示它完全信赖你,觉得十分安全。巡视国界—它會轻轻的、尾巴平伸的四处走动。有入侵者时,它會先探索来者意向如何。 好奇—用后脚站起来,耳朵朝前倾,尾巴垂下,末端轻轻的摇。小心,我會生气—胡须竖,尾巴迅速的摆动,表它觉得来者不善,下一步也许是逃走,也许是进一步恐吓,甚至攻击。 生气—全身压低,尾巴起卷起来,双耳后压,张嘴,露出犬牙,并且出声。准备攻击—前低后半高,尾巴平伸,双耳朝前倾,爪子全露出来。这时,快逃吧,它要攻击了。 警戒,生气—双耳平放,身体拱起,尾巴挺直向上,全身的毛竖起。 迷感,烦恼愤怒—身体低低的站著,尾巴垂下,慢慢的摇动。 投降—朵耳垂下,尾巴卷进身子,胡须也下垂,身体缩成一团,表示服输,我投降。 平静无事—耳朵自然向上伸,胡须自然垂下,瞳孔细直。 警觉—眼睛圆睁,耳朵完全朝上,前胡须上扬。 专心注意—眼睛圆睁,耳朵完全朝,前胡须上扬。 不安,恐惧—双耳朝两侧,眼睛椭圆,瞳孔稍微放大。 警告,威胁—双耳又压低了些,眼睛更细,但尚未出声。 进一步出声警告—双耳压平,胡须上扬,脸压扁,眼睛更细。 攻击—双耳后压,胡须上扬,吼声出现,张牙露齿。这时,快逃吧。 心事重重—耳朵朝前,瞳孔稍大,胡须下垂。 惊喜—瞳孔圆圆的,耳朵竖直,口微开。这是猫在闻到厨房里有香喷喷的鱼、肉时的反应。 好奇—耳朵朝前,嘴是闭著的,瞳孔圆圆的。 呼噜呼噜—这在你抱著它抚摸它的下巴、半夜它上床,或是在伸展四肢,很懒散的时侯,就會发出呼噜声。而在它生病或痛苦时,也會呼噜。此外呼噜也可表示友好。 喵—低沈而温柔,表示打招呼,欢迎,心情好,答话。而大声一些时,可能是抱怨,有所乞求。 嘶叫—高亢的嘶叫声同时,嘴巴张开,舌头卷成圆筒状,并且有热气同时呼出。用来表示恐惧,发怒,甚至威胁对方止步。咪—噢,咪—哇—是在困惑、有所求时发出。
|
|
||||||||||||||||||||
|
|