1

私は netlogo を初めて使用し、派閥モデルとフォロー/回避モデルのコードを組み合わせています。

タートルを派閥に分割し (異なる色で表示)、上の派閥に従い、下の派閥を避けようとしています。誰かが私のコードを見ることができれば、それはうまくいかないと思います。なぜなら、「品種」を使用して、カメが誰を上/下で判断するかを分離しようとしたためです.すべてのカメで異なる必要があります. 動作を許可していないと思われる領域を太字にしました..

breed [ above ]
breed [ below ]

turtles-own
[ faction ]

to setup
  clear-all
  ask patches [ set pcolor white ]
  set-patch-size 10
  resize-world min-pxcor max-pxcor min-pycor max-pycor 
  ask patch 0 0
   [ ask patches in-radius ( max-pxcor * .9) with [  random-float 100 < density ]
     [ sprout 1
       [ 
         set shape "circle"
         set faction random factions
         set color faction-color
         set size 1.1
         judge
       ]  ]   ]
   reset-ticks
end

to go
  ask turtles [ avoid ]   
  ask turtles
  [ fd 0.1
    if any? above in-radius 360; vision in patches and degrees
    [ set heading (towards min-one-of above [distance myself]) ] ]; adjusts heading to point towards   

 ask turtles
  [ fd 0.1
    if any? below in-radius 360; vision in patches and degrees
    [ set heading (towards min-one-of below [distance myself]) + 180 ] ] ; adjusts heading to point away from wanderer

  tick
end

to judge

  if turtle color = faction-color + 30 
  [ set breed above ]

  if turtle color = faction-color 
  [ set breed same ]

  if turtle color = faction-color - 30 
  [ set breed below ]

end

;; EXTRAS

to avoid
      ifelse not any? other turtles-on patch-ahead 1
      [ fd 0.1 ]
      [ rt random 360 ]
end

to-report faction-color
   report red + faction * 30
end

誰かが私を正しい方向に向けることができれば、それは素晴らしいことです. 再度、感謝します。

4

1 に答える 1

3

あなたはそれほど遠くはありません。品種の使用が不適切であることを正しく識別しました。「上」または「下」であるという属性は、求めているカメに関連しており、カメ自体の特性ではありません。これを行うためのより良いアプローチがあるかもしれませんが、コードへの最小限の変更で、次のようなものを使用できます。

to go
  ask turtles [ avoid ]    
  ask turtles [
    fd 0.1
    let above turtles with [ color = [faction-color] of myself + 30 ]
    if any? above in-radius 360; vision in patches and degrees
      [ set heading (towards min-one-of above [distance myself]) ] ; adjusts heading to point towards   
  ]
  ask turtles [
    fd 0.1
    let below turtles with [ color = [faction-color] of myself - 30 ]
    if any? below in-radius 360; vision in patches and degrees
      [ set heading (towards min-one-of below [distance myself]) + 180 ] ; adjusts heading to point away from wanderer
  ]
  tick
end

judge(その後、品種と手順を完全に取り除くことができます。)

于 2013-01-23T16:06:08.277 に答える