Как построить распределение в netlogo?

#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
  

Для вывода, подобного:

введите описание изображения здесь