如何通过netlogo中的链接访问另一个代理变量值

问题描述

im尝试创建具有两个代理集的模型。零售商和客户群。客户代理需要访问零售商集合中最接近的成员的价格,并将其价格与自己的优惠价格进行比较,如果零售商提供的价格低于首选价格,则进行购买。我试图在这里为客户定义可变价格,以便可以将最近零售商的价格转移给客户并进行比较。我想知道应该使用哪种语法进行此转移?我在这里创建了一个简单的模型,所以我可以掌握整个过程。

breed [ retailers retailer]
breed [ customers customer]

directed-link-breed [info-links info-link]
directed-link-breed [purchase-links purchase-link]

retailers-own [
       price
       inventory
]


customers-own [
         price-here
         prefered-price
]


to setup
  
  create-retailers 10 [ setxy random-pxcor random-pycor
                        set color blue
                        set price random 10
                        set inventory 10
  ]

create-customers 20 [ setxy  random-pxcor random-pycor 
                      set color red
                      set prefered-price random 7 ]
end


to go
  
  foreach sort customers [x -> ask x[
    create-info-link-from  min-one-of retailers [ distance myself ]
  ]]
end

解决方法

未经测试,因此可能存在语法错误。我认为您只想检查最近的零售商的价格,然后在价格足够低时再购买。您无需仅创建链接即可获取信息,只需指定具有所需信息的代理并使用of。因此,您可以执行以下操作:

to go
  ask customers
  [ let closest min-one-of retailers [ distance myself ]
    let closest-price [price] of closest
    if closest-price <= preferred-price
    [ ...

我将其构造为单独的行,因此您可以看到发生了什么。 (1)确定最接近的零售商,并将该乌龟分配给名为“最接近”的变量。 (2)从该零售商处获取价格。 (3)进行比较,然后采取行动。

您可以一行完成。看起来像这样:

to go
  ask customers
  [ if closest-price <= [price] of min-one-of retailers [ distance myself ]
    [ ...