2017-09-04 1 views
1

私はNetlogoの新機能です。これはフォーラムで初めての投稿です。 私は、生息地または地域内を移動する動物エージェントグループを作成する必要があります。領土は重複する可能性があります。より正確に言えば、私は、異なる地域で動く男性エージェントと、他の地域で動くいくつかの女性エージェントグループが必要です。netlogoで複数のエージェントグループの地域を作成するにはどうすればよいですか?

これまで私が行ったことです。私は1つの女性グループと1つの男性グループだけの領域を作りました。それは私が必要とするものではありません。

globals [fragments] 
breed [preys prey] 
breed [femaletigers femaletiger] 
breed [kids kid] 
breed [maletigers maletiger] 

turtles-own 
[ 
    energy 
    age 
    gender 
    territory 
] 

to setup 
    clear-all 
    setup-fragments 
    ;setup-habitats 
    setup-turtles 
    reset-ticks 
end 

to setup-fragments 

    ask patches[set pcolor 67] 
    repeat 50 
    [ 
    ask one-of patches 
    [ 
     set pcolor brown 
     repeat 30 
     [ 
     let a random 360 
     let b random 5 
     ask patch-at-heading-and-distance a b 
     [ 
      ask neighbors [ set pcolor brown] 
      set pcolor brown 
     ] 
     ] 
    ] 
    ] 
end 

to setup-turtles 

    set-default-shape femaletigers "default" ; default shape (dreieck) 
    create-femaletigers 10 
    [ 

    set color red 
    set size 1.5 
    set energy 100 
    set age random 20 
    set gender "female" 
    set territory patches-in-territory patch 10 6 15 
    move-to one-of territory with [pcolor = 67 ] ; tigers start in territory but not on fragmented areas 
    ] 

    set-default-shape maletigers "default" ; default shape (dreieck) 
    create-maletigers 10 
    [ 
    set color blue 
    set size 1.5 
    set energy random 100 
    set age random 20 
    set gender "male" 
    set territory patches-in-territory patch 40 15 10 
    move-to one-of territory with [pcolor = 67 ] ; tigers start in territory but not on fragmented areas 

    ] 


    set-default-shape preys "circle" 
    create-preys 100 
    [ 
    move-to one-of patches with [pcolor = 67] ;preys don't start in fragmented areas 
    set color 114 
    set size 0.75 
    ] 
end 

to-report patches-in-territory [Center rd] 
    let ptr [] 
    ask Center [set ptr patches in-radius 20] 
    report ptr 
end 

私は何か助けに感謝します。 Maria

答えて

2

ようこそ。ここに投稿する際には、一般に、あなたのコードをあなたの問題を示すために必要最小限に制限することでより良くなるでしょう(MCVEガイドラインhere参照)。たとえば、to-reportprey品種などを削除して、解決しようとしていることを非常に明白にすることができます。

あなたの全体的なゴールの一部がわからないため、コードに正確に従っているわけではありません。代わりに、あなたが後にしていることを達成するための1つの方法を説明する代わりの例を挙げます。この例では、女性の場合は重複する領域の例と、重複しない領域の場合の例を示します。これらの変数とセットアップの使用:パッチが男性を確認することができるように開始するようにfalseにmale-セット、それによって主張されている場合、それはその領土を設定して、セットアップで

breed [ femaletigers femaletiger ] 
breed [ maletigers maletiger ] 

turtles-own [ territory ] 
patches-own [ maleclaimed? ] 

to setup 
    ca 
    ask patches [ 
    set maleclaimed? false 
    ] 

    create-maletigers 3 [ 
    set shape "triangle" 
    set size 1.5 
    move-to one-of patches with [ maleclaimed? = false ] 
    pd 
    set territory patches in-radius 5 with [ maleclaimed? = false ] 
    ask territory [ 
     set maleclaimed? true 
    ] 
    ] 

    create-femaletigers 3 [ 
    set shape "square" 
    setxy random-xcor random-ycor 
    pd 
    set territory patches in-radius 3 
    hatch 1 + random 3 [ 
     rt random 360 
     fd 1 
    ] 
    ] 

    reset-ticks 
end 

を、patches-ownブールは、示しパッチがすでに主張されているかどうかを確認します。タイガースは、男性が他の男性から領土を選んでいないことを除いて、あなたのやり方と同様に自分の領土を設定します。女性は、 "母親"の領土を共有するいくつかの女性よりhatch彼らの領土を設定します。

to go 
    ask turtles [ 
    let target one-of territory in-radius 1.5 
    if target != nobody [ 
     face target 
     fd 1 
    ] 
    ] 
    tick 
end 

あなたはカメが滞在することを確認したい場合は、次の

だけで、彼らはここでしか自国の領土のワッペンのいずれかに移動することができるように、それを行うための一つの方法をカメを制限し、自国の領土内を移動するには地域内では次のように実行してください:

to territory-check 

    ask turtles [ 
    let col color + 2 + random 3 
    ask territory [ 
     set pcolor col 
    ] 
    ]  

end 
+0

ありがとうございました。それはこれまでに多くの助けとなりました。 しかし、今、femaletigersは "1つのユニット"として彼らの領土内を移動します。彼らは自分の領土内を無作為に移動する必要があります。 –

+0

あなたのモデルや私の例では意味がありますか?私の例では、「femaletigers」は私のために独立して動きます。 –

+0

それは私が修正することができた私のモデルの間違いだった。ありがとう。 –

0

もう一度ありがとうございます。トラはいつ再現され、私は子供たちに新しいテリトワイを作り、領土は重なり合うべきではないですか?

to move-male 

    ask maletigers [ 
    let target1 one-of territory in-radius 2 
    if target1 != nobody [ 
    face target1 
    fd 1]] 

end 

to reproduce-tiger 

    if age >= 48 and any? maletigers-on patch-here and pcolor = 67 [ 
    hatch random 1 + random (5 - 1) [ 
    set gender one-of [ "male" "female" ] 
    set breed kids 
    fd random-float 2 ]] 

end 

to search-territory-male 

ask maletigers with [ territory = nobody ] [ 
    if maleclaimed? = false [ 
    set territory patches in-radius 18 with [ maleclaimed? = false ] 
    ask territory [ set maleclaimed? true ]]] 

end 
関連する問題