在NetLogo中调试n-of命令的代码

问题描述 投票:0回答:1

我在一个行业(世界)建立了公司(海龟),这些行业要么在国内生产(企业自己:reshored? false),要么已经将其生产外包(企业自有:offshored? true)。此外,我给了他们一个maximum-level-of-automation和他们目前的level-of-automation

我的界面上有一个监视器,它定义了已经自动化的生产任务的份额,它应该小于或等于它们的maximum-level-of-automation

breed [ firms firm ]

firms-own [
  offshored?   ;; true or false
  level-of-automation   ;; tbd
  max-level-of-automation   ;; randomly defined between 0 and 1
]

global [ 
  share-of-automated-firms   ;; in % in a slider on interface 
]

to go
  ask firms [ 
    set max-level-of-automation 0 + random-float 1 
    ifelse ( offshored? = false ) [
      ask n-of ( count firms * ( share-of-automated-firms / 100 ) ) firms [   
        set level-of-automation random-between ( 0.01 ) max-level-of-automation ] ] [  
      set level-of-automation 0 ] ]
end

to-report random-between [ min-num max-num ]
   report random-float (max-num - min-num) + min-num
end

我没有收到错误但海龟也没有按照我希望的方式报告。我只想要特定的share-of-automated-firms将他们的level-of-automation改为零和他们的max-level-of-automation之间的数字。其余的应报告为零。我在这里找不到错误。有人建议吗?

netlogo percentage agent-based-modeling
1个回答
0
投票

您的代码可能是问题:

ask firms [ 
    set max-level-of-automation 0 + random-float 1 
    ifelse ( offshored? = false ) [
      ask n-of ( count firms * ( share-of-automated-firms / 100 ) ) firms [   
        set level-of-automation random-between ( 0.01 ) max-level-of-automation ] ] [  
      set level-of-automation 0 ] ]

你有一个嵌套在ask n-of ... firms命令块中的ask firms。翻译,说“所有公司,我希望你设置你的最大自动化。然后,如果你没有外包,我希望你要求一些公司做某事或将你自己的自动化水平设置为零。 “因此,每家公司都会运行该代码,并可能要求一些现有公司改变其自动化水平。

© www.soinside.com 2019 - 2024. All rights reserved.