Включение исходного файла Netlogo в другой - PullRequest
7 голосов
/ 29 апреля 2011

Как я могу включить процедуры из одного файла Netlogo в другой?По сути, я хочу отделить код генетического алгоритма от моей (довольно сложной) фитнес-функции, но, очевидно, я хочу, чтобы фитнес-репортер, который будет находиться в "fitness.nlogo", был доступен в коде генетического алгоритма,вероятно "etic.nlogo ".

Если это можно сделать, как импортируются процедуры и выполняется код?Это как Python, где импорт модуля в значительной степени выполняет все в модуле, или как C / C ++, где файл слепо «соединен»?

Это может быть глупым вопросом, но я не смогнайти что-нибудь в Google.Документация Netlogo говорит что-то о __includes, экспериментальном ключевом слове, которое может помочь, но там мало что объяснено.Также нет примеров.

Есть какие-нибудь намеки?Должен ли я пойти с __includes?Как это работает?

Ответы [ 2 ]

14 голосов
/ 29 апреля 2011

Чтобы включить файл, который вы используете

__includes["libfile.nls"]

После добавления этого и нажатия кнопки «Проверить», новая кнопка появится рядом с раскрывающимся меню «Процедуры».Там вы можете создавать и управлять несколькими исходными файлами.

libfile.nls - это просто текстовый файл, содержащий код NetLogo.Это не модель netlogo, которая всегда заканчивается на .nlogo, поскольку модель NetLogo содержит много другой информации, кроме кода NetLogo.

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

Эта возможность задокументирована в NetLogo UserРуководство по http://ccl.northwestern.edu/netlogo/docs/programming.html#includes.

0 голосов
/ 29 апреля 2018

Вы можете создать файл libfile.nls и в той же папке создать свою основную модель model.nlogo .

После этого перейдите на ваш model.nlogo и напишите:

__includes["libfile.nls"]  

Этот файл содержит ваших репортеров и процедуры, которые вы можете вызвать в вашей модели.

...