netlogo - 在 Netlogo 6.0.4 中创建接收器补丁
问题描述
我想在代表“汇”和“源”区域的 Netlogo 中创建 2 个补丁(或网格中的区域,不要与常规 Netlogo 补丁混淆)。“水槽”补丁是一个可以调整大小的滑块,应该创建一个圆形区域。“源”补丁是接收器补丁之外的区域。下面是我用来尝试实现它的代码,它取自 Netlogo 5.3.1 中使用的类似模型:
to setup
clear-all
crt sink-patch-radius
;; create the 'sink'
set sk1x random-pxcor
set sk1y random-pycor
while [abs(sk1x - min-pxcor) < (sink-patch-radius - 1)
or abs(max-pxcor - sk1x) < (sink-patch-radius - 1)
or abs(sk1y - min-pycor) < (sink-patch-radius - 1)
or abs(max-pycor - sk1y) < (sink-patch-radius - 1) ]
[ set sk1y random-pycor
set sk1x random-pxcor ]
set sink-patches patches with
[(round(distancexy sk1x sk1y)) < sink-patch-radius ]
ask sink-patches [ set pcolor brown + 2 ]
;; create the 'source'
ask patches [
set source-patches patches with [pcolor != brown + 2]]
ask source-patches [ set pcolor green ]
当我这样做时,设置按钮卡住了。它不会设置模型。奇怪的是,这段代码似乎在 Netlogo 5.3.1 中工作。任何见解都会有所帮助。谢谢!
解决方案
不知道为什么设置按钮卡住了。但是你的代码有问题。你有ask patches [ set source-patches ...]
,这将使每个补丁都可以做到。这应该相当快,但可以解释你的粘性问题。
您的代码的此修改版本有效
to setup
clear-all
let sink-patch-radius 3
crt sink-patch-radius
;; create the 'sink'
let sk1x random-pxcor
let sk1y random-pycor
while [ abs(sk1x - min-pxcor) < (sink-patch-radius - 1)
or abs(max-pxcor - sk1x) < (sink-patch-radius - 1)
or abs(sk1y - min-pycor) < (sink-patch-radius - 1)
or abs(max-pycor - sk1y) < (sink-patch-radius - 1) ]
[ set sk1y random-pycor
set sk1x random-pxcor ]
let sink-patches patches with [(round(distancexy sk1x sk1y)) < sink-patch-radius ]
ask sink-patches [ set pcolor brown + 2 ]
;; create the 'source'
let source-patches patches with [pcolor != brown + 2]
ask source-patches [ set pcolor green ]
end
但是我不确定您为什么要使用while
声明而不是简单地识别接近的补丁。试试这个更容易阅读的版本(注意没有海龟,所以你需要改变它才能把它带回来)
globals [ sink-patches source-patches]
to setup
clear-all
;; create the 'sink'
let sink-patch-radius 3
let sink-centre one-of patches
set sink-patches [patches in-radius sink-patch-radius] of sink-centre
ask sink-patches [ set pcolor brown + 2 ]
;; create the 'source'
set source-patches patches with [pcolor != brown + 2]
ask source-patches [ set pcolor green ]
end
推荐阅读
- sql - 如何排除具有相似列的行?
- excel - 从具有过滤行的单个源书中填写另一个工作簿中的特定单元格
- angular - Angular, Http Error 阻止任何进一步的请求
- android - 在标签页标签内的页面之间导航,但不会丢失标签页标签
- android-things - 您已达到设备限制。某些功能将不会启用。Android Things OTA
- sql - 如何在 Postgresql 中翻译 Oracle PLSQLAssociativeArray?
- python - 如何使用户在重新进入不和谐服务器时不会删除静音角色?
- vba - 如何使用 selenium 设置对 chrome 网页文档的引用
- arrays - 如何将结构数组详细信息发送到 BIN 文件
- php - OPcache 类预加载 | cache:clear 命令生成的预加载文件在哪里?