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

时间:2017-01-29 19:35:58

标签: netlogo agent-based-modeling

我读了与我类似的其他问题,但我仍然无法弄清楚该怎么做我的模型。 让我解释。我有两个品种。

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

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

to sales-decision
set sproductASales dproductASales

我该怎么做? 感谢

2 个答案:

答案 0 :(得分:1)

您希望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

答案 1 :(得分:0)

另一种选择,如果你不想使用全局变量(在我看来,如果值不受分销商的影响,我认为可行的方法)将是一个补丁拥有的变量,如“PdAs”和:

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

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