李光
摘 要:管理运筹学是经济管理类专业一门重要的专业基础课,实验教学在管理运筹学教学中处于重要的地位。R语言是一个通用的开源数据处理平台,在管理运筹学实验教学中具有突出的优势。文章探讨了R语言在管理运筹学中网络规划部分的教学实验设计。论文介绍了实验中R语言的安装和应用特点,举例说明了用igraph包求解了管理运筹学教学中典型的最短路问题,展示了R语言的优点及其用于管理运筹学实验教学的可行性。
关键词:R语言;网络规划;最短路
中图分类号:G642 文献标志码:A 文章编号:2096-000X(2020)03-0095-04
Abstract: Management operations research is an important professional basic course for economic management majors. Experimental teaching plays an important role in the management of operational research. R language is a general-purpose open source data processing platform, which has outstanding advantages in the management of operational research experiments. This paper explores the teaching experiment design of the R language in the network planning part of management operations research. The paper introduces the role of the igraph package for network analysis in R language and the usage and meaning of each parameter. The igraph package is used to solve the typical shortest path problem in management operations research teaching. The advantages of R language and its feasibility in managing operational research experiment are demonstrated.
Keywords: R language; network programming; shortest path
管理運筹学是经济管理类专业一门重要的专业基础课。运筹学强调根据实际问题构建数学模型,通过对模型的求解,为决策者进行决策提供科学依据。运筹学方法涉及到大量的数学运算和数据处理,必须借助计算机工具才能加深学生对运筹学模型的理解,并在实践中得到应用。在运筹学教学中,不仅要让学生理解运筹学模型的原理,还要让学生掌握必要的计算机工具辅助模型的求解。目前运筹学实验教学中普遍存在重理论轻应用、实验教学内容单一、实验环节课时少等问题[1],这些问题产生的核心就是缺乏合适的实验软件。在目前的运筹学实验教学中,应用较多的计算机软件有excel[2]、lingo[3]、matlab[4]等,但这些软件尚存在实验费用高、求解问题规模受限制、教学与实际应用脱节等不足之处。而R语言是一个通用的开源数据处理平台,不需支付任何费用。借助package包的扩展,R语言可以处理几乎所有的量化分析和数据处理问题。R语言既具有强大的数据处理能力,又具有丰富的图形展示能力,在国内外教学科研中得到了越来越广泛的应用,非常适合运筹学实验教学的需要,是运筹学实验教学的理想工具[5]。
一、R语言简介及其用于运筹学实验教学的优点
(一)R语言简介
R语言是一套完整的数据处理、计算和制图软件系统。R语言是由Auckland大学的Robert Gentleman和Ross Ihaka及其他志愿人员于上世纪80年代开发的一个自由软件,现在的版本是3.6.1版,由“R开发核心团队”负责开发[6]。与其说R是一种统计软件,还不如说R是一种数学计算的环境。R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法。R语言的使用,很大程度上是借助各种各样的包(package)的辅助,从某种程度上讲,包就是针对R的插件,不同的插件满足不同的需求,截至2019年7月10日,CRAN已经收录了各类包14510个。如igraph包[7]是一个用来进行网络分析以及对其进行可视化的包,目前的版本是1.2.2。用igraph包可以求解图与网络规划中常见的最短路和最大流问题,本文以图与网络分析实验为例说明R语言进行运筹学教学实验的主要步骤。
(二)R语言用于运筹学实验教学的优点
相较于其他的运筹学教学软件,R语言具有十分明显的优点。
1. 通过package包的扩展,R语言可以处理几乎所有的量化分析和数据处理问题。因为运筹学的教学内容十分庞杂,涉及到数学运算的多个领域,以往的教学实验要么只能解决部分模型的实验,要么需要涉及多个软件才能解决不同领域的运筹学模型的求解,增加了实验的教学难度和学生的学习难度。R语言的任务视角把R语言能够解决的数据处理问题分为40个大的任务领域,运筹学是R语言能够处理的任务领域之一,有上百个package包用于各种各样的运筹优化问题的处理;借助package包的扩展,运筹学教学中的所有实验内容都可以在R语言平台上实现。学生在整个实验过程中,只需掌握R语言一种软件处理平台即可,大大降低了实验教学的难度和学生学习的难度。
2. R语言可以实现教学和实际应用的自然过渡。运筹学模型的求解涉及到大量的数据处理,而在实际应用中,运筹学模型的参数和计算量更是面临着数量级的增长。以往的运筹学教学软件数据处理能力较弱,可以满足一般教学的需要,但在面对大数据量的实际问题时往往计算能力不足,如lingo教学演示版有300个变量、150个约束条件的规模限制,很难满足实际工作中动辄数千个变量的计算需求。如果要在实际应用中让运筹学模型发挥作用,学生必须重新学习掌握其他的数据处理软件,造成教学和实践的脱节。R语言具有非常强大的数据处理能力,不仅在科研及教学中广泛应用,也是一种普遍应用的数据挖掘工具。把R语言用于运筹学实验教学,可以实现教学和实际应用的自然过渡。
3. R语言的实验成本低。运用商业化教学软件来搭建运筹学的实验环境需要支付不菲的费用,也制约了学生在非实验室环境对软件的使用。如很多学校采用excel做为运筹学实验教学的软件,excel可以方便的与word、PowerPoint等办公软件衔接,操作也非常简便,可以提高学生的学习积极性。但在我国知识产权保护越来越严格的环境下,如果采用excel来搭建运筹学教学的实验环境,即使有教育系统的优惠,也仍然是一笔不小的费用支出。而其他软件如lingo和matlab即使是单机版软件也动辄数万元,甚至数十万元,更是大多数高校和学生无法承担的实验成本。R语言是免费开源的软件,核心模块的安装对硬件要求非常低,构建实验环境不需要支付任何费用。同时学生可以在自己的计算机上安装R语言软件,随时使用软件,降低了学生的学习成本。
4. R语言具有丰富的图形展示功能。运筹学不仅涉及到大量的数据处理,网络规划部分还涉及较多的图形分析的内容。如果没有直观的图形展示,学生理解和掌握相关内容的难度较大。以往的运筹学教学软件往往不具备强大的图形分析和展示能力,给网络规划部分的实验教学造成一定的困难,有些院校甚至不涉及这部分的实验教学。R语言不仅具有强大的数据处理能力,其图形展示能力也非常强大。R语言很好的实现了数据处理和图形展示能力的统一,在网络规划部分的实验教学中具有突出的优势。
二、构建实验环境
R语言是一款免费开源的软件,可以通过网络下载R语言软件包进行安装,在windows下启动R,R的显示窗口叫R控制台,如图1所示。
R可以在两种模式下运行:交互模式和批处理模式。常用的是交互模式。在这种模式下,用户每键入一条命令,R就会显示运行的结果,然后用户再键入新的命令,如此反复进行操作。批处理模式将R要做的工作按一定的规则和顺序编写为脚本,R会一次性处理全部或部分语句脚本,在脚本中,#后面的内容为注释,不参与语句的实际运算。本实验中关于R语言的基本操作部分用交互模式,图与网络的实验部分用批处理模式。
使用R语言进行运筹学实验首先要安装相应的package包,package的安装可以下载package然后本地安装,也可以通过网络安装。强烈推荐使用网络安装模式,因为每个package的运行可能涉及到其他包做辅助支撑,而这些支撑性的package在网络环境下可以自动全部安装,用本地安装方式很容易忽略某些支撑包的安装。网络安装package非常简单,如本文举例用到的igraph包的安装,只要在R控制台中输入命令install.packages(“igraph”)即可,接下来R会要求用户选择安装连接的网络的站点,选择网络站点,R会自动完成整个包的安装。如果安装过程中提示安装错误,可将杀毒软件或防火墙关闭后重新操作。
为了节约内存和避免函数名称冲突,R默认不会载入每个已安装的包。当用户需要某个包时,只要用library()函数把该包载入到当前对话中即可。在一次会话中,包只需要载入一次。
在R中,完成所有工作的操作都称为函数(function)。大部分函数都有如下的形式:f(argument1,argument2,…)。其中f是函数名,argument1、argument2是该函数的参数。实验中的操作主要就是根据实际问题对这些参数进行赋值。如下面实验中用到的创建一个数据矩阵的matrix()函数的用法。创建矩阵函数matrix(data,nrow=1,ncol=1,byrow=FALSE)
這里data是矩阵中包含的元素,其数量最多为nrow×ncol,nrow和ncol分别表示这个矩阵的行数和列数(默认值均为1),byrow的取值为TRUE或者FALSE(默认值为FALSE),它表示将data的元素是按行还是按列来填充矩阵。其它基本操作参见R语言操作手册。
三、实验内容
实验的过程是首先介绍实验中用到的函数,然后针对具体实例说明函数的运用以及解释实验的结果。下面以图与网络部分的最短路问题实验为例,说明实验的过程。
(一)最短路问题实验用到的函数
首先介绍实验中用到的R语言函数。本实验中主要用到以下四个函数,其中前两个用于创建并绘制网络图,后两个函数用于计算网络图中的最短路,四个函数的功能分别描述如下:
1. add.edges()函数
作用:用于创建网络图,按顶点序列给出图中的边或弧。
2. tkplot()函数
作用:交互式图形绘制工具。可以调整节点及边的位置、大小、颜色等参数。
3. distances()函数
作用:计算从网络中的节点到节点的所有最短路径的长度。
4. shortest.paths()函数
作用:从给定节点计算一条最短路径,是路径本身,不是路径的长度,一般以路径顺序经过的节点来表示。
(二)最短路问题描述
实验涉及的最短路问题可表述如下:如图2所示是一个单行线构成的交通网络,每个弧旁边的数字表示这条单行线的长度。现在从节点v_1出发,经过这个交通网到达节点v_8,求使总路程最短的线路[8]。运筹学理论课一般已讲过最短路问题的dijkstra算法,学生对最短路问题的求解原理和步骤比较了解,实验目的主要用于验证算法的可行性和减少计算量。
(三)根据实验问题编写脚本
用library()函数加载igraph包,要始终注意解决特定的运筹学问题时,必须首先加载相应的package。
根据问题的数据和R语言的语法规则写出实验脚本。用脚本模式进行实验的优点是便于重复实验和对语句的修改。脚本的编写就是把具体问题的数据做为上面四个函数的参数,分别按格式要求写入函数的特定位置。本实验中编写的脚本只有6句。首先用matrix()函数创建网络图相关的数据矩阵,这里构建的是一个3列矩阵,前两列表示边所对应的起点和终点,第三列元素表示对应边的权。然后用g=add.edges()创建名称为g的网络图。接下来用tkplot(g)画出网络图g,调整节点位置,与教材上的图保持一致。最后用shortest.paths()计算并显示从节点1到其他节点的最短路径,distances()计算并显示从节点1到其他节点的最短路径的长度
(四)实验运行及结果
编写好实验的脚本后,就可以进行实验的运行。实验运行的方法是在脚本中选中相应的语句,然后点右键选择执行该语句即可。脚本的语句可以逐行代码执行,也可以选中多行代码同时执行。实验中用tkplot()函数绘制出的网络图如图3所示,经过对节点位置的调整,可以看到图形与问题描述的图形基本一致,唯一的差别是节点5和节点6之间的两个方向相反的弧,这里是用一条双向的弧来代表。
实验中计算出的从节点1到其它各个节点的最短路径用依次经过的节点来表示,如节点1到节点6的最短路径是(1,3,2,5,6),意思是从节点1到节点6的最短路依次经过括号中的节点。distances()函数计算的从起点到各节点的最短路的长度,如节点1到节点6的最短路的长度是10。软件计算的结果与教材中人工计算的结果完全一致。
图与网络规划部分的ford算法求最短路和网络最大流问题也可以用同样的步骤实现。
上述实验内容用于展示将R语言用于网络规划实验教学的可行性,具体實验中可以根据教学的内容安排学生先人工计算课后的习题,再利用实验课验证人工计算的结果,加深学生对教材内容的理解。
四、结束语
本文分析了R语言用于管理运筹学实验教学的优点,描述了运用R语言进行网络规划教学实验的基本过程,针对最短路问题这个网络规划中的基本模型,详细描述了实验的步骤,实验结果与人工计算结果一致。证明了R语言用于管理运筹学实验教学的可行性。
参考文献:
[1]方霞,曹洁,张平凤.运筹学课程实验教学探讨[J].高教学刊,2016(19):83-84.
[2]刘春梅.管理运筹学基础、技术及Excel建模实践(第二版)[M].上海:格致出版社,上海人民出版社,2016.
[3]江文奇.管理运筹学[M].电子工业出版社,2014.
[4]杨毓玲.基于MATLAB的运筹学实验教学研究[J].科技经济市场,2012(11):115-116.
[5]潘东东,童艳彩,陈兴,等.基于R的运筹学实验教学实践与探讨[J].统计与管理,2014(01):174-175.
[6]Team R C. R: A Language and Environment for Statistical Computing[Z]. Vienna, Austria: 2017.
[7]Csardi G, Nepusz T. The igraph software package for complex network research[J]. InterJournal, 2006, Complex Systems: 1695.
[8]吴祈宗.运筹学(第3版)[M].北京:机械工业出版社,2015.