前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇数学建模算法与程序范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
关键词:工程计算能力;计算基础教育;理工类
中图分类号:G642 文献标识码:B
1问题的提出
我国大学计算机基础教育经过了三十几年的发展历程,几代教育工作者为此付出了辛勤劳动。他们针对我国理工类大学生的特点和中国国情,在当时的历史条件下提出了一系列培养大学生计算机操作技能的教学方法,形成了具有中国特色的计算机基础教育理念和体系。但是,大学计算机基础教育发展到今天如果仍然停留在以计算机基本操作为主体的教学模式上,那将与社会发展对大学生的要求很不适应。今天我们更应该强调培养大学生尤其是理工类大学生以计算机为工具的工程计算能力,并将这种能力与各自的专业结合起来,真正起到为专业服务的作用。由此我国的大学计算机基础教育应该转变为大学计算基础教育。
八十年代初期以来,我国计算机基础教育成为大学里的公共教育,面向全体大学生开设计算机基础教育公共课,并由专门的教学小组(教研室或计算中心)组织教学,依不同专业确定教学内容,因此理工类大学生计算机基础教育的教学内容基本统一。教育部教学指导委员会和全国高等学校计算机基础教学研究会相继出台一些教学指导性意见,如2004年教育部高等学校非计算机专业计算机基础课程教学指导分委员会出台的《关于进一步加强高校计算机基础教学的几点意见》(简称《白皮书》)以及1997年教育部高教司颁发的《加强非计算机专业计算机基础教学工作的几点意见》(简称155号文件),虽然针对不同学科和专业有不同的教学要求,但是培养目标和内容主要以教导学生如何操作好计算机或者说如何提高大学生计算机操作技能为主体,没有强调大学生工程计算能力的培养。以典型的理工类大学生为例,大学期间的计算机基础教育主要开设“大学计算机基础”和“程序设计”两门课程,在“大学计算机基础”课程中,主要介绍计算机的基本组成、环境以及常用软件平台,在“程序设计”课程中也只是讲解编程的基本方法,其他课程更趋向于计算机专业类学生的课程。笔者认为,开设这些课程对于提高大学生计算机操作技能和计算机应用能力起到了重要作用,但是在计算机基础教育的教学体系中没有涉及工程计算能力培养的内容,没有阐明工程计算能力与计算机基本知识和应用能力之间的关系,实际上没有认识到计算机基础教育的根本问题是要以培养大学生现代工程计算能力为目标。
随着计算机技术的迅速发展和广泛应用,作为我国高层次人才――大学生的培养,尤其是规模最大的理工类大学生的培养,应培养他们具有将计算机应用与自己专业知识密切结合的能力,这种结合实质上就是要增强大学生以计算机为基本工具的工程计算能力,而不是简单地操作计算机或使用某一个软件。回顾我国近三十年来的计算机基础教育,大部分精力花在教大学生如何提高计算机操作技能上,如:Windows基本操作、Office软件的使用等,没
作者简介:邹北骥(1961-),男,江西南昌人,博士,教授,博士生导师,研究方向为计算机教育、计算机图形学与数字图像处理。
有涉及工程计算能力的培养。造成这种结果的主要原因有以下几个方面:(1)计算机技术虽然发展很快,但历史不长,对于以计算机为工具的工程计算能力的培养没有深刻的认识。(2)存在误区,误以为培养大学生的操作技能就能提高学生应用计算机的能力。(3)师资问题。大部分从事计算机基础教育课程的教师都是学计算机专业出生的,对于计算机与其它专业的融合问题缺乏了解。(4)大部分从事计算机基础教育的教师很少参与实际科研项目的开发,缺乏软件开发经验,不能体会计算机软件开发中的计算问题和工程计算能力之间的关系。
如果说这种现象的出现是由于历史造成的,或者说是历史发展的必经之路,那么从现在开始,我们就应该高度重视大学生工程计算能力的培养,真正提高他们运用计算机的能力,发挥计算机技术在其它各专业领域的作用。
2工程计算能力培养
什么是工程计算能力?本文所述的工程计算能力是以现代计算机为工具的工程计算能力,也就是以计算机为工具的计算方法的掌握和运用能力。多年以来,“计算方法”或“数值分析”课程是理工类大学生一门重要的基础课,它教给学生用数值求解方法解决工程问题,其中涉及到基本的以计算机为工具的计算方法,如:递归求解等。然而计算机技术发展到今天,特别是软件开发技术和方法的发展,使得以计算机为工具的计算方法变得更加丰富和神奇,非计算机专业,尤其是理工类专业的大学生应该尽可能多地掌握这些方法,以便他们能更好地融入到自己的专业领域。笔者认为,理工类大学生工程计算能力培养应包含以下几个方面。
2.1建模能力
建模能力实质上就是数学建模的应用能力。在理工类大学计算机基础教育中,应该大力加强数学建模方法的学习,大力加强数学建模训练。理工类大学生面临不同领域工程问题,应用计算机求解这些问题的基础是数学建模。在过去几十年的计算机基础教育中,我们忽略了这一方面的培养,使得大学生的计算机应用能力受到限制。因此从培养大学生尤其是理工类大学生工程计算能力的角度出发,应普遍开设数学建模课程。
2.2数据组织能力
工程计算能力培养的第二个方面是数据的组织能力。在计算机专业人才的培养中,是通过“数据结构”课程来教学生基本的数据组织方法。笔者认为,对于非计算机专业尤其是理工类专业的大学生,应该为他们开设“数据结构”课程。我们应该认识到,“数据结构”课程中介绍的数据组织方法,如:堆栈、队列这些基本结构和树、链表等这些复杂结构绝不只是计算机专业学生需要学习的,非计算机专业尤其是理工类计算机专业学生同样需要学习,而且对于他们来讲,这门课程更为重要。有一种观点认为:“数据结构”课程有较大难度,一般理工类学生学习起来比较困难。其实不然,历届研究生入学考试成绩表明,理工类大学生大多通过自学学习“数据结构”课程,而且相当一部分学生成绩优异。
数据结构是程序设计的基础,没有掌握好数据的组织方法,不会运用数据结构表达工程问题中的数据,又怎么可能学好程序设计课程?又怎么能编写好程序?几十年来的计算机基础教育强调了程序设计能力的培养,但没有开设“数据结构”课程,实际上像一座空中楼阁,基础很不牢固。
2.3算法设计能力
算法是计算机计算的步骤描述,是实现计算机求解问题的关键。培养理工类大学生的工程计算能力,需要教给他们基本的算法思想和常用的算法。例如:基本的算法包括排序、递归、查找等。设想一个理工类大学毕业生,如果大学期间对于计算机常用算法理解得比较深刻,应用得比较好,对于他在实际工作中利用计算机解决问题就会变得轻而易举。反之,如果对基本算法一无所知,如:不知道什么是递归算法,不知道什么是排序算法,那么对一些基本的工程问题他都会一筹莫展,甚至无法求解。因此基本算法的学习对于理工类大学生而言是非常重要的。
2.4程序设计能力
工程计算能力培养的第四个方面是程序设计能力,它是工程计算能力的实际载体,用计算机解决实际工程问题最终要落实到计算机程序的开发,也就是人们常说的编程。在学习和掌握数学建模、数据结构和算法设计的基础上,以一门具体的程序设计语言为模板,学习程序设计的基本方法,学习程序的基本结构和运行规律,掌握顺序结构、分支结构和循环结构等对于理工类大学生工程计算能力的提高是极其重要的。
3计算机基础教育与计算基础教育
面向非计算机专业大学生的计算机教育一直沿用“计算机基础教育”这个名称。笔者认为:“计算机基础教育”是围绕计算机本身的计算机科学与技术方面的专业基础教育,面向非计算机专业学生的计算机教育应该用“计算基础教育”这个名称,其本质是要培养非计算机专业大学生以现代计算机为基本工具的工程计算能力,而不是关于计算机本身的科学与技术。长期以来,我国从事非计算机专业计算机教学的教师忽视了这一细节,有意或无意地将非计算机专业大学生的计算机教育引向了计算机科学与技术专业教育的道路,越来越多的课程设置与计算机科学与技术专业的核心课程一致了,如:“计算机网络技术”、“微机接口原理”、“多媒体技术”等。如此下去不仅大大增加了理工类大学生课程学习的负担,而且没有提高理工类大学生工程计算能力。因此我们需要从观念和教学理念上转变,要清楚地认识理工类大学生工程计算能力的培养并不需要为计算机专业类学生开设的那些课程内容,只是需要围绕“数学建模”、“数据结构”、“算法设计”和“程序设计”四个方面的基础课程。
4实施方案建议
综上所述,面向理工类大学生以计算机为工具的工程计算能力培养需要从数学建模、数据结构、算法基础和程序设计四个方面进行,所有的教学要求、内容和目标都应该围绕这四个问题展开。笔者建议,针对理工类大学生的计算基础教育课程体系可以有两个方案,一个方案是紧缩方案,开设的课程概括上述四方面内容,设置两门课程,分别为“大学计算基础”和“大学计算机程序设计”;另一个方案是扩展方案,开设四门课程,分别对应上述四个方面的内容,即“大学数学建模方法”、“数据结构基础”、“算法基础”和“程序设计基础”。两种方案的内容、要求和课时见表1和表2。
表1方案1(压缩型)
课程名称 主要内容 要求与目标 学时建议
大学计算基础 1.计算机的基本知识 掌握计算机基础知识 80
2.数学建模方法介绍 掌握基本的数学建模方法
3.数据结构基础 掌握常用的数据结构
4.算法基础 掌握常用的算法
大学计算机程序设计 1.程序的基本概念
2.C语言程序设计 掌握计算机程序的原理和运行方式
掌握C语言编程方法 48
表2方案2(扩展型)
课程名称 主要内容 要求与目标 学时建议
大学数学建模方法 1.计算机的基本知识 掌握计算机基础知识 80
2.数学建模方法介绍 掌握基本的数学建模方法
数据结构基础 1.数据的组织方法 掌握数据的组织方式 48
2.基本的数据结构及其应用 掌握队列、堆栈、链表等基本数据结构的应该
算法基础 1.算法的基本概念 掌握算法的思想、流程、表达方式及其与程序之间的关系 48
2.基本算法及其应用 掌握常用的算法
程序设计基础 1.程序的基本概念
2. C语言程序设计 掌握计算机程序的原理和运行方式
掌握C语言编程方法 48
5结束语
教育理念和观念的转变需要全体教育工作者形成共识,提出的方案需要通过论证和实践检验,建议相关部门
组织一部分长期从事非计算机专业计算机基础教育的教师、学者进行研讨,针对理工类大学生计算机基础教育和计算基础教育的内涵进行讨论,明确理工类大学生计算机基础教育因面向工程计算能力培养,文中提出的实施方案可在高水平大学试点。
参考文献:
关键词:系统模拟与仿真;课程教学;实例演示
中图分类号: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.
当需要从定量的角度分析和研究一个实际问题时,人们就要在深入调查研究、了解对象信息、作出简化假设、分析内在规律等工作的基础上,用数学的符号和语言作表述来建立数学模型。
建模比赛的一般分工是数学模型的建立、程序编写与拟合、论文的叙述。其中论文是评定参赛队伍成绩的好坏、高低、获奖级别的唯一依据,并且也是每组参赛期间成果的结晶,这是相当重要的一部分。那么今天我们就来分享一下有关建模论文的写作的一些注意事项。
首先
论文的评阅原则是
假设的合理性 ;建模的创造性;
结果的合理性 ;表述的清晰性。
在写作的时候可以按照这些要点来给自己一个大概的估计。
我们在写论文的时候,一般是按如下的结构:
1.摘要
2.问题的叙述,问题的分析,背景的分析等
3.模型的假设,符号说明
4.模型的建立(问题分析,公式推导,基本模型,最终或简化模型等)
5.模型的求解
6.模型检验:结果表示、分析与检验,误差分析,……
7.模型评价:特点,优缺点,改进方法,推广……
8.参考文献
9.附录:计算框图、详细图表,……
摘要是整篇论文最精华的部分,也是评阅人最关注的部分。在写摘要时,我们首先要对这个模型进行数学归类,并且通过之前和队友一起进行建模过程中对整体思路有着比较清楚的了解,然后阐述模型的优点、算法特点等,最后对主要结果进行说明,即回答题目所问的全部问题。
对于模型的建立,基本原则是实用、有效,因为我们建立模型是为了解决实际问题的,而不是追求单纯理论数学上的“高大上”。能用初等方法解决就不用高级方法;能用简单方法解决就不用复杂方法;能用被更多人看懂、理解的方法就不用只能少数人看懂、理解的方法。
数学建模鼓励创新,一般出现在模型本身、简化优化的好方法好策略、模型求解、模型检验甚至是模型推广中。切忌为了标新立异而离题。在阐述建模过程时尽可能使用专业的术语,分析要中肯、确切,表述简明,关键步骤要列出。
关键词:MATLAB;BP神经网络;多元非线性系统;训练算法;学习精度
中图分类号:TP312文献标识码:A文章编号文章编号:16727800(2013)0010006602
基金项目:佛山科学技术学院重点项目(2010)
作者简介:刘晓莉(1961-),女,佛山科学技术学院副教授,研究方向为应用数学。
0引言
在科学研究和生产实践中,对具有表现系统特征或运行状态的离散数据进行建模,用于系统预测、评价等,是科学决策和决策系统建立的重要基础。由于大多数研究对象普遍具有多变量且依从高度非线性关系等特征,因此多元非线性系统建模极其重要。
人工神经网络是由大量简单的处理单元(神经元)广泛地互相连接形成的复杂非线性系统。它不需要任何先验公式,可直接从训练样本(离散数据)中自动归纳规则,提取离散数据之间复杂的依从关系(可以是高度非线性关系),储存于网络权重之中,从而建立研究问题的神经网络模型。其中由Rumelhart提出的多层前馈神经网络,由于采用误差反传的学习算法,被称为BP网络,其应用非常广泛。在理论上已经证明具有三层结构(一个隐含层)的BP网络能够逼近任何有理函数[1]。
1MATLAB中BP网络训练算法
MATLAB中的神经网络工具箱由许多子程序组成,这些子程序已完成了神经网络算法中所涉及的许多运算和操作,使用者根据需要调用相关函数即可。常见的BP网络训练算法有traingda;traingdx(变学习率算法)、trainrp(弹性BP算法)、trainbfg 或traincgf(变梯度算法)、trainoss(类Newton算法)等。对于一个实际问题,选用那种训练方法最快捷,样本的拟合精度高低与否等很难判断,它取决于许多因素,包括问题的复杂程度、学习样本的多少、隐含层的节点数目、误差目标等,所以,网络的结构和参数的设计是关键。
2案例与建模
表1所列的样本数据是3个自变量、1个因变量(预测或控制变量)的非线性系统。现用三层BP神经网络模型逼近存在于样本数据间的函数关系,其模型为y=ANN(x1,x2,x3), ANN是一个非线性函数。此模型为隐含表达式,即不能用通常的数学公式表示,故称为“知识库”。
程序中,p、t是用于学习样本输入和目标(实际)输出矩阵;函数newff的第一个参数为样本输入的最小值与最大值构成的矩阵;输入层与隐含层、隐含层与输出层的节点数分别为s1、s2,其传递函数分别为tansig(S型)和purelin(线性);训练算法trainlm 的主要参数是: show、lr、epochs、goal、min_grad、time等,如果训练次数超过epochs,误差低于goal,梯度值低于min_grad或训练时间低于time,训练就结束;newff的返回值net为一个可训练的BP网络,函数train用于训练网络,它将p和t不断作用于该网络以调整网络权值,从而减小网络输出与目标输出间的差距;train函数的返回值为训练后的结果。函数sim模拟网络,它接受样本输入、返回网络输出。
事实上,BP神经网络初始权值对训练结果的影响较大,即使是微小的改变。由于MATLAB的网络初始化是随机的,因此程序在每次运行后得到的训练网络是不同的,即“知识库”是不同的,包括实际迭代次数、网络输入和目标输出的均方差MSE。为此,特取B组数据样本,用来检验训练后的网络可靠性,即在程序中增加以下语句:
3分析
通过试验发现,训练后的网络一般对学习样本有很高的逼近精度,但即便是MSE远远小于最小误差goal值,对那些没有用于网络训练过程的样本(非学习样本)而言,却可能出现误差较大的反映。所以选择训练算法、确定主要参数及改变节点数s1的取值等是极其重要的,需要进行调整。当F检验值越大,MSE值越小,训练后的网络对学习样本的拟和精度越高;网络输出和实际输出的方差Sc值越小,则对非学习样本的拟和精度越高。多次试验中的结果见表3。其中,序号为5的试验中,学习样本的MSE没有达到设定的最小误差goal=1e-4,训练后的网络对学习样本和非学习样本拟和精度较低;序号为2的训练网络对样本拟和精度最高。试验表明,这种方法在提高网络的学习精度等方面是极其有效的。
4结语
多元非线性系统的BP神经网络模型能最大限度地概括原自变量系统中的数据信息,又能对因变量具有较好的解释能力。针对此案例的多次试验表明,各种算法中,trainlm算法的性能较好;对于大小适中的网络,从训练的迭代次数来看,trainlm是最快的一种算法;对于大网络,一般选用trainrp算法或是某个变梯度算法比较好;对于小网络,则可选择trainbfg。
人工神经网络能同时描述多个控制或预测量的非线性系统。例如,若预测或控制因变量为2个,即目标输出为两列矩阵,则在上述程序中将网络的输出节点取为2即可,多于两个依次类推。人工神经网络适用于关系复杂的多元非线性系统建模,具有误差小、精度高的优点。
参考文献:
[1]王学辉,张明辉.MATLAB6.1最新应用详解[M].北京:中国水利水电出版社,2001.
[2]陈杨,王茹,林辉.MATLAB6.0版本中神经网络工具箱训练算法的使用与比较[J].电脑与信息技术,2002(3).
1摘要
“摘要”是对整篇论文的缩写,建立在通读全文、理解全文的基础之上。评审专家评阅论文时,总是先看摘要,摘要给专家留下第一印象,是评奖的敲门砖。“摘要”包括: 问题背景,要达到什么目标,解决问题的思路、方法和步骤,模型的主要内容、算法和结论,模型的特色。好的“摘要”能很快吸引评审专家的注意力,它建立在多次修改、反复推敲的基础之上,具有统揽全文、层次分明、重点突出、文笔流畅的特点。
2问题提出
“问题提出”也可写作“问题重述”。是将竞赛试题所给定的问题背景和解题要求用论文书写者自己的语言重新表述。在美国的数学建模竞赛中,这一部分称为 Background或者 Introduction。
3模型假设
任何问题的求解都有它的背景和适用范围,建模试题来自于现实问题,同样受到各种外在因素的约束。“模型假设”就是界定一个范围,或给出几个约束条件,一使得问题的解决过程不至于太复杂,二使得其他人在使用该模型时知晓它的适用范围。“模型假设”不是凭空臆造的,是在建立模型的过程中挖掘、提炼出来的。
4符号说明
数学符号是数学语言的基本元素,具有抽象性、准确性、简洁性的特点。数学模型由数学符号组成,模型的求解通过符号的运算来完成。可见,在建立数学模型时根据需要随时引入必要的数学符号是多么重要的事情。根据竞赛要求,在建立模型的过程中所引入的数学符号要在本模块给出说明,最好的说明方式是列一个表格。
5问题分析
众所周知,解决数学问题最难、最重要的一步就是明确解题思路,确定解题方法。而“分析”,则是迈出这一步的关键。数学建模也这样。建模试题往往由几个子问题组成,这时的“问题分析”既要有全局分析,也要有局部分析。“问题分析”包括: 分析解决该问题需要用到哪些专业背景知识; 分析解决问题的切入点、重点和难点; 分析解决问题的思路、方法、工具和步骤。这样的分析对于“如何建立模型? 采用哪些数学理论或公式? 怎样求解? 会遇到哪些困难?”具有指导作用。
6模型建立
“模型建立”就是将原问题抽象成数学的表示式,主要步骤:
第一步,根据问题的实际背景和专业背景,选择适当的数学理论或工具。例如,如果是变化率问题,则考虑借助于导数或微分方程的手段; 如果涉及面积、体积、曲线弧长、功、流量等几何量或物理量,则考虑运用积分元素法,将问题转化为定积分、或重积分、或曲线曲面积分; 如果是随机数据的处理,则考虑统计分析的方法。
第二步,确定常量、变量,用符号来表示这些量。
第三步,建立数学模型,即建立常量、变量之间的关系。这种关系可以是方程、函数或表格。
7模型求解
少数模型可能是简单的数学式子,求解起来比较容易。有些模型虽然也可用数学式子表示,但其中含有难以析出的参数,求解很困难,有的模型面对的就是一堆数据,对于这两种情形,就需要借助于软件 Matlab,Mathematic,Maple,SAS,SPSS中的某一个编程求解。
8模型检验
数学建模竞赛的题目来自于科技、工程、经济、社会等领域的实际问题。由于问题的复杂性和方法的局限性,所建立的数学模型与实际情况之间会有差距,模型可靠性的检验成为必然。为了检验提交的数学模型与实际情况吻合的程度,竞赛题中往往会提供一些来自于背景问题的实验数据。“模型检验”就是将给定的数据代入模型,计算相对误差和绝对误差,如果误差较大,就要返回去调整模型以提高可靠性。
9模型评价