数学之路-群体行为与群体智能(6)

本文介绍了一个使用NetLogo模拟生物在二维网格环境中生存的模型。每个瓦片代表一个含有氧气的水体,生物(海龟)消耗氧气移动并繁殖。通过`generate-oxygen`、`move-turtles`和`breathe`等函数,模拟了氧气的生成、生物的移动和呼吸过程。最终,监控器显示海龟存活数量从100减少到38,展示了一个简单的群体行为和生态系统的动态变化。
摘要由CSDN通过智能技术生成

首先假设每个瓦片(画面由一格格组成,每个小格称为一个瓦片,NetLogo世界是由“瓦片”构成的二维网格,瓦片是网格中的一个方格。可以把瓦片想象成地板上铺的方形瓷砖)所代表的每个方形小格水体含10个单位氧气。

接着设想一下这些箭头代表某种生物(初始为10个能量),它们生活在水中,它们在水中移动,移动的同时做了以下事情:

氧气不足的水体方格产生氧气(每次产生)generate-oxygen函数,每次产生0.1个单位,并将方格的色彩慢慢变浅。

移动要消耗能量(一次消耗2个单位),没有能量将无法移动。

无论是否移动都要呼吸(一次消耗2个单位所处新位置的氧气)。

海龟如果没有能量了,就会死亡。

麦好的AI乐园博客所有内容是原创,如果转载请注明来源

http://blog.csdn.net/myhaspl/


最后通过以下菜单增加一个监控器,在监控器中输入

cout turtles

可以动态显示海龟的存活数量(初始值为100

 

 

界面不变化,将代码改为:

;code:myhaspl@myhaspl.com

;date:2014-01-24

turtles-own [energy]

patches-own [oxygen]

to setup

  clear-all

  create-turtles 100

  setup-turtles

  setup-patches

end

to go

  die-turtles

  generate-oxygen

  move-turtles

  breathe

end

to generate-oxygen

   ask patches [

    if oxygen <= 0 [

      set pcolor 100

    ]

    if  oxygen < 10[

       set oxygen (oxygen + 0.1)

       if pcolor <= 109 [

         set pcolor pcolor + 0.1

       ]

    ]

    if oxygen >= 10[

      set pcolor 109

      set oxygen 10

    ]

  ]

end

to move-turtles

  ask turtles [

    if energy > 0[

          right random 360    

          forward 1    

          set energy (energy - 1)

    ]   

  ]

end

to breathe

  ask turtles [

    if oxygen > 0 [

      set oxygen (oxygen - 2)  

      if energy < 10[    

        set energy (energy + 2)

      ]

      if pcolor >= 100 [

         set pcolor pcolor - 0.1

       ]

    ]

  ]

end

to setup-patches 

  ask patches[

    set pcolor 109

    set oxygen 10

    ]

end

to setup-turtles 

  ask turtles[

    setxy random-xcor random-ycor

    set energy 10

    ]

end

to die-turtles

  ask turtles[

    if energy <= 0[

      die

    ] 

  ]

end

初始化为:

 

麦好的AI乐园博客所有内容是原创,如果转载请注明来源

http://blog.csdn.net/myhaspl/


运行后,可看到下图,部分区域的氧气已经用完,变成黑色,而部分区域的氧气正在恢复中,慢慢变浅,海龟的数量也减少到38

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值