前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇数学建模常用算法范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
随着上世纪80年代数学建模竞赛以及相关课程的开展,高校教育工作者逐渐意识到将数学建模思想以及计算机实现融入到大学数学基础课教学中的重要性,进行相关教学改革的研究并取得了许多研究成果。如王高峡[2]进行了大学生数学建模竞赛软件教学内容安排的研究;胡建伟[3]对数学建模课程中的软件教学进行了探讨;陈陵[4]讨论了如何利用Matlab软件推进高职数学建模教学;周甄川[5]介绍了Lingo软件在数学建模中的应用等。这些研究侧重于从不同角度对建模竞赛培训中数学软件教学进行了研究。但研究研究的深度、系统性还有所不足。本文从数学软件课程本身的特点出发对其教学方法进行了更加细致、全面的讨论。
数学建模竞赛培训中数学软件教学的特点分析
数学软件是数学理论算法的计算机程序实现。与理论课程相似,数学软件的学习在内容和难度上都是前后衔接、循序渐进的过程。数学软件的学习可分为基础入门、巩固深入以及综合提高三个阶段。第一阶段专门针对数学软件知识点进行教学,后两个阶段则分别在理论算法补充和实际应用问题的模拟练习过程中同步进行。同时,两者也存在若干不同之处:在理论知识层面,数学软件涉及到更多的数学理论知识(不管是代数几何、概率统计等基本理论,还是人工智能、模式识别等现代算法都归入其中);在教学方式上,数学软件的上机实践环节比课堂知识讲授更重要;在计算机实现上,数学软件更注重严谨性和规范性;在实际应用中,数学软件更注重创新性和适用性。数学建模中数学软件的培训与教学应根据这些不同特点采取针对性的措施,以提高学习效果。目前,我国大多数普通高校的竞赛数学软件培训与教学中表现出的一些较普遍问题,大都是由于对这些特点的认识不足或处理不当导致,如日常教学中相关课程设置不够合理、上机实践环节的重视力度不够以及集中培训环节培训相关内容和难度安排不够合理等。
数学建模竞赛培训中数学软件教学策略
制定有效的数学软件培训与教学策略对于高校教学改革研究、学生实践能力的培养以及数学建模竞赛成绩的提高具有重要作用。当然,它本身是一个系统工程,应该从多方面综合入手,有计划的展开相关工作,具体列举如下:加强竞赛指导教师的算法实现指导水平在数学软件教学过程中,学生会有各种相应的问题需要教师帮助解决。竞赛指导教师的软件指导水平对于培训效果十分重要。为此,需要按计划请专家讲学、举行与数学软件教学相关的教师培训班等方式提高指导教师的业务水平。同时,通过优化竞赛指导团队的成员组成,使各教师的专业背景能大体覆盖数学建模所涉及的问题领域。这样能够保证对不同问题领域中较复杂算法实现以及具有较深专业背景的问题都有充足的师资保证,从广度和深度上保障数学软件的教学和培训效果。合理安排数学软件的教学内容和进度应该从两个方面对对数学软件的教学内容进行合理安排。首先,在数学软件教学内容的选择上。当前的数学软件相关产品数量众多,但大致上可分为通用型和专业型两类。通用型如Matlab、Mathematic、Maple、MathCAD等;专业型如统计软件SPSS和SAS、图论软件Pajek、数据挖掘软件Weka等。面对品种众多,特点各异的软件产品,可以采用深入学习与大致了解相结合的方式。需要深入学习的应该包括一门通用型数学软件(如,Matlab、Mathematic等)、两门最常用的专业数学软件(如Lingo、SPSS或SAS);而对于其它软件,可根据学生自己的兴趣作简单了解。其次,在数学软件教学进度的安排上。在软件学习三个阶段的上机实践环节中,学生会遇到不同层次的问题,对知识进行消化吸收的时间也有较大差异。一般来说,基础入门使学生掌握相关软件的基本操作知识,可在日常教学中安排相应的理论和实践学时进行讲授;巩固深入阶段应针对各种数学算法展开,本阶段应该适当增加上机实践学时,可在学期中间以周末辅导班的形式进行(半天理论学习,半天上机实践);综合提高阶段利用假期集中培训的形式对复杂的实际应用专题展开讲授,本阶段应该以上机实践环节为主,教师可在集中讨论环节进行适当地点评和讲解。相关课程的统筹开设S在高等数学、线性代数、概率统计等数学基础课程等课程开设的基础上,适当增加开设相关课程:针对数学专业学生开设《数学软件与数学实验》专业课,而其它专业学生开设《数学实验》和《Matlab入门》等全校或学院选修课;同时,进一步增加《数学实验课程设计》课程,利用集中两周的实践学习巩固软件基础知识和解决问题的能力;开设《数学建模竞赛指导》周末提高班,采取半天理论学习,半天上机实践的方式,具体六个专题的内容:数学规划(基于Lingo和Matlab)、回归拟合(基于Matlab)、微分方程模型与案例分析(基于Matlab)、多元统计回归(基于Matlab与SPSS)、蒙特卡洛模拟与仿真(基于Matlab)、图论入门(基于Lingo和Matlab);组织校级数学建模竞赛,进一步增加学生对数学软件重要性的认识以及学习数学软件的热情。注重对经典程序算法以及优秀范例的精读与积累精读一些重要算法的经典程序代码和优秀范例会产生很好的学习效果。首先,经典算法程序代码的精读能够强化学生对算法思想的理解,在竞赛或实际应用中能更正确地应用甚至改进这些算法来解决问题。其次,经典算法的程序代码一般比较规范,深入阅读理解可以提高程序编写的规范性。再次,对于一些优秀范例的精读以及程序重现对学生解决问题能力和程序编写能力的提高会起到重要作用。最后,对常用的重点算法代码的掌握和积累对竞赛过程中问题的准确快速地分析和求解具有重要作用。对于经典算法的精读和讲解可在进行算法专题补充阶段同步完成。此外,实际应用容易看出,要很好的完成这些工作合理地选择一门综合型数学软件非常重要。为此,我们选择Matlab作为教学中使用的综合软件,利用其工具箱以及互联网上的资源可以获得很多重要算法的程序实现代码。强化学生自学和互相讨论提高的环节数学软件的学习主要集中于相关命令、算法工具的使用方法上,其难度偏小,非常适合学生自学和互相交流讨论。因此,在数学软件教学过程中强调各种软件在线帮助文档的学习和相应的网络资源的利用,如Matlab的在线帮助文档中几乎包含了入门阶段可能遇到的所有问题。同时,鼓励学生之间相互讨论和答疑可以充分调动学生的学习主动性和竞争意识,并更高效地完成学习任务。在软件学习第三阶段,即三人一组的模拟练习阶段,不仅要鼓励同组的三人积极讨论,还要提倡组与组之间多交流讨论。因为,组与组的交流和讨论能产生更充分地挖掘他们的竞争意识并产生更大的动力。使数学软件回归其本身的“工具”属性在数学竞赛培训中数学软件教学过程中,应该始终强调数学软件是实现数学建模思想的有效“工具”。只有这样才可使学生在数学软件的学习过程中,始终关注于模型的构造和算法的设计,而不是程序代码本身,这在软件学习的第二、三阶段更为重要。模型和算法是程序代码的灵魂,而程序代码是实现模型和算法的工具。明白这一点,在数学软件学习过程中才更有方向感和针对性。
关键词:在线测量 仿真 建模
MATLAB是由美国mathworks公司的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
本系统运用非线性软测量模型,回归分析,矩阵的运算,图表显示,仿真测试,这些功能MATLAB都能实现,所以选择MATLAB作为建模软件的开发工具。
根据影响铝酸钠溶液物理化学性质的主要因子,选择多元二项式回归[9]。有四个模型可供选择。其中线性模型就不做考虑。
参考文献
[1]王永葆.应用数理统计,沈阳:东北大学数学系,1995,34-45.
关键词:图形可视化;数学建模; MATLAB
中图分类号:TP301文献标识码:A文章编号:1009-3044(2012)13-3124-03
Applications of Graph Visualization Technology in Mathematical Modeling
SONG Li-juan, FANG Zhi-wei, MA Na
(School of Mathematics and Computer Science, Ningxia University, Yinchuan 750021, China)
Abstract: The paper introduce the main functions and examples of visualization software. The visualization software provide the powerful functions to mathematical modeling, such as numerical calculation,programming and graphical presentation.
Key words: graph visualization; mathematic modeling; MATLAB
图形可视化技术一直是数学及应用数学专业人员在科学计算时一直追求和喜爱的技术,为了使数值实验中的结果更加完美、更加准确,把人们从大量的数学符号、数学公式中解脱出来,人们既希望感受数据或函数的具体含义,也希望能将计算结果显示成具体的、直观的图形。因此,对于任何从事数学、应用数学和计算数学的人来说,掌握一些可视化方法和技术是非常必要的[1]。
本文从常用的图形可视化入手,介绍了可视化软件在数学建模中的主要功能,并且介绍了使用MATLAB软件完成的数学建模中的几个实验。
1图形可视化技术
对大多数用户来说,传统的图形图像制作软件,如3DS max,AutoCAD,Photoshop等,用户操作时简单方便、快捷,然而这些软件都是固化了一种或多种数学建模算法,这些应用软件的算法本身都存在着不同程度的缺陷或漏洞,这就直接影响了使用者的二次开发。对于一些需要在自身专业基础上的高级用户,如果希望在使用这些软件工程中能进行二次研发,将面临如软件版本过低影响工作效率、软件自身数学公式代码封装,缺乏灵活性等问题,例如:3DS max中的NURBS样条曲线函数,它是依赖于数学建模公式搭建的,虽然用户可以快速创建并且可以设置、调整或修改一系列参数,但是数学公式已经是3DSmax的封装代码,软件使用时只能按照对应的数学公式进行设计制作,并不能采用这些数学公式进行任意建模;又比如AutoCAD中的Spline命令,调用它可以快速绘制出光滑的样条曲线,用户也可以通过参数来控制曲线是封闭的还是拟合的,但是它在AutoCAD软件中的公式也是封装的。
2可视化软件应用于数学建模的主要功能
可视化软件在数学建模中主要具有数值计算、编程和图形演示功能。
数值计算是求数学问题近似解的方法与过程,大量的数值计算需要促使计算机的体系结构及性能不断提高和更新,而数值计算的研究内容也随着计算机的发展和应用范围的扩大而不断扩大;利用图形可视化软件中提供的标准的丰富的函数库,用户只需要了解函数功能,而不需要编写复杂的程序代码,甚至不需要考虑函数具体的实现算法,这样可以为用户或者更高级的数学科研人员节省了编程时间、提高了编程效率,为用户能解决更复杂的更特殊的数学问题提供了有效处理手段和编程环境;第二个主要功能是图形演示,图形演示是指利用数学可视化软件,可以在不同坐标系下绘制绘制二维、三维甚至更高维的图形,而且还可以实现动画设计等功能。
MATLAB简称矩阵实验室,是一种数学可视化软件,在1984年由美国的MathWorks公司出品的主要面对科学计算、可视化的商业数学软件[2],是一种数值计算编程环境。它在数学类科技应用软件中的数值计算方面的能力首屈一指,它的基本单位是矩阵,它的指令和数学、工程中的表达形式相似,所以在数值分析、符号计算、工程绘图、控制系统仿真、数字图像处理、数字信号处理以及通讯系统设计与仿真方面已经成为首选工具,同时也是从事数学方面的科研人员进行科学研究的有效工具[3]。MATLAB的图形工具箱可以对简单的点、线、面进行处理,也可以对二维图形、三维图形、四维表现图等进行着色、消隐、平滑、光照以及渲染等操作,所以MATLAB是一种开放的、集计算、可视化、仿真于一身的强大功能包。
3可视化软件在数学建模中的应用实验
3.1二维绘图
二维图形的绘制是MATLAB语言图形处理的基础,也是绝大多数数值计算中广泛应用的图形方式之一。最基本的二维图形指令是plot(y)。
例:多条曲线绘制
x1=0:0.1:10; y1=sin(x1);
x2=0:0.1:10;y2=cos(x2);
x3=0:0.1:10;y3=sin(x3)+cos(x3);
plot(x1,y1,x2,y2,x3,y3);
图1二维图形
3.2三维曲面绘图
在某一区间内绘制完整的曲面,而不是单根曲线,三维曲面绘图函数是surf。
例:被光照射带阴影的曲面图,[X,Y,Z]=peaks(30);surfl(X,Y,Z);
图2三维曲面
3.3四维表现图
对于三维图形,通常可以利用z=f(x,y)的确定或不确定的函数关系来绘制可视化图形,此时自变量是二维的。而在高等物理、力学等的研究当中经常会遇到v=v(x,y,z)的函数。为了表现四维图像,引入了三维实体的四维切片色图,它由函数slice来实现,其调用格式是Slice(X,Y,Z,V,Sx,Sy,Sz)。
例:可视化函数f=xe-x2-y2-z2,自变量的变化范围分别为-2<x<2,-2<y<2,-2<z<2。
4结束语
在计算机技术高速发展的今天,采用计算机将社会服务、机械制造、科学计算、商业活动等多方面的信息模拟出相对应的图像和图形,将有效的提高数学建模过程的效率,节省资源和成本,将是技术实践和理论的有机结合。利用可视化软件的绘图和数据可视化功能,在图形控制窗口上快速地、准确地绘制出各种曲线、曲面和表现图,可视化软件的使用使得抽象思维过程可视化,用户可以通过图形直接感觉到信息,为数学理论的升华作出了准确、完整、合理的感性准备,为用户在数学建模过程中培养了直觉思维能力[4,5]。所以,无论是对基础数学的教学研究,还是对应用数学或计算数学来解决实际问题,掌握一门数学可视化软件都是必不可少且意义重大的。
图3四维表现图
参考文献:
[1]钟启泉.信息教育展望[M].上海:华东师范大学出版社,2002.
[2]梁浩云.Mathematica软件与数学教学[M].广州:华南理工大学出版社,2001.
[3]阳明盛.MATLAB基础及数学软件[M].大连:大连理工大学出版社,2003.
关键词: 独立学院 数学建模竞赛 实验室
1.开展数学建模竞赛活动的重要性和必要性
21世纪是人才的天下,高等院校必须以培养素质高、应用能力和实践能力强、富有创新精神和时代特色的复合型人才为己任。[1]独立学院的目标是培育有实践技能和动手能力,能较快地适应岗位的要求,解决实际问题的应用型人才。那么,如何达到培养应用型人才的目标呢?开展数学建模活动是一个重要的途径,因为数学建模能够将不同学科知识串联起来;数学建模课程的学习,能够实实在在地体验数学与日常生活、生产和科学研究的关系是多么的密切,激发学习数学的兴趣;数学建模课程学习能培养独立思维想象能力、创新意识、拼搏精神和应变能力;数学建模课程学习过程中充满挑战性和创造性,启发刻苦钻研和探索创新的精神,能培养综合运用各种知识和工具解决实际问题的能力。这样“尖子”人才在学习过程中才能够脱颖而出。
2.数学建模竞赛人员选拔和培训的内容与方法
我院从2008年开始参加全国大学生数学建模竞赛,在这项赛事中取得了丰硕的成果,获得省三等奖2项。
2.1人员选拔。考虑到学院学生的数学基础较为薄弱,我院在非数学专业开设数学建模选修课,建模选修课分为理论课和实验课。理论课以拓宽学生对数学知识的综合了解,实验课以提高学生分析问题、解决问题、设计算法、实现算法的能力为目标。开设数学建模课程,为我院竞赛储备充足人员。我院选拔人员采取自愿报名的方式,人员主要由数学建模协会会员及院建模大赛中优秀学生构成。
数学建模协会是数学系团总支领导下的独立的学生学术研究机构,主要负责数学建模工作(如协助院数学建模教练组为全国竞赛选拔队员)。协会会员大多数对数学建模有一定兴趣,他们有一定的数学基础和计算机编程能力。
选拔优秀学生参加竞赛采取自愿方式。自愿报名参加的成员能积极、主动地去学习,能积极地思考问题,能将他们的能量最大限度地发挥出来。
在培训过程中,教师通过设计实际问题,要求学生用数学建模思想分析问题,找出解决问题的方法,让学生以文字形式写出解题的步骤和方法。在此过程中,教师可以了解学生分析问题的思路是否清晰有效,还可看出学生文字表达能力的功底。数学建模竞赛要求参赛人员有较深的数学功底,同时还要具有对实际问题分析、提取信息的能力,具备一定的计算机编程能力和写作能力,参赛人员最好来自不同的专业,形成知识互补。竞赛人员组成一个团队共同完成一项任务,团队成员之间的磨合需要时间,把参加竞赛人员集中在暑期集中培训较适宜。
我院在暑期(8月中下旬)对前期选拔人员进行集中再培训,为学生讲解数学基本知识、数学软件编程、数学基本模型、历年真题等。培训结束后对学生进行实战演练,在此过程中选拔那些应变能力、分析问题和应用数学知识、计算机技术等实践能力更为突出的人员,组织其参加9月份的全国大学生数学建模竞赛。
2.2培训内容和方法。数学建模课程有理论有实验:(1)理论课主要介绍数学建模基本思想、常用建模方法,以及较为经典的建模案例。针对我院学生数学基础相对薄弱等特点,在理论教学中,引导学生研究趣味性较强的简单案例,激发学习数学兴趣,努力促使学生更好的接受理论知识;在教学方法上,采用启发式教学,让学生参与到建模的全过程(分析问题、提出合理假设、建立模型、进行算法设计、实际操作实现、结果检验、撰写论文),从中领悟建模的精髓,激发学习兴趣。(2)实验课主要是介绍数学软件(Matlab与Mathematic)及其软件包,要求学生直接利用软件编程求解一些简单的数学模型。实验课教学通过大量有趣的实例激发学生的兴趣,以培养学生分析、发现、解决问题的能力为目的,在解决问题的学习过程中引导学生不断思考,使用新方法和新技术,在实践活动中尽力培养学生的创新意识和创造能力。
3.建模实验室建设
3.1实验室基础建设。数学建模实验室主要服务于数学系教学工作,承担我院本科生的上机、课程设计、毕业设计和教师制作多媒体软件以及“全国大学生数学建模竞赛”的培训和竞赛工作。实验室利用率达到95%,设备运行情况良好,设备完好率为98%以上。现有3台交换机,投影仪1台,54想计算机,主要配置为Intel奔腾双核E5300CPU,2G内存,160G硬盘,17寸彩显。以Matlab、Mathematic、lingo、Lindo、Spss等专业数学软件为平台,开展数学建模等课程的教学实验;使用数学软件,让学生摆脱了繁重的数值计算,使学生有足够的时间去学习更多、更广泛的内容,去做更多的创造性工作。
数学建模实验室除承担教学实验任务、提高教师教学水平,还能为我院培养优秀数学建模队伍。实验室通过高效的网络传输,给教师和学生提供了大量与数学建模相关的服务,做到资源共享。良好的实验环境为我院培养基础理论扎实、实践能力强、综合素质高的数学人才提供了保障。
3.2实验技术人员综合素质的提高。实验技术人员是高等学校教学、科研队伍的重要组成部分,实验队伍是实验教学的主要力量,其素质直接关系到实验教学的质量。独立学院创新、应用型人才的培养需要有高水平、高质量的实验技术队伍作保障;实验室设备的作用和功能要得到充分开发也需要一支高水平、高质量的技术人员队伍;因此独立学院应重视对他们的培养。
我在此对建立一支素质高、稳定性强的实验技术人员队伍提出几点建议。
3.2.1强化服务意识[2]。实验管理人员要发挥主观能动性,实事求是,为提高学生的实践能力服务,提出科学的实验教学规划。
3.2.2加强培训学习。独立学院实验技术人员需加强自我培训意识,业务知识和实践能力要随着科技的发展而不断提高。提高自身的素质不仅能更好地胜任这项工作,还可以潜移默化地陶冶学生的情操、激励创新思维的产生。
3.2.3建立激励机制。设置实验系列的高级岗位,不仅可以给实验技术人员一定物质激励,而且能够使其享受实现自我价值的自豪感,得到社会承认和尊重的荣誉感,从而极大地提高其自我心理定位;另外还需增强实验技术人员提高自身综合素质的意识,促使自己向更高目标前进[3]。
参考文献:
[1]焦树锋.在高职院校中开展数学建模教学的重要性和必要性[J].滨州职业学院学报,2006,3(3):20-21.
关键词:系统模拟与仿真;课程教学;实例演示
中图分类号:TP391文献标识码:A文章编号:1009-3044(2010)22-6369-03
Simulation Exemplars for System Simulation Course
HUANG Han-ming
(College of Computer Science and Information Engineering, Guangxi Normal University, Guilin 541004, China)
Abstract: This paper briefly narrates the general concepts of system and various system theories, and introduces the necessity of system simulation for the researches of systems. Then the teaching purpose and main contents of system simulation course are given. After that, some understandings in this course teaching experiences are presents. Finally, several having applied measures which might be helpful to enhance the effect of teaching are discussed:reinforce simulation principles teaching, guide students broadening scope of knowledge, use simulation case studies as education emphases
Key words: system simulation; course pedagogy; exemplar demonstration
系统是一个与环境相对的概念,任何相互联系、相互影响、相互作用的部分所组成的一个整体皆可称为一个系统。系统的各个组成部分之间,通过物质、能量和信息的交换而相互关联、相互影响、相互作用;系统与环境之间,亦存在着物质、能量和信息的输入、输出关系。早在古代中国和古希腊的哲学中,就包含朴素的系统思想。随着社会的发展和近、现代科学技术的兴起与进步,在军事、工程、经济、社会等诸多领域,都存在着大量的有关系统的问题。为解决这些问题,20世纪40年代相继产生了运筹学、控制论、信息论和一般系统论等系统理论;20世纪40年代以来,系统理论被大量应用于工程实践,系统工程应用学科迅速发展,同时其他科学技术学科也在不断获得新的突破与发展,从而对各种系统的性质和规律的认识在不断深入,产生的一些新的系统理论:耗散结构理论、协同学、动力系统理论、混沌理论、突变论等。
当前,对复杂及复杂适应系统的研究是系统科学这门学科的热点。国际上,有关复杂系统的系统科学研究可分为三个主要学派:“欧洲学派” ―― 以非线性自组织理论为核心内容的系统理论(系统元素为无机物,源于物理、化学系统);“美国学派” ―― 以圣菲研究所(SFI)为代表的理论框架(系统元素为有机物,具主动性,源于生物系统);“中国学派” ―― 以开放的复杂巨系统理论为核心的体系(系统元素为“人”,源于大工程协作系统)。其实,这三个主要学派的主要区别只是从系统的不同层次为出发点去把握系统的性质和规律;它们的共同点可认为是要从整体上去认识问题和解决问题,对系统的许多性质,部分和的累加并不一定等于整体,整体很可能大于部分和,由于涌现性,整体会出现一些任一部分所不曾拥有的新性质。
由于现实系统的广泛性、多样性和复杂性,如果直接对系统进行观测、实验和研究,可能会对真实系统造成破坏性影响而且可重复性很可能也差,或者用真实系统试验时间过长,或费用太昂贵。对于工程系统,在系统建立之前需要对其结构、行为特性开展研究,但真实系统尚不存在。这些情况下,系统的模拟仿真是唯一可行的研究手段。
1 系统模拟仿真课程的教学目的
系统模拟仿真课程的教学目的为:培养学生科学分析和解决各类学科中出现的一般复杂系统问题的能力,掌握多种解决各种复杂系统问题的研究、设计与分析方法。通过本课程的教学,希望学生能了解系统模型的形式化描述;掌握连续系统的时域与频域建模仿真方法:龙格-库塔法、线性多步法、离散相似法、替换法、根匹配法等;了解离散事件系统的一般概念和离散事件系统的建模工具――Petri网,掌握经典的离散事件系统:单服务台与多服务台排队系统,库存系统等的仿真方法;掌握离散事件系统的仿真输出数据的分析方法;了解现代仿真技术――虚拟现实技术的一般概念、分析建模方法和和基于Agent的的建模方法及Swarm仿真和分布建模仿真。
系统科学专业硕士点的设立是为了满足国家和广西的经济和社会发展的需要,旨在培养高层次的复合型研究与管理人才。系统科学专业硕士点有两个专业:系统理论和系统分析与集成,其中系统理论专业从2004年起开始面向全国招生,系统分析与集成专业从2006年起招生。系统模拟仿真课程是系统科学专业硕士生的必修课程,本人从2006年起到目前为止连续5年担任了本门课程的任课教师,在此对这几年的教学实践作些总结,以图对本课程后续的教学水平的提高和教学效果的完善能有所帮助。
2 课程基础建设
专业课程与选修课程的组成,不同课程的先后安排和教材的选择对教学目的之达成与教学效果之提高至关重要。系统模拟仿真课程的先修课程为:控制理论,概率统计,至少一种通用程序设计语言(如:C/C++程序设计语言和Matlab编程语言)。这几年教学过程中的有些学期,在本课程刚开始时,有些学生反映从未接触过其中一门或两门先修课程,应学生的要求,用一、两次课程的时间介绍相应课程,解释其中的重要内容,并鼓励学生自学相应课程,难懂之处同学之间互相探讨,并及时向老师请教。教材选择的是美国多家高校系统仿真类课程普遍采用的, 由清华大学出版社出版的原版影印英文教材[1]。该教材着眼于离散事件系统仿真的原理和方法学的阐述,基本概念通过实例加以阐述展开,对仿真方法、技术谈论深入,对新技术发展方向描述明确。该教材以C/C++和Fortran为仿真算法的主要编程语言。
开始的连续2年只使用该教材进行教学,有些学生反应跟不上教学进度,仔细了解,跟不上的原因是难以完全读懂教材中的英文内容和从未学过C/C++和Fortran语言。为让每位学生都能掌握好基本仿真方法、技术而又不失去对仿真前沿研究的了解,后增加系统科学与系统的一般理论及其工程应用[2]的介绍,连续系统仿真原理[3]的介绍和较容易编程实现的仿真实例教学[4]。作业与考试方式、频次的安排设置对加强学生的学习动力和提高学习效果起着极大的作用,除了常规作业和期末考试外,增加了每学期每位学生上讲台讲解至少30分钟提前布置的、要求学生课后完成的仿真建模实例小作业并接着深入讨论。还安排了学期结束时应完成的较复杂的系统仿真编程大作业,并撰写一份系统仿真应用的研究报告。
3 提高教学效果的措施
3.1 加强仿真原理教学
现代仿真是基于计算机、利用合适的算法通过模型(物理的或数学的)以代替实际系统进行实验和研究的一门学科和实验技术。 仿真过程中系统、模型与计算机(包括软、硬件)的关系如图1所示。这里模型通常是指数学模型。常用的数学模型[5]有:初等模型、确定性连续模型、确定性离散模型和随机模型。如该图所示,系统建模、仿真建模和仿真实验为系统仿真的三个基本活动。
系统的模型是实际系统的简化或抽象,分物理模型与数学模型。系统模型的形式化描述一般可表述为:
S=(T,U,Ω,X,Y,δ,f)
其中:T―时间基, 其若为整数,则系统S为离散系统,若为实数,则系统S为连续系统;U―输入集,U?奂Rn,n∈I+;Ω―输入段集,某时间内的输入模式,是(U,T)的子集;X―系统状态集,是系统内部结构状态建模的核心;Y―系统输出集;δ―系统状态转移函数;f―系统输出函数,可表达为:f:X×U×TY。
实际建模时,模型描述的详细程度可用如下3个水平来表示:(1)行为水平,只知系统的输入输出,系统被视为“黑箱”;(2)分解结构水平,系统输入输出及结构组成已知,系统被视为多个简单“黑箱”的组合;(3)状态结构水平,系统的输入输出,内部状态及转移函数皆为已知。要全面了解仿真过程的核心内容,需要较全面的数学知识、计算方法知识和编程语言知识。
由图1可知,系统仿真的第1步是建立系统的数学模型。虽然另有一门课程―《数学模型》(或称《数学建模》)(应用数学专业课程)专门介绍个各种数学建模方法,如不特别介绍,本专业学生或许不知有该课程的存在。在建立好系统数学模型的基础上,可能需要利用《计算方法》中的专门知识,基于学生熟悉的编程语言(Fortran,C/C++, C#或Matlab等),如学生对任一编程语言都不了解,推荐学生优先选择较容易入门且有大量编程工具箱可资利用的Matlab编程语言,把数学模型转化为计算机算法程序,得到仿真模型。在设置好各可调参数条件下运行仿真模型(即仿真算法程序),即可得到一系列的输出,这些输出要进行各种分析[1],如条件允许,并应该与实际系统的相应数据作对比分析。
3.2 引导学生扩展知识面
仿真技术广泛应用于工程领域--机械、航空、电力、冶金、化工、电子等方面,和非工程领域DD交通管理、生产调度、库存控制、生态环境以及社会经济等方面。几乎渗透于每一个需要计算的领域和学科,相关文献十分丰富。许多学术期刊都刊登有系统模拟仿真方面的研究论文,其中系统科学领域的期刊,尤其值得同学们去了解和学习,以扩展知识面和了解建模仿真方面的前沿研究。
应该特别留意的期刊有:中科院数学与系统科学研究院期刊学会(/)主办的《系统科学与数学》(中) ,《系统科学与复杂性》(英)和《系统工程理论与实践》,中国系统仿真学会与航天科工集团706所主办的《系统仿真学报》,美国伊利诺伊大学复杂系统研究中心主办的《复杂系统 》,美国UL控制与系统工程学会和弗罗茨瓦夫理工大学主办的《系统科学 》,IEEE的《智能系统》,圣菲研究所的《复杂系统学报》等。
每年都有多次由不同机构发起、在不同国家举办的有关系统仿真的国际学术会议。通过各个级别的系统科学学会或系统仿真学会网站,或直接通过搜索引擎(如, )可检索到最近举办过的系统仿真会议介绍或论文,以及即将举办的系统仿真会议的地点、时间和投稿须知, 如:国际系统科学学会(International Society for the Systems Sciences, ISSS)网站上 /world/index.php 有当年的年度会议信息和最近几年的会议资料。
3.3 以仿真实例教学为教学重点以提高学生的实际分析问题和解决问题的能力
课堂上详细讲解一些较简单的系统问题的仿真实例,可以使学生逐步明确并不断加深对建模仿真整个流程的理解:从分析系统结构或行为导出系统的数学模型,再根据所导出的数学模型使用某种编程工具实现仿真建模,形成相应的仿真算法程序,最后运行仿真算法程序,分析结果并与实际系统相应数据对比。
编程工具的介绍也要兼顾学习效率和算法理解彻底性, 教学过程中发现如只介绍通用编程语言(如C/C++)实现仿真算法程序,学生表示是可以彻底理解所讨论问题的算法及代码;但过后一段时间,再面对类似但稍微复杂些的问题,学生就显得有些不知如何下手改写原来的程序以解决当前的问题。而如使用Matlab .m源码文件实现仿真代码,学生基本能正确改写程序。如使用更高抽象层上的Simulink模型实现仿真,学生可以轻松解决类似新问题。现在采用初次碰到典型案例问题时,采用C语言实现仿真算法,再次碰到类似问题时使用Matlab.m源码,更多的或更复杂的仿真案例,则采用Simulink构建仿真模型。
所选择的仿真实例兼顾确定与随机系统,连续与离散系统。所列举过的离散随机系统有:单服务员排队系统(M/M/1)和多服务员排队系统(M/M/N)的仿真;多工作站排队系统的仿真;采用不同排队策略的银行排队系统仿真。 列举过的连续确定系统有: 机构运动仿真;传染病感染传播仿真;森林救火策略仿真;战斗减员仿真;游击战策略仿真;香烟有害物质进入人体体内的累积量仿真以及生物种群规模涨落(Volterra模型)仿真等。
下面以机构运动仿真和战斗减员仿真为例,对建模仿真的整个过程进行简要描述:
仿真实例一.曲柄滑块机构的运动学仿真:
对图示单缸四冲程发动机中常见的曲柄滑块机构进行运动学仿真。已知连杆长度:r2=0.1m,r3=0.4m,连杆的转速:ω2=2,ω3=3,设曲柄r2以匀速旋转,ω2=50r/s。初始条件:θ2=θ3=0。仿真以ω2为输入,计算ω3和1,仿真时间0.5s。
利用Simulink建模如下:
模块程序运行过程中自动显示如图4所示动画。
所求仿真时间0.5s内1和ω3的变化图像如图5。
图5 0.5s内的滑块运动速度1 (上图)和连杆转速ω3(下图)
仿真实例二.战斗减员问题仿真:
该战争模型只考虑双方兵力的多少和战斗力的强弱。 假设:(1) 用x(t)和y(t)表示甲乙交战双方时刻t的兵力,不妨视为双方的士兵人数;(2)每一方的战斗减员率取决于双方的兵力和战斗力,用f和g表示; (3)现只对甲方进行分析。甲方士兵公开活动,处于乙方的每一个士兵的监视和杀伤范围之内,一旦甲方某个士兵被杀伤,乙方的火力立即集中在其余士兵身上,所以甲方的战斗减员率只与乙方兵力有关,可以简单地设f与y成正比,即f=ay。a表示乙方平均每个士兵对甲方士兵的杀伤率(单位时间的杀伤数),称乙方的战斗有效系数。a可以进一步分解为a=rypy,其中ry是乙方的射击率(每个士兵单位时间的射击次数),py是每次射击的命中率。由这些假设可得本问题的连续时间模型(方程):
又设系统输入为甲乙方的射击率rx,ry,每次射击的命中率px,py,双方初始兵力x0,y0。系统输出为哪一方获胜以及获胜时的剩余兵力。要求有输入、输出界面及仿真过程。如何对微分方程进行求解,并判断哪一方获胜是本问题仿真的关键。
使用GUIDE(图形用户接口开发环境)接口实现以上简单的一阶微分方程。
调入该模型程序,按F5运行,出现如图6所示界面。
在界面中输入参数,点击“执行仿真计算”按钮,就会在结果栏中显示哪一方获胜,及其剩余人数。
设甲乙双方射击率都为0.03,初始兵力都为1000,每次射击的命中率分别为0.023和0.026。执行仿真计算后可知是“乙方获胜”,剩余兵力为339。如图7所示。
4 总结
努力加强系统仿真原理教学,以较简单的经典系统建模实例的仿真模型的建立为依托,让学生在仿真实例的课堂教学中逐步明确并不断加深对建模仿真整个流程的理解。仿真技术广泛应用于工程领域和非工程领域,相关文献十分丰富,涵盖面十分广阔的,而课堂教学的课时十分有限。如果我们把系统模拟与仿真这门学科比作是一片森林,文献可看作是其中的树木,仿真的实际应用则可看作生活于森林中的动物,当然动物也依赖于这片森林的邻域森林(其他学科)。课堂教学只是带学生来到这片森林边沿,仿真原理、理论教学是引导学生仔细观察了眼前的树木,而课堂仿真实例教学则是与学生一起欣赏了树枝上美丽的小鸟。 对这片森林更深入的了解需要学生自己出发去跋涉的、去游历、去探索、去欣赏。当然,带学生到这片森林应该先哪个边沿,才能让学生对这片森林有准确的了解并迅速喜欢上这片森林,需要带领者对这片森林整体的和更准确的了解,也需要到过这片森林的同学们的意见反馈。
参考文献:
[1] Law A M.Simulation Modeling and Analysis[M].北京:清华出版社,2000.
[2] 许国志.系统科学与工程研究[M].上海:上海科学技术出版社,2001.
[3] 肖田元.系统仿真导论[M].北京:清华大学出版社,2001.