生态平衡建模实验.docx
- 文档编号:29668977
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:15
- 大小:257.80KB
生态平衡建模实验.docx
《生态平衡建模实验.docx》由会员分享,可在线阅读,更多相关《生态平衡建模实验.docx(15页珍藏版)》请在冰豆网上搜索。
生态平衡建模实验
生态平衡建模实验
1、目标
通过此实验了解系统动力学的仿真方法,学会用所学的建模理论来对实际问题进行建模,并对实际问题进行分析。
对此生态平衡系统进行仿真实验,改变不同的控制参数,分析实验的结果,得出系统保持生态平衡的条件,为决策者决策提供理论分析基础。
2、原理
通过此次实验了解系统动力学的仿真方法,学会用所学的建模理论来对实际问题进行建模,并对实际问题进行分析。
对此生态平衡系统进行仿真实验,改变不同的控制参数,分析实验的结果,得出系统保持生态平衡的条件,为决策者决策提供理论分析基础。
系统动力学(SystemDynamics)就是美国麻省理工学院J、W福雷斯特(JayWForrester)教授创立的一门新兴学科。
它按照自身独特的方法论建立系统的动态模型,并借助于计算机进行仿真,以处理行为随时间变化的系统的问题。
系统动力学首先强调系统性的观点,以及联系、发展、运动的观点,就是研究复杂系统,诸如:
社会、经济、环境、人口、生态平衡、产业发展等的有效工具。
系统动力学的研究对象主要就是社会经济系统。
社会经济系统的范围十分广泛,凡就是涉及到人类的社会活动与经济活动的系统都属于社会系统。
诸如本文要研究的人口系统、资源系统、环境系统、经济系统、科技系统、能源系统,都属于社会经济系统。
系统动力学的基础就是通过实验方法认识系统的行为,为管理决策者提供决策的依据。
系统动力学仿真的基本步骤就是:
(1)明确建模目的
一般来说,系统动力学对社会系统进行仿真实验的主要目的就是认识与预测系
统的结构与设计最佳参数,为制定合理的政策提供依据。
这一步的工作包括观察系统、专家咨询、收集数据资料等,在涉及具体对象系统时,应根据其要求,仿真目的有所侧重。
(2)确定系统边界
系统动力学就是将研究对象视为一个系统来处理的。
系统就是一个相对的概念,相对于所研究问题的实质与建模的目的而言。
一旦所要研究的问题的实质与建模的目的已经确定,系统也就确定了,其边界应该就是清晰的与唯一的。
确定了系统边界之后,才能确定系统的内生变量与外生变量。
内生变量就是由系统内部反馈结构决定的变量,外生变量就是由影响环境因素确定的变量。
系统动力学认为系统的行为就是基于系统内部的种种因素而产生的,并假定系统的外部因素不给系统的行为以本质的影响,也不受系统内部因素的控制。
(3)因果关系分析
通过因果关系分析,要明确系统内部各要素之间的因果关系,并用表示因果关系的反馈回路来描述。
所谓反馈就是指:
系统中某要素的增加,使受它影响的系统其她要素也发生变化(增加或者减少)。
反馈环分为正反馈与负反馈,而正反馈环使系统表现为增长的行为,负反馈使系统表现为收敛的行为。
系统动力学认为反馈环就是构造系统的第一层次,其多少就是系统复杂程度的标志。
观察实际系统获得的信息首先用于这一层次。
任意两个系统要素从因果关系来瞧必然就是正因果关系、负因果关系或无因果关系。
由于决策就是在一个或几个反馈回路中进行,而且由于各种回路的耦合,使系统的行为更加复杂化。
(4)建立系统动力学模型
进行因果关系分析属于系统动力学仿真的定性分析,要对系统进行定量分析还必须借助流图与构造方程式建立系统模型。
所谓建模就就是要确定各反馈环中的流位与流率。
流位就是系统的状态变量,它的变化可用来描述系统的动态特征:
而流率就是流位的变化速率,它控制着流位,流率变量就是一个决策函数(包括人的决策与机理决策的行为)。
当确定了流位与流率变化之后,就可以得到流图与构造方程式。
(5)运行模型
采用系统动力学仿真语言,将上一阶段建立的系统模型转换成系统仿真模型,并在计算机上模拟运行,得出结果。
(6)结果分析
通过对结果的分析,不仅可发现系统的构造错误与缺陷,而且还可以找出错误与缺陷的原因。
根据结果分析情况,如果需要,就对模型进行修正,然后再做仿真试验,直至得到满意的结果为止。
3、理论分析
生活在同一环境中的各类生物之间,进行着残酷的生存竞争,一类动物靠捕食另一类动物为生,而另一种动物则靠又多又快地繁衍后代与逃逸等手段求生存求发展,如此等等。
设一封闭的海岛上,有两个种群,狐狸与啮齿动物。
狐狸吃啮齿动物,啮齿动物吃草。
青草就是如此之丰富,以至啮齿动物无需为无食而发愁,啮齿动物饱食后大量繁殖。
啮齿动物数量一多,狐狸容易得食,狐狸也增加。
当狐狸数过多而吃掉大量啮齿动物之后,狐狸进入饥饿状态而造成总数下降,这时啮齿动物们又相对安全一些。
于就是,啮齿动物总数回升。
如此,狐狸与啮齿动物两种动物之数额相关地交替增减,无休止循环,出现生态动态平衡。
本次实验不考虑种内竞争,只考虑物种间的斗争。
4、建模过程
(1)系统因果关系分析
本文中作以下假设:
1.狐狸只吃成年啮齿动物,故幼年啮齿动物的死亡只与成年啮齿动物的死亡有关;
2.考虑啮齿动物以种群生活,不考虑单独家庭,则幼年啮齿动物的死亡只与种群中成年啮齿动物单位时间的死亡量有关。
3.猎人只捕杀成年狐狸;
4.水草数量充足,故在一定限度内不用考虑啮齿动物因食物不足导致的死亡,只有当啮齿动物总量超过100000时,啮齿动物才会受到水草的限制停止增长;实际上,对于一个封闭系统来说,啮齿动物的数量肯定会与水草总量有关,水草充足时,啮齿动物死亡率只受狐狸数量影响,水草不足时,啮齿动物会面临灭亡的危险,继而导致狐狸数量减少。
但就是,由于找不到合适的函数,来表达啮齿动物与水草之间的制约关系,故本文中假设水草充足。
幼年狐狸的数量取决于成年狐狸8个月前月初的数量以及幼年狐狸原来的数量,同时还受成年啮齿动物数量的限制;成年狐狸数量受成年啮齿动物数量的限制(假设当狐狸需要的啮齿动物大于啮齿动物数量时系统崩溃),同时也受8个月前幼年狐狸出生数量的影响,120个月后猎人的捕杀会减少狐狸的数量;成年啮齿动物因作为狐狸的食物而减少,也受三个月前幼年啮齿动物数量的影响;幼年啮齿动物的数量因成年啮齿动物的死亡而减少,也受之前出生的幼年啮齿动物的影响。
系统的因果关系图如下图图1所示。
图1:
系统的因果关系图
(2)变量定义:
仿真时间(月数)month(120个月以内)
超过120个月的部分Month
成年狐狸(初始)个数Fox
幼年狐狸(初始)个数fox
成年啮齿动物(初始)个数Rodent
幼年啮齿动物(初始)个数rodent
幼年狐狸单位时间出生量Birth_f
幼年狐狸单位时间成长量Growth_f
成年狐狸单位时间死亡量Death_F
幼年狐狸单位时间死亡量Death_f
幼年啮齿动物单位时间出生量Birth_r
幼年啮齿动物单位时间成长量Growth_r
成年啮齿动物单位时间死亡量Death_R
幼年啮齿动物单位时间死亡量Death_r
猎人的个数Hunter
猎人每月打死成年狐狸的数量就是4
(3)系统动力学模型
(a)系统流图(简化)
图2:
简化的系统流图
(b)构造方程式组
系统动力学模型首先描述的就是系统的状态即流位,“流位”就是由系统内物质的流动情况所决定。
系统的流位由输入流与输出流决定。
该系统中定义的流位变量有五个:
幼年狐狸fox、成年狐狸Fox、幼年啮齿动物rodent、成年啮齿动物Rodent,它们的流位方程分别为:
幼年狐狸:
fox=Birth_r-Death_F-Birth_f;
成年狐狸:
Fox=Growth_f-Death_F;
幼年啮齿动物:
rodent=Birth_r-Death_F-Birth_f;
成年啮齿动物:
Rodent=Growth_r-Death_F;
流率表达式则就是一组代数方程。
该系统中流率之间的关系可通过如下方程组表示:
(考虑一个单位时间为1月)
幼年啮齿动物单位时间出生量:
Birth_r=floor(Rodent*0、95)
幼年啮齿动物单位时间成长量:
Growth_r_unit=Birth_r/3;
成年啮齿动物单位时间死亡量:
如果狐狸种群吃的啮齿动物量较少(假设狐狸只吃成年啮齿动物),即:
10*fox+60*Fox 如果狐狸种群吃的量较多,超过成年啮齿动物总量的承受范围,啮齿动物灭亡,即: 10*fox+60*Fox>Rodent,则Death_R=Rodent 另外,由于环境中水草的数量的限制,当成年啮齿动物的数量超过一定的界限时,啮齿动物数量大量死亡,即: Rodent>100000时,Death_R=Rodent-100000; 幼年狐狸单位时间出生量: Birth_f=floor(Fox*0、75); 幼年狐狸单位时间成长量: Growth_f_unit=Birth_f/8; 幼年狐狸单位时间死亡量: Death_f_unit=(10*fox+60*Fox-Death_R)/40; 成年狐狸单位时间死亡量: 成年狐狸死亡的分为两个阶段,在猎人介入之前的120个月里,只与食物有关,此时: Death_F=(10*fox+60*Fox-Rodent)/30; 猎人介入之后,死亡量还与猎人每月的捕杀量有关,此时: Death_F=(10*fox+60*Fox-Rodent)/30+10*Hunter;(Hunter为猎人个数) (4)程序流程图 图3程序流程图 (5)仿真源程序 fox=400;%ExistingBabyFoxes Fox=200;%ExistingAdultFoxes rodent=10000;%ExsitingBabyRodents Rodent=90000;%ExsitingAdultRodents Hunter=1;%Hunters fori=1: month+Month %%FoxandRodentInfluenceEachOther if10*fox(i)+60*Fox(i) Death_R=10*fox(i)+60*Fox(i);%Foxeatadultrodent else Death_R=Rodent(i);%Alladultrodentdie ifRodent(i)>100000%Rodentexceeds10W Death_R=Rodent(i)-100000; end end ifi<120 Death_F=(10*fox(i)+60*Fox(i)-Rodent(i))/30; else Death_F=(10*fox(i)+60*Fox(i)-Rodent(i))/30+10*Hunter; end %ifi<120&&60*Fox(i)>Rodent(i) %Death_F=(10*fox(i)+60*Fox(i)-Rodent(i))/30; %elseifi<120&&8*10*fox(i) %Death_F=(8*10*fox(i)+60*Fox(i)-Rodent(i))/30; %elseifi<120&&8*10*fox(i)>Rodent(i) %Death_f=(8*10*fox(i)-Rodent(i))/30; %elseifi>120 %Death_F=(10*fox(i)+60*Fox(i)-Rodent(i))/30+4*Hunter; %end %end %end %end Birth_r=floor(Rodent(i)*0、95); Birth_f=floor(Fox(i)*0、75); Death_f_unit=(10*fox(i)+60*Fox(i)-Death_R)/40; Growth_r_unit=Birth_r/3; Growth_f_unit=Birth_f/8; %%BabyFoxPart iffox(i)+Birth_f-Death_f_unit-Growth_f_unit>0 fox(i+1)=fox(i)+Birth_f-Death_f_unit-Growth_f_unit; else fox(i+1)=0; end %%AdultFoxPart ifFox(i)+Growth_f_unit-Death_F>0 Fox(i+1)=(Fox(i)+Growth_f_unit-Death_F)/(0、005*Fox(i)+1); else Fox(i+1)=0; end %%BabyRodentPart ifrodent(i)-Death_F-Birth_f>0 rodent(i+1)=rodent(i)-Death_F-Birth_f; else rodent(i+1)=0; end %%AdultRodentPart ifRodent(i)+Growth_r_unit-Death_F<0 Rodent(i+1)=0; elseifRodent(i)+Growth_r_unit-Death_F>100000 Rodent(i+1)=Rodent(i)+Growth_r_unit-Death_F-100000; else Rodent(i+1)=Rodent(i)+Growth_r_unit-Death_F; end end end %%FigurePlot subplot(2,2,1),plot(fox),axis([0,month+Month,0,3000]),title('BabyFoxes'),ylabel('Amount'); gridon subplot(2,2,2),plot(Fox),axis([0,month+Month,0,2000]),title('AdultFoxes'); gridon subplot(2,2,3),plot(rodent),axis([0,month+Month,0,100000]),title('BabyRodents'),xlabel('Month'),ylabel('Amount'); gridon subplot(2,2,4),plot(Rodent),axis([0,month+Month,0,100000]),title('AdultRodents'),xlabel('Month'); gridon 5、仿真结果分析 按照上述程序,设初值如下: 月数month=120;Month=30; 幼年狐狸数量fox=400; 成年狐狸数量Fox=200; 幼年啮齿动物数量rodent=10000; 成年啮齿动物数量Rodent=10000; 猎人数量Hunter=1; 该数据分配情况下,运行结果如下图4。 很明显,仿真结果很不理想,系统在不到几年的时间内就崩溃,啮齿动物首先灭亡,然后狐狸因食物不足继而灭亡。 分析原因可能就是啮齿动物数量太少,不足以维持狐狸的生存。 图4 鉴于上述结果,我们增加成年啮齿动物数量,对数据做如下改动: 幼年狐狸数量fox=400; 成年狐狸数量Fox=200; 幼年啮齿动物数量rodent=10000; 成年啮齿动物数量Rodent=90000; 猎人数量Hunter=1; 仿真结果如下图5: 图5 由上图可知,系统处于一个动态平衡状态,但总就是在由于当成年啮齿动物很多时时,啮齿动物大量死亡,引起很大波动。 假设狐狸与啮齿动物都比较少的时候,又会就是什么情况呢? 设置数据进行仿真,结果如下图6所示: 幼年狐狸数量fox=50; 成年狐狸数量Fox=15; 幼年啮齿动物数量rodent=10000; 成年啮齿动物数量Rodent=5000; 猎人数量Hunter=1; 该数据分配情况下,运行结果如下图6: 图6 由上图可知,即使初始时动物的数量比较少,但随着时间的推移,啮齿动物数量还就是会增加一定的数量,从而引起大的波动。 此外,若想观察120个月之后,猎人加入后对系统造成的影响,可以通过在保持猎人每月射杀的狐狸数量不变的情况下,改变程序中猎人的数量来探讨。 设置数据额如下: 幼年狐狸数量fox=50; 成年狐狸数量Fox=15; 幼年啮齿动物数量rodent=10000; 成年啮齿动物数量Rodent=5000; 猎人数量Hunter=5; 运行结果如下图7。 图7 显然,当增加猎人后,狐狸数目很快下降,直至全部被猎人打死。 6、提供几种情况下的对比 1 系统由开始的不稳定系统过渡到稳定系统的情况比较(图4、5): 图4系统崩溃,当增加啮齿动物数量,如图5所示系统达到稳定状态。 由图可推测到应该就是程序中啮齿动物初始数量不合适导致。 经更改后,系统稳定。 这情况说明如果系统中啮齿动物由于某种数量较少时,则会导致整个系统崩溃,所有物种灭绝,因此初始情况下,啮齿动物要远大于狐狸个数。 2 图5与图6比较: 图5初始的时候狐狸个数与啮齿动物数量都比较多,当二者都减少的时候,随着时间的推移,系统也能够达到一种动态平衡状态,但这两种状态成年啮齿动物的波动都很大。 3 图6与图7比较: 其她初始数据不变的情况下,当增加猎人的数量时,狐狸的数量就会减少,直至灭亡。 7、感受及建议 通过文中几种情况下的对比,可知一个系统要想保持稳定,各个物种的数量必须保持合理的制约关系,一个物种灭亡必然会导致另外一个物种的灭亡,从而导致系统崩溃。 另外,人类的介入会在很大的程序上影响环境中物种的数量,如果人类滥捕滥杀,势必会对环境中的物种造成不可挽回的影响。 当系统中啮齿动物过多,导致水草减少时,可以适当减少猎人的数量或者减少猎人每月射杀的狐狸的数量,来增加狐狸种群的数量,进而减少啮齿动物的数量,防止沙漠的出现。 反之,当狐狸越来越多,可适当增加猎人的数量来限制。 以此来维持一个系统的稳定。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 生态平衡 建模 实验