更新 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)
我有 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)