一个Swarm模拟程序通常包括四个部分:模型Swarm(Model Swarm)、观察员Swarm(Observer Swarm)、模拟主体和环境。
1.模型Swarm
Swarm就是许多个体(对象)组成的一个群体,这些个体共享一个行为时间表和内存池。显然Swarm有两个主要组成部分:一是一系列对象;二是这些对象的行为时间表。时间表就像一个索引引导对象动作的顺序执行。
(1)对象。模型Swarm中的每一项对应模型世界中的每一个对象(个体),Swarm中的个体就像系统中的演员,是能够产生动作并影响自身和其他个体的一个实体。模拟包括几组交互的个体。例如,在一个经济学模拟中,个体可能是公司、证券代理人、分红利者。
(2)时间表。除了对象的集合,模型Swarm还包括模型中行为的时间表。时间表是一个数据结构,它定义了各个对象的独立事件发生的流程,即各事件的执行顺序。通过确定合理的时间调度机制,用户即使是在没有并行环境的情况下也能进行研究工作。也就是说,在并行系统下,Agent之间复杂的信息传递机制在该Swarm中通过行为表的方式可以在单机环境下实现。例如,在狼/兔子这个模拟系统中可能有3种行为:“兔子吃胡萝卜”“兔子躲避狼的追踪”和“狼吃兔子”。每种行为是一个独立的动作。在时间表中,我们对这3种行为按照以下顺序排序:每天,兔子先得吃萝卜,然后它们躲避狼的追踪,最后狼试图吃兔子。模型按照这种安排好的事件执行顺序向前发展,并尽量使这些事件看起来像是同步发生的。
(3)输入输出模型。模型Swarm还包括一系列输入和输出。输入的是模型参数,如世界的大小,主体的个数等环境参数。输出的是可观察的模型的运行结果,如个体的行为等。
2.观察员Swarm
模型Swarm只是定义了被模拟的世界,但是一个实验不应只包括实验对象,还应包括用来观察和测量的实验仪器。在Swarm计算机模拟中,这些观察对象被放在一个叫观察员的Swarm中。观察员Swarm中最重要的组件是模型Swarm,它就像实验室中一个培养皿中的世界,是被观测的对象。观察员对象可以向模型Swarm输入数据(通过设置模拟参数),也可以从模型Swarm中读取数据(通过收集个体行为的统计数据)。
与模型Swarm的设置相同,观察员Swarm也由对象(即实验仪器)、行为的时间表和一系列输入输出组成。观察员Swarm行为的时间表主要是为了驱动数据收集,即从模型中将数据读出,并画出图表。观察员Swarm的输入是对观察工具的配置,例如,生成哪类图表等,它输出的是观察结果。
在图形模式下运行时,观察员Swarm中的大部分对象被用来调节用户界面。这些对象可能是平面网格图、折线图或探测器,它们一方面与模型Swarm相连以读取数据,一方面把数据输出到图形界面,为用户提供了良好的实验观察方式。(www.xing528.com)
实验结果的图形化有助于从直觉上进行判断,但重要的实验都需要收集统计结果,这意味着我们要做更多的工作并需要存储用于分析的数据。图形观察员Swarm的另一种选择是可以建立批处理Swarm(batch Swarm),它和用户之间没有交互操——它从文件中读取控制模型的数据并将生成的数据写入另一个文件中用于分析。
3.模拟主体
Swarm可以是一个包含其他对象的容器,还可以是一个不包含其他对象的主体本身。这是最简单的Swarm形式,它包括一系列规则、刺激和反应。一个主体自身也可以作为一个Swarm,即一个对象的集合和动作的时间表。在这种情况下,一个主体Swarm的行为可以由它包含的其他个体的行为来定义。层次模型就是这样由多个Swarm嵌套构成的。例如,你可以为一个居住着单细胞动物的池塘建立模型。在最高层,生成包括个体的Swarm:Swarm代表池塘而每个个体代表池塘里的一个动物。动物的细胞也可以看作是由多个个体(细胞质)组成的Swarm,这里需要连接两个模型:池塘作为一个细胞组成的Swarm,细胞也作为一个可分解的Swarm。
由于Swarm可以在模拟运行的过程中建立和释放,所以可用来建立描述多层次的动态出现的模型。通过建造模型Swarm和观察员Swarm,将模型和数据收集分离开,一个完整的实验仪器就建立起来了。
4.环境
在一些模型中,特别是在那些具有认知部件的个体模型中,系统运动的一个重要因素在于一个主体对于自己所处环境的认识。Swarm的一个特点就是不必设计一个特定的环境,环境自身就可以看作是一个主体。通常情况下,主体的环境就是主体自身。
将上述4个部分组合在一起就构成了Swarm模型的逻辑结构。在一个Swarm模型中,最外层一般由模型Swarm和观察员Swarm并列的两个Swarm对象组成。其中模型Swarm与研究的对象系统相对应,而观察员Swarm与实验人员相对应。实际上模型Swarm本身就是一个完整的多Agent模型,但缺少观察员Swarm就无法读取模型运行中的数据和状态信息。这种分层设计的Swarm模型把模型的数据收集部分和模型的实现部分分离开,有利于不同的观察员Swarm采用不同的方式来收集数据,而不会影响模型本身的运行状态。Swarm模型的结构如图7.6所示。
图7.6 Swarm模型的结构
为了实现上述的Swarm模型,首先应建立观察员Swarm,然后在观察员Swarm中建立模型Swarm,将其作为观察员Swarm自身的一个子Swarm(Sub Swarm),并为它分配一定的内存空间。最后建立模型Swarm的环境,建立模型的主体(Agent)以及主体的行为。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。