河北大学2016届本科生毕业论文(设计)
2 Netlogo介绍
2.1 Netlogo简介
Netlogo是由Uri Wilensky在1999年发起,由美国西北大学网络学习和计算机建模中心(CCL)负责持续开发,最终推出的一个基于多智能体的可编程建模平台。CCL是一个致力于有创造性的使用技术来深化学习的研究机构,Netlogo软件就是该机构免费提供的一个计算机建模和仿真的平台,为人们学习和使用建模提供了更好的平台。
Netlogo软件应用非常广泛,它可将自然和社会的各种现象进行仿真,使之在计算机所营造的虚拟环境下进行相互作用并演化,让人们对各种现象更好的研究。它特别适用于对随时间演化的复杂系统进行建模和仿真。建模人员可以通过发出指令对独立运行的成百上千的主体(agent)进行控制,已达到各种环境变化下主体变化。建模人员控制独立运行的主体,实现了宏观层面的人与微观层面的个体行为形成了联系,通过微观层面的个体之间的相互作用涌现出宏观现象。
Netlogo可以让学生参与其中,通过修改条件,探究不同条件下的变化。它是一个很好的编程环境,对各类人群来说都很简单掌握,然后再创建自己需要的模型。NetLogo足够简单,学生、教师和编程人员都可以非常容易的进行仿真,或者创建自己的模型。并且它也足够先进,在许多领域都可以做为一个强大的研究工具。
而且Netlogo包含有完备的帮助文档和教学资料,还提供了丰富的可直接使用和修改的模型库。提供的模型涉及了自然和社会科学领域,例如:生物、医学、物理、化学、数学、计算机、经济学、心理学等等[3]。
2.2 Netlogo特性
Netlogo是下一代的多智能体建模语言,它起源于starlogo,但增加了许多新的特性,语言和界面也进行了修改。它功能强大,简单易用,便于开发。它可以在多个平台上运行,例如:Mac,Windows,Linux等,并且语言简单,对Logo语言进行扩展支持主体。在Netlogo中包括三种智能体:海龟(turtles)、块(patches)和观察员(observer),前两种构成了整个仿真世界,观察员可以观察或控制仿真世界的运行。通过海龟在虚拟环境下的运动仿真某一个体在现实活动中特性,而块代表海龟生存的环境,则通过对海龟和块的编程来实现个体在某一个或多个环境下的运行。
[4]
3
河北大学2016届本科生毕业论文(设计)
3 flocking算法及在群体行为仿真的应用
3.1 Flocking算法的简介
Flocking算法是一种聚类算法。在过去的几十年里,有许多聚类算法提出,比如:K-means,支持向量聚类(SVC)等,这些算法主要将重点放在了找到聚类中心和边界。但是要聚类或分类的数据点是固定不动的,所以研究者需设计各种函数去找到复杂的聚类或分类平面。这些算法非常繁琐,而且通用性很差。Flocking算法是一种新型的聚类算法,不再像以前的算法那样算法麻烦,数据点可以像Agent一样,可以根据一定的规则,在空间内自由移动,而自动聚集在一起[5]。
在现代群智能学中,研究者主要关注:模拟形成、聚集、链形成、协调行为、避开障碍物、觅食等。Flocking是群居动物的一种合作行为,它主要表现为大量个体一起运动产生的蜂拥现象。从数学角度来看,“植绒”是集体运动着的大量的自走式实体和许多众生,如鸟群,鱼群,细菌和昆虫展现出的集体的动物行为。Flocking行为被认为是一种新兴的行为,该行为所产生的简单规则只遵循个人,不涉及任何中央协调。
植绒行为是克雷格·雷诺兹在1986年先在电脑上模拟的仿真程序,类鸟群。该程序模拟简单的代理类鸟群允许根据一组基本规则移动。其结果类似于一群鸟,一池塘的鱼群,或一大群昆虫。
一群参加换鸟,它必须有行为,允许它来协调其走势与群聚伙伴。这些行为看似特别独特,但是所有的生物在一定程度上都有它们。天然成群似乎由两个平衡:保持接近鸟群的愿望和以避免碰撞。原因是显而易见的,个别鸟要与伙伴群聚但是同时要避免碰撞。 鸟儿们加入群体的基本冲动,似乎是从几个因素得出的结果:保护自己群体数量,在统计学上改善生存(共享)基因库,防御掠食者的攻击,寻求有效的生存模式等等。
有没有证据可以显示自然成群的复杂性。成群不会成为“完全”或“超载”新鸟加入。当鲱鱼朝着自己的产卵场迁移,再延伸17英里,会含有数以百万计的鱼。天然成群似乎以完全相同的方式操作一个巨大的群体。它似乎并不十分重视每一个群聚伙伴,认为其是理所当然,缺少一个两个也无妨, 但是,当一个巨大的鸟群分布在广阔的距离,个别鸟必须有一个本地化和过滤的看法。 一只鸟可能是意识到三类:本身,它的两个或三个近邻,其余的鸟群[6]。
3.2 Flocking在群体行为仿真中的应用
Flocking行为在自然界是很容易观察到的自组织行为。下面介绍几个例子来说明
4
河北大学2016届本科生毕业论文(设计)
图3-1 大雁群飞行
上图3-1为大雁群飞行,左边为大雁呈“一”字形飞行,右边为大雁呈“人”字形飞行,他们一个群体聚集有序的朝一个方向共同移动。他们之所以变化队形,是因为当他们迁徙的时候,他们需每天飞行前进,要是单靠一只雁的力量是不够的,他们必须互相帮助,才能飞的更远更快。前面的大雁很有力量和经验,通过煽动翅膀带动气流,以此帮助后面的小雁,后面的飞起来就会很轻松。头雁飞行的过程中在其身后形成了一个低气压区,紧跟其后的大雁飞行时可以利用这个低气压区减少空气的阻力。由于他们之间的相互帮助,才得以整个群体持续飞行。
图3-2 狼吃羊、羊吃草模型
图3-2所表示的是大自然的一个食物链,狼吃羊、羊吃草。食物链是生态系统中贮存于有机物中的化学能在生态系统中层层传导的过程。狼群、羊群互相帮助,狼群只有互相帮助才得以获得更多的食物,羊群互相帮助才得以更好的保存羊群的数量和质量。
5
河北大学2016届本科生毕业论文(设计)
图3-3 模拟BOID的涌向避免了圆柱形障碍物(1986)
上图3-3是早期实验中应用中的一个稍微复杂的行为模式,它不是要求群体简单前进,而且需要预测障碍和追求目标。该图画中类鸟群在模拟环境下飞行,当遇见静态障碍物时,绕开障碍物继续前进。
类鸟群模型也可以类推,人群好多行为与人鸟群行为是类似的。例如:分组、通过人行横道、逃离危险地等。建立通用的人群模型具有很大难度。一方面,人是自然最复杂的智能体;另一方面,现实世界人群中每一个个人都是一个独立的智能体,即使拥有共同的目标,但是每个人的想法不同、性格不同。本文我们只介绍了一些简单的人群行为仿真。
6
河北大学2016届本科生毕业论文(设计)
4 基于Netlogo的人群行为仿真的实验
4.1 实验目的
在社会生活中,地震、火灾等灾难时有发生,如果疏散不及时,就会造成很大的人员伤亡和财产损失。每个地方都提前进行人群疏散演习是不可能,因为这关系到人力、财力、物力、可操作性,所以说要掌握疏散规律,减少损失,进行实地演习不是最好的选择。
随着计算机仿真技术的发展,如今有很多仿真软件可以来实现人群疏散的仿真,可以详细考虑各种因素的影响,研究人群行为规律。本文主要应用Netlogo软件对人群疏散进行仿真,下图4-1展示了简单的人群疏散。
图4-1 人群疏散
上图左边的俯视图展示出了一个疏散场景的全部方案,是撤离的情况架空图,要求参与者(圆圈)聚集通过大厅穿过狭窄的通道。右边是一个正在疏散的静态摄影。
4.2 基于flocking算法的人群行为规则
本实验最主要是将Flocking算法[7]进行了推广,人群行为规则包括三个简单的规则,描述一个人的位置和速度及其附近的群聚伙伴。
(一)分离
图4-2 分离度
上图4-2最中心的那个个体测量周围群体与自己的距离,如果距离过短,那么这个个
7