欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    计算机仿真.ppt

    • 资源ID:53154083       资源大小:851KB        全文页数:60页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机仿真.ppt

    计算机仿真计算机仿真5.1 动态实体的实现动态实体的实现1.到达时刻的计算到达时刻的计算对于特定的仿真问题,到达时间间隔是满足对于特定的仿真问题,到达时间间隔是满足指定概率分布的。如将仿真开始时刻确定为指定概率分布的。如将仿真开始时刻确定为t0=0,就可以获得一个,就可以获得一个随机的随机的时间间隔时间间隔i,由,由上一次的动态实体到达时刻上一次的动态实体到达时刻ti-1,计算出本次的,计算出本次的动态实体到达时刻动态实体到达时刻ti=ti-1+i。1 2 t0 t1 t2 t2.动态实体的表示动态实体的表示 以前面的银行系统为例,使用面向事件的以前面的银行系统为例,使用面向事件的仿真程序结构。仿真程序结构。在程序中将使用带指针结构体来表示动态在程序中将使用带指针结构体来表示动态实体。用实体。用C+定义一个动态实体的记录如下:定义一个动态实体的记录如下:struct TRANSACT/动态实体 inttransnum;/动态实体号 unsigned char rank;/优先级(0255)float timeborn,timeenter;/生成时刻,入队时刻 intattrib1,attrib2;/整型属性变量 float attri;/实型属性变量./其它属性 TRANSACT *nexttrans;/后继指针;有关动态实体的基本操作(方法)有有关动态实体的基本操作(方法)有4种:种:(1)动态实体的生成动态实体的生成void generate(int&j);l生成一个动态实体记录生成一个动态实体记录l给出给出编号编号(J)、生成时刻;对有关属性初始化、生成时刻;对有关属性初始化l将新(动态实体)记录加入到将新(动态实体)记录加入到动态实体链动态实体链中中head新新NIL(2)按动态实体编号从相关记录链中寻找按动态实体编号从相关记录链中寻找void findtrans(int transnum,TRANSACT*p)依据动态实体编号(依据动态实体编号(transnum)从)从链链(head)中查找记录(动态实体);中查找记录(动态实体);找到,返回指向该记录的指针找到,返回指向该记录的指针(p),找不到,找不到,p=null。(3)按动态实体编号从记录链中寻取出动态实体按动态实体编号从记录链中寻取出动态实体void transget(TRANSACT&*p,int transo)从从链链中查找编号为(中查找编号为(transo)的动态实体(用)的动态实体(用findtrans()函数)函数)如找到,将该记录从如找到,将该记录从链链上取下,上取下,p指向动态实体指向动态实体未找到,未找到,p=null(4)消灭动态实体消灭动态实体 void terminate(int j)将编号等于将编号等于j的动态实体从的动态实体从链链上取下,还给上取下,还给系统。系统。5.2 排队线的实现排队线的实现对例子(银行)中的顾客要选择排队线,对例子(银行)中的顾客要选择排队线,实现排队线的方法仍可采用记录结构:实现排队线的方法仍可采用记录结构:struct QUEUEBLOCKchar name20;/排队线名字排队线名字int number;/排队线编号(同名的排队线可以有多条排队线编号(同名的排队线可以有多条)int length;/队列的当前长度队列的当前长度intlentgthmax;/队列的最大长度队列的最大长度float timelast;/最后的(入最后的(入/离)队列操作时刻,用于计算离)队列操作时刻,用于计算float waitmax;/(队中实体的)最长等待时间(队中实体的)最长等待时间float waitsum;/(队中实体的)等待时间之和(统计均值用(队中实体的)等待时间之和(统计均值用)float wait2sum;/等待时间之平方和(统计方差用)等待时间之平方和(统计方差用)float lwsum;/队列加权长度和:(统计平均队长)队列加权长度和:(统计平均队长)float l2wsum;/队列加权长度平方和:(统计队长均方)队列加权长度平方和:(统计队长均方)intcount;/离队操作计数器(计数得到服务的实体离队操作计数器(计数得到服务的实体)QUEUEBLOCK *nextqueue;/连接其它排队线连接其它排队线TRANSACT*member;/连接排队的实体连接排队的实体headqueuefile122file111file210NIL顾客顾客顾客顾客NIL顾客顾客NIL排队线结构排队线结构 队名队名 编号编号 队长队长排队线的基本操作有排队线的基本操作有4个:个:(1)定义一个排队线定义一个排队线void queue(char*q,int n)l根据给定的队列名字(根据给定的队列名字(q)和队列数)和队列数(n),建,建立一组新的排队线记录立一组新的排队线记录l对其所有属性变量置对其所有属性变量置0l完成连接到完成连接到headqueue链中链中(2)查找排队线查找排队线void findqueue(char*q,int n,QUEUEBLOCK&p)从已连接的多个排队线(记录)中,查找具从已连接的多个排队线(记录)中,查找具有指定队列名(有指定队列名(q)和编号)和编号(n)的排队线。的排队线。找到返回指向该记录的指针找到返回指向该记录的指针(p),否则返回否则返回p=null。void findqueue(char*q,int n,QUEUEBLOCK&p)p=headqueue;if(p)while(strcmp(p-name,q)!=0)|(p-number!=n)&(p-nextqueue)p=p-nextqueue;/继续检测下一个排队线记录继续检测下一个排队线记录if(strcmp(p-name,q)!=0)|(p-number!=n)/找不到找不到 p=null;(3)入队操作入队操作void enqueue(char*q,int n,int j)将指定编号将指定编号(j)的动态实体,按其优先权的动态实体,按其优先权(rank)的大小,插入到指定的排队线的大小,插入到指定的排队线(q,n)的动的动态实体记录排队链(态实体记录排队链(member)中;并进行队)中;并进行队列的统计量的运算。列的统计量的运算。void enqueue(char*q,int n,int j)transget(pt,j);/从动态实体记录链中取出实体从动态实体记录链中取出实体(j),由,由pt指向指向findqueue(q,n,pq);/查找需插入的队列查找需插入的队列(q,n),由,由pq指向指向if(pq)/找到队列记录找到队列记录 if(排队线排队线“空空”)将将pt指向的动态实体挂在排队线(指向的动态实体挂在排队线(pq)的第一个)的第一个 else 按优先数的大小,将按优先数的大小,将pt指向的动态实体加入到指向的动态实体加入到pq队列中队列中 pt-timeente:=tnow;/记录下当前时刻记录下当前时刻tnowpt-l2wsum=pt-l2wsum+(tnow-pt-timelast)*pt-length*pt-length;pt-lwsum=pt-lwsum+(tnow-pt-timelast)*pt-length;pt-length+;/队长度队长度+1pt-timelast=tnow;/记录最新的队列操作时刻记录最新的队列操作时刻if(pt-lengthmaxlength)pt-lengthmax=pt-length;/修改队列最大长度修改队列最大长度其中统计量的计算:其中统计量的计算:lwsum=l2wsum=Li当前队列长度(当前队列长度(length)仿真结束时的计算:仿真结束时的计算:队列平均长度队列平均长度=lwsum/T (T仿真时间仿真时间)队列长度方差队列长度方差=l2wsum/T(4)离队操作离队操作void edqueue(char*q,int n,int&j);l将排在指定队列(将排在指定队列(q,n;pq指向)上处于最前指向)上处于最前位置的动态实体(位置的动态实体(j)取下()取下(pt指向),挂回到指向),挂回到记录链中。记录链中。l再对排队线做统计处理:再对排队线做统计处理:.tw=tnow-pt-timeenter;/计算实体的排队时间计算实体的排队时间pq-waitsum=pq-waitsum+tw;/等待时间统计等待时间统计If(tw pq-waitmax)pq-waitmax=tw;/修改最大等待(排队)时间修改最大等待(排队)时间pq-lwsum=pq-lwsum+(tnow-pq-timelast)*pq-length;pq-lwsum=pq-lw2sum=(tnow-pq-timelast)*pq-length*pq-length;pq-length-;pq-timelast=tnow;pq-count+;.5.3 设备的实现设备的实现在银行系统中,出纳员是设备。一个银行在银行系统中,出纳员是设备。一个银行可以有多个出纳员同时工作。可以有多个出纳员同时工作。因此在描述设备时,除了应使用因此在描述设备时,除了应使用“设备(组)设备(组)名名”外,还需要设备的外,还需要设备的“设备号设备号”区别同一类型区别同一类型的不同设备。的不同设备。设备的主要状态标志是要能反映该设备的设备的主要状态标志是要能反映该设备的“忙忙”或或“空闲空闲”状态。设备也可以用记录表示:状态。设备也可以用记录表示:struct EQUIPBLOCK char name8;/设备(组)名设备(组)名 int unit;/设备(部件)号设备(部件)号 int state;/“忙忙”=1或或“空闲空闲”=0 TRANS*trans;/连接正在接受服务的动态实体连接正在接受服务的动态实体 float timestart;/开始服务时刻开始服务时刻 int usecount;/服务次数计数服务次数计数 float timesum;/服务时间计数服务时间计数 QUEUEBLOCK*nextunit;/与同名(组)设备与同名(组)设备,不同部件(设备)的连接不同部件(设备)的连接 QUEUEBLOCK*nextequip;/与不同组(名)设备的与不同组(名)设备的连接接HEADEQUIPE11E12E13nullnullE11nullE11nullnullE12nullnull动态实体动态实体有关设备的操作:有关设备的操作:(1)生成设备组生成设备组void equip(char*f,int n);l根据指定的设备组名(根据指定的设备组名(f)和设备数()和设备数(n),),生成生成n个设备记录个设备记录l对有关变量设置初值(对有关变量设置初值(NULL,FREE,0)l将将n个同名设备按序加入个同名设备按序加入设备链设备链中中(2)查找设备组查找设备组void findequip(char*f,EQUIPBLOCK&*p);从从设备链设备链中找出具有指定设备组名中找出具有指定设备组名(f)的设的设备组记录的首记录,由指针备组记录的首记录,由指针p指向,找不到指向,找不到p=NULL。(3)查找设备(部件)查找设备(部件)void findunit(char*u,LINKEQUIP&*p);从指针从指针p指向的指向的设备组链设备组链中查找具有指定中查找具有指定设备号设备号(u)的设备。返回查到的设备,由的设备。返回查到的设备,由p指指向,或向,或p=NULL。(4)设备服务设备服务void reserve(char*e,char*u,int trans0,float t,int event0);l对指定的设备组对指定的设备组(e)和设备号和设备号(u)的设备查询其状态。当的设备查询其状态。当u=0表示对该设备组中查找其状态为表示对该设备组中查找其状态为“空闲空闲”的任意设备。的任意设备。l如果查找的设备为如果查找的设备为“空闲空闲”,就使该设备进入服务,置状,就使该设备进入服务,置状态态“忙忙”。l进行有关的设备统计处理,将需要服务的动态实体进行有关的设备统计处理,将需要服务的动态实体(trans0)从实体)从实体记录链记录链中找出,挂在设备记录上。中找出,挂在设备记录上。l生成一个生成一个事件记录事件记录(event0,t)加到)加到事件表事件表上上(shedul()(5)服务结束服务结束void giveup(char*e,char*u,int trans0 int b);l对指定的设备组(对指定的设备组(e)中编号为()中编号为(u)的设备进)的设备进行服务结束处理。参数行服务结束处理。参数b=1表示要求对使用的表示要求对使用的设备做使用次数和时间的统计处理,设备做使用次数和时间的统计处理,b=0表示表示不需要。不需要。l使挂在该设备上的动态实体使挂在该设备上的动态实体(trans0)离开,加离开,加入到入到实体记录链实体记录链中。中。l进行相关的设备统计处理进行相关的设备统计处理l置设备为置设备为“空闲空闲”状态状态(6)填写设备(记录)过程)填写设备(记录)过程 void fillequip(PP:EQUIPBLOCK*pp,float t,int trans0,int event0);reserve()过程(设备服务)要调用该过程。过程(设备服务)要调用该过程。具体操作如下:具体操作如下:lstate=1;置设备状态置设备状态“忙忙”l从从实体记录链实体记录链中取下动态实体中取下动态实体(trans0),使用,使用transget(pt,trans0)过程过程l实体记录实体记录的属性中填入事件(的属性中填入事件(event0)l将动态实体挂到设备(将动态实体挂到设备(pp指向)指向)l调度设备调度设备的本次服务开始时刻为的本次服务开始时刻为tnow5.4 事件调度事件调度在面向事件的仿真结构中,所有活动都是在面向事件的仿真结构中,所有活动都是按事件表的预先安排进行的。按事件表的预先安排进行的。仿真事件表是由仿真事件表是由“事件事件”组成的,事件可以组成的,事件可以用记录定义。其结构为:用记录定义。其结构为:struct EVENTBLOCK inteventnum;/需要执行的事件类型需要执行的事件类型(如1到达,2离去)int transom;/与事件相关的实体号与事件相关的实体号 float timeoccur;/事件预定发生的时刻事件预定发生的时刻 EVENTBLOCK *nextevent;/后向指针后向指针 EVENTBLOCK *preevent;/前向指针前向指针BASE事件类型事件类型实体编号实体编号时间时间21021.611835.4事件表用双向链表表示:事件表用双向链表表示:对银行系统仿真,事件表处理只有一个对银行系统仿真,事件表处理只有一个(加加入入)操作操作schedul,程序如下:,程序如下:void shedul(int eventn,float time,int trans)EVENTBLOCK*p,p1;p1=new(EVENTBLOCK);/生成一个事件记录生成一个事件记录(p1指向指向)p1-eventnum=eventn;/填入事件类型,发生时刻和填入事件类型,发生时刻和相关实体号相关实体号 p1-timeoccur=time+tnow;p1-transum=trans;p:=base-preevent;/将实践记录按时间升序加入事件表将实践记录按时间升序加入事件表 while(p-timeoccurp1-timeoccur)p=p-preeevent;/从前向后按事件发生时刻查找从前向后按事件发生时刻查找插入位置插入位置 p1-nextevent=p-nextevent;p1-prevent=p1-prevent;/将新的事件记录(将新的事件记录(p1指向)做指向)做插入操作插入操作 p-nextevent-prevent=p1;p-nexteven=p1;5.5 面向事件的仿真程序结构的实现面向事件的仿真程序结构的实现以银行系统为例,其仿真程序的以银行系统为例,其仿真程序的C+程序实程序实现如下:现如下:全局变量全局变量float tnow;/当前仿真时钟当前仿真时钟int eventkind;/当前事件类型当前事件类型/指向当前事件记录的指针指向当前事件记录的指针EVENTBLOCK currentevent;int jnum;/当前动态实体号当前动态实体号 int again;/重复计次重复计次float simtime;/(一次)仿真结束时间(一次)仿真结束时间void main(void)说明部分说明部分;initiate();/交互方式初始化交互方式初始化doinitsys():/每次仿真的系统初始化过程每次仿真的系统初始化过程initi();/每次仿真的用户初始化过程每次仿真的用户初始化过程simulate();/仿真过程仿真过程again-;while(again=0);void initi(void)int const ARRIVE=1;LEAVE=2;/定义事件类型定义事件类型 queue(file,1);/定义一条排队线定义一条排队线 equip(“出纳员出纳员”,5);/定义定义5个出纳员个出纳员 coutsimtime;/输入本次仿真时间输入本次仿真时间 schedul(ARRIVE,0,0);/调度第一个在调度第一个在0时刻到达事件时刻到达事件void simulate(void)while(simtimetnow)/simtime:指定的仿真时间指定的仿真时间 currentevent=base-nextevent;/取事件表中预定的最早发生的事件取事件表中预定的最早发生的事件 if(currentevent!=base)/事件表不空事件表不空 tnow=currentevent-timeoccur;/改变仿真时钟改变仿真时钟 eventkind=currentevent-eventnum;jnum=currentevent-transom;/从事件链表中删除已经处理的当前事件记录从事件链表中删除已经处理的当前事件记录 base-nextevent=currentevent-nextevent;currentevent-nextevent-preevent=base;delete currentevent;/系统回收空间 event();/*用户设计的事件处理过程用户设计的事件处理过程 report();/调用用户设计的生成一次仿真结果的报告调用用户设计的生成一次仿真结果的报告void event(void)const int ARRIVE=1,LEAVE=2;/定义事件类型定义事件类型 int js;float ts;switch(eventkind)ARRIVE:/到达事件处理到达事件处理generat(js);/生成下一个到达事件的顾客生成下一个到达事件的顾客(js)记录记录ts=UN(1,1);/生成下一个到达事件的时间间隔生成下一个到达事件的时间间隔(ts)schedul(ARRIVE,ts,js);/调度下一次到达事件调度下一次到达事件if(state(“出纳员出纳员”,0)=FREE /(0表示任意一个出纳)空闲处理表示任意一个出纳)空闲处理 ts=UN(2,1);/计算本次服务时间(均匀分布)计算本次服务时间(均匀分布)/调度本次服务事件(产生一个离去事件,设备调度本次服务事件(产生一个离去事件,设备“忙忙”)reserve(“出纳员出纳员”,0,jnum,ts,LEAVE);else enqueque(“FILE”,1,js);/出纳都出纳都“忙忙”jnum排队处理排队处理 LEAVE:/离去事件处理离去事件处理givup(“出纳员出纳员”,0,jnum,1);/结束对结束对jnum实体的服务,需统计实体的服务,需统计terminat(jnum);/消灭动态实体消灭动态实体 if(length(“FILE”,1)0)/队列长度队列长度1表示有顾客在排队表示有顾客在排队 dequeue(“FILE”,1,js);/从队列中取出第一位顾客从队列中取出第一位顾客js ts=UN(2,1);/确定本次服务时间确定本次服务时间ts/服务处理(设备服务处理(设备“忙忙”,在事件表中增加一个离去事件),在事件表中增加一个离去事件)reserve(“出纳员出纳员”,0,js,LEAVE);/switch6.输出结果与分析输出结果与分析 用计算机对系统进行仿真研究,首先刻获用计算机对系统进行仿真研究,首先刻获得类似于在物理实验中所取得的实验数据;然得类似于在物理实验中所取得的实验数据;然后对这些数据进行分析。后对这些数据进行分析。由于计算机具有的快速性,在进行仿真试由于计算机具有的快速性,在进行仿真试验的同时,可对某些数据直接做统计分析的准验的同时,可对某些数据直接做统计分析的准备工作。备工作。6.1 统计估值的获得统计估值的获得 1.基本统计估值基本统计估值计算机仿真需要获取的统计量估值有两种类计算机仿真需要获取的统计量估值有两种类型:其一是非时间持续型,二是时间持续型。型:其一是非时间持续型,二是时间持续型。l非时间持续型变量的统计估值是对观察次数进行非时间持续型变量的统计估值是对观察次数进行统计,它与时间量无关。统计方法如下:统计,它与时间量无关。统计方法如下:设设X为非时间持续型变量,其为非时间持续型变量,其n次的观测值次的观测值x1,x2,xn在数据统计中称为:来自总体在数据统计中称为:来自总体X的,的,容量为容量为n的简单随机样本值。的简单随机样本值。其样本的平均值为:其样本的平均值为:X的样本方差为:的样本方差为:在在n比较大时,可近似为:比较大时,可近似为:l时间持续型变量的统计估值是在变化的时间历时间持续型变量的统计估值是在变化的时间历程中进行的。程中进行的。设:设:X在一次仿真时间在一次仿真时间T中,在时刻(间)中,在时刻(间)t0,t1,tn获得的获得的n次观测值为:次观测值为:x1,x2,xn。定义两个时间(刻)的间隔分别为:定义两个时间(刻)的间隔分别为:Ti=ti-ti-1,在一般情况下,观测的时间间隔本身也是,在一般情况下,观测的时间间隔本身也是随机变量。随机变量。则则X的均值:的均值:式中:式中:为总观测时间,为总观测时间,pi=Ti/T(xi的权的权值,与时间间隔成正比,在非时间持续型变量中,值,与时间间隔成正比,在非时间持续型变量中,pi=1/n)。当)。当TiT时,时,X的样本方差值近似为:的样本方差值近似为:例:统计某队列的平均长度,可以按时间持续型变例:统计某队列的平均长度,可以按时间持续型变量进行。设队列的长度量进行。设队列的长度L与时间的关系如图:与时间的关系如图:L43210 T1 t1 t2 T3 t3 t4 T 利用公式计算队列平均长度:利用公式计算队列平均长度:2.分布统计分布统计 和和S2只是对随机变量的两种主要数字特征进行统计,只是对随机变量的两种主要数字特征进行统计,还不能了解随机变量的整个分布情况。所以有必要进行还不能了解随机变量的整个分布情况。所以有必要进行分布统计。分布统计方法如下:分布统计。分布统计方法如下:1.将统计范围将统计范围a,b划分为划分为n等份的小区间,等份的小区间,(a,y1),(y1,y2),(yn-1,b)2.在每一个小区间在每一个小区间i中设置一个计数器中设置一个计数器si,初值,初值si=0,i=1,2,n-1。3.若随机变量是非时间持续型,对每个观测值进行考察;若随机变量是非时间持续型,对每个观测值进行考察;若随机变量是时间持续型,则取固定的时间间隔若随机变量是时间持续型,则取固定的时间间隔t考察考察变量的值;变量的值;4.若变量值落入某小区间若变量值落入某小区间yk-1xiyk,则把该区间的计数器,则把该区间的计数器sk加加1。5.仿真结束时,各小区间计数器的值(仿真结束时,各小区间计数器的值(si)与总考察数)与总考察数(S)之比之比si/S就是随机变量落入对应小区间的概率。就是随机变量落入对应小区间的概率。3.对设备的仿真统计对设备的仿真统计设备是常用来描述服务台或服务员的,它可设备是常用来描述服务台或服务员的,它可以接纳动态实体(顾客),并保持一段时间以接纳动态实体(顾客),并保持一段时间(即服务时间)。(即服务时间)。为了了解系统的性能,需要对服务时间进行为了了解系统的性能,需要对服务时间进行统计。服务时间可以用非时间持续型变量统计统计。服务时间可以用非时间持续型变量统计的方法(平均服务时间,方差)。的方法(平均服务时间,方差)。另外,为了测量设备的负荷,需要统计设备另外,为了测量设备的负荷,需要统计设备利用率,即设备利用率,即设备“忙忙”的(服务)时间之和与总的(服务)时间之和与总运行时间之比。运行时间之比。以上图为例,设备在小区间以上图为例,设备在小区间T2,T4,中是忙状态。中是忙状态。令令Ti在在“忙忙”时取值为时取值为1,“空闲空闲”取值为取值为0。设备总运行时。设备总运行时间为间为T,设备的利用率定义为,设备的利用率定义为:设备状态设备状态 忙忙1 0 T1 T2 T3 Ti Ti+1 Ti+2 T对多台设备,可以用平均设备利用率来描对多台设备,可以用平均设备利用率来描述其负荷。设系统中有述其负荷。设系统中有N台设备,总运行时间台设备,总运行时间(T)被划分为小区间被划分为小区间T1,T2,Tm;在;在Ti中有中有ni台台设备处于设备处于“忙忙”状态。则状态。则N台设备的平均利用率台设备的平均利用率为:为:设备设备1忙(忙(1)0 T设备设备2忙(忙(1)0 T忙设备忙设备 2 1 0 T1 T2 T3 T6.2 置信区间与置信度置信区间与置信度上一节讨论了对运行仿真程序所得到的各种统计上一节讨论了对运行仿真程序所得到的各种统计变量估值的方法。这实际上是一种随机抽样法。即使变量估值的方法。这实际上是一种随机抽样法。即使模型十分精确,其试验(仿真)的结果也不能保证是模型十分精确,其试验(仿真)的结果也不能保证是完全精确无误地反映所研究系统的特性。但能在某种完全精确无误地反映所研究系统的特性。但能在某种程度上代表所仿真的系统的特性。为了了解:到底在程度上代表所仿真的系统的特性。为了了解:到底在多大的准确度上反映所仿真系统的特性?就需要研究多大的准确度上反映所仿真系统的特性?就需要研究如何抽样,抽多少以及对所得的抽样结果如何进行统如何抽样,抽多少以及对所得的抽样结果如何进行统计推断。计推断。因为仿真试验得到的因为仿真试验得到的 和和S2往往不是精确的往往不是精确的E(X)和和D(X)。我们希望估计出具体误差,给出一个范围(。我们希望估计出具体误差,给出一个范围(a/S2b)和在这个范围内包含真值的可靠程度)和在这个范围内包含真值的可靠程度()。这种形式的估值称为这种形式的估值称为“区间估值区间估值”。l置信区间置信区间设总体分布含有一未知参数,若(n个)样本所确定的两个统计量1(x1,x2,xn)及2(x1,x2,xn),对于给定值,满足:P1(x1,x2,xn)),则输出序列),则输出序列的均值将任意趋近的均值将任意趋近E(X)。如:在排队系统中统。如:在排队系统中统计平均等待时间计平均等待时间:平均等待时间(分)平均等待时间(分)8 6 4 2 n (顾客数)(顾客数)0 500 1000 1500 2000处理初始不稳定值对输出结果产生的偏差处理初始不稳定值对输出结果产生的偏差问题有问题有3种方法:种方法:l选择一个仿真初始条件,它代表了稳态条件选择一个仿真初始条件,它代表了稳态条件(有的设备已被占用)。(有的设备已被占用)。l延长仿真运行时间,以使初始偏差影响逐渐延长仿真运行时间,以使初始偏差影响逐渐消失。消失。l除去仿真运行开始的一段时间内记录的参数除去仿真运行开始的一段时间内记录的参数值(不稳定,不参加统计处理)。值(不稳定,不参加统计处理)。这三种方法可以同时使用。这三种方法可以同时使用。其他技术:其他技术:l重复运行法重复运行法使用对终止仿真的方法进行多次仿真。以相使用对终止仿真的方法进行多次仿真。以相同的初值条件开始和结束。次方法的缺点是:同的初值条件开始和结束。次方法的缺点是:初值不稳定性存在,置信区间小。初值不稳定性存在,置信区间小。l分批运行法分批运行法通过一个很长的包含多个仿真实验的单次运通过一个很长的包含多个仿真实验的单次运行来进行分析的方法。由于仅第一次实验经过行来进行分析的方法。由于仅第一次实验经过不稳定区域,(即第一次以后的仿真实验是继不稳定区域,(即第一次以后的仿真实验是继续上次实验进行)。因此初始偏差的影响就大续上次实验进行)。因此初始偏差的影响就大大减少。不仅如此,还可以忽略第一个实验所大减少。不仅如此,还可以忽略第一个实验所得到的样本值(组)。得到的样本值(组)。

    注意事项

    本文(计算机仿真.ppt)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开