更新 netlogo 列表中项目的值

updating the value of items in a list in netlogo

我有 4 个生产商,他们具有不同的属性,例如新产品的价格、尺寸、客户率。我定义了 4 个代表它们的列表。

set att-price ((list p1-pr p2-pr p3-pr p4-pr)) ;4个生产者所有产品的价格

set att-size ((list p1-sz p2-sz p3-sz p4-sz))



set att-rates ((list p1-rt p2-rt p3-rt p4-rt))

随着时间的推移,价格会更新,所以我定义了这个来实现这一点:

set (item 0 att-price) (item 0 att-price) * 0.20;生产者一的产品价格变化

set (item 1 att-price) (item 1 att-price) * 0.08

set (item 3 att-price) (item 3 att-price) * 0.43

但是它有一个错误说 "This isn't what you can "set" on"!

那我该如何更新这些项目呢? 谢谢

为此您使用 replace-item。例如:

set att-price replace-item 0 att-price (0.2 * item 0 att-price) 

也就是说,我们不是设置列表的项目,而是创建一个替换项目的新列表,然后将我们的列表变量设置为该项目。

如果要一次替换所有项目,可以使用map。例如,看起来您可能有一个价格变化比率列表:

let ratios [ 0.2 1.0 0.08 0.43 ]
set att-price (map [ [ price ratio ] -> price * ratio ] att-price ratios)