我遇到NetLogo列表(V. 6.0.2)和成员的问题?命令,不知何故不做我想做的事。
每只乌龟都会建立自己的清单"意识到谁":
ask turtles [
foreach cheater-list [ x ->
if random-float 100 < 90
[set aware-of-who lput ([who] of x ) aware-of-who]
]
它为海龟成功建立了谁的数字列表。
然后我要求海龟寻找那些在他们的&#34;意识到谁&#34;列表(i.a.是&#34;了解它们&#34;),使用以下代码:
let punishers (turtles-on neighbors) with
[ member? ([who] of myself) ( [aware-of-who] of self) = true]
它似乎没有报告是真的,即使我可以告诉它应该(各自的数字确实出现在他们的列表中)。如果我要求(turtles-on neighbors) with [ empty? aware-of-who = false]
,代码也会报告为真。
任何想法在这里有什么问题? 感谢名单!
答案 0 :(得分:4)
似乎是混淆global:
# The smarthost and SMTP sender used for mail notifications.
smtp_smarthost: 'localhost:25'
smtp_from: 'alertmanager@example.org'
smtp_auth_username: 'alertmanager'
smtp_auth_password: 'password'
receivers:
- name: 'team-X-mails'
email_configs:
- to: 'team-X+alerts@example.org'
# Only one default receiver
route:
receiver: team-X-mails
# Example group with one alert
groups:
- name: example-alert
rules:
# Alert about restarts
- alert: RestartAlerts
expr: count(kube_pod_container_status_restarts_total) by (pod-name) > 5
for: 10m
annotations:
summary: "More than 5 restarts in pod {{ $labels.pod-name }}"
description: "{{ $labels.container-name }} restarted (current value: {{ $value }}s) times in pod {{ $labels.pod-namespace }}/{{ $labels.pod-name }}"
和self
的情况。在以下代码中:
myself
方括号之间的代码传递给let punishers (turtles-on neighbors) with
[ member? ([who] of myself) ( [aware-of-who] of self) = true]
报告者,并在调用海龟的邻居的上下文中运行。所以在记者中,with
是邻居,self
是呼唤乌龟。你反过来了。
有人说...... 不这样做!就此而言,我的意思是:不要使用myself
个数字的列表。几乎没有必要在NetLogo中使用who
个数字。每当您认为某些内容需要who
个数字时,请在此处提出一个问题:有人最有可能向您展示更好的方法。
围绕who
数字的方式通常是直接在列表或代理集中存储对海龟的引用。看起来你已经知道它是如何工作的,因为who
显然是一个海龟列表。
要构建一只乌龟知道的骗子清单,你可以使用filter
:
cheater-list
找到你的惩罚者然后变得更好一点:
let known-cheaters filter [ random-float 100 < 90 ] cheaters
另请注意,您几乎不应该写let punishers (turtles-on neighbors) with [
member? self [ known-cheaters ] of myself
]
或= true
。如果某些内容为真或假,您可以直接在表达式中使用它(前面有= false
,如果您对它是假的情况感兴趣)。例如,您可以写:
not
而不是:
turtles with [ not member? self cheaters ]