2015-04-27 2 views
3

Я хотел бы определить соседей, используя радиус или расстояние. Мое решение до сих пор:определить соседних черепах, используя радиус или расстояние

turtles-own [ 
    my-neighbors 
    num-neighbors] 

to setup 

ca 
crt 100 [ 
    move-to one-of patches with [ not any? turtles-here ] 
    set my-neighbors (other turtles) in-radius 3 
    set num-neighbors count my-neighbors 
] 

end 

Проблема с этим состоит в том, что большинство черепах имеют от 0 до 4 соседей, но некоторые из них имеют относительно большое число соседей (например, 34 и 65). Эти черепахи расположены недалеко от центра мира.

Любые идеи о том, что я делаю неправильно?

+2

Это отличный вопрос с хорошим минимальным рабочим примером и четким описанием проблемы. Я не понимаю, почему кто-то проголосует за это. –

ответ

3

Это связано с сроками побочных эффектов в вашей программе.

Предположим, что самая первая черепаха для перемещения перемещается вблизи центра. Ни одна из других черепах еще не двинулась, так что они все еще на patch 0 0 и set my-neighbors (other turtles) in-radius 3 захватят их все. И даже после того, как они переедут в другое место, они все равно будут включены в первый агент черепахи my-neighbors.

Вы можете избежать этой проблемы первого перемещения всех черепах , а затем вычислить их соседей:

to setup 
    clear-all 
    crt 100 [ 
    move-to one-of patches with [ not any? turtles-here ] 
    ] 
    ask turtles [ 
    set my-neighbors (other turtles) in-radius 3 
    set num-neighbors count my-neighbors 
    ] 
end 
Смежные вопросы