张登兵
[摘 要] 本文介绍了多主体仿真的基本理论,对新一代仿真平台Repast进行了阐述。通过对演化囚徒困境的进一步理论分析和仿真研究,揭示出多主体博弈的演化机制和规律。同时对影响博弈演化的因素进行了分析,比如博弈重复的次数、博弈者的适应系数、博弈邻居的选择等。并结合客观现实,对仿真结果进行了解析。仿真结果进一步揭示了Repast仿真工具在多主体演化博弈分析中的高效性和可靠性。
[关键词] 博弈论;多主体仿真;Repast;演化
doi:10.3969/j.issn.1673-0194.2009.10.035
[中图分类号]F224.32; N945.13[文献标识码]A[文章编号]1673-0194(2009)10-0105-03
1Repast与多主体仿真
复杂适应系统(Complex Adaptive System,CAS)理论是由圣塔菲研究所(SFI)的霍兰教授于1994年提出的。它是当前最具代表性且应用最广泛的复杂系统理论。而基于 Agent建模与仿真是CAS理论的重要研究方法与手段。在系统和管理科学中,Agent是一种自身具有“主动行为能力”的个体。它和以前习惯使用的元素、部件、子系统等概念有着本质的区别。在多主体的情况下, Agent能够主动处理所处环境中发生的事件,作出反应,并且改变自身的结构和行为规则。从人工智能和软件开发的角度来看, Agent是一个能够完成某项或一系列任务的实体。总之,尽管侧重点不同,各学科对于Agent这个概念都是强调了主动性、适应性、演化、发展这样一些思想。这是基于主体的建模思想的核心。使用 Agent的建模方法是尽可能使微观个体与实际个体特征一致,然后观察在不同实验条件下系统可能的演化特征。
在复杂适应系统仿真(Complex Adaptive System Simulation,CASS)中,ABM方法是极其重要和有效的。在这一领域有许多MABS(多主体仿真)工具,SWARM 和 Repast就是其中最杰出的代表。
SWARM 起源于著名的美国圣塔菲研究所(Santa Fe Institute,SFI),是一组由 Objective C 语言写成的类库,也有用于 Java语言的编程接口,是应用最为广泛的 MABS 平台。
Repast(Recursive Porous Agent Simulation Toolkit)是芝加哥大学社会科学计算研究中心研制的“循环多主体仿真工具”。而且Repast 3.0支持Java,Python,DotNet3种编程接口。Repast 在CAS理论研究、社会系统仿真、经济系统仿真等领域有着广泛的应用。特别是在基于 Agent 的计算经济学(Agent-based Computational Economics,ACE)这一新兴的经济学分支领域中,Repast 正在发挥越来越重要的作用。
本文之所以选择Repast.NET版本,主要考虑3个原因:一是微软的视窗系统在国内有着最庞大的用户群;二是用于Repast.NET编程的C#语言是一种全新的、易用的、高效的跨平台语言,具有良好的发展前景;三是因为Repast在多主体重复行为处理中有着极其强大的功能,使得它在演化博弈建模中能够大显身手。
2Repast.NET建模环境和运行环境
2.1Repast.NET建模环境
构造Repast.NET建模环境,主要有以下两个步骤:
首先,要安装Microsoft VS.NET。这主要为Repast.NET建模提供一个编辑、编译和运行的集成开发环境。
其次,要安装Repast.NET。从Repast网站上获取免费的名为Repast_.NET_1.1_Installer.exe的安装程序后,可直接安装。
完成上述步骤后,我们就建立了一个Repast.NET建模环境。这时,运行Microsoft VS.NET,在新建C#项目时,就会发现有两个Repast的模板可供选择:一个是Base Repast Model;另一个是Default Repast Model。
2.2Repast.NET运行环境
实际上,在完成Repast.NET建模环境的构造后,也就建立了Repast.NET模型的运行环境。不过,更多的时候,我们可能要将编译后的模型带到其他机器上运行。此时,目标计算机必须至少符合两个条件:
(1)安装了.NET Framework 。 这个框架,一般XP以上的系统都默认安装了。如果没有,安装一个微软的dotnetfx.exe即可。
(2)拥有Repast的类库文件。这个条件容易实现,可在目标机上安装Repast,或者在建模时将模型中用到的Repast类库文件自动复制到模型所在目录。
3基于Repast.NET的演化博弈仿真过程
我们将基于Repast.NET的博弈仿真过程,分为模型背景和规则分析、仿真程序建立、仿真程序运行3个基本步骤。本文中,以“重复博弈囚徒困境”(Iterated Prisoners Dilemma,IPD)模型为例, 来介绍如何创建Repast仿真程序。
3.1模型背景和规则分析
我们先来看一下博弈论中的经典模型:“囚徒困境”。模型中有两个参与者A和B,可采取的行动有两个C(合作)和D(不合作)。在一次博弈中,双方根据博弈规则,选择利益最大化行为,不可避免地导致了行动组合(D,D)的发生。
上述模型存在几个问题:首先,它是一个基于双主体的对阵局面,没有考虑多方博弈的情形;其次,这种博弈不是重复的;第三,所有博弈参与人都被设定为“利益驱动”类型,他们仅仅依赖博弈规则选择行动方案,没有考虑参与人类型对行动的影响。为此,对该模型进行如下修改,使其更加切合实际。
首先,我们认为,参与人是有类型的,也就是“他有自己的行动信念”。他倾向于哪一种行动呢?这取决于对手的选择。假设对手合作,参与人合作的概率为p;而对手不合作时,参与人合作的概率为q。对应一组确定的p和q将决定一个参与者类型。因此,如果p和q连续分布,则参与者有无数类型。为了研究的可行性,取其中的4种特殊类型作为研究对象。
结合现实情况,我们认为上述4种类型的博弈参与者是非常典型的:ALLC,即all cooperation,“吃亏也笑的人”;TFT,即tit-for-tat,对方合作,我也合作,也就是“吃软不吃硬的人”;ATFT,anti TFT,即“欺软怕硬的人”;ALLD,all defect,就是所谓“软硬不吃的顽固分子”。
其次,考虑另一个现实情形,就是“人”总有学习的倾向。通过学习,他可能改变自身类型,以获取较高的效用。当然,每个人的“学习”能力和适应倾向是不一样的。因此,在模型中引入适应系数的概念,表示参与者改变类型的倾向程度。
现在,假设有一组参与者进行博弈。群体中的每个成员和随机选择(或者按特定规律选择)的一组“邻居”进行重复博弈,博弈行动由他们的类型决定。每一轮博弈中,每两个参与者均进行多次博弈。在每一轮博弈结束时,参与者对这一轮博弈的所有行为者中最有效的战略进行模仿,每个参与者进行类型适应性改变。也就是说,在模型运行过程中,参与者类型是变化的。
在这样一个“多主体,重复,演化”博弈环境中,博弈将呈现出什么样的规律呢?通过单纯的数学分析显然是不够的。下面,我们就用Repast.NET来进行仿真模拟。
3.2 仿真程序建立
根据上述模型背景,使用C#.NET为语言工具,借助于Repast.NET的强大类库,我们将仿真程序分为3个类:模型类、主体类和图形类。模型类负责控制模型的创建和运行,主体类描述主体的行为,而图形类则主要负责以图形方式输出仿真过程中的相关结果。我们建立其Repast 模型。具体思路如下:
现在有一群参与者(256人),参与者类型type有4种。在模型运行过程中,参与者类型是变化的。现设定50个全局回合(即模型中的step方法执行50次)。每个全局回合中,执行如下任务:
(1)每个全局回合开始时,将列表中的参与者部分属性重置。如博弈次数累计、收益累计,它们的初始值为0。并且,将博弈对象列表(也就是博弈邻居)清空。
(2)每个全局回合中进行一次相互作用,每个参与者都与随机的一组邻居(本例中是4人)进行若干次重复博弈。在每一次两两博弈中,双方均将对手加入博弈邻居列表中,并将自己的收益进行累加。
(3)每个全局回合结束后,每个参与者进行类型适应性改变。首先,所有参与者计算出自身的适应类型。计算依据是,对某参与者的博弈邻居列表中的每个主体在其若干次博弈中平均收益进行比较。博弈邻居列表中收益最大者的类型就是该参与者的新类型。然后,再据此对该参与者的类型进行更新。这样,所有参与者都依据此原理进行类型更新。
(4)输出相关结果。这里,输出的是每一全局回合后各种类型的人数。
在模型类的模型的step(在这里,一个step步进就是一个全局回合)方法代码中,可以看到模型执行的上述思路。
限于篇幅,我们不再对模型的代码编制过程进行详细描述和分析。主要分析的是模型的运行结果,以及模型中相关参数的变化对运行结果的影响。
3.3仿真程序的运行
模型运行后,我们就可以看到动态的演化效果。如果主体总数为256,4种类型的主体数平均分配,适应系数为0.2。当博弈回合数为50时,演化结果如图1所示。
如果修正模型的相关参数,我们就可得到不同的演化结果。在下面,将对不同参数下的仿真结果进行详细分析。
4仿真结果分析
通过上述模型参数的修改,我们可以发现一定的运行规律。现分析如下:
(1)如果初始战略组合各占1/4,当两个参与者一次博弈时的回合数为 4时,随机的两个参与者的博弈行为是一种短期行为,这个演化模型将很快全部采取ALLD (总是不合作)的策略。通过调整4种类型的比例,我们发现只要存在ALLD类型,哪怕是很小的比例,也会导致可怕的结果。这一点也说明了这样一个事实,在市场中,如果不合作者能够赚取较多的利益,那么他有可能影响到整个市场。当一次博弈时的回合数为10或更大时,每一次博弈的两个参与者取得的就不是一种短期效益了。此时,TFT(针锋相对的战略)将是一种较优策略。参与者观察到这种优势,因此,最终所有的参与者将演化成TFT。我们从中不难体会到“近墨者黑,近朱者赤”的哲学真谛。
(2)另外,第2,3两种类型的首次选择,可能也会给最终结果带来直接影响。特别是持“针锋相对”战略者在一开始博弈时的首次选择,也会给最终结果带来重要影响。TFT战略持有者,在一开始的博弈行动实际上表明了他更倾向于哪一种行动。他这种行为会直接影响其他参与者的后续战略改变,引起连锁反应。因此,参与者须充分考虑首次行为对整个博弈链的影响,不能因眼前利益而影响长期利益。也就是说,一次所谓的“理性”博弈的有效性,可能会导致重复博弈的长期无效。
(3)此外,参与者的类型分布也是决定演化方向的关键因素。如果只有前两种类型(比如,pALLC = 0.5,pTFT = 0.5,pATFT = 0.0,pALLD = 0.0),演化结果就不会出现后两种类型。换句话讲,在给定的环境中,如果本来就没有某种类型,不管怎么演化,也不会生成这种类型。这个仿真结果也带给我们非常重要的启示。要防止系统的恶性演化,必须“防微杜渐”,只有彻底杜绝负面类型,才能完全遏制其负面影响。
(4)模型中的适应系数pAdapt = 0.2,表示参与者改变类型的倾向程度。此系数一般较小,表示大多数参与者倾向于维持原有类型不变,这主要是由于人的“惯性力”所造成的。调整适应系数的取值,可以改变博弈演化的进程。正是因为这个原因,我们从中明白了这样的事实,那就是为什么在开放的现代都市中,改革进步的步伐要比落后闭塞的地区要快得多。
(5)还有,收益矩阵的改变,也是影响博弈结果的关键因素。对于规则制定者来讲,应充分考虑各种主体类型,制定有明显指导意义的、体现系统主旋律的博弈规则。这样,与系统主旋律背道而驰的主体类型,在博弈中就不可能获取高于其他博弈者的效用。因此,这些与社会主旋律相违背的类型就不可能成为其他主体效仿的对象。同样,那些在社会中应倡导的主体类型,就应该在一个具有激励作用的博弈规则下,获取高于一般主体的效用。因此,对于一个社会来讲,法律、规章、道德公约都应该有明确的“颂善抑恶”的指导思想。可以这样讲,制度问题可能是博弈结果的核心决定因素。
(6)现在,我们再来考虑博弈邻居的选择规则给博弈结果带来的影响。前面的模型,主体在两两博弈中,选择的是“随机”邻居。将所有参与者放置于一个空间网格中。博弈时,参与者通过Repast类库中空间类的getVonNeumannNeighbors方法获取其冯-诺依曼(Von. Neumann)邻域。这样,参与者只与他们的诺依曼相邻者发生博弈交互。这里的冯-诺依曼邻域指的是一个主体的上、下、左、右4个相邻主体。这种改变使得合作战略在群体中具有更强的生存力。该模型的运行结果说明,在大多数情况下,TFT比ALLD更加有利。这一仿真结果非常精确地解释了这样一个普遍存在的社会现象:当博弈主体间的联系比较固定时,博弈参与者更倾向于采取合作的战略。而对于主体联系的“随机”性较强的博弈,参与者可能会存有较大的“机会主义”倾向,以期博取不合作所带来的“一次性”利润。
5小结
从简单主体和简易规则出发来研究系统的复杂性是CAS 理论研究的重要方法。而刚刚兴起的Repast.NET则是对这种研究进行计算机仿真的重要工具。相信,随着多主体演化博弈理论的深化发展,也随着微软DOTNET技术的迅速普及,Repast.NET将会在这一领域扮演越来越重要的角色。同时,多主体演化博弈理论也会得以更快地发展。
主要参考文献
[1]陈禹. 复杂性研究的新动向——基于主体的建模方法及其启迪[J]. 系统辩证学学报,2003(1).43-50.
[2] 姜昌华,韩伟,胡幼华. REPAST—— 一个多Agent仿真平台[J]. 系统仿真学报,2006(8).2319-2322.
[3] 童慧骅,屠文川. 一种基于CAS的代理主体行为仿真模型[J]. 计算机仿真,2006(9):272-276.
[4] Cohen, Riolo,and Axelrod. The Emergence of Social Organization in the Prisoners Dilemma[R].SFI Working Paper, 1999.
[5] 张江.基于Agent 的计算经济学建模方法及其关键技术研究[D].北京:北京交通大学,2006.