在 Netlogo 中将一个品种的变量设置为另一个品种

set one breed's variable to another breed in Netlogo

我阅读了其他与我类似的问题,但我仍然无法弄清楚如何处理我的模型。 让我解释。我有两个品种。

breed [distributers distributer]
breed [suppliers supplier]
distributers-own [dproductASales]
suppliers-own [sproductASales]

我需要将分销商的变量分配给供应商,但它有错误。

to sales-decision
set sproductASales dproductASales

我该怎么做? 谢谢

您希望 sales-decision 的上下文是什么?既然你说 set sProductASales,你就选择了 supplier 上下文。好的,那么您将要求供应商将此变量设置为……什么?您不能说 dproductASales,因为它既不是全局变量也不是供应商属性。如果要引用分销商的 dproductASales,则必须使用 of 并指定其中的哪一个(即使只有一个)。例如:

breed [distributers distributer]
breed [suppliers supplier]
distributers-own [dproductASales]
suppliers-own [sproductASales]

to sales-decision  ;supplier procedure
  set sproductASales [dproductASales] of one-of distributers
end

to test
  ca
  create-distributers 2 [
    set dproductASales one-of [2 4]
  ]
  create-suppliers 10 [
    sales-decision
  ]
end

另一种选择,如果你不想使用全局变量(在我看来,如果值不因分销商而异,这是可行的方法),将有一个 patch-owned 变量,如 "PdAs" 和:

ask patches with [count distributors-here > 0] 
   [
    ask one-of distributors-here 
        [set PdAs dproductASales]
   ]   
    ask suppliers 
    [
     set sproductASales PdAs
    ]

代理商可以访问补丁变量,因此您的供应商可以直接查询它,就好像它是一个全局变量一样,但是如果您走这条路,您可以选择使其在空间上明确(假设将来您想要具有不同分销商产品销售价值并让供应商获取其本地价值的能力)。