2017-03-02 30 views
2

各エージェントに2つのリストがあります。彼らは、1)彼らが誰に魅了され、2)誰が魅了されたのかを示します。 お互いに同じように引き付けられるエージェントだけを示す新しいセット変数を作りたいと思います。同じアトラクションは、エージェント(自己)の数が他のエージェントの「誘致」リストにあり、他のエージェントの数が最初のエージェント(自己)の「引き寄せ」リストにあることです。今までの私のコード:2つのリストの組み合わせ

if attracted != nobody [set attractinglists fput ([self] of attracted) attractinglists] 

    if attracted != nobody [set attrlists fput ([self] of attracting) attrlists] 

    set attractinglist [self] of other turtles with [member? myself attrlists] 

答えて

1

以下のコメントに明確に示されているように質問に答えるために編集されました。

今のところ、亀には今まで魅了されたすべてのカメのランニングリストがあります。すべてのダニ、カメは3つの他のカメに引き付けられるようになります。彼らはそれらの "魅力的な"リストにそれらのカメを追加します(リストにない場合)。次に、カメは、その "引っ張った"カメのどれかに引き付けられているかどうかをチェックします。もしそうなら、カメを「相互寄り添い」リストに追加します(それがまだない場合)。それはあなたが何をしていたのですか?

turtles-own [ 
    attracted-to 
    reciprocal-attraction  ;;; the turtles to which this turtle is attracted 
] 


to setup 
    ca 
    create-turtles 10 [ 
    set attracted-to [] 
    set reciprocal-attraction [] 
    ] 
end 


to go 

    ask turtles [ 
    let temp-attraction sort n-of 3 other turtles 
    show temp-attraction 
    foreach temp-attraction [ 
     [x]-> 
     if (member? x attracted-to = false) [ 
     set attracted-to lput x attracted-to 
     ] 
    ] 
    ] 

    ask turtles [ 
    foreach attracted-to [ 
     [x]-> 
     if member? self [attracted-to] of x [ 
     if (member? x reciprocal-attraction = false) [ 
      set reciprocal-attraction lput x reciprocal-attraction 
     ] 
     ] 
    ] 
    ] 

end 
+0

これは機能しません。魅力的で魅力的なものは、ダニの間に更新されるリストです。彼らはダニ10でエージェント2に引き寄せられるが、ダニ2でエージェント2を引き付けることができる。コードはこれを考慮しない。助けてください。 – Newguy

+0

予想される入力はエージェントセットになりますが、代わりにリスト[]が得られます。 – Newguy

+1

それは動作します。上記のコードをカメで鳴らし、すべての目盛の開始時にアトラクションを更新しました。私は私の答えに必要な唯一のセットアップ手順を含むように私の答えを編集しましたので、これを正しく実行するために必要なすべての行が含まれています。 'with'エラーは、エージェントセットではなく、上で作成した" equal-attraction-list "のように、リストに' with'を使うことに由来します。上のコードでは、 'with'プリミティブの両方がエージェントセット" attracted-to "に問い合わせていることに注意してください。 –

関連する問題