Агентное моделирование в среде NetLogo на уроках информатики

№44-3,

Педагогические науки

В статье рассматривается возможность использования среды мультиагентного моделирования NetLogo на уроках информатики в средней школе при изучении основ компьютерного моделирования и программирования.

Похожие материалы

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

Агентное моделирование возникло в 90-х–годах прошлого века. Данное направление в имитационном моделировании в основном используется для глубокого исследования децентрализованных систем. Динамика функционирования децентрализованных систем определяется не глобальными правилами и законами, а наоборот, эти глобальные правила и законы являются результатом индивидуальной активности членов группы. Целью агентных моделей — получить полное представление об этих глобальных правилах и общем поведении системы, только исходя из предположений об индивидуальном, частном поведении её отдельных активных объектов и взаимодействии этих объектов в системе. Агент, в общем понимании, это некая сущность, обладающая активностью и автономным индивидуальным поведением. Агент вполне может принимать самостоятельные решения в соответствии с некоторым набором правил, взаимодействовать с окружением, а также самостоятельно изменяться.

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

Среда программирования NetLogo может служить, для моделирования ситуаций и феноменов, происходящих в природе и обществе. NetLogo удобно использовать для моделирования сложных, развивающихся во времени систем. Среда содержит библиотеку уже готовых модулей описывающих процессы, происходящие в живой и неживой природе, их можно изучать как некую изолированную систему для понимания сущности происходящих процессов или на их основе знакомится с синтаксисом встроенного языка программирования. Мы рекомендуем использовать NetLogo на уроках информатики в старших классах при изучении темы «Компьютерное моделирование» или на факультативных занятиях. В основе моделирования в среде NetLogo лежит развитие познавательных навыков учащихся, умений самостоятельно конструировать свои знания и ориентироваться в информационном пространстве, развитие критического мышления.

Изначально NetLogo был разработан как приложение для учебных занятий, однако сейчас им пользуются не только студенты, но и тысячи исследователей. Скачать последнюю версию можно по адресу https://ccl.northwestern.edu/netlogo/.

NetLogo, по своей сути, является продолжением языка Лого. В традиционном языке Лого ученики дают инструкции одному исполнителю – агенту «черепашке». В мультиагентном языке команды можно отдавать сотням и тысячам черепашек, программируя их способ поведения и взаимодействия друг с другом. Кроме подвижных «черепашек» в языке присутствуют «пятна», на которые поделена вся плоская поверхность мира. «Черепашки» передвигаются по «пятнам» и могут взаимодействовать как друг с другом, так и с «пятнами».

Вселенная NetLogo строится из агентов. Агенты выполняют инструкции оператора. Каждый агент выполняет свою собственную деятельность, но при этом все агенты работают параллельно и реагируют друг на друга. Оператор, он же создатель моделей может давать указания сотням и тысячам независимых агентов действующим параллельно. В NetLogo определены четыре типа агентов: «черепахи» (turtles), «пятна» (patches), «связи» (links), и «наблюдатель» (observer).

Рассмотрим интерфейс среды (рис.1) и основные базовые операции, с которыми можно познакомить школьников.

Рис.1  Интерфейс Netlogo

Рис.1 – Интерфейс Netlogo

Интерфейс среды состоит из следующих компонентов:

  • главное меню позволяющее получить доступ ко всем встроенным функциям;
  • три вкладыша основной части окна : «Интерфейс» (Interface) – для создания интерфейса приложения (кнопки, рычаги, мониторы и т.п), «Информация» (Information) – для тестового описания основных блоков созданного приложения, «Код» (Procedures) – для ввода программного кода;
  • дисплей (окно, отображающее действия, которые производят агенты во вселенной NetLogo)
  • командный центр (Command center) с командной строкой для ввода команд от имени конкретного агента.

Команды можно отдавать через командный центр или через специальный программный код в разделе «Код». Опишем командую через наблюдателя, которая выполнит простейшую арифметическую операцию и выведет результат в командном центре. Для этого используем оператор «Show» (рис.2)

Рис. 2  Простейшая арифметическая операция

Рис. 2 – Простейшая арифметическая операция

В следующем примере вычислим косинус 45 градусов (рис.3).

Рис. 3 -  Вычисление косинуса 45 градусов

Рис. 3 - Вычисление косинуса 45 градусов

Через командный центр можно давать команды и всем остальным агентам. Для этого в строке написания команды необходимо изменить имя агента, через которого будут подаваться приказы. В следующем примере через наблюдателя подается команда всем «пятнам» перекрасится в красный цвет (рис.4).

Рис. 4  Команда смены цвета «пятен»

Рис. 4 – Команда смены цвета «пятен»

Обращение идет снова через агента-наблюдателя. Дается команда ask patches (сказать агентам-пятнам), в квадратных скобках пишутся уже команды, которые должны исполнить все «пятна». В нашем случае это команда set pcolor red (установить для «пятен» цвет красный).

Обратится к агентам-пятнам можно и напрямую от имени самих «пятен», для этого в командной строке меняют исполнителя команд на patches (рис. 5).

Рис. 5  Прямое обращение о смене цвета агентам-пятнам

Рис. 5 – Прямое обращение о смене цвета агентам-пятнам

Давать команды можно и отдельным агентам-пятнам, определяя их по координатам мира. Система координат, при этом устанавливается в отдельном настроечном окне, для его вызова на вкладыше «Интерфейс» (Interface) необходимо нажать кнопку «Установка (Setting)». На рисунке 6 дается команда пятнам с координатами (0,0) и (1,0) изменить цвет.

Рис.6  Обращение к конкретным агентам-пятнам

Рис.6 – Обращение к конкретным агентам-пятнам

Главным исполнителем в среде является агент-черепашка. На рис. 7 представлены три команды, которые подаются со стороны наблюдателя:

  • clear-all (очистка экрана),
  • create-turtels N (создать агентов-черепашек, где N определяет количество создаваемых агентов, в нашем примере это один агент),
  • ask turtles (команда обращения к агентам - сказать черепашкам, при этом далее последует сама команда или команды в квадратных скобках),
  • setxy 5 5 (установить координаты черепашки (5,5)).

Рис. 7  Создание и размещение на экране агента-черепашки

Рис. 7 – Создание и размещение на экране агента-черепашки

Более удобно отдавать команды через процедуры (наборы команд) активизирующих их выполнение при нажатии определенных для них кнопок интерфейса. Создадим кнопку «Setup». На вкладыше «Interface» в списке выберем кнопку («Кнопка» или «Button»), для установки выбирается кнопка «зеленый плюс» («Добавить» или «Add»). В появившемся окне пишут имя команды (процедуры) которую должна активизировать кнопка (рис. 8).

Рис. 8  Создание кнопки

Рис. 8 – Создание кнопки

После создания кнопки, имя кнопки раскрашивается в красный цвет в связи с тем, что код процедуры для данной кнопки еще не определен (рис.9).

Рис. 9  Кнопка на вкладыше интерфейса

Рис. 9 – Кнопка на вкладыше интерфейса

Приведем пример простейшей программы для среды мультиагентного программирования. Программа должна будет смоделировать поведение во время эпидемии, в частности:

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

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

Кнопка «Setup» должна будет устанавливать первоначальные настройки популяции. Процесс перемещения черепашек будет активизировать еще одна кнопка «Go». Для того, чтобы кнопка «Go» - циклично повторяла свой код (который может быть прерван повторным нажатием на кнопку), при создании кнопки отметим галочкой пункт «Всегда». Для процедур определен следующий синтаксис:

To ИмяПроцедуры

ТелоПроцудуры

End

Создадим код, в котором при нажатии на кнопку «Setup» на экране возникнут 11 черепашек в точке (0,0), при нажатии на кнопку «Go» они все будут перемещается (рис.10).

Рис. 10  Программный код

Рис. 10 – Программный код

Результат исполнения кода представлен на рисунке 11.

Рис. 11  Результат исполнения кода, отражающий визуально перемещение агентов-черепашек

Рис. 11 – Результат исполнения кода, отражающий визуально перемещение агентов-черепашек

Проведем редактирование кода (рис.12). При нажатии на кнопку «Setup»: будут созданы 30 черепашек, расположение каждой из них будет выбрано случайным образом, все агенты раскрасятся в белый цвет, черепашка с индексом «0» будет перекрашена в красный цвет (больная черепашка).

При нажатии на кнопку «Go»: начнется движение черепашек, происходит обращение к черепашкам, раскрашенным в красный цвет – если они встречают другую черепаху, та должна поменять цвет на красный (заражение).

Рис. 12  Программный код

Рис. 12 – Программный код

Запустив приложение, мы увидим, как красные черепашки будут перекрашивать при встрече белых черепашек (рис.13).

Рис. 13  Результат работы приложения

Рис. 13 – Результат работы приложения

Усовершенствуем код (рис. 14). Добавим переменную для черепашек – energy (числовой показатель ее жизненных сил). Ее начальное значение для всех агентов сделаем равным 200. У каждой больной черепашки за итерацию цикла энергия уменьшается на единицу, у здоровых при этом она увеличивается на пять единиц.

Для данной реализации используются конструкция условия:

Ifelse (условие) [что делать если условие истинно] [что делать если условие ложно]

Для каждой черепашки определим визуальное отображение значения переменной (set label energy).

В случае если жизненные силы черепашки становятся меньше нуля, черепашка исчезает. Для данной реализации используется упрощенная конструкция условия, в которой определено только то, что нужно делать, в случае если условие выполняется:

If (условие) [что делать если условие истинно]

Рис. 14  программный код

Рис. 14 – программный код

Внешний вид черепашки так же можно изменить. Для этого в разделе меню «Средства» - «Редактор форм черепах», вызовем редактор форм (рис. 15) в котором вы можете создать новую форму или воспользоваться одной из предложенных.

Команда:

ask turtles [ set shape "wolf" ] - данной командой в программной коде вы зададите форму черепашки по ее имени в редакторе.

Рис. 15  Редактор форм

Рис. 15 – Редактор форм

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

Список литературы

  1. Агентное моделирование [Электронный ресурс]// Википедия – URL: https://ru.wikipedia.org/wiki/Агентное_моделирование (дата обращения 22.01.2016)
  2. NetLogo [Электронный ресурс]// https://ccl.northwestern.edu/netlogo/ (дата обращения 24.04.2016)
  3. Векслер В.А. Проектирование для системы дополнительного образования информационной модели специалиста [Текст]// Омский научный вестник. 2007. № 2 (56). С. 178-182.