2017-05-11 6 views
0

最後の24時間で私は2つの質問を投稿し、幸いにもそれらのすべてに答えました。NetLogo:エージェントを変更してループする

しかし、まだ問題はあります。

ここに私が計画しているものがあります。

私はエージェントが最も近い隣人を探して取引するミニマーケットモデルを作るのが好きです。

距離が非常に近い(1パッチ未満)場合、交換が開始されます。

そこでは、各エージェントは、現在のエージェントが最も近くに位置している場合でも、別のトランザクションのために他のエージェントのトランザクションが終了したときに、私は課すのが好きつの条件、

募集しています。

私は、エージェントセットを新しいトランザクションパートナーに応じて継続的に更新するようにコメントしました。

文字列のリストを作成しようとしましたが(トランザクションパートナーを表す)、有効なエージェントセットに変換し直しませんでした。

どうすればこの問題を解決できますか?

私の質問の境界以外の良いアイデアがある場合は、コメントしてください。

ありがとうございました。

(私はすぐに答えに驚いて、それがあまりにも 感謝ですここで私が試したいコードがある...)

to setup 
clear-all 
reset-ticks 
ask patches [ set pcolor white ] 
create-turtles num-turtles [ 
setxy random-xcor random-ycor 
set energy random-gamma 10 0.5 
set trust random-float init-trust 
] 
ask turtles [ 
    set color scale-color green energy 0 99 
    set shape "default" 
    ] 
end 


to go 
    ask turtles [ 
    while [any? other turtles-here] [fd 1] 

; let the-other-turtles [who] of other turtles 
; let the-other-closest-turtles remove my-former the-other-turtles 
; let ws ["turtle"] 
; let other-closest-turtles append-word ws the-other-closest-turtles 
; let ls other-closest-turtles 
; let id the-other-closest-turtles 
; set other-closest-turtles create-other-turtles ws ls id 
; let closest-turtle other-closest-turtles with-min [distance myself] 

    let closest-turtle other turtles with-min [distance myself] 
    set closest-turtle one-of closest-turtle 
    while [closest-turtle = nobody] [fd 1] 
    if closest-turtle != nobody [face closest-turtle fd 1] 
    if distance closest-turtle <= 1 [transact] 
    if energy + trust <= 0 [die] 
    ] 
    tick 
end 

to transact 
    let stronger max-n-of 2 turtles [trust] 
    let weaker min-n-of 2 turtles [trust] 
    ask stronger [ 
    set energy energy - 1 
    set trust trust + 1.5 
    set my-former weaker 
    ] 
    ask weaker [ 
    set energy energy + 1.5 
    set trust trust - 1 
    set my-former stronger 
    ] 
end 
+0

あなたはできないことは何ですか?この質問は、文字列からエージェントセットを構築することについて質問します。この問題を解決するためには、文字列入力の例と期待される出力を確認する必要があります。しかし、そのような解決策は、あなたを間違った道に導くことになります。あなたは数字の入った文字列を作っているようです。エージェントセットを最初に構築し、新しいカメを追加するために 'turtle-set'プリミティブを使用することはほぼ確実です。これは、http://stackoverflow.com/questions/43896539/making-agentset-outof-list/43898915#43898915も – JenB

+0

はい、@ JenBと言っています。あなたはそうです、タートルの名前を示すリストを構築するのではなく、最初にエージェントセットを収集するほうがはるかに優れています。しかし、私は単語と数字を連結して["タートル0"、 "タートル2"、... "カメ15"のような文字列で構成されたリストを作成することができました。しかし、これらの文字列からエージェントセットを拡張することはできませんでした。とにかくコメントありがとう。 –

答えて

0

代わりに文字列のリストを作成するには、リストを持つことができますエージェントのためにカメとカメを記述する文字列の間で変換する必要はありません。リストの操作でエージェントを追加または削除することができます。

ここでは、エージェントセットを作成してエージェントセットを作成する完全な例を示します。

to testme 
    create-turtles 5 
    let mylist (list turtle 1 turtle 3 turtle 4) 
    let myset turtle-set mylist 
    show myset 
end 

しかし、以前の質問に対するNicolasの答えは、文字列の変換方法を示しています。

関連する問題