2016-08-05 10 views
1

パッチのみを含むNetlogoモデルを作成しています。私は確率に応じて、6種類の色のパッチ(それぞれがプロジェクトの異なる植生を表す)からなる風景を作成することができました。したがって、赤いパッチは、各パッチに10%の確率、黄色の5%、褐色の20%というように発生する可能性があります。オカレンスを変更せずにパッチのクラスタを作成する

この確率が設定されている私のコードの例は:

let i random-float 1 
    ifelse i + random-float 0.1 <= 0.8 ;random 0.1 threshold for environmental noise 
     [ set pcolor green ] 
     [ ifelse i + random-float 0.1 <= 0.9 
     [ set pcolor yellow ] 
     [ set pcolor blue ] ] 

しかしながら、これは、各色のランダムなパターンを生成します。しかし、私はそれらのうちの1つのためのクラスタ化された空間パターンを作成したいと思います。具体的には、私の風景では、茶色のパッチの割合を50%にします。しかし、すべてのパッチに対してこの確率を50%に設定すると、茶色のパッチがランダムに配布されます。どのように私の風景の50%を占めるようにするが、それはクラスタ化されたパターンで表示されますか?

ムーア近隣を使用してクラスターパターンを作成しようとしましたが、明らかに茶色のパッチの割合が変わります。

これはやや明確です。事前に助けてくれてありがとう。

+0

http://stackoverflow.com/questions/19326781/adding-patch-clusters-in-a-landscape、http://stackoverflow.com/questions/20336364/how-to-create-cluster-それらの間に重複していないパッチ、http://stackoverflow.com/questions/22121735/to-build-patch-clusters-at-large-spatial-scales、http://stackoverflow.com/質問/ 20997901 /作成 - ランダム - 形状 - 与えられたエリアのネットブロッグ/ –

答えて

1

あなたの体重に基づいて種を蒔き、種子の周りを育てることができます。色々なパッチをあなたの体重に基づいて色付けしてから、色をクラスター化します。

extensions [rnd] ;use the rnd extension 
globals [threshold] 

to setup 
    ca 
    set threshold 2 
    let _cw [[red 10] [yellow 20] [blue 70]] ;colors with weights 
    ask patches [set pcolor first rnd:weighted-one-of-list _cw [last ?]] 
    repeat 20 [cluster] ;adjust to taste 
end 

to cluster 
    ask patches [ 
    if unhappy? [ 
     swap-pcolor 
    ] 
    ] 
end 


to swap-pcolor 
    let _c pcolor 
    let _p one-of neighbors with [pcolor != [pcolor] of myself] 
    set pcolor [pcolor] of _p 
    ask _p [set pcolor _c] 
end 

to-report unhappy? 
    let _ct count neighbors with [pcolor = [pcolor] of myself] 
    report (_ct < threshold) 
end 
+0

こんにちはアラン!本当にありがとう!これは主に、私が別の手続きで計算された変数でウェイト値を置き換えようとしているネストされたリスト部分を除いて私のために働いていました。私は変数を使ってリストを作成するために 'リスト'を使用しなければならないと読んでいますか?しかし、私はエラーが '期待された定数' ...あなたはおそらくこれを解決する方法を知っていますか? – lyh198

+0

私がこれまでに試したことは、_cw list(list brown x)[blue 0.2]; xは前の手順で設定した変数です。 Netlogoはそれを可能にしますが、使用できないエラーサーフェスはオブザーバーのコンテキストに入ります。 – lyh198

+0

あなたのリストは正しいですが、2つ以上のサブリストがある場合はカッコが必要です。 'go'エラーは別のものです。つまり、パッチ(またはカメ)にその属性にアクセスするように指示するのではなく、パッチ(またはカメ)変数を直接参照するように書かれていることを意味します。 – Alan

関連する問題