“扩散”模型介绍和代码

这是什么?

扩散图形与大多数其他NetLogo模型不同,因为它实际上并不像大部分模型那样对某种现象进行建模。它只是探索了一个有趣的patch原语背后的力量:“扩散”。

它并不打算精确模拟真实的热量,只是一种类似热量的行为--它会慢慢均匀地在一个平面上扩散开来。

它是如何工作的

在这个模型中,乌龟是“热点”--它们在每一个时间步设置一个特定值(称为‘heat’的patch变量)的最大水平。每个patch(通过“diffuse”原语)然后与其周围的patch共享其“heat”值。

在这里你可以观察到热点之间的相互作用,它们的移动,它们的值变为负数,或者热量慢慢减少到零。整个项目的重点是让你了解patch通过“diffuse”原语是如何相互作用的。(或者如果你无聊的话,也可以给你一些好看的东西来盯着看。)

如何使用它

两个按钮,SETUP和GO,控制模型的执行。和大多数NetLogo模型一样,SETUP按钮会初始化“热点”和其他变量,准备运行模型。GO按钮是一个永远运行的按钮,它会运行模型。

四个滑块和两个开关确定了模型的各种属性。它们中的每一个都可以在初始化之前设置;大多数可以在运行过程中使用来影响接下来会发生什么。

NUM-TURTLES确定了有多少只乌龟。TURTLE-SPEED确定了它们移动的速度。每只乌龟会将它所在的patch的“heat”设置为TURTLE-HEAT。然后这个patch会将它的“heat”扩散到附近的patches。

DIFFUSION-RATE滑块是颜色从每个patch扩散出来的速度。所有的patches每一个时间步都会将它们的颜色值扩散给它们的邻居。DIFFUSION-RATE只是这个颜色泄漏出去的分数。

如果WANDER?开关打开,乌龟可以在视图中移动。如果开关关闭,乌龟将保持在原地。

注意事项

主要Diffusion Graphics将向你展示patch颜色在NetLogo中是如何扩散的。图形显示可能会唤起分形图像,或者地形图。扩散图形确实带来了某种地形,乌龟是山峰,最深的颜色是山谷。该模型基本上试图平滑这些差异。

让模型运行一段时间,将WANDER全部关闭(全部设置为0)。观察“地形”会发生什么。你预测最终会发生什么?

这个模型是为了让人愉悦而建立的。只需随意调整滑块和开关。之后,尝试修改代码,看看什么有效(以及什么无效)。

尝试代码

尝试将TURTLE-HEAT设置为一个非常大的数字。会发生什么?这对你了解NetLogo的颜色模型有什么启示?

尝试将TURTLE-HEAT设置为一个负数。会发生什么?这对你了解NetLogo的颜色模型有什么启示?

尝试将patch大小设置为一个较小的数字以获得更丰富的显示。或者将patch大小设置为较大,以获得“放大”的视角。

扩展模型

改变NUM-TURTLES滑块,使其能够在运行时改变乌龟的数量,而不需要重新点击SETUP。

目前每只乌龟的位置在初始化时是随机确定的。改变模型,使用户可以用鼠标来确定乌龟的位置。

以不同的方式对patches着色,也许沿着传统的ROY-G-BIV(红、橙、黄、绿、蓝、靛、紫)光谱。

NetLogo特点

Diffusion Graphics模型是围绕着diffuse原语设计的。diffuse是一个观察者原语,它接受两个输入,一个是patch变量,一个是数字。diffuse使所有的patch与它们的八个邻居分享那个patch变量。第二个输入是一个介于0和1.0之间的数字,确定了分享的patch变量的比例。(在这个模型中,分享的数量)

代码

patches-own [ heat ]

to setup
  clear-all
  set-default-shape turtles "circle"
  create-turtles num-turtles   ; each turtle is like a heat source
  [ setxy random-xcor random-ycor     ; position the turtles randomly
    hide-turtle   ; so we don't see the turtles themselves, just the heat they produce
    set heat turtle-heat ] ; turtles set the patch variable
  recolor-patches                       ; color patches according to heat
  reset-ticks
end

to go
  ask turtles [ set heat turtle-heat ]   ; turtles set the patch variable
  if wander? [ ask turtles [ wander ] ]  ; movement of turtles is controlled by WANDER? switch
  diffuse heat diffusion-rate            ; this causes the "spreading" of heat
  recolor-patches                        ; color patches according to heat
  tick
end

to wander ; turtle procedure
  rt random 50 - random 50
  fd turtle-speed
end

to recolor-patches  ;; color patches according to heat
  ask patches [ set pcolor heat ]
end


; Copyright 1997 Uri Wilensky.
; See Info tab for full copyright and license.

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

异数时空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值