netlogo plotxy для гистограммы посещений патчей по осям x и y

Я новичок в netlogo и у меня есть вопрос по построению. Я реализовал простую вариацию модели случайного блуждания со смещением. Я определил пятна с градиентом некоторого «аттрактанта», и агенты накапливаются вблизи пика градиента. Я сохраняю на каждом патче, сколько раз он был посещен.

теперь я хотел бы разместить два сюжета рядом с «миром»; один снизу и один сбоку. В них я хочу отобразить среднее количество посещений по координате x или координате y соответственно. Я предполагаю, что это сводится к проекции посещений по двум осям, но я не знаю, как реализовать усреднение по участкам в подпрограмме plotxy.

У меня возникли проблемы с пониманием синтаксиса netlogo, и любая помощь или подсказки к учебнику будут оценены. Я собираюсь псевдокодировать свой вопрос ниже

в основном, для проекции оси Y мне нужно что-то вроде этого:

y= ymin to ymax

for i=ymin to ymax
x(i)= sum(visits(patches(pycor==i)))/ count(visits(patches(pycor==i)))
end

plotxy(x,y)

Я с нетерпением жду ответа от вас


person user3831341    schedule 12.07.2014    source источник


Ответы (1)


Это должно помочь вам начать.

to-report rows-sums
  let %rownums n-values world-height [? + min-pycor]
  let %sums map [sum [visits] of patches with [pycor = ?]] %rownums
  report (map [(list ?1 ?2)] %rownums %sums)
end

to plot-rowsums
  set-current-plot "plot01"
  clear-plot
  foreach rows-sums [plotxy item 0 ? item 1 ?]
end
person Alan    schedule 12.07.2014
comment
хорошо, это технически работает, но это очень медленно. Я настроил свой мир с патчами 1000 x 500, потому что мне нужен плавный (сигмоидальный) градиент аттрактанта в моей модели. Есть ли способ ускорить рисование? Или я злоупотребляю netlogo этим огромным миром? - person user3831341; 13.07.2014
comment
Да, вы можете ускорить это. Наиболее очевидно, определить rownums как глобальное значение, а не вычислять его каждый тик. Менее очевидно, введите глобальный массив rowsums (и, конечно же, colsums) и увеличивайте общее количество строк и общее количество столбцов каждый раз, когда вы увеличиваете количество посещений патча. (Индекс — номер строки, значение — сумма.) - person Alan; 14.07.2014