1、简单生态环境的模拟 一 实验目的: 研究不同光照条件下,不同参数(生命力, 成熟期等)的单细胞植物与动物构成的生态环境的运行状况 ,从中总结规律 。 二 实验模拟内容: 环境:有均匀光线照射的 培 养皿,光线仿日光,强度可调整。 单细胞植物:一个细胞占一格,按一定比例接受阳光能量,积蓄到 最大 值(成熟期)后,会随机分裂到周围的一格中 ,能量按一定比例消耗并均分。随时间能量会下降(代谢速度)。低于最低 值时死亡(能量减为零)。 单细胞生物:摄取能量方式为吸收周围单细胞植物,其余相同。 三 模拟方法: 1.变量说明: an(100,100) 单细胞生物能量 anc(0) 单细胞生物初始能量 an
2、c(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.大循环:(扫描所有点) 植物:
3、吸收光线,消耗,分裂 (ontotwop) 动物:吃植物 (eata),消耗,分裂 (ontotwoa),死亡 统计输出 d.结束 3.源程序( 关键子程序 , VB编写 ) : 撒点子程序: Private Sub seeda() Dim i, j, n, k As Integer 撒动物 细胞 For n = 1 To anc(5) k = 0 randa: i = Fix(96 * Rnd) + 2 j = Fix(96 * Rnd) + 2 判断是否重复 If an(i, j) = 0 And pl(i, j) = 0 Then an(i, j) = anc(0) Call drawa
4、(i), (j) Else k = k + 1 If k 50 Then anc(5) = n - 1 GoTo outa End If GoTo randa End If Next n outa: End Sub Private Sub seedp() Dim i, j, n, k As Integer 撒植物 细胞 For n = 1 To plc(5) k = 0 randp: i = Fix(96 * Rnd) + 2 j = Fix(96 * Rnd) + 2 判断是否重复 If an(i, j) = 0 And pl(i, j) = 0 Then pl(i, j) = plc(0)
5、 Call drawp(i), (j) Else k = k + 1 If k 50 Then plc(5) = n - 1 GoTo outp End If GoTo randp End If Next n outp: End Sub 分裂子程序: Private Sub onetotwoa(X As Integer, Y As Integer) Dim xx, yy, k As Integer 动物分裂 If an(X, Y) anc(2) Then 随机选周围一点 k = Fix(Rnd * 8) 转一周选合适点 For i = 0 To 7 xx = X + dx(k + i) Mod
6、 7) yy = Y + dy(k + i) Mod 7) If xx 0 And yy 0 And xx plc(2) Then 随机选周围一点 k = Fix(Rnd * 8) 转一周选合适点 For i = 0 To 7 xx = X + dx(k + i) Mod 7) yy = Y + dy(k + i) Mod 7) If xx 0 And yy 0 And xx 0 Then an(X, Y) = 0 Form1.FillColor = Form1.BackColor Line (X * 80 + 425, Y * 80 + 425)-(X * 80 + 495, Y * 80
7、+ 495), Form1.BackColor, B End If End Sub Private Sub disappearp(X As Integer, Y As Integer) 清植物细胞 If pl(X, Y) 0 Then pl(X, Y) = 0 Form1.FillColor = Form1.BackColor Line (X * 80 + 425, Y * 80 + 425)-(X * 80 + 495, Y * 80 + 495), Form1.BackColor, B End If End Sub 动物进食子程序: Private Sub eata(X As Intege
8、r, Y As Integer) 动物摄食 If an(X, Y) 0 Then If X 1 And Y 1 And X 0 And Y - 1 0 Then an(X, Y) = an(X, Y) + pl(X - 1, Y - 1) / 100 * anc(4) Call disappearp(X - 1), (Y - 1) End If If Y - 1 0 Then an(X, Y) = an(X, Y) + pl(X, Y - 1) / 100 * anc(4) Call disappearp(X), (Y - 1) End If If X + 1 0 Then an(X, Y)
9、= an(X, Y) + pl(X + 1, Y - 1) / 100 * anc(4) Call disappearp(X + 1), (Y - 1) End If If X - 1 0 Then an(X, Y) = an(X, Y) + pl(X - 1, Y) / 100 * anc(4) Call disappearp(X - 1), (Y) End If If X + 1 0 And Y + 1 0 Then na = na + 1 aq = aq + an(i, j) / 100 End If If pl(i, j) 0 Then np = np + 1 pq = pq + pl
10、(i, j) / 100 End If Next j Next i Label9.Caption = na Label11.Caption = Str(Fix(aq / 10) + “K“ Label13.Caption = np Label15.Caption = Str(Fix(pq / 10) + “K“ Label21.Caption = (np + na) Label23.Caption = Str(Fix(pq + aq) / 10) + “K“ Label19.Caption = Str(t) + “/“ + Str(timelong) If timelong 0 Then Pr
11、ogressBar1.Value = t If t = timelong Then Timer1.Enabled = False Command1.Caption = “开始 “ End If End If End Sub 四 模拟 内容 : 固定植物的参数: 初始值: 500(个 )*100 下限: 40 成熟: 160 消耗: 5% 吸收率: 60% 1 固定光照为 100,加动物初值,观察平衡时状态: 生存下限 =初值 *0.6,成熟值 =初值 *1.6 初值 (a) 平衡动物数 平衡植物数 动物能量 植物能量 系统 总能量 100 达不到平衡 200 达不到平衡 300 1262 24
12、75 378K 322K 700K 400 1194 2635 490K 307K 797K 500 1083 3053 554K 403K 958K 600 999 3331 635K 388K 1024K 700 916 3862 675K 699K 1374K 在初值为 100和 200时 ,系统始终在较大幅度循环波动 ,无法达到平衡 (如图 ): (初值为 200的情形) 实验过程中 发现: 动物细胞初值越小,模拟进程越快,但是越不易平衡。动物细胞初值越大,模拟进程越慢,但可以直接达到平衡状态。最后由实际数据得到,在初值为 600时,是系统达平衡最快的。 所以后面固定动物细胞参数的模拟
13、,都将初值定为 600。 2 只改变光照条件: 固定植物的参数: 初始值: 500(个 )*100 下限: 40 成熟: 160 消耗: 5% 吸收率: 60% 固定动物的参数: 初始值: 50(个 )*600 下限: 360 成熟: 960 消耗: 10% 吸收率: 80% 光照 平衡动物数 平衡植物数 动物能量 植物能量 系统总能量 100 999 3331 635K 388K 1024K 200 1158 2855 722K 618K 1341K 300 1252 2493 775K 439K 1214K 400 1243 2452 764K 584K 1348K 500 1301 25
14、18 804K 630K 1435K 600 1308 2578 806K 727K 1533K (上图是光照为 600时的平衡状态 ) 3.成熟值的改变: 光照: 100 固定植物的参数: 初始值: 500(个 )*100 下限: 40 成熟: 160 消耗: 5% 吸收率: 60% 固定动物的参数: 初始值: 50(个 )*600 下限: 360 消耗: 10% 吸收率: 80% 成熟 期 平衡动物数 平衡植物数 动物能量 植物能量 系统总能量 720 1003 3232 508K 404K 913K 840 1038 3272 588K 419K 1007K 960 999 3331 635K 388K 1024K 1080 883 4158 599K 1047K 1647K 1200 749 5053 558K 1715K 2274K (动物细胞“吃不动”植物细胞的情况 )