问题描述
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 ]
[ ...