【问题标题】:Netlogo, changing link-with to link-toNetlogo,将链接更改为链接到
【发布时间】:2019-06-20 00:23:59
【问题描述】:

我正在尝试在我的设置中为我的海龟创建一个影响网络。每只海龟都有一个随机设置在 0 和 1 之间的 AD 变量。它们中的每一个都会创建 5 个无向链接。现在,如果他们的 AD 低(低于 0.3),他们应该在他们的网络中寻找 AD 高(高于 0.7)的人,并创建指向该人的链接(成为追随者)。

我已尝试使用此代码,但该代码不起作用,因为某些网络不会有 AD > 0.7 的任何人,因此当试图终止链接时,我会获得运行时。有人知道解决方法吗? (特别是如果我们可以避免两步过程并在满足条件时直接创建链接)。

to setup
  ask turtles [
    create-links-with n-of 5 other turtles 
    if (AD < 0.3) [
      let target one-of (other turtles with [link-neighbor? myself and (AD > 0.7)])
    ask link-with target [die]
      create-link-to target
    ]
    ]

谢谢!

【问题讨论】:

    标签: netlogo multi-agent


    【解决方案1】:

    根据您的代码,我认为您希望 (1) 每个代理都与其他 5 个代理建立链接(因此平均而言,他们都有 10 个,因为他们也会从其他代理那里获得链接)。 (2)如果自己的AD低,则至少有一个链路具有高值AD节点。下面的代码创建一个链接(如果需要,可以使用 AD),然后创建另一个 4.

    to setup
      ask turtles
      [ ifelse AD < 0.3
        [ create-links with one-of other turtles with [AD > 0.7] ]
        [ create-links-with one-of 5 other turtles ]
        create-links with n-of 4 other turtles
      ]
    end
    

    更新由于更具体的问题。避免错误的正常方法是创建一个可能的代理集,然后测试是否有任何成员。有点像这样:

    ...
    let candidates turtles with [AD > 0.7]
    if any? candidates
    [ create-links-with one-of candidates
    ]
    ...
    

    【讨论】:

    • 感谢 JenB 的回答。关于(2),我不想强​​迫他们创建一个与高 AD 乌龟的链接,而是如果他们的链接很低,并且在随机生成的 10 乌龟网络中恰好有一个高的,他们创建一种不同类型的链接(为了以后只从这种类型的海龟学习,而不是从网络中的其他人学习......)。希望这很清楚!
    • 是的!这正是在网络中创建一个特殊代理的想法。没有这么想。我会稍微处理一下,看看我能不能做到,谢谢。
    • 它有效(见下文)。问题:具有低 AD 的海龟应该通过跟随其网络中具有高 AD 的人(领导者)的意见来更新他们的意见。我的代码并没有真正做到这一点,它导入了来自领导者的所有意见,甚至是间接链接。你知道如何在海龟的直接链接中只导入一位领导者的意见吗? to opinion-formation ask turtles [ let leaders turtles with [AD &gt; 0.7] if (AD &lt; 0.3) and (link-neighbor? one-of leaders) [set opinion1 [opinion] of turtles with [link-neighbor? one-of leaders ]] ] end
    • 你能把这个作为一个新问题吗?
    • @Pedro 如果您发现 JenB 的回答有帮助,请将其标记为已接受,以便其他有类似问题的人知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    相关资源
    最近更新 更多