Агентное моделирование с временным взаимодействием?
Мне нужно найти агентный язык или среду, которая позволяет пользователю "перематывать" модель, изменять некоторые параметры и видеть, как она развивается с новыми параметрами. В основном - ПРО, которая позволяет пользователю перемещаться во времени в рамках симуляции и переходить на разные временные шкалы.
Существует ли что-то подобное?
2 ответа
Я не знаю, существует ли что-то подобное тому, что вы имеете в виду, из коробки, но обычно вы можете достичь чего-то очень похожего, используя фиксированное случайное начальное число (см., Например, раздел о случайных числах в руководстве по программированию NetLogo). Хорошо спроектированная платформа ABM всегда будет давать вам один и тот же результат каждый раз, если вы используете одно и то же начальное число, если только вы не измените что-то в своей модели: в вашем случае некоторые параметры в какой-то момент.
Я думаю, что вам нужно сделать две вещи здесь
1) Разработайте механизм сохранения состояния ваших агентов и состояния модели на каждом тике модели. Это известно как данные сублимационной сушки (по крайней мере, это известно в Repast).
2) Сохраняйте каждое лиофилизированное состояние в виде бинарного дерева. В этом примере ваши корневые узлы становятся "неизмененной" временной шкалой, и каждый дочерний узел является возможной альтернативой из-за какого-то измененного параметра.
Даже для простых моделей ваши требования к хранению многих вероятных вариантов будущего становятся чем-то, что необходимо контролировать.
Кроме того, как вы планируете показ модели? Движок 2D-рендеринга в Repast Simphony оставляет желать лучшего, и использование множества компонентов Java Swing по всему экрану вряд ли будет эффективным. Если вы готовы потратить время на создание собственного вида для визуализации симуляций, я бы порекомендовал взглянуть на работу Крукса, особенно интересную из его статьи о слабосвязанных ПРО.