Как эффективно создавать данные по одной переменной, которая есть у всех агентов - PullRequest
0 голосов
/ 27 мая 2020

Я работаю с моделью NetLo go над зарядкой электромобиля. Все (500) агентов отслеживают свои my-charging-demand за такт, и я хочу выяснить, что происходит с этим непредвиденным поведением, когда я меняю активное вмешательство политики (в данном случае - затраты на электроэнергию). Я пытаюсь показать изменения в характеристиках зарядки, таких как продолжительность зарядки, мощность зарядки и т. Д. c.

Как лучше всего создавать данные о my-charging-demand агентов вовремя?

Прямо сейчас я строю все их данные на одном графике, используя следующий код:

ask adopters 
 [ create-temporary-plot-pen (word-who)
   set-plot-pen-color color
   plotxy ticks my-charging-demand
 ]

Это работает, но, к сожалению, это также сделало модель невероятно медленной, так как 500 ручек должны быть обновляется каждый тик. Для завершения всего года / цикла модели требуется 105120 тиков, поскольку каждый тик в модели соответствует 5 минутам. Следовательно, скорость имеет значение: -)

Есть ли более эффективный способ отслеживать / создавать данные одной переменной, которая есть у всех агентов?

1 Ответ

1 голос
/ 28 мая 2020

Если я правильно понял, вы хотите, чтобы каждый агент всегда запомнил значение своей переменной my-charge-demand. Если да, то самый простой способ (но я не знаю, эффективнее ли он) - использовать список как переменную черепахи. Итак, измените свой turtles-own, чтобы добавить другую переменную:

adopters-own
[ ....
  my-charging-demand
  my-charging-demand-series
]

И везде, где у вас есть код для расчета спроса, добавьте результат в список

ask adopters
[ ...
  set my-charging-demand ...
  set my-charging-demand lput my-charging-demand my-charging-demand-series
  ...
]

Я не могу представьте себе, что сюжет с 500 строками читается. Сюжет должен делать что-то вроде среднего значения моей потребности в зарядке или доли черепах, у которых потребность в моей зарядке превышает некоторый порог.

...