2017-07-11 11 views
1

ごとに1つだけの亀私は2つの品種があるNetlogoで世界をセットアップしようとしているが、パッチごとに1つだけの亀があります:Netlogoの世界を2つの品種で初期化します。パッチ

breed [supras supra] 
breed [subs sub] 

turtles-own [age] 
subs-own [status] 

to setup 
    clear-all 

    ;; Color the patches so they're easier to see 
    ask patches [ set pcolor random-float 2 ] 

    ;; num-turtles patches will sprout one turtle each 
    ask n-of (num-turtles/2) patches [ 
    if not any? turtles-on patch-set self [ 
     sprout-subs 1 
    ] 
    ] 

    ask n-of (num-turtles/2) patches [ 
    if not any? turtles-on patch-set self [ 
     sprout-supras 1 
    ] 

    ] 

    ;; Set breed colors and own-variables 
    ask subs [ 
    set color blue 
    set shape "dot" 
    ] 

    ask supras [ 
    set color pink 
    set shape "dot" 
    ] 

    reset-ticks 
end 

to go 

    ask turtles [ 
    fd 1 
    ] 

    tick 
end 

はこれが動作しているようですが、私はなく、かなりできそれが技術的に正しいかどうかを教えてください。初期化時に複数のカメを持つパッチがないことを確認するために書いた良いテストは何でしょうか?

+0

あなたのコードは「もしあれば」を含めて確認できることを確認したいと思っていればあなたのコードは固いものだと思いますか? 'setup'プロシージャの終わり近くに[count turtle-here> 1] [setup]'でパッチを張ってください。 - ここに2つ以上の 'カメ 'を持つパッチがあれば、セットアップ手順を再実行します。明らかに、あなたが後で 'setup'にさらにカメを入れると、そのチェックはもはや動かなくなります。 –

+0

クール、ありがとう!私はあなたが提案したことを試してみた。私の設定方法の終わり近くに[count-turtle-here> 1] [output-print "reset"] ''でパッチを貼り、待っている間は '' reset''を表示していないようです。私のために十分に良い。 – santafebound

+0

右。また、 '> 1'を'> 0'に変更して 'setup'を無限に走らせることで動作することを確認することもできますが、ツール>停止で停止する必要があります。 –

答えて

2

完全な例に必要なコードを削除してください。

globals [num-turtles] 
breed [supras supra] 
breed [subs sub] 

turtles-own [age] 
subs-own [status] 

to setup 
    clear-all 
    set num-turtles 99 
    ;; num-turtles patches will sprout one turtle each 
    ask n-of (num-turtles/2) patches [sprout-subs 1] 
    ask n-of (num-turtles/2) patches with [not any? turtles-here] [ 
     sprout-supras 1 
    ] 
end 

to test-setup 
    if (int (num-turtles/2) != count supras) [error "setup error: supras"] 
    if (int (num-turtles/2) != count subs) [error "setup error: subs"] 
    if any? patches with [count turtles-here > 1] [error "setup error: patches"] 
end 
3

実際は別のアプローチを提案しています。 1つの品種にいくつかのパッチをランダムに選択し、もう一方にはいくつかのパッチを選択してお互いを避けようとするのではなく、最初に芽を出すパッチの数を選択して、その半分を他の品種に変換できます。

globals [num-turtles] 
breed [supras supra] 
breed [subs sub] 

turtles-own [age] 
subs-own [status] 

to setup 
    clear-all 
    set num-turtles 99 
    ask n-of num-turtles patches [sprout-subs 1] 
    ask n-of (num-turtles/2) subs [set breed supras] 
    <procedures to set colours etc> 
end 
+0

回答ありがとう!非常に役立ちます。 – santafebound

関連する問題