У нас есть симуляция системы городов, написанная в scala (https://forge.iscpif.fr/projects/simpop2/repository/revisions/dev/show/JSimpop) и использующая ABM (модели на основе агентов). Каждый город равен одному агенту в симуляции.
Представьте себе игру, похожую на Simcityили, лучше сказать, игра Anno, с различными городами, локализованными в мире (агентами наших городов), которые обмениваются различными типами ценностей / товаров следующим образом:
Правило области действия (обмен городамиданные с другими городами в локализованной области, функция правила определения объема)
Несколько правил обмена на рынке (правила появляются / меняются со временем из-за появления городских функций в симуляции (например,промышленная революция добавляет новые правила, новые возможности для обмена), поэтому связь городов с другими городами со временем также меняется ... см. здесь для получения дополнительной информации о правилах модели http://www.simpop.parisgeo.cnrs.fr/models/simpop2/cities-a)
После моделирования нам нужно экспортировать и визуализировать данные по времени, по городам и по городским функциям . Поэтому мы решили хранить все чИстория обмена между городами во время симуляции в хэш-карту с ключом, основанным на времени.Этот hashmap возвращает территорию объекта, которая содержит объект city + отношение между городами + и все обмененные значения.
Я не уверен, но я думаю, что это хорошая идея (лучшая идея, чем использование Rdbms?) Для хранения данных и этих типов отношений в базе данных пространственного графа (пространственный neo4j https://github.com/neo4j/spatial илидругое лучшее решение?).
Но у меня есть несколько вопросов об этом решении (, если это хорошее решение ):
Как вы думаете,мне нужно хранить новый график каждый раз, или большой график только в конце?
=> Итак, как я могу сохранить атрибут на основе времени с этим типом графика?
Могу ли я использовать этот график для выполнения более сложных запросово моем существующем пространственном графике (вычислить кратчайший путь между городами, подсчитать количество взаимодействий и т. д.) и использовать ли эти результаты в моей симуляции?
Как я могу легко экспортировать или импортировать существующий график в мое моделирование?
=> Так, как я могу легко отобразить объект графа и объект агента моделирования, учитывая сложность территории, основанной на времени?
Обновление 1
Наконец, я выбрал neo4j с neo4j -atial, и теперьЯ пытаюсь представить мою проблему с neo4j формализмом.Я беру более простой пример для представления, чем исходный вопрос, и я думаю, что если я смогу реализовать этот формализм, это хороший вариант использования (первый?) Для будущего хранения данных моделирования с neo4j !!
Город представлен с помощью ПРО (в нашей модели один город = один агент-агент) в пространственном контексте (поэтому один город = один узел) связывается только с ближайшими соседями (предел радиуса) на каждом этапе моделирования.
В городе есть пул инноваций на своем собственном рынке, другие города могут получить это новшество, шаг за шагом подключившись к городу.
Вкаждый шаг, один город пытается скопировать одно новшество каждого соседа с функцией вероятности их расстояния, и после этого они пытаются вводить новшество / создавать новое новшество.
График нововведений важенпотому что я хочу увидеть результат распространения какого-либо нововведения во времени (шаг нашего моделирования).
Это осложняется тем фактом, что нововведение может исчезнуть, потому что каждое из них содержит жизньсвойство, после чего мы деактивируем возможность распространения.
Я запускаю общую диаграмму Google с моим представлением, если вы можете помочь мне исправить это,это здорово:)
ничья
Заранее спасибо за совет, SR