2017-12-07 1 views
0

こんにちは、NetlogoのV.6でネストされたforeachの一覧NetLogo

は、私はピアの協調行動の時間加重措置を計算しようとしています。要点は、NetLogoでネストされたforeachを実行する方法を正確に把握することができないということです。

私の現在のアプローチ:

  1. セットアップリスト:reputation_peer
  2. セットアップリスト:変数1(行動)のreputation_peer_list、変数2(タイムティック)
  3. 各出会い、にreputation_listを追加reputation_peer、reputation_peerにリストのリストを作る
  4. 加重評判計算:
    • アイテム2を服用しますreputation_peerの各リストのうち、その遭遇のタイムティックである
    • を現在のタイムティックで割ったものです。
    • これは、分数を与える:その出会い/総時間が
    • セットアップを刻みリストのダニは
    行動変数である、reputation_peerの最初の項目との時間割合を掛け、評判を比較検討する
  5. をreputation_weighted
  6. 次に、reputation_weightedからすべての値を取り出し、それらを加算することによって、reputation_currentを知りたいと思います。

私はforeach関数を使いこなしていますが、わかりません。 Netlogoでこのようなアプローチをどのようにコード化しますか?

私の現在のコードは、(それをテストするために自分自身reputation_peer設定)されています

to calculate_reputation 
    set reputation_peer [[8 4][9 2][10 3][11 2][14 1]] 
    if ticks > 0 [ 
     foreach reputation_peer [x -> set reputation_peer_list list (item 0 x) ((item 1 x)/ticks) 
     set reputation_peer_list_2 lput reputation_peer_list reputation_peer_list_2] 
     foreach reputation_peer_list_2 [x -> set reputation_peer_list_list (list (item 0 x * item 1 x))] 
     foreach reputation_peer_list_list [x -> set reputation_peer_current reputation_peer_current + x] 
    ] 
end 

私は本当に私は右のそれをやっているかどうか知らないが、主に、このコードはすべて、非常にかさばるようですlist_listのことが起こっています。私はそれがずっと簡単かもしれないと思っています。

もしあなたがいくつかのヒントを持っているなら、大きな助けになります。

答えて

1

最終出力として期待していることを100%確信しているわけではありませんが、これが必要なのでしょうか?

to calc-rep-2 
    set reputation_peer [[8 4][9 2][10 3][11 2][14 1]] 
    let weighted_rep_list [] 

    if ticks > 0 [ 
    foreach reputation_peer [ x -> 
     ; Pull out the values from reputation_peer for ease of use 
     let encounter_behavior item 0 x 
     let encounter_time item 1 x 

     ; Calculate the time fraction for the current item 
     let time_fraction encounter_time/ticks 

     ; Calculate the weighted reputations 
     let weighted_rep encounter_behavior * time_fraction 

     ; Add the weighted rep to the list of weighted reps 
     set weighted_rep_list lput weighted_rep weighted_rep_list 
    ] 

    ; Now, weighted_rep_list is a list of weighted reputations 
    print weighted_rep_list 

    ; Get the sum of the list 
    print sum weighted_rep_list 
    ] 

    tick 
end 
+0

こんにちはルーク、ありがとうございました!あなたのコードは私に一歩前進しました。今私は解決していないように見える別の問題があります。もし時間があれば、多分あなたはそれを見ることができます。エディットセクションのメインの質問です。 – maria118code

+0

@ maria118codeこんにちはマリア、それは助けてうれしい!別の問題であるため、編集に関する新しい質問を開始することをおすすめします。実際には、同様の問題を抱えている可能性のある人を助けるために、元のコードが正常に機能したら完全に削除しないことをお勧めします。オリジナルの質問が表示されるように編集内容を「ロールバック」することをお勧めします(投稿の下にある「編集済みx時間前」リンクの下で編集内容が追跡されます)。新しい質問が表示されます。 –

+0

はい、合理的ですね!興味のある方は、もう1つの質問がhttps://stackoverflow.com/questions/47720730/netlogo-list-updated-in-timeに掲載されています。 – maria118code

関連する問題