Java-реализация имитации трафика Netlogo

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

Например, симулятор SUMO полностью предназначен для имитации дорожного движения, и им довольно легко управлять с помощью соединения TraCI. Есть ли возможность написать подобную симуляцию сетки в NetLogo, используя только код Java/Python/C++, или для симулятора NetLogo требуется четкий код семантики Logo в интерфейсе NetLogo?

Мое сравнение вызвано моим исследованием производительности конкретных решений, использующих командную строку, библиотеку или API. Кажется, NetLogo требует кода, вдохновленного Logo, который имитирует процессы с интерфейсом GUI. Графический интерфейс в этой системе, по-видимому, значительно замедляет работу...

Поскольку в нем отсутствует коммуникационный интерфейс и он кажется однопоточным симулятором с графическим интерфейсом, я думал, что он используется в основном для элементарного моделирования.

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


person Alex R    schedule 18.03.2021    source источник
comment
Для тех, кто следит за мной, вот ссылка на главную страницу Netlogo и Руководство пользователя Netlogo.   -  person Gilbert Le Blanc    schedule 19.03.2021


Ответы (2)


Вам не нужно использовать графический интерфейс NetLogo; вы можете запускать симуляции исключительно из командной строки, как описано здесь: http://ccl.northwestern.edu/netlogo/docs/behaviorspace.html#advanced-usage

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

Сам язык NetLogo является однопоточным, но BehaviorSpace поддерживает параллельное выполнение нескольких запусков моделирования (в графическом интерфейсе или в командной строке, в любом случае).

Я не знаю, что вы подразумеваете под «отсутствием коммуникационного интерфейса»; Я думаю, что вы дезинформированы там. NetLogo может быть подключен и был подключен ко многим другим инструментам и системам, а также расширяем через API Java.

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

person Seth Tisue    schedule 24.03.2021
comment
Привет @Seth, спасибо за более наглядный ответ. Тем не менее, у меня есть еще один для вас - вы пишете, что Netlogo может быть [...] расширяемым с помощью Java API - когда я исследовал эту тему, я смог использовать только какую-то конкретную версию netlogo, например. org.nlogo:netlogo:6.1.0 и запустить HeadlessSimulation — правда, это потребовало от меня написания кода с отдельным расширением — .nlogo и я смог передать только некоторые параметры из Java. Это единственный способ или я могу как-то построить симуляцию Netlogo (даже с языком Logo, но полностью из Java?) - person Alex R; 27.03.2021
comment
Кроме того, я задал тот же вопрос на google-форуме группы NetLogo, и они ответили мне, что NetLogo не хватает производительности, если речь идет о моделировании большого трафика, и они не рекомендуют это решение, поскольку указанное решение, например, SUMO имеет лучшую производительность. в этой теме и лучше подходят для такого решения. Также они лучше интегрируются с Java через интерфейс TraCI. - person Alex R; 27.03.2021
comment
Я могу как-то построить симуляцию Netlogo... полностью из Java? Вкратце: нет, NetLogo не предназначен для этого. - person Seth Tisue; 28.03.2021

NetLogo может взаимодействовать с Java, R, Mathematica, не уверен, что еще. Но NetLogo не подходит для создания графических интерфейсов, он предоставляет механизм моделирования. Не только студенческая демонстрация, но я, вероятно, не буду использовать ее выше 50 000 агентов, так что не совсем для крупномасштабных распределенных систем.

person JenB    schedule 20.03.2021
comment
Спасибо! Это именно тот ответ, который я искал :) - person Alex R; 21.03.2021