#netlogo
#netlogo
Вопрос:
У меня есть модель NetLogo. у каждой черепахи есть два атрибута: «closeness» и «deviation_from_oracle». Теперь предположим, что в модели 1000 агентов. Вопрос в том, как я могу построить «близость» к «deviation_from_oracle»?
Также было бы полезно, если бы я мог получить CSV-файл из NetLogo, который имеет значение closeness и deviaiton_from_oracle для всех черепах, например, после 1500 шагов.
Комментарии:
1. Я бы посмотрел на behaviorspace , который позволяет довольно легко сохранять выходные данные в формате csv, это в меню tools, что касается построения графика, это возможно в netlogo, но если вам удобно с Excel, r или python, возможно, проще в одном из них с csv
Ответ №1:
Я определенно согласен с Hugh_Kelley относительно использования Behaviorspace для вывода ваших значений (или пользовательских функций экспорта, которые могут упростить очистку данных, если вы хотите сообщить значения для большого динамического числа черепах — зависит от вашего удобства с выбранным статистическим программным обеспечением).
Если вам действительно нужно отобразить что-то в интерфейсе, чтобы показать своим пользователям или что-то еще, вы можете обнаружить, что plotxy
функция делает то, что вам нужно. Например, вам понадобится график в интерфейсе под названием «график 1» и одно пустое перо на этом графике под названием «перо-0».
Вы можете управлять этим графиком, либо вручную настраивая его экстенты x и y, либо используя set-plot-...
команды, как в этом setup
:
to setup
ca
crt 10
set-current-plot "plot 1"
set-current-plot-pen "pen-0"
set-plot-pen-mode 2
set-plot-x-range 0 17
set-plot-y-range 0 25
reset-ticks
end
Если вам нужно отобразить значение для каждой из ваших черепах, вы можете заставить черепах вызывать plotxy
любые значения, которые вы хотите отобразить — здесь я просто использую их абсолютную координату x и расстояние до центра в качестве примера:
to go
ask turtles [
rt random 61 - 30
fd 1
set-plot-pen-color color
plotxy ( abs xcor ) distance patch 0 0
]
tick
end
Это дает вывод, подобный:
Где каждая точка была нанесена отдельной черепахой.
Если вы хотите вместо этого получить какое-то сообщенное среднее значение, вызовите вместо этого observer plotxy
— другой пример, который отображает среднее расстояние до других черепах и среднее расстояние до центра:
to go
plotxy mean-closeness-to-others mean-distance-center
ask turtles [
rt random 61 - 30
fd 1
]
tick
end
to-report mean-closeness-to-others
report mean [ mean map distance sort other turtles ] of turtles
end
to-report mean-distance-center
report mean [ distancexy 0 0 ] of turtles
end
Для вывода, подобного: