系统建模仿真实验一_第1页
系统建模仿真实验一_第2页
系统建模仿真实验一_第3页
系统建模仿真实验一_第4页
系统建模仿真实验一_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、生态平衡建模实验 姓名:冯雪 系别:自动化系 学号:SA14157014 生态平衡建模实验1、目标 通过此实验了解系统动力学的仿真方法,学会用所学的建模理论来对实际问题进行建模,并对实际问题进行分析。对此生态平衡系统进行仿真实验,改变不同的控制参数,分析实验的结果,得出系统保持生态平衡的条件,为决策者决策提供理论分析基础。2、 原理 通过此次实验了解系统动力学的仿真方法,学会用所学的建模理论来对实际问题进行建模,并对实际问题进行分析。对此生态平衡系统进行仿真实验,改变不同的控制参数,分析实验的结果,得出系统保持生态平衡的条件,为决策者决策提供理论分析基础。系统动力学(System Dynami

2、cs)是美国麻省理工学院J.W 福雷斯特(JayW Forrester)教授创立的一门新兴学科。它按照自身独特的方法论建立系统的动态模型,并借助于计算机进行仿真,以处理行为随时间变化的系统的问题。系统动力学首先强调系统性的观点,以及联系、发展、运动的观点,是研究复杂系统,诸如:社会、经济、环境、人口、生态平衡、产业发展等的有效工具。系统动力学的研究对象主要是社会经济系统。社会经济系统的范围十分广泛,凡是涉及到人类的社会活动和经济活动的系统都属于社会系统。诸如本文要研究的人口系统、资源系统、环境系统、经济系统、科技系统、能源系统,都属于社会经济系统。系统动力学的基础是通过实验方法认识系统的行为,

3、为管理决策者提供决策的依据。系统动力学仿真的基本步骤是:(1)明确建模目的一般来说,系统动力学对社会系统进行仿真实验的主要目的是认识和预测系统的结构和设计最佳参数,为制定合理的政策提供依据。这一步的工作包括观察系统、专家咨询、收集数据资料等,在涉及具体对象系统时,应根据其要求,仿真目的有所侧重。(2)确定系统边界系统动力学是将研究对象视为一个系统来处理的。系统是一个相对的概念,相对于所研究问题的实质和建模的目的而言。一旦所要研究的问题的实质和建模的目的已经确定,系统也就确定了,其边界应该是清晰的和唯一的。确定了系统边界之后,才能确定系统的内生变量和外生变量。内生变量是由系统内部反馈结构决定的变

4、量,外生变量是由影响环境因素确定的变量。系统动力学认为系统的行为是基于系统内部的种种因素而产生的,并假定系统的外部因素不给系统的行为以本质的影响,也不受系统内部因素的控制。(3)因果关系分析通过因果关系分析,要明确系统内部各要素之间的因果关系,并用表示因果关系的反馈回路来描述。所谓反馈是指:系统中某要素的增加,使受它影响的系统其他要素也发生变化(增加或者减少)。反馈环分为正反馈和负反馈,而正反馈环使系统表现为增长的行为,负反馈使系统表现为收敛的行为。系统动力学认为反馈环是构造系统的第一层次,其多少是系统复杂程度的标志。观察实际系统获得的信息首先用于这一层次。任意两个系统要素从因果关系来看必然是

5、正因果关系、负因果关系或无因果关系。由于决策是在一个或几个反馈回路中进行,而且由于各种回路的耦合,使系统的行为更加复杂化。(4) 建立系统动力学模型进行因果关系分析属于系统动力学仿真的定性分析,要对系统进行定量分析还必须借助流图与构造方程式建立系统模型。所谓建模就是要确定各反馈环中的流位和流率。流位是系统的状态变量,它的变化可用来描述系统的动态特征:而流率是流位的变化速率,它控制着流位,流率变量是一个决策函数(包括人的决策与机理决策的行为)。当确定了流位和流率变化之后,就可以得到流图与构造方程式。(5) 运行模型采用系统动力学仿真语言,将上一阶段建立的系统模型转换成系统仿真模型,并在计算机上模

6、拟运行,得出结果。(6) 结果分析通过对结果的分析,不仅可发现系统的构造错误和缺陷,而且还可以找出错误和缺陷的原因。根据结果分析情况,如果需要,就对模型进行修正,然后再做仿真试验,直至得到满意的结果为止。3、 理论分析生活在同一环境中的各类生物之间,进行着残酷的生存竞争,一类动物靠捕食另一类动物为生,而另一种动物则靠又多又快地繁衍后代和逃逸等手段求生存求发展,如此等等。设一封闭的海岛上,有两个种群,狐狸和啮齿动物。狐狸吃啮齿动物,啮齿动物吃草。青草是如此之丰富,以至啮齿动物无需为无食而发愁,啮齿动物饱食后大量繁殖。啮齿动物数量一多,狐狸容易得食,狐狸也增加。当狐狸数过多而吃掉大量啮齿动物之后,

7、狐狸进入饥饿状态而造成总数下降,这时啮齿动物们又相对安全一些。于是,啮齿动物总数回升。如此,狐狸和啮齿动物两种动物之数额相关地交替增减,无休止循环,出现生态动态平衡。本次实验不考虑种内竞争,只考虑物种间的斗争。4、 建模过程(1) 系统因果关系分析 本文中作以下假设:1 狐狸只吃成年啮齿动物,故幼年啮齿动物的死亡只与成年啮齿动物的死亡有关;2 考虑啮齿动物以种群生活,不考虑单独家庭,则幼年啮齿动物的死亡只与种群中成年啮齿动物单位时间的死亡量有关。3 猎人只捕杀成年狐狸;4 水草数量充足,故在一定限度内不用考虑啮齿动物因食物不足导致的死亡,只有当啮齿动物总量超过100000时,啮齿动物才会受到水

8、草的限制停止增长;实际上,对于一个封闭系统来说,啮齿动物的数量肯定会与水草总量有关,水草充足时,啮齿动物死亡率只受狐狸数量影响,水草不足时,啮齿动物会面临灭亡的危险,继而导致狐狸数量减少。但是,由于找不到合适的函数,来表达啮齿动物与水草之间的制约关系,故本文中假设水草充足。 幼年狐狸的数量取决于成年狐狸8 个月前月初的数量以及幼年狐狸原来的数量,同时还受成年啮齿动物数量的限制;成年狐狸数量受成年啮齿动物数量的限制(假设当狐狸需要的啮齿动物大于啮齿动物数量时系统崩溃),同时也受8 个月前幼年狐狸出生数量的影响,120 个月后猎人的捕杀会减少狐狸的数量;成年啮齿动物因作为狐狸的食物而减少,也受三个

9、月前幼年啮齿动物数量的影响;幼年啮齿动物的数量因成年啮齿动物的死亡而减少,也受之前出生的幼年啮齿动物的影响。系统的因果关系图如下图图1所示。图1:系统的因果关系图(2)变量定义:仿真时间(月数)m成年狐狸(初始)个数x1幼年狐狸(初始)个数x2成年啮齿动物(初始)个数y1幼年啮齿动物(初始)个数y2幼年狐狸单位时间出生量 b1幼年狐狸单位时间成长量r1成年狐狸单位时间死亡量d1幼年狐狸单位时间死亡量d2幼年啮齿动物单位时间出生量b2 幼年啮齿动物单位时间成长量 r2 成年啮齿动物单位时间死亡量d3幼年啮齿动物单位时间死亡量d4猎人的个数 n猎人每月打死成年狐狸的数量 4和8(3)系统动力学模型

10、 (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;幼年啮齿动物单位时间成长

11、量:r2=y2*(9/12);幼年啮齿动物单位时间死亡量:d4=d3*0.8;成年啮齿动物单位时间死亡量:如果狐狸种群吃的啮齿动物量较少(假设狐狸只吃成年啮齿动物),即:10*x2+60*x1<y1,则d3=10*x2+60*x1;如果狐狸种群吃的量较多,超过成年啮齿动物总量的承受范围,啮齿动物灭亡,即:10*x2+60*x1>y1,则d3=y1;另外,由于环境中水草的数量的限制,当成年啮齿动物的数量超过一定的界限时,啮齿动物数量大量死亡,即: y1>100000时,d3=y1/2;幼年狐狸单位时间出生量:b1=x1*(4(1/12);幼年狐狸单位时间成长量:r1=x2*(4

12、/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('Please input the number of simulation months :m=');x2=input('Please input the number of childhood fox :x

13、2=');x1=input('Please input the number of mature fox :x1=');y2=input('Please input the number of childhood rodent :y2=');y1=input('Please input the number of mature rodent :y1=');n=input('Please input the number of hunter:n='); for k=1:m %幼年啮齿动物的单位时间出生量 b2 b2=y1(k

14、)*0.8; %幼年啮齿动物的单位时间死亡量 d4 d4=d3*0.8; %幼年啮齿动物的单位时间成长量 r2 r2=y2(k)*(9/12); %成年啮齿动物的单位时间死亡量 d3 if 10*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); if y1(k)>100000 d3=y1(k)/2; end end %幼年狐狸的单位时间出生量 b1 b1=x1(k)*(4(1/12); %幼年狐狸的单位时间死亡量 d2 d2=(10*x2(k)+60*x1(k)

15、-d3)/40; %幼年狐狸的单位时间成长量 r1 r1=x2(k)*(4/12); %成年狐狸的单位时间死亡量 d1 if k<120 d1=(10*x2(k)+60*x1(k)-d3)/30; else k>=120 d1=(10*x2(k)+60*x1(k)-d3)/30+4*n ; %猎人每月射杀的狐狸数量可以改变 end %幼年狐狸下个月的数量if x2(k)+b1-d2-r1>0 x2(k+1)=floor(x2(k)+b1-d2-r1);else x2(k+1)=0end %成年狐狸下个月的数量if x1(k)+r1-d1>0 x1(k+1)=floor(

16、x1(k)+r1-d1)*(1/(0.005*x1(k)+1);else x1(k+1)=0;end %幼年啮齿动物下个月的数量if y2(k)+b2-d3-r2>0 y2(k+1)=floor(y2(k)+b2-d3-r2);else y2(k+1)=0;end %成年啮齿动物下个月的数量if (y1(k)+r2-d3)<0 y1(k+1)=0;else if (y1(k)+r2-d3)>100000 y1(k+1)=floor(y1(k)+r2-d3-100000);后更改为y1(k+1)=100000; else y1(k+1)=floor(y1(k)+r2-d3);

17、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), plot(y1)

18、, axis(0,m,0,150000), title(' 成年啮齿动物'),xlabel('月份');5、 仿真结果分析按照上述程序,设初值如下:月数m=150;幼年狐狸数量x2=300;成年狐狸数量x1=100;幼年啮齿动物数量y2=40000;成年啮齿动物数量y1=10000; 猎人数量n=1;该数据分配情况下,运行结果如下图3。上述结果曲线告诉我们,狐狸的数量随着啮齿动物数量的增加而增加,而啮齿动物的数量则随着狐狸的数量增加而减少,当狐狸的数量超多啮齿动物数量的承受范围时,啮齿动物灭亡,狐狸也随之灭亡,系统崩溃。鉴于上述结果,我们增加啮齿动物数量,对数据

19、做如下改动:幼年狐狸数量x2=300;成年狐狸数量x1=100;幼年啮齿动物数量y2=100000;成年啮齿动物数量y1=30000 ; 猎人数量n=1;仿真结果如下图4。图3图4 不管经过多少次数据调整,都得不到理想的仿真结果,应该是程序中啮齿动物的某个方程不太合适,经过分析,把(y1(k)+r2-d3)>100000时,y1(k+1)=floor(y1(k)+r2-d3-100000),改成y1(k+1)=100000。设置数据进行仿真,结果如下图:幼年狐狸数量x2=300;成年狐狸数量x1=100;幼年啮齿动物数量y2=40000;成年啮齿动物数量y1=10000 ; 猎人数量n=

20、1;该数据分配情况下,运行结果如下图5:图5很明显,仿真结果也很不理想,系统在不到一年的时间内就崩溃,啮齿动物首先灭亡,然后狐狸因食物不足继而灭亡。分析原因可能是狐狸数量太多,更改数据,减少狐狸的数量:幼年狐狸数量x2=200;成年狐狸数量x1=90;幼年啮齿动物数量y2=40000;成年啮齿动物数量y1=10000; 猎人数量n=1;该数据分配情况下,运行结果如下图6:显然,该数据情况下,系统稳定,狐狸数量与啮齿动物数量达到平衡。造成前面系统崩溃的原因为狐狸数量过多,解决该问题的途径除了减少初始狐狸数量外,还可以增加啮齿动物的数量,下面做如下更改:幼年狐狸数量x2=300;成年狐狸数量x1=

21、100;幼年啮齿动物数量y2=100000;成年啮齿动物数量y1=40000; 猎人数量n=1;该数据分配情况下,运行结果如下图7。可见两种变动都可以是系统变稳定,说明上述系统不稳定的原因包括这两者。图6此外,若想观察120个月之后,猎人加入后对系统造成的影响,可以通过在保持猎人每月射杀的狐狸数量不变的情况下,改变程序中猎人的数量来探讨。设置数据额如下:幼年狐狸数量x2=200;成年狐狸数量x1=90;幼年啮齿动物数量y2=40000;成年啮齿动物数量y1=10000 ; 猎人数量n=10;运行结果如下图8。 在保持其他数据不变的情况下,增加猎人数量至50人,即n=10。运行结果如下图9。狐狸由于被捕杀过多而灭亡。图7图8图9此外,也可以保持猎人数量不变,更改猎人每月射杀的狐狸的数量,由程序中的4改为8(每月射杀8只成年狐狸)。幼年狐狸数量x2=150;成年狐狸数量x1=60;幼年啮齿动物数量y2=30000;成年啮齿动物数量y1=8000 ; 猎人数量n=10;运行结果如下图10。图106、 提供几种情况下的对比1 系统由开始的不稳定系统Error! No bookmark n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论