《“投入产出分析系统”的设计与实现毕业论文.doc》由会员分享,可在线阅读,更多相关《“投入产出分析系统”的设计与实现毕业论文.doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、南京工程学院毕业论文 南 京 工 程 学 院毕 业 论 文作 者: 学 号: 209100738 系 部: 经济与管理学院 专 业: 信息管理与信息系统 题 目: “投入产出分析系统”的设计与实现 指导者: 评阅者: 2014 年 5 月 南 京16目 录毕 业 论 文 中 文 摘 要1毕 业 论 文 外 文 摘 要2一、我国投入产出应用和软件设计背景3二、投入产出分析技术3三软件系统设计4(一)基于Matlab的高效数据处理5(二)投入产出模型优化9(三)Matlab与SQL Server混合开发13四.结语15毕 业 论 文 中 文 摘 要投入产出分析具有广泛的理论和社会应用价值,然而,国
2、内目前尚没有成熟的处理平台。鉴于此,本系统利用Matlab的强大的数据处理能力,结合MS SQL Server数据库的存储优势,建立了针对投入产出表进行数据分析、统计处理、关联挖掘和二维展示的软件平台;同时,该平台可以为未来升级为区域经济的产业结构布局与优化、产业竞争分析、经济发展预测、政策效果模拟等方面的综合性分析平台奠定良好的基础。 关键词:投入产出分析、 Matlab、MS SQL Server数据库、投入产出表 毕 业 论 文 外 文 摘 要Title: The design and implementation of input-output analysis system Abst
3、ract:Input-output analysis has extensive social theory and application value, however, there are no mature processing platform at home. In view of this, this system using Matlab powerful data processing capabilities, combined with the MS SQL Server database storage advantage, established the input-o
4、utput tables for data analysis, statistical processing, association mining and two-dimensional display software platform ;At the same time, the platform can for future upgrades for the layout of industrial structure and optimization of the regional economy, industry competitive analysis, the forecas
5、t of economic development, the policy effect simulation etc comprehensive analysis platform to lay a good foundation.Keywords: Input-output analysis 、Matlab、MS SQL Server Database、Input-Output table 投入产出分析是研究国民经济各部门、再生产各环节间数量依存关系的一种分析方法。主要是对国民经济各部门活动水平及其变动情况的进行量化分析体系。该方法是定量分析研究产业结构的主要方法之一,由美国经济学家立昂惕
6、夫(W.Leontief)于1936年提出,多年来许多国家的经济学家的研究和应用己日趋成熟,发展出了动态投入产出模型,变系数动态投入产出模型,投入产出最优规划模型等新的分析方法。产业关联研究是投入产出理论中的一项重要内容,对于区域主导产业选择以及产业结构优化调整具有重要意义。一、我国投入产出应用和软件设计背景在我国,投入产出分析理论和应用也取得很大的进展1,但是,相对于发达国家对投入产出分析高效地开发应用,我国的投入产出分析实践仍面临着较大的挑战和发展空间2。鉴于目前国内投入产出分析主要面临的问题就是大量的较大规模数学运算,当前人工介入过多、自动化程度过低的情况,导致了分析过程冗长且繁琐,这使
7、得经济学家经历分散在过多的高等代数的求解上,使得效率和研究质量降低;另外,目前投入产出分析的结果一般难以直观、形象,无法处理大规模数据图形。因此,本文尝试设计与开发区域经济的投入产出分析系统。二、投入产出分析技术投入产出表又称部门联系平衡表,是反应一定时期各部门间相互联系和平衡比例关系的一种平衡表,它可全面系统地反映国民经济各部门之间的投入产出关系,揭示生产过程中各部门之间相互依存和相互制约的经济技术联系。因此,一张完整的投入产出表,本身就是表现各种经济变量相互依存关系的“数据库”;根据表中有关数据,可以得到用于反映直接经济依存关系的经济参数。投入产出分析是将经济理论与数学方法结合得最为紧密的
8、分析方法3,是在投入产出表的数据上建立投入产出模型并进行分析,模型中每一个字母都代表着特指的一项指标,每一个数学方程均表现一种经济数量关系,每一项数学推导都反应了经济关系的变换。投入产出分析技术不仅仅能够反映现各个部门在生产过程中直接的、较为明显的经济技术联系,而且更重要的是,它还能够揭示出各部门之间间接的、较为隐蔽的、甚至被人忽视的经济技术联系。因此,投入产出分析技术为研究产业结构,尤其为制定和检查国民经济计划,研究价格决策,进行各种定量分析提供依据。在投入产出技术中,从不同角度、不同层次都可以对投入产出表进行检验和分析,因此,产业部门间投入产出指标众多,例如直接消耗系数、完全消耗系数、影响
9、力系数、产业感应度系数、Leontief逆矩阵、Goshian逆矩阵、向后/正向关联矩阵、固定资产折旧系数、劳动者报酬系数、生产税净额系数、劳动乘数等等。由于相关指标之间的计算都存在着关联,故这些指标的计算大多数据规模巨大、步骤繁杂、中间变量丰富。所以,在应用Execl、SPSS、SAS等计算或统计软件来处理这些指标时,工作量巨大,需要人工时时干预,难以提高数据处理的自动化水平4。三软件系统设计针对当前投入产出自动化分析系统的缺失,本系统研发主要设计目标:一是“化繁为简”,模型中庞大的数字矩阵,借助Matlab简化高等代数的运算,更为高效地得出相关系数量化指标;二是“直观展示”,信息量很大的量
10、化指标,进行更为直观的显示;三是价值应用,主要是能够进行产业部门间的投入产出分析、产业结构优化分析、政策效果模拟等综合性处理。由于投入产出分析具有分析部门产业结构、预测经济发展、模拟政策效应、优化产业结构等实用价值,因此,本系统功能主要体现在:高效得出相关的系数指标,辅助进行经济结构的分析,和可视化的直观展示、模拟规划产业结构,优化产业结构、模拟政策效应,提升产业效益。这些主要功能的实现基于完整的投入产出表所建立的投入产出模型,在此基础上,借助于计算机的软件和计算机编程将投入产出分析这个经济理论和数学方法结合的最为紧密的分析方法标准化,人性化。同时投入产出表模型缺少直观的效果,加之相关定性系数
11、求解过程复杂,政策模拟和产业规划模型多样,为提高投入产出模型的利用质量和效率,我们借助于Matlab卓越的数据处理能力,简化相关系数的求解复杂度,同时和SQL Server数据库的数据存储的高效简便的优势,进行直观展示,为产业决策者提供更为便利的软件支持。(一)基于Matlab的高效数据处理相比较在Matlab对于数值计算这块的优势很明显,处理一个相关矩阵运算的效率高,然而在这个投入产出软件的开发过程中,需要有GUI设计,并不能直接获得一个理想的矩阵,这需要对所拿到的数据进行处理,也就是从Execl表中读入Matlab中Uitable控件中,之后编写相关的函数进行运算,最终可以很快的获得相关系
12、数。对于具体的编程处理过程,可以参考下面的核心代码片段,根据软件设计方法,需要规范Execl表格,然后Matlab读取Execl中的数据,并将获取的数据展示在Uitable中,同时有些计算结果还要进行存储。核心代码片段1:加载 Execl数据选择相关数据文件:Filename Pathname=uigetfile(*.xls,选择数据文件); 定义文件地址和路径:str=Pathname Filename; Matlab读取所选文件中行列以及值:, , raw = xlsread(str); 对于Execl表中空值的处理:for i = 1 : numel(raw) if isnan(rawi
13、) rawi = ;end;end设置行列属性,将所获得的数据保存在Uitable中:set( handles.uitable1, ColumnName, raw(1,2:end),RowName, raw(2:end,1), data, raw(2:end, 2:end),. ColumnEditable, true); 图一在这个软件开发设计过程中,数据处理是核心过程,关系到后面所有系数的函数的编写,借助于系数模型:直接消耗系数模型。直接消耗系数的计算方法为:用第j产品(或产业)部门的总投入Xj去除该产品部门(或产业)生产经营中所直接消耗的第i产品部门的货物或服务的价值量Xij,用公式表示
14、为: (i,j=1,2,n)。完全消耗系数模型。第j产品部门每提供一个单位最终使用时,对第i产品部门货物或服务的直接消耗和间接消耗之和。将各产品部门的完全消耗系数用表的形式表现出来,就是完全消耗系数表或完全消耗系数矩阵,通常用字母B表示。用公式表示为:B = (I A) 1 I 式中的A为直接消耗系数矩阵,I为单位矩阵。感应度系数及影响力系数模型。结合里昂剔夫逆矩阵,感应度系数用公式表示为: (i=1,2,n),影响力系数用公式表示为: (i=1,2,n),其中公式中是列昂剔夫逆矩阵(I A) 1中的第i行第j列的元素。核心代码片段2:直接消耗系数函数table1_data = get(han
15、dles.uitable1,data); %获取uitable中数据值a=table1_data(1:42,1:42); %产业部门中间使用部分数据b=table1_data(49,1:42); %产品部门的总投入数据for i=1:42 %循环求职过程for j=1:42ci,j=ai,j/b1,j;endendg=c; %定义的全局变量,主要是为其他系数求解过程中调用核心代码片段3:完全消耗系数函数global g; %调用直接消耗系数全局变量takemessage(hObject, eventdata, handles);I=eye(size(g); %矩阵处理函数w=cell2mat(
16、g);b1=inv(I-w);I=eye(size(b1);z2=b1-I;核心代码片段4:感应度系数函数I=eye(size(g);w=cell2mat(g);b1=inv(I-w);for i=1:42 S(i)=sum(b1(i,:);endz11=S;for i=1:42 s(i)=3*z11(i)/sum(z11);end核心代码片段5:影响力系数函数I=eye(size(g);w=cell2mat(g);b1=inv(I-w);z9=sum(b1);for i=1:42 r(i)=3*z9(i)/sum(z9);end在完成软件核心的10大系数进行运算和相对应的验证之后,下面所需要
17、做的就是对数据进行存储,将所得出的结果存储在系统之外的硬件介质之上,主要是方便以后再对系数在进行分析时起到有效的帮助。下面的核心代码就是在软件系统实现将Uitable中的数据结果转储到Execl中。核心代码片段6:数据存储fName, pName, index = uiputfile(*.xls, 另存为, data_1.xls);if index & strcmp(fName(end-3 : end), .xls)str = pName fName;cloumnName1 = get(handles.uitable1, ColumnName); rowname1=系数 ;rowName =
18、get(handles.uitable1, RowName);data1 = get(handles.uitable2, data);dataExcel = cell(size(data1, 1)+8, size(data1, 2)+11); if size(data1, 1)1 dataExcel(2:end, 1) = rowName; dataExcel(1,2:end) = cloumnName1; dataExcel(2:43,2:43) = num2cell(data1); xlswrite(str, dataExcel);else dataExcel(2, 1) =cellstr
19、(rowname1); dataExcel(1,2:end) = cloumnName1; dataExcel(2,2:43) = num2cell(data1); xlswrite(str, dataExcel);end (二)投入产出模型优化由于投入产出是线性模型,因此与线性规划集合起来建立优化模型比较普遍。对于投入产出模型优化的作用:首先是在确定目标的前提之下选择最优方案,模型具有抉择功能。其次就是,在给定的经济条件下反应最佳的运行过程,具有仿真模拟作用。然而需要说明的是虽然这样可以预测,但是不是真正意义上的预测,而是一种附加了人们主观目标的预测,是对未来展望意义上的预测。对于优化模型的
20、主要意义:因为最优计划和规划按要求的比例的原则。国民经济按比例发展集中反映在生产部门之间的比例关系上,这些关系可以通过其中的投入产出模型部分加以表现,除此之外的其他基本比例关系则可以由专设的约束条件加以反映,并且所有的比例关系与目标函数有着内在的数量关系,由此保证比例的最优性。其次就是计划和规划安排从实际出发的原则。再次就是计划和规划中的经济效益的原则。最后就是该模型能最好地反映规划目标和生产。投入产出优化模型中的目标函数集中体现了这一点,目标函数是评估方案优劣的唯一尺度和标准,直接反应了计划规划活动的总目标和终极目标。投入产出优化模型的是与规划模型结合。结合数学形式是,是将投入产出模型经过处
21、理后置入线性规划模型的约束条件中,形成大规模的规划模型。两个模型用友共同的基础:1,均是线性;2基础变量均有非负性;3.均为矩阵运算为基础方法;4.投入产出模型可视为线性规划模型的一个特例。最后建模步骤是:1.建立模型的方法和步骤。2.建立投入产出的数学模型。3.增加投入产出模型的变量个数。4.将投入产出的严格关系改为不等式。5.再投入产出模型意外增加不等式方程建立目标函数。最终借助线性规划的数学处理方法进而求出最优的规划和产出结果。核心代码片段7:线性规划算法函数delete(findobj(handles.axes3, Type, text);strF = get(handles.edit
22、f, String);matF = str2num(strF);(省略类似功能代码)strceq = get(handles.edit9, String);matceq = str2num(strceq);l = size(matA,2);x,S = linprog(matF,matA,matb,matAeq,matbeq,matc,matceq);%核心算法方程x=x;strCell1=cell(l,1);for i=1:l str1=; str1=str1 x_ num2str(i) = num2str(x(i) ; strCell1i,1=str1;endtext(0.1, 0.9, s
23、trCell1, Parent, handles.axes3);set(handles.jieguoS, String, sprintf(%0.4f, S);核心代码片段8:线性规划数组处理delete(findobj(handles.axes1, Type, text);strF = get(handles.editf, String);matF = str2num(strF);kLine n= size(matF);if kLine = 1 k = find(matF = 0); k0 = k(1); str = S = ; for i = 1 :n if matF(1, i) if i
24、k0 if matF(1, i) 0 if matF(1, i) = 1 str = str + num2str(matF(1, i) x_ num2str(i); else str = str + x_ num2str(i); end else if matF(1, i) = -1 str = str num2str(matF(1, i) x_ num2str(i); else str = str -x_ num2str(i); end end elseif i = k0 if matF(1, i) = 1 str = str x_ num2str(i); elseif matF(1, i)
25、 = -1 str = str -x_ num2str(i); else str = str num2str(matF(1, i) x_ num2str(i); end end end end str = str ;endtext(0.1, 0.1, str, Parent, handles.axes1);此处还省略了部分类似功能的代码。界面图案例图(三)Matlab与SQL Server混合开发Matlab具有高效的数据分析能力,但是在数据存储和数据灵活选择、处理这方面没有数据库高效。因此借助数据库,通过SQL语句灵活取出数据,之后进行图形化展示,和数据分析。Matlab和数据库之间有相应的
26、接口5,处理起来不是很复杂;但是,在混合开发过程之间需要做的事情还有很多,最主要的是数据已怎么样的形式组织到数据库中,同时不能影响数据的应用。由于关乎到后面数据的表现形式,因此下面详细描述这个过程。一般投入产出表分为三大象限,故在进行数据组织时,也将这张表分成三大部分:、中间产品,、最终产品,、增加值,然后按部门(主键)存储在数据库中,有必要时还需要建立相关视图,方便查询。下面就是将Matlab与SQL Server建立连接。之前所要做的工作就是在系统中配置数据库驱动,需要依赖数据源链桥(ODBCJDBC)来完成。这个过程不是很复杂,就不加赘述。主要的核心过程还是建立数据库的连接,主要方法语法
27、如下:定义数据库连接:conn=database(database_name,user_name,password);测试连接:P = ping (conn);关闭数据库连接:close(conn);这一步完成之后,下面的工作就变得相对容易一些,接下来就是编写合适的SQL语句,从数据库中提取相关的数据,结合Matlab的绘图函数,建立直观的效果图,这也是这个系统中最有特点的地方。在应用编程中,比如产业部门提供给各部门的消耗量,在二维坐标中以直方图的直观形式展示:一般投入产表格式如下(如下图二)图二编写合适的SQL:strSQL= select value from country_IO_中间使
28、用 _2007定义游标:curs=exec(conn,strSQL);遍历游标:curs=fetch(curs); 获取游标中的数据:data=curs.data;关闭游标:close(curs);下面就是调用Matlab中的直方图函数,进行二维直观展示:直方图函数:bar(data:);设置X坐标属性:xlabel(产业部门);设置Y坐标属性:ylabel(中间投入值);显示直方图:set(gca,XTickLabel,data1); 此外,这个系统的直观化显示,还可以有一些其他的图形展示,在Matlab平台上图形化处理也相对容易些,关键是绑定数据,利用bar3函数(3-D),Pie函数(饼
29、状图)展示更为直观的效果,这里不再一一列举。对于这个系统的使用和其特点,人性GUI的界面设计,可能不算美观,但讲究实用,简化高等线代的计算,直观化显示数据特征。这个系统对高校投入产出经济学的研究大有裨益,也适用于相关经济投入产出分析的相关部门。四.结语本文结合投入产出相关经济学理论和高等代数相关知识,从投入产出分析应用需求出发,进行投入产出系统的设计和开发。主要介绍了如何高效实现投入产出相关经济系数的求解,同时结合SQL Server 数据库进行混合编程,对数据结果进行直观化展示,对研究人员和决策部门提供辅助工具,进一步提升投入产出的应用水平。我们也会进一步完善应用和相关功能,同时借助于数据库和数据挖掘相关知识和工具,进一步提升系统应用水平。参考文献1 董琨.中国产业结构的投入产出关联分析D. 大连:大连理工大学,2004.2 王勇.投入产出核算:回顾与展望J.统计研究,2012(08):829.3 廖明球.投入产出及其扩展分析M.北京:首都经济贸易大学出版社,2009年8月4 袁建文.投入产出分析实验教程M.上海:上海出版社,2011年6月.5 吴敏、陈涛.Matlab数据库开发设计J.工业控制计算机,2006(12):4446.致 谢在毕业论文完成之际,我衷心感谢黄传峰老师在论文撰写期间所给予的大力支持与帮助。
限制150内