简单生态环境的模拟

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简单生态环境的模拟

一.实验目的:

研究不同光照条件下,不同参数(生命力,成熟期等)的单细胞植物与动物构成的生态环境的运行状况,从中总结规律。

二.实验模拟内容:

环境:有均匀光线照射的培养皿,光线仿日光,强度可调整。

单细胞植物:一个细胞占一格,按一定比例接受阳光能量,积蓄到最大值(成熟期)后,会随机分裂到周围的一格中,能量按一定比例消耗并均分。随时间能量会下降(代谢速度)。低于最低值时死亡(能量减为零)。

单细胞生物:摄取能量方式为吸收周围单细胞植物,其余相同。

三.模拟方法:

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编写):

撒点子程序:

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((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)

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 7)

yy = Y + dy((k + i) Mod 7)

If xx > 0 And yy > 0 And xx < 101 And yy < 101 Then If an(xx, yy) = 0 And pl(xx, yy) = 0 Then

'能量均分

an(xx, yy) = Fix(an(X, Y) / 2)

an(X, Y) = an(xx, yy)

'绘新细胞

Call drawa((xx), (yy))

Exit Sub

End If

End If

Next i

End If

End Sub

Private Sub onetotwop(X As Integer, Y As Integer)

Dim xx, yy, k As Integer

'植物分裂

If pl(X, Y) > plc(2) Then

'随机选周围一点

k = Fix(Rnd * 8)

'转一周选合适点

For i = 0 To 7

xx = X + dx((k + i) Mod 7)

相关文档
最新文档