简单生态环境的模拟

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

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

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

资源描述

简单生态环境的模拟一.实验目的:研究不同光照条件下,不同参数(生命力,成熟期等)的单细胞植物与动物构成的生态环境的运行状况,从中总结规律。二.实验模拟内容:环境:有均匀光线照射的培养皿,光线仿日光,强度可调整。单细胞植物:一个细胞占一格,按一定比例接受阳光能量,积蓄到最大值(成熟期)后,会随机分裂到周围的一格中,能量按一定比例消耗并均分。随时间能量会下降(代谢速度)。低于最低值时死亡(能量减为零)。单细胞生物:摄取能量方式为吸收周围单细胞植物,其余相同。三.模拟方法:1.变量说明:an(100,100)单细胞生物能量anc(0)单细胞生物初始能量anc(1)单细胞生物死亡底限anc(2)单细胞生物成熟标准anc(3)单细胞生物代谢速率anc(4)单细胞生物吸收率anc(5)单细胞生物初始个数pl(100,100)单细胞植物能量plc(0)单细胞植物初始能量plc(1)单细胞植物死亡底限plc(2)单细胞植物成熟标准plc(3)单细胞植物代谢速率plc(4)单细胞植物吸收率plc(5)单细胞植物初始个数light阳光照射量timelong模拟时间2.算法:a.初始化:定义数组,赋值(orign),清零b.撒点:随机撒点(seed),不重复c.大循环:(扫描所有点)植物:吸收光线,消耗,分裂(ontotwop)动物:吃植物(eata),消耗,分裂(ontotwoa),死亡统计输出d.结束3.源程序(关键子程序,VB编写):撒点子程序:PrivateSubseeda()Dimi,j,n,kAsInteger'撒动物细胞Forn=1Toanc(5)k=0randa:i=Fix(96*Rnd)+2j=Fix(96*Rnd)+2'判断是否重复Ifan(i,j)=0Andpl(i,j)=0Thenan(i,j)=anc(0)Calldrawa((i),(j))Elsek=k+1Ifk50Thenanc(5)=n-1GoTooutaEndIfGoTorandaEndIfNextnouta:EndSubPrivateSubseedp()Dimi,j,n,kAsInteger'撒植物细胞Forn=1Toplc(5)k=0randp:i=Fix(96*Rnd)+2j=Fix(96*Rnd)+2'判断是否重复Ifan(i,j)=0Andpl(i,j)=0Thenpl(i,j)=plc(0)Calldrawp((i),(j))Elsek=k+1Ifk50Thenplc(5)=n-1GoTooutpEndIfGoTorandpEndIfNextnoutp:EndSub分裂子程序:PrivateSubonetotwoa(XAsInteger,YAsInteger)Dimxx,yy,kAsInteger'动物分裂Ifan(X,Y)anc(2)Then'随机选周围一点k=Fix(Rnd*8)'转一周选合适点Fori=0To7xx=X+dx((k+i)Mod7)yy=Y+dy((k+i)Mod7)Ifxx0Andyy0Andxx101Andyy101ThenIfan(xx,yy)=0Andpl(xx,yy)=0Then'能量均分an(xx,yy)=Fix(an(X,Y)/2)an(X,Y)=an(xx,yy)'绘新细胞Calldrawa((xx),(yy))ExitSubEndIfEndIfNextiEndIfEndSubPrivateSubonetotwop(XAsInteger,YAsInteger)Dimxx,yy,kAsInteger'植物分裂Ifpl(X,Y)plc(2)Then'随机选周围一点k=Fix(Rnd*8)'转一周选合适点Fori=0To7xx=X+dx((k+i)Mod7)yy=Y+dy((k+i)Mod7)Ifxx0Andyy0Andxx101Andyy101ThenIfan(xx,yy)=0Andpl(xx,yy)=0Then'能量均分pl(xx,yy)=Fix(pl(X,Y)/2)pl(X,Y)=pl(xx,yy)'绘新细胞Calldrawp((xx),(yy))ExitSubEndIfEndIfNextiEndIfEndSub图形子程序:PrivateSubdrawa(XAsInteger,YAsInteger)Form1.FillColor=RGB(255,0,0)'画动物细胞(红色圆)X=X*80+460Y=Y*80+460Circle(X,Y),35,RGB(255,0,0)EndSubPrivateSubdrawp(XAsInteger,YAsInteger)Form1.FillColor=RGB(0,255,0)'画植物细胞(绿方块)Line(X*80+435,Y*80+435)-(X*80+485,Y*80+485),RGB(0,255,0),BEndSubPrivateSubdisappeara(XAsInteger,YAsInteger)'清动物细胞Ifan(X,Y)0Thenan(X,Y)=0Form1.FillColor=Form1.BackColorLine(X*80+425,Y*80+425)-(X*80+495,Y*80+495),Form1.BackColor,BEndIfEndSubPrivateSubdisappearp(XAsInteger,YAsInteger)'清植物细胞Ifpl(X,Y)0Thenpl(X,Y)=0Form1.FillColor=Form1.BackColorLine(X*80+425,Y*80+425)-(X*80+495,Y*80+495),Form1.BackColor,BEndIfEndSub动物进食子程序:PrivateSubeata(XAsInteger,YAsInteger)'动物摄食Ifan(X,Y)0ThenIfX1AndY1AndX100AndY100Thenan(X,Y)=an(X,Y)+(pl(X-1,Y-1)+pl(X,Y-1)+pl(X+1,Y-1)+pl(X-1,Y)+pl(X+1,Y)+pl(X-1,Y+1)+pl(X,Y+1)+pl(X+1,Y+1))/100*anc(4)Calldisappearp((X-1),(Y-1))Calldisappearp((X),(Y-1))Calldisappearp((X+1),(Y-1))Calldisappearp((X-1),(Y))Calldisappearp((X+1),(Y))Calldisappearp((X-1),(Y+1))Calldisappearp((X),(Y+1))Calldisappearp((X+1),(Y+1))ExitSubEndIfIfX-10AndY-10Thenan(X,Y)=an(X,Y)+pl(X-1,Y-1)/100*anc(4)Calldisappearp((X-1),(Y-1))EndIfIfY-10Thenan(X,Y)=an(X,Y)+pl(X,Y-1)/100*anc(4)Calldisappearp((X),(Y-1))EndIfIfX+1101AndY-10Thenan(X,Y)=an(X,Y)+pl(X+1,Y-1)/100*anc(4)Calldisappearp((X+1),(Y-1))EndIfIfX-10Thenan(X,Y)=an(X,Y)+pl(X-1,Y)/100*anc(4)Calldisappearp((X-1),(Y))EndIfIfX+1101Thenan(X,Y)=an(X,Y)+pl(X+1,Y)/100*anc(4)Calldisappearp((X+1),(Y))EndIfIfX-10AndY+1101Thenan(X,Y)=an(X,Y)+pl(X-1,Y+1)/100*anc(4)Calldisappearp((X-1),(Y+1))EndIfIfY+1101Thenan(X,Y)=an(X,Y)+pl(X,Y+1)/100*anc(4)Calldisappearp((X),(Y+1))EndIfIfX+1101AndY+1101Thenan(X,Y)=an(X,Y)+pl(X+1,Y+1)/100*anc(4)Calldisappearp((X+1),(Y+1))EndIfEndIfEndSub主程序:PrivateSubTimer1_Timer()Dimna,npAsIntegerDimaq,pqAsLongna=0np=0aq=0pq=0t=t+1Fori=1To100Forj=1To100'植物摄食Calleatp((i),(j))'植物消耗Callwastep((i),(j))NextjNextiFori=1To100Forj=1To100'植物分裂Callonetotwop((i),(j))'植物死亡Calldeadp((i),(j))NextjNextiFori=1To100Forj=1To100'动物摄食Calleata((i),(j))'动物消耗Callwastea((i),(j))NextjNextiFori=1To100Forj=1To100'动物分裂Callonetotwoa((i),(j))'动物死亡Calldeada((i),(j))NextjNexti'统计输出Fori=1To100Forj=1To100Ifan(i,j)0Thenna=na+1aq=aq+an(i,j)/100EndIfIfpl(i,j)0Thennp=np+1pq=pq+pl(i,j)/100EndIfNextjNextiLabel9.Caption=naLabel11.Caption=Str(Fix(aq/10))+KLabel13.Caption=npLabel15.Caption=Str(Fix(pq/10))+KLabel21.Caption=(np+na)Label23.Caption=Str(Fix((pq+aq)/10))+KLabel19.Caption=Str(t)+/+Str(timelong)Iftimelong0ThenProgressBar1.Value=tIft=timelongThenTimer1.Enabled=FalseCommand1.Caption=开始EndIfEndIfEndSub四.模拟内容:固定植物的参数:初始值:500(个)*100下限:40成熟:160消耗:5%吸收率:60%1.固定光照为100,加动物初值,观察平衡时状态:生存下限=初值*0.6,成熟值=初值*1.6初值(a)平衡动物数平衡植物数动物能量植物能量系统总能量100\\\\达不到平衡200\\\\达不到平衡30012622475378K322K700K40011942635490K307K797K50010833053554K403K958K6009993331635K388K1024K7009163862675K699K1374K在初值为100和200时,系统始终在较大幅度循环波动,无法达到平衡(如图):(初值为200的情形)实验过程中发现:动物细胞初值越小,模拟进程越快,但是越不易平衡。动物细胞初值越大,模拟进程越慢,但可以直接达到平衡状态。最后由实际数据得到,在初值为600时,是系统达平衡最快的。所以后面固定动物细胞参数的模拟,都将初值定为600。2.只改变光照条件:固定植物的参数:初始值:500(个)*100下限:40成熟:160消耗:5%吸收率:60%固定动物的参数:初始值:50(个)*600下限:360成熟:960消耗:10%吸收率:80%光照平衡动物数平衡植物数动物能量植物能量系统总能量1009993331635K388K1024K20011582855722K618K1341K30012522493775K439K1214K40012432452764K584K1348K5001301251880

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

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

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

×
保存成功