2017-10-05 3 views
1

新製品の価格、サイズ、顧客レートなどの属性が異なる4つのプロデューサがあります。私はそれらを表す4つのリストを定義した。netlogoのリスト内のアイテムの値を更新する

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。プロデューサーの製品の価格の変動1

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

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

しかし、それは「オン 『に設定』これはあなたができるものではありません」というエラーがあります!

どのようにこれらのアイテムを更新できますか? ありがとう

答えて

2

これには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) 
+0

ありがとうございました。私はset(item 0 att-price)(item 0 att-price)* 0.20'を置き換えるのに 'set att-price replace-item 0(0.2 * item 0 att-price)att-price'を使用しましたが、エラーが見つかりました"replace-item"はこの入力が文字列またはリストであると予想していたが、代わりに数字が入っていると言っていた。 – user710

+1

@ user710新しい値が最後に来る: https://ccl.northwestern.edu/netlogo/docs/dictionary.html#replace-item – Alan

+0

ありがとう、アラン。はい、 'set att-price replace-item 0 att-price(0.2 * item 0 att-price)'を実行することで、それはうまく動作します:) – user710

関連する問題