APP下载

全球多区域CGE模拟系统开发与应用

2015-12-15丛晓男王铮

软科学 2015年11期
关键词:开发

丛晓男 王铮

摘要:总结了政策模拟器开发的三种模式及其优缺点,并基于混合编程模式探讨了全球多区域CGE政策模拟器的自主开发,分析了该系统的架构、功能模块和编程方法。该平台能够用于碳关税影响评价、区域经济一体化等政策问题研究。指出自主开发政策模拟器决定了政策分析的严谨性和结果的可信度,在政策分析中需加以重视。

关键词:政策模拟;混合编程;CGE;开发

DOI:10.13956/j.ss.1001-8409.2015.11.26

中图分类号:F0196 文献标识码:A 文章编号:1001-8409(2015)11-0119-05

Abstract:This paper summarized three development types and built a global multiregional CGE modeling platform based on the hybrid programming pattern. And then, it analyzed its system structure, functions and coding method in depth. The CGE modeling platform had been applied in the analyzing some policy problems, such as the carbon tariff and the regional economic integration. Independent development and application can strengthen the preciseness and confidence level of the analysis, and should be attached more importance.

Key words:policy modeling; hybrid programming; CGE; develop

计算机技术的提高使原来许多时间复杂度较高的经济模型能够通过计算机模拟得以解决,促进了计算经济学(Computational Economics)的形成与发展。1984年,“圣塔菲”研究所成立,重点关注社会、经济复杂性问题,并大量使用计算机技术开展模拟研究;1988年,著名刊物《Computational Economics》创刊,重点刊发控制论、可计算一般均衡、智能体模拟等研究成果,成为计算经济学思想交流的主阵地。计算经济学不完全同于数量经济学,前者强调“计算”在研究中的基础性作用,模拟程序开发往往是重要而基础的环节,是对经济问题展开反复的实验性研究和情景分析的必要手段。

计算经济学的发展在应用层面推动了政策模拟学科,使政策分析手段发生根本性变革,即通过开发政策模拟器,开展多情景分析。政策模拟器是用于探索各种政策情景的大型软件,不仅提供强大的计算能力,能有效解决高时间复杂度和空间复杂度的经济问题,也提供了直观、可重复设定的经济实验模式,从而成为政策分析所必要的支撑工具。

1各国政策模拟器开发情况

政策模拟器多用于经济安全和政策效果的评估[1]。1986年美国开发了宏观经济政策模拟器,1997年将其升级为全球动态CGE,用以分析经济政策对200个部门的影响;1989年加拿大统计局组建政策模拟实验室,并开发了静态微观模拟系统SPSD/M,用于税收、人口及转移支付政策的评估;1991年澳大利亚开发了CGE模拟器SALTER,用于亚太地区经济建模分析[2],1993年以来,莫纳什大学政策研究中心构建ORANI和MONASH等大型模拟平台,逐渐成为政策模拟领域的后起之秀。上述政策模拟器的开发,对各国经济政策制定发挥了重要作用。

由于政策模拟器的实现需要较高的建模和编程能力,有学者认为开展经济计算和政策模拟反倒成了自然科学家的一个任务[3]。这导致了一种错误认识,即认为政策模拟器开发只是一种技术工作,并将其排除出正统经济学的研究范畴。这一认识割裂了经济学和计算技术的联系,导致我国经济学研究缺乏计算模拟系统,对我国计算经济学和政策模拟学科的长远发展极为不利。目前,政策模拟器的开发已成为我国政策分析领域的短板,而忽视政策模拟器的自主开发、套用国外政策模拟工具也带来诸多负面影响:第一,简单套用国外封装的政策模拟器导致对底层模型认知不清,不利于经济学建模研究的开展;第二,模型修改、扩展不够灵活,限制建模能力的发挥,参数设置难免带有国外偏见,模拟过程不一定适用于中国国情,政策分析受制于人,影响重大国际经济问题的科学决策;第三,求解规模受到限制,当问题规模或尺度较大时往往需要收取费用,例如,美国丹佛大学开发的Ifs系统,其网络版本不能随意设置区域组合,单机版则未对我国免费开放,普渡大学开发的RunGTAP系统,其公开版的区域数和部门数均限定在10个以内,一旦超出这些约束,则无法求解。综上,政策模拟器的自主设计与开发在我国经济学界是一个被长期忽视又极其重要的问题。

本文以全球多区域CGE的设计和开发为例,系统梳理了政策模拟器的主流开发模式,自主开发了具有良好扩展性和可用性的平台,希望藉此引起学界对政策模拟器研究的关注。

2全球多区域CGE及模拟器

作为政策模拟的重要模型之一,CGE出现于1960年代,并随着计算机技术的发展而迅速完善,美、澳、法、德等国已各自建立CGE政策模拟器[1]。普渡大学提出了Global Trade Analysis Project模型(简称GTAP),被广泛用于国际贸易政策、地缘经济分析等领域。作为一套多区域CGE解决方案,GTAP包括数据、模型和政策模拟器三个部分[4]。国外已开发了两个较成熟的政策模拟器,分别是RunGTAP系统[5]和GTAPinGAMS系统[6]。我国学者大量使用前者的免费版,至今仍未见有自主开发者,本文的目的在于填补国内这一空白。

GTAP基于完全竞争、规模报酬不变假设,方程体系主要由会计平衡方程和经济主体行为方程两部分构成,前者包括家庭、政府、企业和区域等供需平衡,后者描述了包括上述四种经济主体的经济活动方式。

企业购入最终投入和中间投入,并提供产成品,最终投入与中间投入之间满足常替代弹性,复合结果即为产出量:

QO(j,r)=AQO(δQVA(j,r)*QVA(j,r)-ρQO(j)+δQFT(j,r)*QFT(j,r)-ρQO(j))-1ρQO(j) (1)

其中,QO(j,r)为区域r的部门j的产出,AQO>0为规模参数,δQVA(j,r)、δQFT(j,r)分别表示部门j所购买的原始投入和中间投入所占的比重,ρQO(j)为替代弹性参数。QVA(j,r)、QFT(j,r)分别为j部门所需的复合最终投入和复合中间投入,前者由各类要素禀赋经CES复合得到,后者由不同的中间消耗经Leontief函数复合得到。

政府采购各种产品,采用C-D函数进行复合:

QGOV(r)=AQGOV∏i∈TRADQG(i,r)δQGOV(i,r) (2)

其中,AQGOV为规模参数,δQGOV(i,r)为购买商品i所占的份额,QG(i,r)为政府对商品i的需求,可分为对本国产品和对进口品的需求,此二者通过CES函数进行复合。

家庭消费效用采用常差异替代弹性函数表达,形式介于CES和完全弹性函数之间,能有效表达需求的收入弹性和自身价格弹性,其隐式形式表达如下:

∑i∈TRADB(i,r)*UP(r)β(i,r)γ(i,r)*[PP(i,r)/E(PP(r))]β(i,r)=1(3)

其中,E(PP(r))表示在给定的家庭购买价格向量PP(r)的条件下,维持效用水平为UP(r)所需的最小支出;参数β(i,r)决定不同消费品之间的可替代性,γ(i,r)反映需求的收入弹性,B(i,r)为尺度参数。家庭消费国产品和进口品,两者亦通过CES函数进行复合。

区域账户行为由综合效用函数刻画,将区域收入通过C-D人均效用函数分配至家庭消费、政府购买和储蓄这三种最终需求:

U(r)=(UP(r))PRIVEXP(r)INCOME(r)UG(r)POP(r)GOVEXP(r)INCOME(r)QSAVE(r)POP(r)SAVE(r)INCOME(r)(4)

其中,U(r)、UP(r)和UG(r)分别为区域r的综合效用、家庭消费效用和政府支出的公共效用,POP(r)为区域r的人口数量。

囿于篇幅,以上只列出部分行为方程,不做完全展开。模型中存在大量非线性方程,加之方程数量大,给求解带来很大难度,通过线性化处理对非线性模型的解进行逼近是求解CGE常用的技术手段。线性求解最常见的方法是约翰逊-欧拉算法,具有令人满意的精度[7]。求解时,将所有非线性方程线性化,除去外生变量后,内生变量数与线性方程数相等,计算过程可视为线性方程组的求解或者给定任意目标函数下求解线性规划。本文所需的全部线性方程可参考文献[4],非线性方程及线性化的推导过程可参考文献[8]。

3开发模式选择

政策模拟器有不同的开发模式,根据开发所使用的程序语言及工具,可分为三类模式:基于脚本开发模式、基于高级语言开发模式、基于高级语言与脚本的混合编程开发模式。

基于脚本的开发模式。脚本是指常用的数学计算或经济建模软件的编码,例如Matlab,GAMS等。脚本的语法和结构通常比较简单,便于学习和使用,程序容易修改而无需编译,其开发效率很高。并且,由于这些软件一般集成了大量可用于数值计算的函数库,使用相应的代码便可调用这些函数,开发相应的政策分析工具,从而极大降低了政策模拟器的开发难度。例如,Rutherford 等和高洪成等均采用GAMS开发了CGE模拟器[6,9],刘昌新等则采用Matlab开发了CGE模拟器[10]。尽管基于脚本开发模式简单易行,但也存在若干缺点:第一,计算效率较低,由于脚本是解释性语言,这决定了其具有开发效率高而运行效率低的特征;第二,保密性较差,工具使用推广过程中关键代码容易暴露;第三,用户界面仍不够友好,与用户交互性较差,不利于进行情景分析结果的可视化。

基于高级语言的开发模式。常见的高级编程语言包括C++、C#、Java等。高级语言有很强的表达能力,可表示复杂的数据结构和控制流程,能灵活而精确描述各种算法,运行效率高于脚本,且对结果的可视化效果更佳。例如,汪晶、王铮基于C#设计开发了区域CGE通用系统,可用于中国多个省市的政策效果评价[11]。由于高级语言更为底层,只提供基本的数学算法,许多大型算法需要建模者独立完成,因而开发难度大、耗时长、成本高,开发效率较低,在政策模拟器开发研究中非常少见。此外,由于某些数据库并未公开其数据的存储格式和读取方式,因此无法通过高级语言直接读取其数据,尚需借助其他软件进行转换,在数据读取上存在较多限制。

基于高级语言与脚本混合编程的开发模式。混合编程是指使用两种或两种以上的语言来开发程序的过程,这种开发模式可以充分利用各种语言的优势,开发出满足用户需求的软件。这一开发模式能够在保证系统开发效率的前提下,开发出界面友好、可视化功能强的模拟软件,因而在政策模拟器开发中极具前景。例如,熊文和朱永彬分别基于C#和Matlab、C#和GAMS混合编程实现了政策模拟器[12,13]。

对三种开发模式的比较见表1。基于脚本的开发模式具有开发难度低、开发成本小的优势,但是系统交互性较差;基于高级语言的开发模式则具有良好的交互性,但其开发难度大,开发成本高,不易为政策分析者所掌握;基于混合编程的开发模式则充分吸收了两者的优点,既能有效降低开发难度,节约开发成本,又具有较高的系统交互性。

由于混合编程具有众多优势,本文采用该模式进行开发,高级语言选定为C#,脚本选定为GAMS。GAMS语法简练明了、可读性强,主要用于求解大型最优化问题,由于求解CGE可以看作是求解一个线性规划或者非线性规划问题,因而非常适用。C#用于数据转换接口的衔接、可视化、数据的读写等,并承担启动所有外围可执行文件的功能。因此,C#程序构成了整个模拟器的主体框架,同时充当了其他部件间的粘合剂。

4需求分析、架构与编程

41需求分析

该政策模拟器的主要用户是从事全球经济政策的研究人员,此类用户具有基础的经济学和计算机知识储备。考虑到大部分政策分析者并不能完整掌握计算机编程尤其是高级语言编程技能,系统将以可视化的形式供分析者使用,或者可见少量关键GAMS脚本以加强对模型的理解,因此模拟器将以模块化的方式予以组织。一次政策模拟的基本操作流程如下。第一步,对全球社会核算矩阵数据进行定制,按要求对区域、部门等进行合并操作并输出Har数据压缩包;第二步,对生成的数据压缩包进行解压、修改扩展名,将其转换为GAMS所能读取的Gdx数据和C#所能读取的Access数据;第三步,将原始数据导入至政策模拟器中,允许建模者查看区域、部门的集合设置及其他原始数据,能够在软件界面中查看和设置外生冲击;第四步,用户设定外生变量后,建立模拟方案进行情景分析;第五步,查看本次模拟结果,或查看历史方案的模拟结果。据此可将系统划分为3大模块,分别是数据合并模块、政策模拟模块和历史方案查询模块。3大模块之间应保持高度的可分性,任何1个模块都可独立使用。按照自顶向下、逐层分解的分析方式对模块子功能进行分解,如图1所示。

本文所开发的模拟器属大型政策模拟器,尤其是当部门和区域数量增多时,系统中方程与变量的个数也随着增多,导致求解过程需要较长时间而用户无法进行其他操作。为避免出现界面无法响应的情况,CGE求解采用了多线程调用的方式启动GAMS代码,使其在后台线程中执行。

42系统架构设计

随着政策模拟器功能的扩张、系统规模的扩大和系统可伸缩性要求的增强,多层架构逐渐成为系统开发的主流架构。因此本系统采用经典的C/S三层架构,自顶向下分别是界面层、业务逻辑层和数据层,如图2所示。

界面层的主要目标是实现用户与系统功能间的交互,以使用户完成模拟的关键性计算。为此,采取平面化的设计风格,尽量减少窗口的层叠,用户按照按钮顺序操作即可完成情景分析。

业务逻辑层涵盖了系统的主要功能,是系统关键任务的实现。该系统主要模块的设计实现是建立在公共基础类库的基础之上的。数据层设计的1个重要约束是满足系统的非功能性需求,需要考虑数据传输的稳定性和可扩展性。该政策模拟器所需要的数据种类较多,且数据量大。根据变量不同的经济意义,将其划分为数量变量、价格变量、政策变量、技术进步变量和松弛变量5类。不同格式的数据都需要由特定的程序生成,并供指定的程序读取和操作。图4是对系统数据流程的描述,箭头上的描述表示该数据流转过程中所需要使用的程序。

43系统编码

431GAMS建模

建模前需要正确设置集合、参数、方程。集合的命名应与GTAP数学模型的表达方式保持一致,使程序更加简洁明了,可读性更强。由于参数与方程均建立在集合定义的基础之上,因此合理定义集合是模型求解的基础。倘若集合关系不明确,参数与方程均不能正常工作。集合主要包括资本品、非储蓄性商品、可贸易品、生产部门、要素禀赋、资本等类别。同样,对于参数和方程而言,其命名应与标准模型保持一致,以便降低程序设计难度、降低程序与模型之间的跨度。

432GAMS脚本的生成

模型程序可根据实际情况进行定制。为避免产生不必要的错误,该政策模拟器不允许用户直接进入GAMSIDE环境修改脚本,而是根据系统设置自动生成。这些脚本分为3种类型,分别是集合设置脚本、CGE外生冲击的gms脚本文件和相关路径的gms脚本文件。这些脚本通过

$include命令在GAMS中调用。第一,集合设置脚本。GTAPAGG导出的har数据能与Gempack软件完全兼容,使用过程中不会出现数据丢失的情况,但GAMS则不然。使用GAMS将har数据转换成gdx数据时,无法导出原数据中的集合关系设置[14],这些集合关系对GAMS的求解而言是不可缺少的。这种情况下,就要求使用C#自动生成所需的set文件,实现这一功能的核心代码段较长,此处不罗列,有需要的读者可联系作者。第二,外生冲击的gms脚本。该政策模拟器为用户提供了可视化的外生变量设置工具,通过简单的界面操作即可完成外生变量的选取。这些外生设置必须能够转变成GAMS可读取的脚本格式,因而需要使用C#动态生成此类脚本。第三,相关路径的gms脚本。系统要求每次计算结果可以保存为1个模拟方案,该方案的名称应由C#生成gms脚本以供GAMS调用。

433调用GAMS

GAMS脚本通常从GAMSIDE集成开发环境中启动运行,这种运行方式会使系统主要代码完全暴露,且用户面对的是冗繁的程序。1个可行的解决方法是通过C#从以命令的方式对GAMS.exe进行调用,从而不显示GAMSIDE界面。这意味着可以通过高级语言对GAMS脚本进行后台调用,从而实现混合编程。GAMS的执行在后台完成,前台不显示GAMS的开发环境界面。为避免CGE模拟器的界面失去响应,应使用新的线程进行调用。

5结语与展望

根据开发策略,将政策模拟器的开发总结为3种类型,分别是基于脚本、高级语言以及混合编程的政策模拟器,系统分析了各自的优缺点,并认为基于高级语言与脚本混合编程的开发策略具有开发难度适中、易修改性强、交互性强和开发成本低的优势,因而具有应用前景。

采用C#和GAMS混合编程开发模式,开发了基于GTAP方程体系的全球多区域CGE模拟器。该模拟器采用C/S 3层架构,将数据、模型库和界面独立封装。在CGE模型内核实现上,将所有非线性方程线性化,采用GAMS工具实现求解计算,提高了开发效率。系统具有较强的人机交互性能,从而使政策分析者能够摆脱繁琐的建模过程而专注于政策问题本身,提高了多情景分析的效果。该CGE模拟系统由作者自主开发实现,有利于对方程体系进行掌握、扩展和修改,从而提高了建模的灵活性,也避免了我国政策分析者依赖RunGTAP、GTAPinGAMS等国外政策模拟器、对模型内核“知其然而不知其所以然“的不利情况。基于本文所开发的政策模拟器,能够实现一系列经济政策模拟研究工作,涉及碳关税经济与环境影响评价、区域贸易一体化、人民币汇率变动影响评价等问题,取得了较好的模拟效果,为相关决策的制定提供有力的工具支撑,也证明了该政策模拟器的适用性[15,16,17]。

作者通过CGE政策模拟器的开发,引出了政策模拟器自主设计和开发的问题。当前我国对政策模拟器的自主开发重视程度不够,该领域已成为一项研究盲区。学界普遍认为政策模拟器的开发是一项技术性工作,惯用其他国家学者开发的系统,这一研究方式从理论上讲不利于我国计算经济学和政策分析学科的长久发展,从实践上讲则不利于政策分析工作的扎实开展,一些涉及国际谈判的模拟工具缺失可导致观点的可信性下降甚至是国际话语权的丧失,不利于新型大国智库的建立和发展。应将政策模拟器视为国之利器和政策分析的杀手锏,从根本上改变我国经济学研究对政策模拟器开发工作不重视的现状。更进一步讲,政策模拟学科要取得长远进步,不仅应在政策模拟器的自主设计和开发方面进行改进,在模型设计、基础数据库构建和系统应用推广方面也需要进一步强化。

参考文献:

[1]王铮,薛俊波,朱永彬,等. 经济发展政策模拟分析的 CGE 技术[M]. 北京:科学出版社,2010. 1-4.

[2]Jomini P,Zeitsch J,McDougall R,et al. SALTER: A General Equilibrium Model of the World Economy[R]. Canberra: Industry Commission,1991.

[3]王铮,刘涛,朱艳鑫,等. 国家经济安全政策模拟器的开发问题[J]. 中国科学院院刊,2007,22 (1): 49-56.

[4]Hertel TW. Global Trade Analysis: Modeling and Applications[M]: Cambridge University Press,1999.

[5]Pearson K,Horridge M,Pratt AN. Hands-on Computing with RunGTAP and WinGEM to Introduce GTAP and GEMPACK[R]. the Center for Global Trade Analysis,Purdue University,2003.

[6]Rutherford TF,Paltsev SV, GTAPinGAMS, GTAP-EG: Global Datasets for Economic Research and Illustrative Models[R]. University of Colorado,2000.

[7]Pearson KR. Solving Nonlinear Economic Models Accurately Via A Linear Representation Victoria University[R].Centre of Policy Studies/IMPACT Centre,1991.

[8]丛晓男. 面向地缘政治经济分析的全球多区域 CGE 建模,开发与应用[D]: 中国科学院研究生院博士学位论文,2012.

[9]高洪成,徐晓亮. 资源税改革中的价值补偿问题研究[J]. 软科学,2012,26 (5): 36-40.

[10]刘昌新,王宇飞,郝郑平,等. 基于动态 CGE 的挥发性有机污染物 VOCs 排放预测和控制研究[J]. 环境科学,2013,34 (12): 4787-4791.

[11]汪晶,王铮. 通过区域可计算一般均衡模拟系统设计与实现[J]. 中国区域经济,2010,5: 74-80.

[12]熊文. 新地缘政治经济框架的建模与模拟[D]: 华东师范大学,2011.

[13]朱永彬. 排放控制目标下我国最优经济增长路径,减排路径与碳排放趋势研究及模拟系统开发[D]: 华东师范大学,2011.

[14]Narayanan B G,Walmsley T L. Global Trade,Assistance,and Production: The GTAP 7 Data Base[R]. Center for Global Trade Analysis,Purdue University,2008,134.

[15]丛晓男,马翠萍,王铮. 地缘政治经济框架下碳关税影响的多区域 CGE 模拟[J]. 世界地理研究,2014,3: 1-11.

[16]丛晓男,王铮. ECFA 早收清单对两岸及周边经济体影响的多区域经济学分析[J]. 区域经济评论,2013,(6): 30-35.

[17]丛晓男,王铮,秦建群,等. 产出,出口与结构效应——人民币升值的多区域 CGE 模拟[J]. 金融发展研究,2013,(10): 16-22.

(责任编辑:石琳娜)

猜你喜欢

开发
浅谈动力总成骡子车开发方法
高中历史教学中对历史图片的开发及实际应用
在线投稿与编辑系统的设计与开发
遵义红色旅游开发对策研究
基于J2EE和Ionic的ITer学习APP设计与开发
单片机在电子技术中的应用和开发
试析机械基础多媒体课件的研制与开发
老年人旅游市场的开发研究
浅谈企业人力资源开发
浅析彭店生态农业旅游开发