经济仿真
出自 MBA智库百科(https://wiki.mbalib.com/)
目录 |
经济仿真是指以现实世界中的经济环境和经济代理人行为的特点为原型,将经济系统抽象成为程序模型,在计算机中进行运算,模拟现实经济运行的方法。研究者可以通过改变一些参数的设置,模拟现实生活中某些经济变量的改变,观察程序运行结果,作为经济学研究的辅助手段。[1]
经济仿真的提出[1]
经济仿真是以美国的圣菲研究所(Santa Fe Institute,SFI)的约翰·霍兰(John Holland)于1994年提出的复杂适应系统(Complex Adaptive System,CAS)作为其理论基础的。复杂适应系统是关于系统的复杂性(complexity)的形成原因、特点和机制的一个理论。该理论认为,系统的复杂性形成的原因主要来自内部,是大量具有适应性的主体(adaptive agent)相互作用的结果。而经济系统正是一个典型的C 窀妁复杂性根源是系统中的具有适应性的主体,也就是人的相互作用。具体点说,每个主体(人)‘ 置身于有大量其他主体组成的经济环境中,他们不断地与周围的主体发生交互作用,并根据作用的结果修正自己的行为(即适应性),这样,从微观角度来看,经济呈现极大的不确定性,而从宏观角度来看,经济又具有一定的规律性。
根据这一理论,在构造经济仿真模型时,需要做的工作主要是将代理人的主要的属性和行为抽象出来,再配以必要的环境变量,并根据制度对代理人的行为和环境进行一定限制。这样,就可以在计算机中模拟出一个虚拟的经济环境,其中的虚拟代理人会根据事先定义的制度自动进行各种事先定义的经济行为,而整个模型则会体现出一些宏观的特性。利用这一模型,我们可以达到与经济实验同样的目的。
经济仿真的工具[2]
(1)人工智能及遗传算法
人工智能是计算机科学的一个重要分支, 它旨在利用计算机的软、硬件模拟人类观察问题、分析问题和解决问题的能力。人工智能的研究主要有两个方向, 即结构主义和功能主义。结构主义的理论基础是结构决定论, 即有什么样的结构就有什么样的功能, 所以希望利用计算机的硬件模拟人脑的结构, 从而产生出人脑的功能, 其成果是人工神经网络; 功能主义的着眼点在于需要的功能,并用软件实现这些功能, 其成果是专家系统。遗传算法是由霍兰提出的。通过对生物遗传进化过程的模拟, 霍兰建立了一种可以在超大的模式备选集中快速寻找较好模式的方法, 即遗传算法。其思路就是优胜劣汰, 适者生存。这一算法包括了两个核心的操作: 交换和突变。为了在计算机中处理方便, 遗传算法用一个足够长的二进制字符串来描述模式。算法首先将对已知的模式进行评价, 并选择其中较好的模式进行配对, 配对的两个模式要互换字符串的一部分( 即交换) , 然后再随机变化自己的某一位字符( 即突变) , 之后重复上述过程。这样, 不但可以实现把“好”的部分继承下来, 还可以得到新的模式, 可以看到, 这种新的模式如果不好, 将会很快被淘汰掉, 最后剩下的将是比较优秀的模式。
无论是人工智能还是遗传算法, 将其引入经济仿真的目的都是利用它们来为模型中的主体赋予适应性。通过前面的讨论我们可以看到, 主体的适应性是仿真模型最重要的组成部分, 缺少了这个部分, 在很大程度上来讲仿真模型将是没有意义的。
(2)面向对象的程序设计( OOP)和Swarm客观世界的任何一个事物都可以看作一个对象。从计算机的角度看, 一个对象包括两部分, 一是数据, 二是要施加在数据上的算法。在传统的面向过程的程序设计方法中, 程序的设计围绕功能进行, 数据是公用的, 多个函数可以共享这些数据。这种程序设计方法使得程序不能够直接同客观世界联系起来, 为程序的设计和理解带来了较大困难。而面向对象的程序设计方法(ObjectOriented Programming, OOP) 则解决了这个问题。面向对象的程序设计方法有四个重要的特性: 抽象性、封装性、继承性、多态性。它将属于一个对象的数据和算法封装在一个类中, 从而将对象的内部和外部隔离开。这种方式使得程序的设计者不必考虑对象的内部结构, 只需了解它所提供的功能。并且这种方式符合客观世界组织模式, 比较易于实现对客观世界的抽象。由于面向对象的程序设计方法的这个特性, 它非常适于用来实现仿真程序。仿真模型中的主体可以被直接的转化为程序中的对象, 从而实现了模型构建和程序实现的一致性。
由于经济仿真不同于普通的程序设计, 它需要大量专用的工具, 如随机数发生器、各种动态图表等, 所以仅仅依靠诸如c++、Java这些面向对象的程序设计语言是不够的。从前的做法是每个研究人员各自为战, 编制自己的仿真工具。这显然是极为不便的。1995年, 美国圣菲研究所开发出了Swarm, 为仿真模型的设计者提供了一个通用的工具。Swarm在经济仿真中扮演了两个角色, 一是它提供了一个实现仿真程序的框架, 如下图所示; 二是它提供大量的用于仿真的工具。
如下图显示的是Swarm的程序框架。图中的“Main”是整个仿真程序的入口, 它负责创建一个Observer Swarm的实例, 并运行其中的方法。而Observer Swarm的功能是, 首先, 创建一个ModelSwarm的实例, 并执行其中的方法; 然后, 创建图形界面, 包括控制界面和各种图表, 并将这些图表与模型的数据联系起来。Model Swarm的功能是控制模型的运行。它会创建若干个主体, 并创建这些主体的行为的时序表和用户与模型的参数界面, 使用户可以改变模型的参数, 最后激活模型。一个仿真模型的建立, 其工作主要集中在主体的设计上。包括主体的种类、属性、行为以及互相间行为发生的次序和信息的传递。当这些工作做完后, 将设计好的主体放入上述的框架中, 就构成了一个完整的仿真模型。