您好,欢迎访问三七文档
实验一生态平衡建模实验实验题目:在一个封闭的海岛上,设有两个群体:1.狐狸(FOXES);2.啮齿动物(RODENTS)情况是:1)狐狸出生后,需要八个月成长为成年狐狸,幼年狐狸每只(每月)要吃10只啮齿动物,若没有吃的就饿死,幼年狐狸的出生率为0.2/月,成年狐狸死亡因素有两个,一是每只狐狸每月要吃60只啮齿动物,若没有吃的就要饿死,二是从仿真时间算起,十年之后,每月要被猎人打死4只。2)啮齿动物RODY出生后,三个月即可长成为成年啮齿动物,啮齿动物的出生率为0.8/月,如果幼年啮齿动物的父母死亡,则因短缺扶养和保护而死亡。成年啮齿动物每月的死亡率有两个原因决定:一个是被狐狸吃掉,一个原因是总数超过100000(十万)只,则以水草不足而饿死。一、实验目标通过此实验了解系统动力学的仿真方法,学会用所学的建模理论来对实际问题进行建模,并对实际问题进行分析。对此生态平衡系统进行仿真实验,改变不同的控制参数,分析实验的结果,得出系统保持生态平衡的条件,为决策者决策提供理论分析基础。二、实验原理系统动力学(SystemDynamics)是美国麻省理工学院J.W福雷斯特(JayWForrester)教授创立的一门新兴学科。它按照自身独特的方法论建立系统的动态模型,并借助于计算机进行仿真,以处理行为随时间变化的系统的问题。系统动力学首先强调系统性的观点,以及联系、发展、运动的观点,是研究复杂系统,诸如:社会、经济、环境、人口、生态平衡、产业发展等的有效工具。系统动力学的研究对象主要是社会经济系统。社会经济系统的范围十分广泛,凡是涉及到人类的社会活动和经济活动的系统都属于社会系统。诸如本文要研究的人口系统、资源系统、环境系统、经济系统、科技系统、能源系统,都属于社会经济系统。系统动力学的基础是通过实验方法认识系统的行为,为管理决策者提供决策的依据。系统动力学仿真的基本步骤是:(1)明确建模目的一般来说,系统动力学对社会系统进行仿真实验的主要目的是认识和预测系统的结构和设计最佳参数,为制定合理的政策提供依据。这一步的工作包括观察系统、专家咨询、收集数据资料等,在涉及具体对象系统时,应根据其要求,仿真目的有所侧重。(2)确定系统边界系统动力学是将研究对象视为一个系统来处理的。系统是一个相对的概念,相对于所研究问题的实质和建模的目的而言。一旦所要研究的问题的实质和建模的目的已经确定,系统也就确定了,其边界应该是清晰的和唯一的。确定了系统边界之后,才能确定系统的内生变量和外生变量。内生变量是由系统内部反馈结构决定的变量,外生变量是由影响环境因素确定的变量。系统动力学认为系统的行为是基于系统内部的种种因素而产生的,并假定系统的外部因素不给系统的行为以本质的影响,也不受系统内部因素的控制。(3)因果关系分析通过因果关系分析,要明确系统内部各要素之间的因果关系,并用表示因果关系的反馈回路来描述。系统动力学认为反馈环是构造系统的第一层次,其多少是系统复杂程度的标志。观察实际系统获得的信息首先用于这一层次。任意两个系统要素从因果关系来看必然是正因果关系、负因果关系或无因果关系。由于决策是在一个或几个反馈回路中进行,而且由于各种回路的祸合,使系统的行为更加复杂化。(4)建立系统动力学模型进行因果关系分析属于系统动力学仿真的定性分析,要对系统进行定量分析还必须借助流图与构造方程式建立系统模型。所谓建模就是要确定各反馈环中的流位和流率。流位是系统的状态变量,它的变化可用来描述系统的动态特征:而流率是流位的变化速率,它控制着流位,流率变量是一个决策函数。当确定了流位和流率变化之后,就可以得到流图与构造方程式。(5)运行模型采用系统动力学仿真语言,将上一阶段建立的系统模型转换成系统仿真模型,并在计算机上模拟运行,得出结果。(6)结果分析通过对结果的分析,不仅可发现系统的构造错误和缺陷,而且还可以找出错误和缺陷的原因。根据结果分析情况,如果需要,就对模型进行修正,然后再做仿真试验,直至得到满意的结果为止三、理论分析本实验需要建立一个具有时滞和阶段结构的捕食者-食饵模型。在自然界中,物种的增长常有一个成长发育的过程,如从幼年到成年等,在其成长的每一个阶段都会表现出不同的特征,这就是种群模型的阶段结构。而且,由幼年到成年所需要的成熟时间(时滞)对种群增长也有影响。在一个封闭的海岛上,只有两个种群:Foxes和Rodents。Foxes以Rodents为食,Rodents以吃水草为生。水草丰盛的时候,Rodents大量繁殖,为Foxes提供充足的食物来源,因此Foxes数量也增加。随着Foxes的增长,大量的Rodents被吃掉,Foxes因食物不足而数量下降。Rodents的天敌减少,数量又开始回升。如此,Foxes和Rodents两种种群的数量交替增减循环,小岛上的生态系统实现动态平衡。四、建模过程1.简化模型,做出假设:1)Foxes仅以成年Rodents为食(幼年Rodents一般隐藏在洞穴里由其父母来喂养,它们受到捕食者攻击的机会可以忽略不计)。2)Rodents以种群生活,不考虑单独家庭,则幼年Rodents的死亡只与种群中成年Rodents单位时间的死亡量有关。每死两只成年Rodent就造成一只幼崽死亡。3)每个月由幼年长大变为成年的Foxes和Rodents的数量与其幼年动物的具体成长程度无关。4)水草能喂养的Rodents的最大数量为100000只。超过100000的部分饿死,饿死的皆为成年Rodents。5)幼年Foxes由其父母喂养,不参与捕食。每死一只成年Fox就造成一只幼崽因缺乏食物而死亡。6)不考虑Foxes与Rodents的自然死亡因素,也不考虑种内竞争引起的死亡。7)只有成年动物才具有生育繁殖能力。8)猎人只捕杀成年Foxes。9)种群的性别比例基本保持在1:1。2.系统因果图影响物种数量的两大因素是出生率和死亡率。出生率促进种群数量增长,死亡率对种群数量起消极作用。导致生物死亡的因素有很多,本实验中,Foxes的死亡因素有Rodents数量不足、猎人的捕杀和父母死亡导致幼年Foxes死亡。Rodents的死亡因素有Foxes的捕猎、水草匮乏与父母死亡导致幼年Rodents死亡。因果关系图如图1所示(Xmind绘图)。图1.海岛生态系统因果关系图3.系统流图根据因果关系图,进行适当简化,绘制出海岛生态系统的流图。如图2所示(Xmind绘图)。图2.海岛生态系统流图(简化)4.变量定义命名规则:Foxes相关参数大写,Rodents相关参数都是小写;0表示幼年。仿真时间(月):n成年Foxes数量:F幼年Foxes数量:F0成年Rodents数量:r幼年Rodents数量:r0幼年Foxes单位时间出生量:B0幼年Foxes单位时间成长量:G0幼年Foxes单位时间死亡量:D0成年Foxes单位时间死亡量:D幼年Rodents单位时间出生量:b0幼年Rodents单位时间成长量:g0幼年Rodents单位时间死亡量:d0成年Rodents单位时间死亡量:d猎人数目:x每位猎人每月打死Foxes的数量:4系统动力学模型首先描述的是系统的状态即流位,“流位”是由系统内物质的流动情况所决定。系统的流位由输入流和输出流决定。本生态系统中定义的流位变量有四个:幼年Foxes、成年Foxes、幼年Rodents、成年Rodents,它们的流位方程分别为:幼年Foxes:0000FBGD•=−−成年Foxes:0FGD•=−幼年Rodents:0000rbgd•=−−成年Rodents:0rgd•=−流率描述单位时间内流位的变化率,流率是控制流位的变量。本系统的单位时间为一个月,在10年内:幼年Foxes单位时间出生量:00.2BF=∗;幼年Foxes单位时间成长量:00*(18)GF=;成年Foxes单位时间死亡量:()10*060*/30DFFd=+−;幼年Foxes单位时间死亡量:0DD=;幼年Rodents单位时间出生量:0*0.8br=;幼年Rodents单位时间成长量:00*(1/3)gr=;成年Rodents单位时间死亡量:1)Foxes数量较少,10*060*FFr+,则10*060*DFF=+;2)Foxes数量太多,Dr=。幼年Rodents单位时间死亡量:0*0.5dd=。水草的数量有限(不考虑幼年Rodents,最多能养活100000只成年Rodents),所以当成年Rodents数量超过100000时,多出的部分全部死亡。6.仿真源程序(C++)//生态平衡建模实验编程#includeiostream#includecmathintmain(){usingnamespacestd;intF[300];//成年Foxes数量intF0[300];//幼年Foxes数量intr[300];//成年Rodents数量intr0[300];//幼年Rodents数量intB0[300];//幼年Foxes单位时间出生量intG0[300];//幼年Foxes单位时间成长量intD0[300];//幼年Foxes单位时间死亡量intD[300];//成年Foxes单位时间死亡量intb0[300];//幼年Rodents单位时间出生量intg0[300];//幼年Rodents单位时间成长量intd0[300];//幼年Rodents单位时间死亡量intd[300];//成年Rodents单位时间死亡量intn,x;//月份n,猎人数量x//种群数量初始设定cout输入种群初始数量:endl;cout成年Foxes数量:;cinF[0];cout幼年Foxes数量:;cinF0[0];cout成年Rodents数量:;cinr[0];cout幼年Rodents数量:;cinr0[0];cout猎人的数量:;cinx;for(n=1;n=300;n++){if(F[n-1]=2)//幼年Foxes单位时间出生量手动删除;elseB0[n]=0;//单只Fox无法生育G0[n]=ceil(F0[n-1]*(1.0/8));//幼年Foxes单位时间成长量/*成年Rodents单位时间死亡量*/if(手动删除)手动删除;elsed[n]=r[n-1];/*成年Foxes单位时间死亡量*/if(n=120)手动删除;else手动删除;D0[n]=D[n];//幼年Foxes单位时间死亡量F[n]=F[n-1]+G0[n]-D[n];//成年Foxes数量if(F[n]0)F[n]=0;F0[n]=F0[n-1]+B0[n]-G0[n]-D0[n];//幼年Foxes数量if(F0[n]0)F0[n]=0;b0[n]=ceil(r[n-1]*0.8);//幼年Rodents单位时间出生量g0[n]=ceil(r0[n-1]*(1.0/3));//幼年Rodents单位时间成长量d0[n]=d[n]*0.5;//幼年Rodents单位时间死亡量r[n]=r[n-1]+g0[n]-d[n];//成年Rodents数量if(r[n]0)r[n]=0;手动删除;//幼年Rodents数量if(r0[n]0)r0[n]=0;if(r[n]100000)//成年Rodents超过100000只时{手动删除;}//输出时间及结果if(r[n]==0&&r0[n]==0){coutn个月后,Rodents灭绝,生态系统崩溃!endl;break;}if(F[n]==0&&F0[n]==0){coutn个月后,Foxes灭绝,生态系统崩溃!endl;break;}if(n==240){cout生态系统在20年内保持动态平衡!endl;break;}}//数据显示coutendl;cout月份FF0rr0endl;for(intm=0;m=n;m++){coutmF[m]F0[m]r[m]
本文标题:生态平衡建模实验
链接地址:https://www.777doc.com/doc-1816306 .html