2017-12-13 11 views
0

私の質問はnetlogoに関するものです。Netlogo:異なる値のコードを繰り返す

私の変数は、ある値よりも大きくなるたびに変更する必要があります。しかし、コードはやや長く、しきい値のみが変化します。

このコードを1回だけ右クリックしてリストから数字を選択する方法はありますか? それは、コードを通過する最初の時間のようにそれは、などの最初のリスト番号を二の二時間を要する

これは私がそれを必要とするコードです:

if Low-amount > 0.025 * number-of-companies and generationL = 1 [ 
    set generationL generationL + 1 
    set Low-multiplier Low-multiplier * 0.8 ] 
if medium-amount > 0.025 * number-of-companies and generationm = 1 [ 
    set generationm generationm + 1 
    set Medium-multiplier Medium-multiplier * 0.8 ] 
if high-amount > 0.025 * number-of-companies and generationh = 1 [ 
    set generationh generationh + 1 
    set high-multiplier High-multiplier * 0.8 ] 

変更するだけのものがあります閾値変数0.025を0.125 0.25 0.5 0.75および1に、そして世代変数をif。

私はこのコードを6回書いてはいけませんが、それは時間がかかりませんが、醜く見えやすく、簡単に行うことができます。 foreachとmapを調べましたが、正しい方法が見つかりませんでした。

答えて

1

私はforeachでそれを見つけました。コードは次のようになります

(foreach [0.025 0.16 0.5 0.84 1] [1 2 3 4 5] [0.8 0.64 0.512 0.4096 0.32768] [ [a b c] -> 
    if Low-amount > a * count companies with [t-needed = "low"] and generationL = b [ 
    set generationL generationL + 1 
    set Low-multiplier c ] 
    if medium-amount > a * number-of-companies and generationm = b [ 
    set generationm generationm + 1 
    set Medium-multiplier c ] 
    if high-amount > a * number-of-companies and generationh = b [ 
    set generationh generationh + 1 
    set high-multiplier c ] 
]) 
関連する問題