【问题标题】:random seed fails to reproduce run in NetLogo when selecting breed-neighbors选择品种邻居时,随机种子无法在 NetLogo 中重现运行
【发布时间】:2015-05-20 08:35:29
【问题描述】:

我有一个包含三个无向链接品种的网络

undirected-link-breed [ parentals parental ]
undirected-link-breed [ diffusions diffusion ]
undirected-link-breed [ simdiffusions simdiffusion ]

我已经修复了种子并运行我的 go 过程调用不同的过程,这些过程总是重现输出,正如给定种子所期望的那样。我的 go 过程只是选择了一个海龟,然后这个海龟执行一个可用的过程。这些过程都没有调用任何与链接相关的东西。一切正常,我可以在给定种子的情况下重现运行,所以我非常有信心代码可以正常工作。

然后我有一个最后一个程序,当被选中时,它会破坏随机序列并且无法在不同的运行中重现输出。这次在 GO 中选择的调用海龟调用如下过程:

to network-mechanisms
    ;; THIS LINE BREAKS THE RNG
    let innovator-nei parental-neighbors with [typeof = "potter"]
    ;; THIS LINE DOES NOT BREAK THE RNG
    ;let innovator-nei other turtles with [typeof = "potter"]
    ask innovator-nei [
        let my-nei parental-neighbors with [typeof = "potter"]
        if any? my-nei [
            set attribute sum [centrality] of my-nei with [adopted-now?] / count my-nei
            set attribute 1 / (1 + exp (4 - 8 * attribute))
        ]
    ]
    ask innovator-nei [
        if random-float 1 < attribute [
            adopt
            create-simdiffusion-with myself [set color red]
        ]
    ]
end

如果调用乌龟寻找它的父母邻居,那么奇怪的事情就会发生,并且每次运行时RNG序列都会改变,无论种子如何;而如果调用海龟调用所有其他海龟,则 RNG 序列在运行中是相同的......这是使用链接品种时的已知问题吗?

【问题讨论】:

    标签: netlogo


    【解决方案1】:

    没有这样的已知问题。如果你认为你发现了一个错误,请在https://github.com/NetLogo/NetLogo/issues/new 开一张票并附上SSCCE。 (上面的代码不是独立的——你没有包含必要的声明,也没有包含你用来测试和重现错误的代码——而且它似乎也不是必要的最小代码证明问题。)

    以下是针对此问题的 SSCCE 的示例:

    undirected-link-breed [parentals parental]
    turtles-own [typeof]
    
    to setup
      clear-all
      crt 5 [ create-parentals-with other turtles ]
      ask n-of 3 turtles [ set typeof "potter" ]
      ask turtles [
        let innovator-nei parental-neighbors with [typeof = "potter"]
      ]
      print random-float 1.0
    end
    
    to test
      random-seed 0
      setup
      random-seed 0
      setup
    end
    

    事实上,这段代码没有显示任何错误;运行时,它会打印两次相同的数字,这是正确的行为:

    observer> test
    0.8700121472788938
    0.8700121472788938
    

    但它显示了提交正确的错误报告需要什么。

    【讨论】:

    • 我正在尝试复制我发现的不一致,一旦我得到它,我会提交一个错误报告。很高兴知道我应该注意的链接品种没有问题。谢谢
    • 只是让您知道,NetLogo 没有任何问题,如果我在 NetLogo 中构建一个假网络,我的代码一切正常,但如果我尝试从我自己的扩展导入一个 graphml,那么问题就来了发生。我将在 nw 错误 here 中报告 - 我尝试自己导入 graphml,因为 nw:load-graphml 中的问题...
    猜你喜欢
    • 2013-03-27
    • 1970-01-01
    • 2011-05-18
    • 2019-08-17
    • 2016-03-08
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    相关资源
    最近更新 更多