Подтвердить что ты не робот

NetLogo против Repast Simphony?

Я хотел бы моделировать некоторые сценарии, используя мультиагент парадигма, и кажется NetLogo и Repast являются наиболее популярными инструментами для этого.

Хотелось бы узнать, есть ли у кого-нибудь опыт с кем-либо, и мог бы рассказать мне больше о них? Например, я заметил, что для Repast существует вариант моделирования, подобный флуксограмме, но я считаю, что он довольно ограничен. Я просмотрел учебники и документацию на официальном сайте, и документации, похоже, не хватает. Хотя есть примеры с ним, я бы сказал, расширяя его, чтобы имитировать эмбиент, который он не был специально подготовлен к тому, чтобы казаться недостижимой целью на данный момент, несмотря на то, что Repast, очевидно, был очень прочным и, по-видимому, способен справиться с этим, учитывая достаточно знакомство с ним.

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

В настоящее время я думаю о том, чтобы имитировать ботнеты и IDS es как мультиагент. Проблема, однако, в том, что мне придется абстрагировать сетевой и транспортный уровни в какой-то степени, чтобы иметь возможность сделать это, а также генерировать трафик между узлами. Repast, по-видимому, более подходит для этого, но, учитывая его сложность и отсутствие документации, я думаю об использовании NetLogo. Хотя есть примеры NetLogo с традиционными приложениями (например: Tetris или Pac-Man), я не уверен, насколько это подходит для этого.

4b9b3361

Ответ 1

У меня есть веб-страница с паролем dozed netlogo multiagent simulations. Я использую netlogo для обучения, и я обнаружил, что после того, как вы пройдете кривую обучения, вы сможете очень быстро развивать симуляции. Материал, который займет у вас 80 человеко-часов в других так называемых средах агентов (Jade, Repast, которые в основном являются только библиотеками программирования), может быть выполнен через 2 часа.

С другой стороны, netlogo на самом деле не очень хорош для симуляций, требующих огромного количества деталей, например, для моделирования сети на всем пути от TCP/IP до HTTP. Это потребует большого количества кода, независимо от языка программирования, и netlogo в настоящее время отстой, если ваша программа заканчивается более чем на 10 страниц. Сказав это, большинство людей будут поражены тем, что вы можете сделать на 10 страницах кода netlogo.

Ответ 2

Короткий ответ: это зависит от парадигмы программирования или языка, который вы хотите использовать, и от дизайна, который вы хотите для своих агентов:

  • Если вы хотите, чтобы язык с низким потоком и высоким потолком позволял быстро создавать прототипы, но сложные симуляции и готовы изучить новую парадигму (избегая циклов), используйте NetLogo. Хорошая документация.

  • Если вы хотите сделать реальное приложение для использования в высокопараллельных кластерах или просто хотите использовать Java Groovy или вам нужна конкретная библиотека Java для вашей цели, используйте Repast или лучше Repast для высокопроизводительных вычислений (но избегайте ReLogo, который очень медленный). Легкая документация.

  • Если вы хотите моделировать когнитивные агенты (вместо реактивной) с помощью FIPA-связи, лучше использовать Jason или лучше JaCaMo, который поддерживает AgentSpeak + Java (поэтому вы также можете использовать ваши любимые Java-библиотеки), и там не требуется Groovy. Плохая документация (множество нечетких функций и команд, а также примеры слишком сложных, не комментариев).

Длинный ответ: Отказ от ответственности: я более опытен с NetLogo, но я также использовал Repast и некоторые другие, такие как Jason.

В принципе, разница между NetLogo и Repast заключается в том, что с NetLogo у вас будет более простая структура, но вам нужно научиться программировать в парадигме, ориентированной на черепаху и патч, в то время как в Repast вам придется учиться что + механизмы Java Groovy, но в конечном итоге вы получите большую гибкость. Скорость здесь не является критерием (см. Ниже).

Чтобы быть более понятным, вы можете эффективно программировать в NetLogo, если вы максимально используете черепахи и собственные функции патчей. Например, если вы хотите реализовать A *, вместо того, чтобы внедрять список узлов, вы должны напрямую использовать патчи и фильтровать их с помощью таких вещей:

ask patchs with [criteria1 = value and criteria2 = value2] [do-some-stuff]
ask patchs with-min [criteria][do]
let var [somevalue] of min-one-of patches [criteria]

Также, если вы не можете найти способ эффективно выполнять то, что хотите, обязательно проверьте если возможно расширение существует (также проверьте здесь в разделе "Библиотеки и инструменты" ) для вашей цели, например, теперь расширение внутренней матрицы, которое позволило мне создать эффективную нейронную сеть в NetLogo.

С другой стороны, Repast потенциально более гибкая, чем NetLogo (поскольку у вас есть доступ ко всему спектру библиотек Java), но немного сложнее, поскольку вы должны знать, как обращаться с Groovy.

Если вы только заинтересованы в скорости, НЕ используйте ReLogo (синтаксис NetLogo для Repast), который, как было показано, намного медленнее NetLogo (см. статью ниже). В любом случае лучше всего попытаться выполнить реализацию с помощью NetLogo, используя вышеприведенные трюки, или если вы захотите использовать свое приложение позднее, есть также дистрибутив "Repast for High Performance Computing", который удаляет большую часть перегрузки, которая поставляются с черепахами и патчами, и, следовательно, они могут использоваться для реальных приложений. A аналогичное расширение существует для NetLogo для вычисления в кластерах с распараллеливанием, но это не официальный дистрибутив.

Если вам нужна дополнительная информация о различных платформах, вот хороший обзор 2006 года:

Railsback, S. F., Lytinen, S. L., and Jackson, S. K. (2006). Платформы моделирования на основе агентов: рекомендации по обзору и разработке. МОДЕЛИРОВАНИЕ, 82 (9), 609-623.

И обновленная версия этой статьи в 2012 году, касающаяся NetLogo vs ReLogo:

Lytinen, S. L., and Railsback, S. F. (2012, апрель). Эволюция платформ моделирования на основе агентов: обзор Netlogo 5.0 и relogo. В материалах четвертого международного симпозиума по моделированию и моделированию на основе агентов.

/EDIT: Я привел Джейсона, но больше не дал никаких подробностей. Если вы хотите моделировать когнитивные агенты (вместо реактивных агентов), вы можете сделать это в NetLogo с помощью неофициального расширения BDI, которое работает хорошо, но немного ограничено (но оно легко расширяемый с чистого NetLogo), но лучше всего использовать фреймворк, специально разработанный для моделирования когнитивного агента при полной поддержке AgentSpeak.

Jasonочень приятно, так как у вас есть доступ к полному языку AgentSpeak + JAVA для реализации технической стороны. Фактически, вы можете делать целые проекты, используя только AgentSpeak (что я и сделал), но вы также можете сделать больше версий, ориентированных на Java, решать вам, как вы хотите создать свою программу, результат будет более или менее одинаковым. Это дает вам большую гибкость в вашем рабочем процессе проектирования.

Совет: найдите "Внутренние действия Jason" в документации, чтобы получить хорошее описание доступных команд AgentSpeak.

Также, если вас интересует Джейсон, вас может заинтересовать JaCaMo (= Jason + Cartago + Moise), который является результатом сотрудничества трех чтобы создать полнофункциональную структуру когнитивных агентов, которая также может моделировать сложные среды (с теорией артефактов) и многоагентными организациями (ролями, группами, миссиями и т.д.).

Последняя структура, которую я знаю, но не имею возможности попробовать, - Mason, которая поддерживает 2D и 3D среды. Никогда не было возможности попробовать это, поэтому я не знаю, как это сравнивается с другими, но вы можете попробовать его.

Ответ 4

У меня была более-менее та же проблема несколько месяцев назад, когда мне пришлось выбирать рамки для моей симуляции. Я смотрю на Repast, NetLogo, Swarm и Jade. NetLogo был приятным, и я попытался написать несколько простых тестовых приложений, но поскольку я хотел использовать Java в качестве языка программирования, NetLogo был не лучшим кандидатом. У Repast есть почти все, что вам нужно для написания более крупных симуляций, и есть много проектов (особенно в социальных науках), где используется Repast. Мои проблемы с Repasts были: плохая документация API, параметры, которые передаются методам или конструкторам, которые никогда не используются и вообще не имеют смысла (посмотрите исходный код) и много кода шаблона. Сейчас я использую Jade (http://jade.tilab.com/), и я действительно доволен этим. Сообщество хорошо, и их список рассылки ОЧЕНЬ активен. Хорошо, Джейд - это просто библиотека и платформа для моделирования на основе агентов. Вы не получите ничего подобного визуальному редактору в Repast, и вам придется написать собственный инструмент для визуализации результатов.

Приветствия

Ответ 5

Вы можете имитировать трафик с использованием типа агента, называемого "пакет", который будет создан и отправлен агентом "бот" другому агенту "бот" или "сервер". Вместо того, чтобы отправлять пакеты на IP-адрес, вы отправляете их в пару координат X и Y.

Netlogo имеет пример того, как вирус распространяется в сети, это может быть хорошей отправной точкой.

Ответ 6

Я никогда не пробовал NetLogo, но я попробовал Repast-J и Simphony. Кажется, что Симфония хороша, но на данный момент я застреваю при изменении типа Edge от прямой линии до кривой. Недостаточно документации и примеров. Однажды я попробовал Мейсона, который основан на java, тоже. Это похоже на Repast-J, но это было быстрее. Но в последнее время в Мейсоне не так много развития. Я хотел бы попробовать Джейд позже.

Ответ 7

Если вы уже можете закодировать на Java, вы также можете посмотреть следующую статью для сравнения между RePast, Swarm, Quicksilver, и VSEit, различные свободно доступные библиотеки программирования для поддержки компьютерного моделирования на основе социальных научных средств

Тобиас, Роберт и Кэрол Хофманн. "Оценка бесплатных Java-библиотек для моделирования на основе социально-научных агентов" . Журнал искусственных обществ и социального моделирования 7.1 (2004).

Repast определенно более гибкая, чем NetLogo, но документация не очень подробна для RePast Symphony