系统建模仿真实验一

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

如有帮助,欢迎支持。1生态平衡建模实验姓名:冯雪系别:自动化系学号:SA14157014如有帮助,欢迎支持。2生态平衡建模实验1、目标通过此实验了解系统动力学的仿真方法,学会用所学的建模理论来对实际问题进行建模,并对实际问题进行分析。对此生态平衡系统进行仿真实验,改变不同的控制参数,分析实验的结果,得出系统保持生态平衡的条件,为决策者决策提供理论分析基础。2、原理通过此次实验了解系统动力学的仿真方法,学会用所学的建模理论来对实际问题进行建模,并对实际问题进行分析。对此生态平衡系统进行仿真实验,改变不同的控制参数,分析实验的结果,得出系统保持生态平衡的条件,为决策者决策提供理论分析基础。系统动力学(SystemDynamics)是美国麻省理工学院J.W福雷斯特(JayWForrester)教授创立的一门新兴学科。它按照自身独特的方法论建立系统的动态模型,并借助于计算机进行仿真,以处理行为随时间变化的系统的问题。系统动力学首先强调系统性的观点,以及联系、发展、运动的观点,是研究复杂系统,诸如:社会、经济、环境、人口、生态平衡、产业发展等的有效工具。系统动力学的研究对象主要是社会经济系统。社会经济系统的范围十分广泛,凡是涉及到人类的社会活动和经济活动的系统都属于社会系统。诸如本文要研究的人口系统、资源系统、环境系统、经济系统、科技系统、能源系统,都属于社会经济系统。系统动力学的基础是通过实验方法认识系统的行为,为管理决策者提供决策的依据。系统动力学仿真的基本步骤是:(1)明确建模目的一般来说,系统动力学对社会系统进行仿真实验的主要目的是认识和预测系统的结构和设计最佳参数,为制定合理的政策提供依据。这一步的工作包括观察系统、专家咨询、收集数据资料等,在涉及具体对象系统时,应根据其要求,仿真目的有所侧重。(2)确定系统边界系统动力学是将研究对象视为一个系统来处理的。系统是一个相对的概念,相对于所研究问题的实质和建模的目的而言。一旦所要研究的问题的实质和建模的目的已经确定,系统也就确定了,其边界应该是清晰的和唯一的。确定了系统边界之后,才能确定系统的内生变量和外生变量。内生变量是由系统内部反馈结构决定的变量,外生变量是由影响环境因素确定的变量。系统动力学认为系统的行为是基于系统内部的种种因素而产生的,并假定系统的外部因素不给系统的行为以本质的影响,也不受系统内部因素的控制。(3)因果关系分析通过因果关系分析,要明确系统内部各要素之间的因果关系,并用表示因果关系的反馈回路来描述。所谓反馈是指:系统中某要素的增加,使受它影响的系统其他要素也发生变化(增加或者减少)。反馈环分为正反馈和负反馈,而正反馈环使系统表现为增长的行为,负反馈使系统表现为收敛的行为。系统动力学认为反馈环是构造系统的第一层次,其多少是系统复杂程度的标志。观察实际系统获得的信息首先用于这一层次。任意两个系统要素从因果关系来看必然是正因果如有帮助,欢迎支持。3关系、负因果关系或无因果关系。由于决策是在一个或几个反馈回路中进行,而且由于各种回路的耦合,使系统的行为更加复杂化。(4)建立系统动力学模型进行因果关系分析属于系统动力学仿真的定性分析,要对系统进行定量分析还必须借助流图与构造方程式建立系统模型。所谓建模就是要确定各反馈环中的流位和流率。流位是系统的状态变量,它的变化可用来描述系统的动态特征:而流率是流位的变化速率,它控制着流位,流率变量是一个决策函数(包括人的决策与机理决策的行为)。当确定了流位和流率变化之后,就可以得到流图与构造方程式。(5)运行模型采用系统动力学仿真语言,将上一阶段建立的系统模型转换成系统仿真模型,并在计算机上模拟运行,得出结果。(6)结果分析通过对结果的分析,不仅可发现系统的构造错误和缺陷,而且还可以找出错误和缺陷的原因。根据结果分析情况,如果需要,就对模型进行修正,然后再做仿真试验,直至得到满意的结果为止。3、理论分析生活在同一环境中的各类生物之间,进行着残酷的生存竞争,一类动物靠捕食另一类动物为生,而另一种动物则靠又多又快地繁衍后代和逃逸等手段求生存求发展,如此等等。设一封闭的海岛上,有两个种群,狐狸和啮齿动物。狐狸吃啮齿动物,啮齿动物吃草。青草是如此之丰富,以至啮齿动物无需为无食而发愁,啮齿动物饱食后大量繁殖。啮齿动物数量一多,狐狸容易得食,狐狸也增加。当狐狸数过多而吃掉大量啮齿动物之后,狐狸进入饥饿状态而造成总数下降,这时啮齿动物们又相对安全一些。于是,啮齿动物总数回升。如此,狐狸和啮齿动物两种动物之数额相关地交替增减,无休止循环,出现生态动态平衡。本次实验不考虑种内竞争,只考虑物种间的斗争。4、建模过程(1)系统因果关系分析本文中作以下假设:1.狐狸只吃成年啮齿动物,故幼年啮齿动物的死亡只与成年啮齿动物的死亡有关;2.考虑啮齿动物以种群生活,不考虑单独家庭,则幼年啮齿动物的死亡只与种群中成年啮齿动物单位时间的死亡量有关。3.猎人只捕杀成年狐狸;4.水草数量充足,故在一定限度内不用考虑啮齿动物因食物不足导致的死亡,只有当啮齿动物总量超过100000时,啮齿动物才会受到水草的限制停止增长;实际上,对于一个封闭系统来说,啮齿动物的数量肯定会与水草总量有关,水草充足时,啮齿动物死亡率只受狐狸数量影响,水草不足时,啮齿动物会面临灭亡的危险,继而导致狐狸数量减少。但是,由于找不到合适的函数,来表达啮齿动物与水草之间的制约关系,故本文中假设水草充足。幼年狐狸的数量取决于成年狐狸8个月前月初的数量以及幼年狐狸原来的数量,同时还受成年啮齿动物数量的限制;成年狐狸数量受成年啮齿动物数量如有帮助,欢迎支持。4的限制(假设当狐狸需要的啮齿动物大于啮齿动物数量时系统崩溃),同时也受8个月前幼年狐狸出生数量的影响,120个月后猎人的捕杀会减少狐狸的数量;成年啮齿动物因作为狐狸的食物而减少,也受三个月前幼年啮齿动物数量的影响;幼年啮齿动物的数量因成年啮齿动物的死亡而减少,也受之前出生的幼年啮齿动物的影响。系统的因果关系图如下图图1所示。成年狐狸幼年狐狸出生率幼年狐狸成年狐狸死亡率成年啮齿动物死亡率成年啮齿动物幼年啮齿动物出生率幼年啮齿动物幼年狐狸死亡率水草猎人------+++++++++--++-图1:系统的因果关系图(2)变量定义:仿真时间(月数)m成年狐狸(初始)个数x1幼年狐狸(初始)个数x2成年啮齿动物(初始)个数y1幼年啮齿动物(初始)个数y2幼年狐狸单位时间出生量b1幼年狐狸单位时间成长量r1如有帮助,欢迎支持。5成年狐狸单位时间死亡量d1幼年狐狸单位时间死亡量d2幼年啮齿动物单位时间出生量b2幼年啮齿动物单位时间成长量r2成年啮齿动物单位时间死亡量d3幼年啮齿动物单位时间死亡量d4猎人的个数n猎人每月打死成年狐狸的数量4和8(3)系统动力学模型(a)系统流图(简化)图2:简化的系统流图(b)构造方程式组系统动力学模型首先描述的是系统的状态即流位,“流位”是由系统内物质的流动情况所决定。系统的流位由输入流和输出流决定。该系统中定义的流位变量有五个:幼年狐狸x2、成年狐狸x1、幼年啮齿动物y2、成年啮齿动物y1,它们的流位方程分别为:幼年狐狸:x2’=b1-d2-r1;成年狐狸:x1’=r1-d1;幼年啮齿动物:y2’=b2-d4-r2;成年啮齿动物:y1’=r2-d3;流率表达式则是一组代数方程。该系统中流率之间的关系可通过如下方程组表示:(考虑一个单位时间为1月)幼年啮齿动物单位时间出生量:b2=y1*0.8;幼年啮齿动物单位时间成长量:r2=y2*(9/12);如有帮助,欢迎支持。6幼年啮齿动物单位时间死亡量:d4=d3*0.8;成年啮齿动物单位时间死亡量:如果狐狸种群吃的啮齿动物量较少(假设狐狸只吃成年啮齿动物),即:10*x2+60*x1y1,则d3=10*x2+60*x1;如果狐狸种群吃的量较多,超过成年啮齿动物总量的承受范围,啮齿动物灭亡,即:10*x2+60*x1y1,则d3=y1;另外,由于环境中水草的数量的限制,当成年啮齿动物的数量超过一定的界限时,啮齿动物数量大量死亡,即:y1100000时,d3=y1/2;幼年狐狸单位时间出生量:b1=x1*(4^(1/12));幼年狐狸单位时间成长量:r1=x2*(4/12);幼年狐狸单位时间死亡量:d2=(10*x2+60*x1)/40;成年狐狸单位时间死亡量:成年狐狸死亡的分为两个阶段,在猎人介入之前的120个月之前,只与食物有关,此时:d1=(10*x2+60*x1)/30;猎人介入之后,死亡量还与猎人每月的捕杀量有关,此时:d1=(10*x2+60*x1)/30+4*n;(n为猎人个数)(4)仿真源程序m=input('Pleaseinputthenumberofsimulationmonths:m=');x2=input('Pleaseinputthenumberofchildhoodfox:x2=');x1=input('Pleaseinputthenumberofmaturefox:x1=');y2=input('Pleaseinputthenumberofchildhoodrodent:y2=');y1=input('Pleaseinputthenumberofmaturerodent:y1=');n=input('Pleaseinputthenumberofhunter:n=');fork=1:m%幼年啮齿动物的单位时间出生量b2b2=y1(k)*0.8;%幼年啮齿动物的单位时间死亡量d4d4=d3*0.8;%幼年啮齿动物的单位时间成长量r2r2=y2(k)*(9/12);%成年啮齿动物的单位时间死亡量d3if10*x2(k)+60*x1(k)y1(k)d3=10*x2(k)+60*x1(k);else(10*x2(k)+60*x1(k))y1(k)d3=y1(k);ify1(k)100000d3=y1(k)/2;如有帮助,欢迎支持。7endend%幼年狐狸的单位时间出生量b1b1=x1(k)*(4^(1/12));%幼年狐狸的单位时间死亡量d2d2=(10*x2(k)+60*x1(k)-d3)/40;%幼年狐狸的单位时间成长量r1r1=x2(k)*(4/12);%成年狐狸的单位时间死亡量d1ifk120d1=(10*x2(k)+60*x1(k)-d3)/30;elsek=120d1=(10*x2(k)+60*x1(k)-d3)/30+4*n;%猎人每月射杀的狐狸数量可以改变end%幼年狐狸下个月的数量ifx2(k)+b1-d2-r10x2(k+1)=floor(x2(k)+b1-d2-r1);elsex2(k+1)=0end%成年狐狸下个月的数量ifx1(k)+r1-d10x1(k+1)=floor((x1(k)+r1-d1)*(1/(0.005*x1(k)+1)));elsex1(k+1)=0;end%幼年啮齿动物下个月的数量ify2(k)+b2-d3-r20y2(k+1)=floor(y2(k)+b2-d3-r2);elsey2(k+1)=0;end%成年啮齿动物下个月的数量if(y1(k)+r2-d3)0y1(k+1)=0;如有帮助,欢迎支持。8elseif(y1(k)+r2-d3)100000y1(k+1)=floor(y1(k)+r2-d3-100000);后更改为y1(k+1)=100000;elsey1(k+1)=floor(y1(k)+r2-d3);endendendsubplot(2,2,1),plot(x2),axis([0,m,0,1500]),title('幼年狐狸'),ylabel('数量');subplot(2,2,2),plot(x1),axis([0,m,0,1500]),title('成年狐狸');subplot(2,2,3),plot(y2),axis([0,m,0,150000]),title('幼年啮齿动物'),xlabel('月份'),ylabel('数量');subplot(2,2,4),pl

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功