《计算机模拟技术》由会员分享,可在线阅读,更多相关《计算机模拟技术(30页珍藏版)》请在金锄头文库上搜索。
1、计算机模拟技术计算机模拟技术课程名:计算机模拟技术 计算机模拟是在科学研究中常采用的一种技术,特别是在科学试验环节,利用计算机模拟非常有效。 所谓计算机模拟就是用计算机来模仿真实的事物,用一个模型(物理的-实物模拟;数学的-计算机模拟)来模拟真实的系统,对系统的内部结构、外界影响、功能、行为等进行实验,通过实验使系统达到优良的性 能,从而获得良好的经济效益和社会效益。 计算机模拟方面的研究始于六十年代,早期的研究主要用于国防和军事领域(如航空航天、武器研制、 核试验等),以及自动控制等方面。随着计算机应用的普及,应用范围也在扩大,现在已遍及自然科学和社会科学的各个领域。在农业方面,我国从 80
2、 年代开始进行作物生长发育模拟模型和生产管理系统的研 究,目前有一定基础的:在小麦方面有北农大、中科院;棉花方面有中国农业大学、中国棉花所;水稻 方面有江西农科院;在土壤水份、水资源及灌溉方面西北农业科技大学。目前影响较大的有比较成形的 有江苏省农科院。目前的主要成果有:我国主要农作物栽培模拟优化决策系统 RCSODS(水稻)和 WCSODS(小麦-江苏省农科院)、MCSODS(玉米-河南省农科院)、CCSODS(棉花-中国农业大学)等。 计算机模拟特别适合于实验条件苛刻、环境恶劣(如真空、高温、高压、有毒有害的场所)、试验周期长,花费大的场合。 农作物的生产系统就很适合于计算机模拟:农作物的
3、生产受各种条件的影响,不同作物、不同品种 也有差异。比如,要想提高一种作物的产量,就先要作试验,通过试验了解这种作物的特性:抗旱性、 耐寒性、对氮、磷、钾哪种肥更有效等。但农业的田间实验不能保证精度(除人为可控条件外,还有许多随机因素)、周期长(周期一年),耗费大。可通过计算机模拟来实现:先建立这种作物生产系统的数学模 型(依靠专业知识或试验数据。一般来说,诸如作物产量和农业环境的关系可用微分方程或其它方程来描述),通过计算机模拟来找出这种作物的生长与农业环境相互作用的关系,以及各种条件之间的协迫情况。不 仅可大大节省实验经费、加快研究进度(周期一年的实验结果几秒钟内即可得到),这种模拟软件的
4、开发还可与农业生产管理系统,决策系统相联系,实现对农作物生产的预测、分析、调控、设计的数字化和科 学化。 作为一门课程,不是研究某个特定系统的模拟问题,而是了解计算机模拟的一般过程、基本原则, 掌握基础知识,掌握建模及动态模拟的一般方法。第一章 计算机模拟概述1.1 计算机模拟技术 研究对象研究对象 在一个计算机模拟问题中,我们研究的对象是一个系统。 系统系统:一些具有特定功能的、相互之间按一定规律联系着的实体的集合。如作物的生产系统可看作 由作物、环境、技术、经济等要素构成的。各要素之间相互影响、相互联系,称为系统的相关性相关性;一个系统是一个整体,整体内的各个部分不能分割,各因素之间必须相
5、互协调,不能在任何一个环节出问题, 才能使系统达到优良的状态,称为系统的完整性完整性。 目标目标 计算机模拟的目标是了解系统的各个实体之间的相互制约关系,从而使系统在预定的目 标下达到最优和完善。如在作物生产系统中,怎样控制、实施各水、肥、栽培技术等,从而使产量最高,以 获得最优的经济效益。 方法方法 模拟的方法是先建立系统与环境相互作用的数学模型,用数学模型来类比、模仿现实系 统(一个数学模型就是从数学上表达系统各因素之间的数量关系,或各因素之间协调的规则;从整个模拟过 程来看就是一个算法,或一系列数据,这些数据综合描述一个系统过程或现象的重要行为),然后在数学模型和对系统深刻了解的基础上,
6、开发模拟软件,用影响系统目标的因素作为输入,通过计算机技术来表 达系统各因素作用的状态。从数学的角度来看,模拟的过程就是对数学模型求解的过程,并把系统过程演示出来。 基础知识基础知识 可见,对一个系统进行计算机模拟, (1) 要对模拟对象有深刻的了解。如:一个公交车调试系统,要编制一个好的调度程序,必须先对现行 系统作周密的调查,搞清哪些是影响调度程序的成分及实体,如现有车辆数、每车载客数、每趟车花费的时 间、沿途乘客的密集程度、乘客的一般去向、乘客高峰期的人数等。只有经过周密的调查研究,才能形成一 个完整的模拟系统;作物生长模拟系统中,也要搞清影响作物生长的各因素,具备丰富的专业知识,否则不
7、能建立起精确的模型。在对一个系统的动态特性不完全清楚的情况下,有必要通过实验获取数据,以用 于数学模型的建立。 (2) 要有数学知识。一般研究的系统较复杂,不能用简单的函数或方程来描述,要综合使用各种数学 方法,才能使模型准确、可靠。 (3) 计算机知识和编程技巧。软件应完整地实现系统的数学描述,输出应直观、形象,如三维可视化 输出等。软件的开发是项目的重要工作,也直接影响模拟的效果。软件的编写可使用任何编程语言,如 C、VB、Java 等。专门的语言如 GPSS,GPSS 是面向对象问题的离散事件的专用模拟语言,优其适用于排 队系统。1961 年,IBM 公司发表 GPSS 的第一个版本,后
8、来又有其它公司的各种版本。标准的版本有 52 个 模块,每个模块用特定的名称和图形来表示其功能。现在一般常用的语言都有模拟库(已编好的用于实现 模拟功能的函数)专门用于模拟软件的开发。1.2 系统的分类可模拟的系统各种各样,不同类型的系统用不同的模型来描述。系统的分类方法很多,重要的分类 方法是按系统的状态是否随时间变化来分:一个行为与时间有关的系统称为动态系统 待研系统:静态系统:系统的行为与时间无关;用静态模型来描述,一般为数学方程、逻辑表达式等。如,电路的布尔表达式;电路中电压与电流的关系;系统的稳态解公式等动态系统:连续系统:系统的状态随时间连续变化;常用微分方程来描述;方程对所有时间
9、点有效。如,卫星运行轨道,作物生长量等确定性系统:系统的输出完全由其输入来描述,即系统输入与输出按某种规则一一对应集中参数模型:用常微分方程来描述,即方程中的导数不是偏导数分布参数模型:用偏微分方程来描述,但一般用集中参数模型近拟表示随机系统:系统的输出是随机的,有规律的存在一族随机变量,且随机变量序列与时间有关(随机过程)。在确定性系统的模拟中使用随机变量的研究方法称为蒙特卡罗方法离散系统:系统状态的变化只在离散的时间发生;动态方程只在离散点上有效;一般为随机系统。如,库存问题;企业的管理系统等离散时间系统:时间步长固定;常用差分方程来描述离散事件系统:用事件来表示系统在时间间隔内的变化;常
10、用概率模型来描述1.3 建立数学模型对一个系统,确定其类型后有助于选择合适的方法建模,建模的一般步骤可分两个大的阶段:(1) 实质内容模型阶段:首先对模拟对象进行调查(了解系统,搜索模拟所需的信息)、实验(参数估计 等统计推断方法,确定参数及参数的敏感性)、分析(将信息分类、量化,确定描述系统的规则),尽可能全 面地掌握系统的基本特性、运动规律以及中间状态(最好是有对系统有深入了解的专业人员参与),通过分析和逻辑推理,揭示系统内的规律。 (2) 形式数量阶段:在调查、实验、分析的基础上,进一步揭示系统内部的数量关系,并对其进行数 学处理,即对系统用数学形式来描述:用变量描述系统状态,用各种数学
11、方程定量表示各变量之间的相 互联系,用递归方程描述系统状态的发展趋势。 多数情况下,建立一个好的(能真实的描述系统,有代表性,能准确的模拟系统的数量信息,与实际系 统较吻合)数学模型不易,优其是复杂多变的系统或系统本身的特性尚不完全清楚的情况(如对农作物开发新品种)。所以在数学模型建立后,必须进行模拟验证,如与真实系统相差较大,则要重新建模或修改模 型。所以一个好的数学模型必须经过多次模拟,不断修改、完善,才能得到。 一个数学模型是描述系统行为的一个算法或一系列方程,工程中对系统建模应先建立系统的需求规 格说明,在制定模拟规划之前予以充分讨论,过程中需考虑以下因素: (1) 模型中需考虑哪些有
12、效的因素:一个系统可能有不同的行为(如一个作物生产系统中有作物的长 势、产量、质量、病虫害等),但不一定所有这些因素都要建立在模型中。模型中需要考虑的因素是:真正能简化系统的建模;对系统易于建模、测试和维护;使用较少的计算资源;对研究的系统有直接作用的。(2) 建模细化到什么程度:根据系统的需求确定细化的程度,是只须建立一个简单的模型,还是要对 系统行为精确描述。在模型的准确性和花费之间求得平衡。 (3) 与系统有相互作用的哪些外部环境考虑在建模中:如在作物生长模型中,气候、水、肥等。 (4) 在建模中采取什么技术:首先,是基于物理的方程,还是基于测试数据。如果基于物理的方程, 是用微分方程,
13、还是差分方程,考虑不考虑随机因素等。这个问题常由专业人员根据系统的专业知识来 决定;如果基于试验数据,则建立经验方程。 (5) 建模时必须获得什么样的数据:如林木生长模型中,需要胸径、树高、材积等数据。另外还需考 虑这些数据的方便的输出形式,以及模型需要的计算资源,如模型需要占用的内存、磁盘空间、消耗的 CPU 时间等。 (6) 建模和测试模型需多长时间,多少人力、物力、财力:随着模型复杂性的增加,成本也会增加。 一般可从简单开始,随着应用逐步完善。 (7) 如何验证和确认模型:必须确认建立的模型被正确实现,模型所描述的行为与真实系统匹配到可 接收的程度,才能有价值。那么以什么标准来衡量。现在
14、已有验证、确认与签定(VV static double A=new double53; static double B=new double53; static double C=new double53; static int i; public static void main(String args) A1=100.0;B1=50.0;C1=0.0; t=0;h=0.1; k1=0.008;k2=0.002; for(i=1;i 0, n 0) 若 P n (t, t +t)满足下面三个条件,则说顾客的到达形成泊松流: 1) 在不相叠的时间区间内顾客的到达数相互独立(对无限总体是相互独立
15、的,但有限总体未必,如一 个工厂的机器在一个短时间内出现停机(顾客到达)的概率受已经待修数目的影响)。2) 对充分小的t,在 t, t +t)内有一个顾客到达的频率与 t 无关,且均与时间长t 成正比,即P 1 (t, t +t) = t + o(t) 其中 是常数,表示单位时间内 1 个顾客到达的概率;o(t)是关于t (当t0 时)的高阶无穷小3) 对充分小的t,在内 t, t +t ) 内有 2 个或 2 个以上到达的概率极小,可略。即:P n (t, t +t) = o (t)2n可以证明,在以上假设下,内 0, t ) 内的顾客到达数 N (t) 服从泊松分布:P n (t) = (
16、t) n / n!e-t t 0 (3.1)N = 1,2, 也可以证明:当 N (t) 服从 P ()时,顾客相继到达的间隔时间服从指数分布,即密度函数为:f (t) =e-t t0 其均值 1/ 是平均到达的间隔时间,故在确定系统的概率分布时出可通过统计平均间隔时间来估计参数。2 排队规则排队规则:有以下几种情况 1) 顾客到达时,如果所有服务台忙,则顾客可以离去,也可以等待,前者叫即时制,后者叫等待制。 普通的电话呼叫属于前者,而登记市外长途电话的呼叫属于后者。 对于等待制,为顾客服务的次序可有下面规则: 先到先服务(FIFO):即接次序接受服务 后到先服务(LIFO):如仓库中存放的没时间限制的物品;情报系统中最后到达的往往是最有价值的。 随机服务 有优先权的服务:如医院对病情严重的患者将优先治疗。 2) 从占用的空间来看,队列可以排在具体的处所;也