Netlogo列表成员?为什么不工作

时间:2018-03-26 08:47:32

标签: list netlogo member

我遇到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],代码也会报告为真。

任何想法在这里有什么问题? 感谢名单!

1 个答案:

答案 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 ]