Netlogo行为空间扫描问题
我试图使用BehaviorSpace将全局变量——“经验”和“参与度”从10变为90。然后,我使用这些变量设置个人的cit inv和经验cit inv值。 r/NetLogo-行为空间扫描问题-需要帮助 但是,当我运行BehaviorSpace时,它不会循环遍历值,全局变量在81次运行中保持为0。ie:cit inv和cit exp只是根据代码的随机部分从0到10随机变化 如果有帮助的话,我很乐意分享其他代码片段或添加更多上下文。我想值得一提的是,我没有明确地为代码主体中的“经验”或“参与”分配任何值 谢谢你的阅读和任何建议 在行为空间:Netlogo行为空间扫描问题,netlogo,behaviorspace,Netlogo,Behaviorspace,我试图使用BehaviorSpace将全局变量——“经验”和“参与度”从10变为90。然后,我使用这些变量设置个人的cit inv和经验cit inv值。 r/NetLogo-行为空间扫描问题-需要帮助 但是,当我运行BehaviorSpace时,它不会循环遍历值,全局变量在81次运行中保持为0。ie:cit inv和cit exp只是根据代码的随机部分从0到10随机变化 如果有帮助的话,我很乐意分享其他代码片段或添加更多上下文。我想值得一提的是,我没有明确地为代码主体中的“经验”或“参与”分配
["experience" [10 10 90]]
["involvement" [10 10 90]]
主要代码:
globals [rain involvement experience]
to setup-involvement-expertise-links
ask ssystems [
set cit-exp ((experience) + random(10))
set cit-inv ((involvement)+ random(10))]
ask lim-ssystems [
set cit-exp ((experience) + random(10))
set cit-inv ((involvement)+ random(10))]
编辑:将此作为一个可能的替代方案,但请参阅Jasper的答案,以了解此问题的实际原因以及更合适的方法,而不是解决方法
我以前遇到过这种情况,虽然
设置可以是滑块、开关、选择器或模型中的任何全局变量
我从未能够使全局变量(如代码选项卡中定义的)在行为空间中工作。我的快速解决方案是,只需在界面中添加两个输入小部件来声明感兴趣的变量,并从代码选项卡中删除声明。这让我从0输出到预期的玩具代码:
globals [rain ]
to setup
ca
reset-ticks
end
to go
tick
end
编辑:将此作为一个可能的替代方案,但请参阅Jasper的答案,以了解此问题的实际原因以及更合适的方法,而不是解决方法
我以前遇到过这种情况,虽然
设置可以是滑块、开关、选择器或模型中的任何全局变量
我从未能够使全局变量(如代码选项卡中定义的)在行为空间中工作。我的快速解决方案是,只需在界面中添加两个输入小部件来声明感兴趣的变量,并从代码选项卡中删除声明。这让我从0输出到预期的玩具代码:
globals [rain ]
to setup
ca
reset-ticks
end
to go
tick
end
我认为这可能是Luke C回答后的一个错误,但在调查中,我认为我找到了可能的原因 在BehaviorSpace中,为实验的setup命令运行setup是很常见的。在设置中,大多数模型通常都会执行“全部清除”。但“全部清除”也将清除全局值,因此在运行之前会清除该值。这对于基于小部件的滑块、输入变量来说不是问题,因为它们不受“全部清除”的影响。所以我认为这就是正在发生的事情 因此,BehviorSpace进行此类实验时,事件的顺序是: BehaviorSpace准备运行迭代,并设置全局值变量。 BehaviorSpace运行设置过程。 安装程序运行“全部清除”,将全局变量的值重置为0。 然后运行正常,但全局值为0。 一种解决方法是将clear all拆分为其组件,然后在不运行BehaviorSpace时只清除全局。我运行了下面的示例,以确保我对原因的判断是正确的,并且在设置成功的情况下以不同的速度运行的实验确实正确地改变了全局值
globals [ speed ]
to setup-fail
; when run all globals are cleared, including the values
; set by BehaviorSpace
clear-all
create-turtles 100
end
to setup-succeed
; everything `clear-all` does, but do not `clear-globals` for BehaviorSpace
; note if you had globals you *did* want to clear that are not
; going to be controlled by BehaviorSpace, you'd also have to
; handle those manually
if behaviorspace-run-number = 0 [ clear-globals ]
clear-ticks
clear-turtles
clear-patches
clear-drawing
clear-all-plots
clear-output
create-turtles 100
end
to go
ask turtles [ fd speed ]
end
这并不比Luke C提出的使用输入小部件的解决方案简单多少,所以这也是一个很好的方法,但我想介绍替代方案并解释发生了什么。我认为这可能是Luke C回答后的一个错误,但在调查中,我认为我找到了可能的原因 在BehaviorSpace中,为实验的setup命令运行setup是很常见的。在设置中,大多数模型通常都会执行“全部清除”。但“全部清除”也将清除全局值,因此在运行之前会清除该值。这对于基于小部件的滑块、输入变量来说不是问题,因为它们不受“全部清除”的影响。所以我认为这就是正在发生的事情 因此,BehviorSpace进行此类实验时,事件的顺序是: BehaviorSpace准备运行迭代,并设置全局值变量。 BehaviorSpace运行设置过程。 安装程序运行“全部清除”,将全局变量的值重置为0。 然后运行正常,但全局值为0。 一种解决方法是将clear all拆分为其组件,然后在不运行BehaviorSpace时只清除全局。我运行了下面的示例,以确保我对原因的判断是正确的,并且在设置成功的情况下以不同的速度运行的实验确实正确地改变了全局值
globals [ speed ]
to setup-fail
; when run all globals are cleared, including the values
; set by BehaviorSpace
clear-all
create-turtles 100
end
to setup-succeed
; everything `clear-all` does, but do not `clear-globals` for BehaviorSpace
; note if you had globals you *did* want to clear that are not
; going to be controlled by BehaviorSpace, you'd also have to
; handle those manually
if behaviorspace-run-number = 0 [ clear-globals ]
clear-ticks
clear-turtles
clear-patches
clear-drawing
clear-all-plots
clear-output
create-turtles 100
end
to go
ask turtles [ fd speed ]
end
这并不比Luke C提出的输入小部件解决方案简单多少,因此这也是一个很好的方法,但我想介绍替代方案并解释发生了什么。我认为这也是正确的答案。我最近有一个行为空间的错误,这是另一种方式-我是通过流血通过
m为滑块上的某些值从一个运行到下一个运行。这是因为我在运行期间使用set语句更改了滑块值,并且代码块的选择是BehaviousSpace参数,因此在下一次运行的“运行开始”时,“运行结束”值仍然存在。该错误是由相同的序列引起的。感谢您的故障排除和解释,这很有意义!哇,真有趣!谢谢你的澄清。我在设置中使用了clear all,所以在没有滑块的情况下也清除了全局变量是有意义的。我认为这也是正确的答案。我最近有一个行为空间bug,这是另一种情况——我在滑块上的一些值上从一次运行到下一次运行时都在流血。这是因为我在运行期间使用set语句更改了滑块值,并且代码块的选择是BehaviousSpace参数,因此在下一次运行的“运行开始”时,“运行结束”值仍然存在。该错误是由相同的序列引起的。感谢您的故障排除和解释,这很有意义!哇,真有趣!谢谢你的澄清。我在设置中使用了clear all,所以在没有滑块的情况下也清除了全局变量是有意义的。非常感谢!我尝试了快速修复-并添加了经验和参与滑块,并使其工作!谢谢!我尝试了快速修复-并添加了经验和参与滑块,并使其工作!