Школьное образование по информатике и информационным технологиям
УДК 372.4 : 004.7 DOI 10.25559/SITITO.2017.4.432
Плаксин М.А. Цаплин С.В. 2
1 Национальный исследовательский университет «Высшая школа экономики» (Пермский филиал),
г. Пермь, Россия
2 Пермский государственный национальный исследовательский университет, г. Пермь, Россия
ПРОПЕДЕВТИКА ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ В ШКОЛЬНОЙ ИНФОРМАТИКЕ: ТЕМА «РОЙ РОБОТОВ» В КОНКУРСЕ «ТРИЗФОРМАШКА-2017»
Аннотация
Статья посвящена подготовке методических материалов для включения в школьный курс информатики темы «Параллельные вычисления», а именно набору задач для раздела «Рой роботов». Задачи были апробированы на конкурсе «ТРИЗформакшка-2017» -межрегиональном конкурсе по информатике, системному анализу и теории решения изобретательских задач (ТРИЗ) для школьников и студентов. Рассмотрены следующие задачи: компьютерная игра «Рой роботов» (программа распространяется бесплатно); задача про рой роботов-спасателей (в задаче наиболее ярко отражено «роевое поведение» группы исполнителей: объединение ограниченных возможностей отдельных роботов для решения общей задачи, непосильной для одного робота); «Клеточные художники» (задача про стаю клеточных автоматов, создающую узор); балансировка нагрузки в вычислительной сети с помощью многоагентной системы; шоу квадрокоптеров.
Ключевые слова
Информатика; параллельное программирование; параллельные вычисления; параллельные алгоритмы; начальная школа; средняя школа; методика; пропедевтика; ТРИЗформатика, ТРИЗформашка; рой роботов.
Plaksin M.A.12, Tsaplin S.V. 2
1 National Research University Higher School of Economics (Perm branch), Perm, Russia 2 Perm State National Research University, Perm, Russia
PROPAEDEUTICS PARALLEL COMPUTING IN SCHOOL INFORMATICS: THE TOPIC "SWARM OF ROBOTS" IN THE COMPETITION "TRIZFORMMASHKA-2017"
Abstract
The paper describes the methodological materials for the inclusion of the topic "Parallel computing" in the school informatics. The set of tasks "Swarm of Robots" are considered. The tasks were tested at the competition "TRIZformaska-2017"- an inter-regional competition in informatics, system analysis and the theory of inventive problems solving (TRIZ) for schoolchildren and students. The following tasks are considered: computer game "Swarm of Robots" (the software is freeware); the task about rescue-robots; the task about a swarm of cellular automata, creating a pattern; load balancing in the computer network using a multi-agent system; the show of quadrocopters.
Keywords
Informatics; parallel programming; parallel computing; parallel algorithms; elementary school; secondary school; teaching methods; propaedeutics; TRIZformatika, TRIZformashka; swarm of robots.
Введение
Современный этап развития computer science связан с массовым распространением параллелизма вычислений на всех уровнях (многомашинные кластеры, многопроцессорные ЭВМ, многоядерные процессоры). Это делает актуальным включение пропедевтики параллельного программирования в школьный курс информатики. В предыдущие годы, выступая на X и XI Международных научно-практических конференциях «Современные информационные технологии и ИТ-образование» [1, 2], один из авторов данной статьи назвал некоторые методические и психологические проблемы, связанные с этим процессом, предложил перечень вопросов для начального знакомства с параллельной тематикой в школьной информатике и описал некоторые результаты, достигнутые в данном направлении в ходе работ над «пермской версией» пропедевтического курса
информатики [3, 4] (учебники «пермской версии» печатаются издательством «БИНОМ. Лаборатория знаний»; авторский коллектив: М.А. Плаксин, Н.И. Иванова, О.Л. Русакова; рабочее название курса - «ТРИЗформатика»).
Настоящая статья посвящена одной из частей темы «Параллельные вычисления» - разделу «Рой роботов». В этом разделе предлагается рассмотреть разработку программно-технических систем, объединяющих множество исполнителей, которые совместно решают некую крупную задачу, но каждый из которых обладает большей или меньшей степенью самостоятельности в определении своего поведения [5, 6, 7]. Отдельные исполнители могут быть реализованы как программно, так и аппаратно. В случае программной реализации, как правило, отдельных исполнителей именуют агентами (интеллектуальными агентами, рациональными агентами). В случае аппаратной реализации отдельных исполнителей говорят про «рой роботов», «стаю роботов», «коллектив роботов». Для того, чтобы подчеркнуть усиление совместных интеллектуальных возможностей группы роботов используется термин «роевой интеллект». Впрочем, термин «робот» применяется и по отношению к программным исполнителям (достаточно вспомнить «поисковых роботов», которые постоянно «прочесывают» Интернет и индексируют сайты для поисковых систем). С другой стороны, действиями «аппаратных» роботов руководят компьютерные программы, к которым вполне применим термин «агенты».
Для отработки методических материалов по данной теме (как и по многим другим) был
использован конкурс «ТРИЗформашка-2017». (Конкурс «ТРИЗформашка» [8] - ежегодный межрегиональный Интернет-конкурс по информатике, системному анализу и ТРИЗ (теории решения изобретательских задач) для школьников и студентов. В марте 2018 г. конкурс состоится в 18-й раз. Возраст участников - от первого класса до четвертого курса. Среднее количество команд - около 100 (рекордное -202). География конкурса - от Владивостока до Риги. Сайт конкурса www.trizformashka.ru. В рамках работ над курсом ТРИЗформатки конкурс «ТРИЗформашка» выступает эффективной экспериментальной площадкой.)
В данной статье рассматривается некоторые задания конкурса «ТРИЗформашка-2017», связанные с темой «Рой роботов».
Компьютерная игра «Рой роботов»
Компьютерная игра «Рой роботов» была специально реализована для конкурса «ТРИЗформашка-2017». Целью игры является разработка параллельной программы для управления группой роботов.
Существуют русскоязычная и англоязычная версии игры.
Игра идет на прямоугольной сетке, представляющей поверхность Марса.
Сюжет игры следующий.
На Марсе расположена станция землян.
С нее должна стартовать экспедиция для исследования Юпитера. Экспедиция состоит из космических кораблей, которые надо загрузить продовольствием и топливом. Для каждого корабля указано, какое количество продовольствия и топлива он должен получить.
Продовольствие и топливо находятся на складах, которые располагаются под поверхностью Марса и имеют шлюзы для загрузки-выгрузки. Для каждого склада указано, какой груз на нем находится и в каком количестве.
И продовольствие, и топливо хранятся в контейнерах. Все контейнеры имеют стандартные размеры и вес.
Для переноса контейнеров с продовольствием и топливом со складов на космические корабли используются
транспортные роботы. Первоначально роботы находятся на своих базах на поверхности планеты. Для перемещения груза роботы должны дойти до одного из складов, зайти в него, загрузиться, дойти до одного из космических кораблей, зайти в него, разгрузиться. И так до тех пор, пока на корабль не будет доставлено требуемое количество продовольствия и топлива.
При движении по поверхности Марса робот может встретить препятствия: скалы и пропасти. Скалу робот должен обойти. Пропасть робот может либо обойти, либо перескочить (если может продвинуться достаточно далеко).
Роботы могут действовать в одиночку или сцепляться в двойки, тройки, четверки. Возможности роботов зависят от количества роботов в сцепке. Это относится как к
физическим возможностям (грузоподъемность, скорость), так и к интеллектуальным (в данной игре интеллектуальные возможности - это способность выбирать и изменять направление движения). Причем возрастание мощности сцепки идет нелинейно.
Возможности роботов представлены в следующей таблице:
Количество роботов в сцепке Грузоподъемность Движение
1 1 1 клетка по горизонтали или вертикали. Прыжок через расщелины невозможен.
2 3 От 1 до 3 клеток по горизонтали или вертикали. Появляется возможность прыжка через расщелины.
3 5 От 1 до 5 клеток по горизонтали или вертикали. Прыжки через расщелины на большее расстояние. Появляется умение поворачивать: робот может пройти несколько клеток в одном направлении, а затем изменить направление движения. Поворот над пропастью невозможен. Но за один ход робот может изменить направление движения только один раз.
4 8 От 1 до 8 клеток по горизонтали, вертикали или ДИАГОНАЛИ. Движение по диагонали - это новое умение четверки. Прыжки через расщелины на большее расстояние. Умение поворачивать. За один ход робот может сделать два поворота.
I-ЦньЬга^'
Файл Отладка Справка
[ Сохранить алгоритм ~| | Загрузить алгоритм ~| [ Выпоит
Загруженное задание М:\РойРоботов\Рой Роботов-2017 Игровая карта
Загруженный алгоритм: N:\РойРоботов\ 16\4.1 -1б.хг
~ :-в-
■ ■ ■ А
▲ Г?' А Щ А
■ ■ А
■ ■ ■
А ■
А
■ А ■ ■ ■ А А
А А А
▲ А А А
А
▲ А А А А А
А А А ■
А А ■ ■ ■ ■
А ■ ■ ■ ■ ■ ■
■ А 1*1
■
Рис.1. Окно «Карта Марса» игры «Рой роботов» из
Нелинейное возрастание возможностей роботов при их объединении является важным методическим моментом. Оно демонстрирует системный эффект (эмерджентность, синергию),
:а «ТРИЗформашка-2017» (русскоязычная версия)
который возникает при объединении частей в систему.
В задании конкурса «ТРИЗформашка-2017» специально было предложена ситуация, когда работу можно было выполнить быстро, если
States of objects
Туре Food Fuel
Robot 1А 0 0
Robot 1B 0 0
Robot 1C 0 0
Robot 1D 0 0
Rocket 1 0(71 ОГВ)
Rocket2 0(B) ОГВ)
Stock1 8 0
Stock2 10 0
Stock3 0 8
Stock4 9 0
Stock5 0 8
Stocke 10 0
Stock7 9 0
StockS 0 10
1 I
Рис.2. Окно «Состояние объектов» игры «Рой роботов» из конкурса «ТРИЗформашка-2017» (англоязычная версия) иметь возможность двигаться по диагонали. А для этого надо было объединить всех роботов в тетраду.
В конце игры (после загрузки космических кораблей) транспортные роботы должны вернуться на свои базы.
При запуске программы игрок видит три окна.
В первом окне расположена карта, на которой отмечены космические корабли, склады, горы и пропасти. Обозначения разных объектов, которые применяются на карте, можно посмотреть в команде «Справка» в верхнем меню.
Именно по карте будут передвигаться роботы для решения поставленной задачи.
Ячейки карты могут быть увеличены или уменьшены в размерах с помощью ползунка, расположенного над картой.
Пример окна с картой приведен на рис.1. Изображен момент, когда два одиночных робота в верхней части карты уже объединились в пару (верхний робот имеет обозначение 2А). Нижние два объединятся следующим ходом.
Второе окно описывает состояние объектов. В нем перечислены космические корабли, склады и роботы. Для склада указано, сколько в нем находится контейнеров с продовольствием и сколько - с топливом. Для космического корабля указываются два числа. В скобках записано, сколько груза каждого типа (топлива и продовольствия) должно быть загружено в этот корабль. Пред скобой записано, сколько чего загружено в данный момент. Для робота указано, сколько и какого груза он несет в данный момент.
В настоящий момент количество участвующих в игре объектов зафиксировано: 4 одиночных робота, 2 космических корабля и 8 складов.
Космические корабли и склады перенумерованы. Роботы обозначаются парой
«цифра-буква»: 1А, 1Б, 1В, 1Г, 2А, 2Б, 3А, 4А. Цифра обозначает количество роботов в сцепке, буква - «имя» робота данного типа.
Пример окна с описанием объектов приведен на рис.2.
Третье окно - это окно для ввода алгоритма действия роботов. В нем заготовлены графы сразу для всех возможных роботов: 1А, 1Б, 1В, 1Г, 2А, 2Б, 3А, 4А. Но эти роботы никогда не действуют все вместе. В начале игры действуют только роботы-одиночки, но нет ни двоек, ни тройки, ни четверки. Если два робота-одиночки стыкуются в пару, то сами по себе они больше ничего сделать не могут. Зато робот-двойка начинает действовать. И так далее. Роботы, действующие на данном шаге алгоритма, выделены цветом.
Пример окна с алгоритмом приведен на рис.3.
Алгоритм (точнее, его введенная часть) может быть выполнен весь сразу или по одному шагу. Кнопки для управления алгоритмом располагаются над картой. По мере выполнения алгоритма цветом выделяется уже выполненная часть.
Игра «Рой роботов» предназначена для освоения следующих элементов параллельного программирования:
1. Совместная работа нескольких исполнителей.
2. Истинный параллелизм (несколько исполнителей одновременно выполняют каждый свои действия).
3. Исполнители - однотипные.
4. Соотношение «исполнители-работы» -N : М (разные роботы грузят разные вещи на разные космические корабли).
5. Согласование деятельности исполнителей. Виды согласования: по делению работы на части, по времени, оп ресурсам. Необходимо распределить между роботами, кто что и куда грузит. Для объединения в группу два робота должны действовать одновременно.
6. Оптимальный порядок действий.
Системный эффект: возрастание совместной
мощности при объединении усилий нескольких роботов.
Все алгоритмы, составляемые для роя роботов, являются линейными (в системе команд отсутствуют развилки и циклы). Роботы действуют строго по заданному плану (отсутствуют механизмы обратной связи, команды ввода данных). Одиночные действия всех исполнителей строго синхронизированы (выполнение любой команды любым роботом занимает ровно один такт).
Algorithm editor
Clear
1А IB 1С 1D 2A 2B ЗА 4A
• а Dock. Dock. T 1
2 Dock. Dock.
3
4 — 3
5 T 2
в +F3
7 — 3 T 1
8 —F3
9 Undock.
10 <-1 Dock Dock
11 14-1
•
Рис.3. Окно «Алгоритм» игры «Рой роботов» из
Автор компьютерной реализации игры «Рой роботов» - Сергей Витальевич Цаплин, студент механико-математического факультета
Пермского государственного национального исследовательского университета.
Реализация выполнена для настольных компьютеров для операционной системы Windows, начиная с версии Windows XP.
Игра состоит из двух программ: редактора зданий и проигрывателя алгоритмов.
Программа распространяется свободно. Единственное условие - через месяц после начала эксплуатации программы сообщить разработчикам свое мнение. В настоящее время для поучения игры следует обратиться к авторам данной статьи. Планируется, что данная игра будет использована в следующем конкурсе «ТРИЗформашка-2018» после чего будет выложена в свободный доступ на сайт конкурса (www.trizformashka.ru) и в группы ТРИЗформашка в социальных сетях Фейсбук и ВКонтакте
(https://www.facebook.com/groups/trizformashka /, http://vk.com/trizformashka).
Задача про рой роботов-спасателей
Управление группой роботов (агентов) может быть полностью централизованным или децентрализованным в большей или меньшей степени. В качестве «опорных точек» децентрализованного управления выделяют три категории: коллектив роботов, рой роботов и стаю роботов.
В коллективе роботов обмен информацией осуществляется по принципу «все со всеми». Каждый робот передает всю свою информацию о себе и об окружающей среде всем членам группы и, в свою очередь, получает всю информацию от всех членов группы. Каждый член группы обладает полнотой информации, знает о других членах группы все. Но выводы на основании полученного знания каждый делает сам. Каждый
са «ТРИЗформашка-2017» (англоязычная версия)
сам определяет, что должен делать дальше именно он.
Стая роботов противостоит коллективу роботов в том смысле, что если в коллективе «все знают обо всех все», то в стае принцип противоположный: каждый сам за себя, никто ничего не знает о других. Какая-либо специальная связь между роботами отсутствует. Каждый робот самостоятельно собирает информацию об окружающей среде и принимает решение о своих действиях. Отсутствие информации о других роботах, означает невозможность какой-либо глобальной оптимизации. Впрочем, отсутствие явной связи между роботами не означает, что роботы вообще ничего не знают о существовании друг друга. Средством взаимодействия в данном случае может выступать окружающая среда. Каждый робот каким-то образом воздействует на окружающий мир. Другие роботы могут обнаружить эти воздействия и отреагировать на них.
Рой роботов - структура, промежуточная между коллективом и стаей В рое каждый робот взаимодействует лишь с несколькими соседними роботами, попадающими в его «область видимости» (его «ближнюю окрестность»), область, в которой действуют его средства связи. По результатам этого общения каждый робот самостоятельно принимает решение о своих дальнейших действиях. Отсутствие информации о других роботах, не попадающих в «ближнюю окрестность» данного робота, означает невозможность какой-либо глобальной оптимизации. Малый размер окрестности позволяет оснастить входящих в рой микророботов слабыми, но легкими и энергоэкономными средствами связи. Наличие непосредственных контактов между роботами позволяет им в случае необходимости объединять свои усилия. Робот может получить
не только ту информацию о внешней среде, которую он собрал непосредственно, но и ту, которую собрали его соседи. Особенно это может быть полезно в случае, когда разные роботы оснащены разными сенсорами. Из-за малого радиуса действия средств связи робот не может непосредственно обратиться к человеку-оператору. Но он может отправить сообщение соседям по группе с просьбой «передать по цепочке». Робот, встретивший непреодолимую преграду, может попросить помощи для ее преодоления. Робот, который не в состоянии сам выполнить некоторую работу, может позвать на помощь соседей. Заметим, что если в ближней окрестности зовущего робота нужного количества соседей не окажется, зов можно передать по цепочке.
В задачах конкурса «ТРИЗформашка-2017» были отражены разные способы взаимодействия роботов в группе. Задача «Спасательная операция (роботы-спасатели)» посвящена описанию совместной работы роя роботов. Выглядит она так.
В мультиагентных системах нет единого руководящего центра. Вместо этого отдельные агенты по мере необходимости договариваются между собой о совместных действиях. Рассмотрим пример такого взаимодействия.
Цепь роботов прочесывает участок в поисках целевых объектов. Например, после землетрясения ищут пострадавших.
Найденные целевые объекты надо доставить в указанное место эвакуации.
Вес целевого объекта больше грузоподъемности робота. Для переноски объекта надо собрать вместе несколько роботов. Поэтому, найдя объект, робот посылает радиосигнал, в котором указываются координаты цели. Сигнал посылается не конкретным роботам, а «в пространство». Робот, получивший такой сигнал, меняет направление движения и движется к указанной точке.
Когда в точке соберется достаточное количество роботов, они посылают сигнал с отказом от дополнительной помощи. Роботы, получившие такой сигнал, возобновляют прочесывание. Роботы, собравшиеся вокруг целевого объекта, поднимают его и несут в место эвакуации.
Игра идет на прямоугольной сетке.
Изначально роботы стоят вдоль нижнего (начального) края. Окончание движения роботов - противоположный (конечный) край. Роботы должны выйти туда пустыми или вынести найденные целевые объекты (пострадавших).
Скорость движения робота - она клетка по
горизонтали, вертикали или диагонали.
Роботы изначально стоят на расстоянии 2-х клеток друг от друга.
Каждому роботу в качестве окончания маршрута назначена клетка на противоположной стороне сетки.
На сетке расположены препятствия и целевые объекты (пострадавшие).
Для поиска целевых объектов и определения препятствий робот использует видеокамеру. Область видения - 2 клетки во все стороны. То есть робот находится в середине квадрата со стороной 5 клеток и «видит» объекты, находящиеся в этом квадрате. Естественно, видеокамера не в состоянии «видеть сквозь стены». То есть объекты, скрытые препятствиями, роботу не видны.
Радиосигнал, передаваемый роботом, слышен на расстоянии 4 клеток во все стороны. То есть робот-отправитель находится в середине квадрата со стороной 9 клеток, и любой робот, находящийся в таком квадрате, получит посланный радиосигнал.
На одной клетке может находиться несколько роботов.
Чтобы поднять целевой объект, все роботы-«носильщики» должны встать на ту же клетку, где находится этот объект, а после подъема двигаться все вместе по одному маршруту.
Действия робота определяются набором правил.
Робот всегда находится в одном из состояний.
Для каждого состояния задан свой набор правил, определяющих поведение робота.
Одним из действий может быть смена состояния.
Состояния робота: прочесывание, движение к цели, ожидание и погрузка, транспортировка. Состояние «Прочесывание» является начальным (все роботы начинают работу в состоянии «Прочесывание»).
Набор правил:
Правило для всех состояний
Если на клетке, куда надо перейти, находится препятствие, обходить слева.
Прочесывание
Если дошел до конца маршрута, остановиться.
Если увидел целевой объект,
(подать сигнал о помощи с координатами целевого объекта;
перейти в состояние «Движение к цели»
)
Если получил сигнал о помощи,
(подать сигнал о помощи с координатами целевого объекта;
*
перейти в состояние «Движение к цели»
)
Если не выполнено ни одно из предыдущих условий, сделать шаг вперед в направлении своей точки окончания маршрута.
Движение к цели
Если не дошел до цели,
(подать сигнал о помощи с координатами целевого объекта;
сделать шаг по направлению к цели.
)
Если дошел до цели,
(подать сигнал о помощи с координатами целевого объекта;
перейти в состояние «Ожидание и
погрузка»
)
Если получил сигнал с отказом, перейти в состояние «Прочесывание»
Ожидание и погрузка
Если на клетке с целевым объектом не собралось достаточное количество роботов, подать сигнал о помощи с координатами целевого объекта.
Если на клетке с целевым объектом собралось достаточное количество роботов, (послать сигнал с отказом;
поднять груз;
точкой окончания маршрута определить ближайшую точку конечного края области;
перейти в состояние «Транспортировка» )
Транспортировка
Если дошел до конца маршрута, остановиться.
шаг вперед в направлении точки окончания маршрута.
Рассмотрим начало примера, на котором работа роя роботов-спасателей объяснялась участникам конкурса «ТРИЗформашка-2017».
Пусть для переноски пострадавшего нужны 3 робота.
Пусть размер поля 16х21. Слева и сверху для удобства обозначены номера строк и граф.
Заштрихованы клетки с препятствиями, которые роботы вынуждены обходить.
На поле находятся два целевых объекта (два пострадавших), обозначенных буквами А и Б. Они находятся на клетках (13, 2) и (11, 13).
В поисках участвуют 7 роботов. Роботы, не передающие сигнал, обозначены своими номерами. Роботы, передающие сигнал, обозначены номером с восклицательным знаком.
Пусть первым шагом роботы вступают на клетки (1, 2), (1, 5), (1, 8), (1, 11), (1, 14), (1, 18), (1, 20).
Тогда после 9 шагов состояние будет следующим. На схеме отмечен путь, пройденный каждым из роботов.
На 9-м шаге №4 выйдет на позицию, из которой он увидит цель А (видимая область на схеме отмечена серым цветом). Поэтому на 10-м шаге он подает сигнал о помощи с указанием координат целевого объекта (11, 13) и переключается в состояние «Движение к цели». На следующей схеме серым цветом выделены те клети, которых достигает сигнал. Призыв о помощи услышит только №5. Но на 10-м шаге он и сам выйдет на позицию, с которой увидит цель
Если не дошел до конца марш
рута, сделать
А.
9 10 11 12 13 14 15 16 17 18 19 20 21
16
15
14
13
12
11
10
Б
Заметим, что малая дальность действия видеокамер не позволяет роботам №1, №2 и №3 увидеть цель Б, а роботам №6 и №7 цель А, хотя между ними и нет никаких препятствий. Все эти
роботы продолжают движение точкам своих маршрутов.
Состояние после 10-го шага:
к конечным
16
15
14
13
12
11
10
10
11
4!
12
13
14
15
16
17
18
19
20
Б
На 11-м шаге №4 движется к цели А, продолжая посылать сигнал о помощи.
№5 посылает сигнал с теми же координатами (11, 13) и сам переключается в состояние «Движение к цели». На схеме горизонтальной
штриховкой выделены клетки, до которых не дойдет сигнал от №4, но дойдет от №5. Сигнал от №5 будет получен №6.
Состояние после 11-го шага:
16
15
14
13
12
11
10
10
11
4!
12
4!
13
14
5!
15
16
17
18
19
20
Б
На 12-м шаге начнутся изменения на левом фланге. №1 увидит цель Б (видимые ему клетки на схеме ниже выделены серым).
№4 и №5 дойдут до цели А, продолжая посылать сигналы о помощи. (Поскольку их сигналы роли играть уже не будут
соответствующее затенение со схемы убрано.)
Но сигнал о помощи, поученный от №5, будет ретранслирован №6 (который переключится в состояние «Движение к цели»). Сигнал от №6 дойдет до №7. Соответствующие клетки на схеме затемнены.
Состояние после 12-го шага:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
16
15
14
13 Б
12
11 1 А 4!5! 7
10 1 2 3 4! § 5! 6! 7
9 8 1 1 2 2 3 3 * 4! 4 5 5 6 6 7 7
7 1 2 3 Ш Ж 1 4 5 6 7 НШ
6 1 2 ЙЯ : 3 3 3 4 5 : 6 7 7
5 1 2 2 2 3 4 5 6 7
4 1 Ш 2 3 4 5 6 7
3 1 1 2 3 4 5 6 7
2 1 2 3 4 5 6 7
1 1 2 3 4 5 6 7
И так далее. В ходе спасательной операции роботы №1, №2 и №3 выносят пострадавшего Б, роботы №4, №5 и №6 - пострадавшего А. После того, как робот №6 дойдет до цели А, услуги робота №7 в этой точке станут не нужны. Он получит отказ и вернется к прочесыванию местности по своему прежнему маршруту.
1. Вопросы, на которые требуется ответить в задании:
2. Как будет проходить поиск, если цели расположены так: А на клетке (11, 8), Б на клетке (8, 21)?
Опишите неточности, которые допущены при программировании роботов. В каких ситуациях поведение роботов будет некорректным, и в чем будет проявляться эта некорректность? Как можно исправить эту неточность?
Имеет смысл отметить тот факт, что прочесывание местности роботами не гарантирует, что все пострадавшие будут найдены. Так же, как и при прочесывании людьми.
Что касается второго вопроса, то предлагаемые усовершенствования не должны затрагивать роевой характер работы (например, не должны вводить централизованное управление). В качестве примера неточности в описании поведения роботов можно указать такой. Если робот получит сразу два призыва о помощи, не определено, к какой из целей он должен двигаться.
«Клеточные художники» (Задача про стаю клеточных автоматов, создающую узор)
Каждому, наверняка, случалось рисовать геометрические узоры. Но художник-человек представляет себе рисунок целиком, а потом уже начинает прорисовывать его детали. Посмотрим, как с этой задачей справляется рой роботов, ни один из которых в отдельности не понимает общей картины.
Пусть есть клетчатый лист бумаги. Вдоль его верхнего края выстроилась шеренга роботов. На каждом шаге каждый робот переползает на одну клетку вниз и либо закрашивает ее, либо оставляет пустой. Надо ли закрашивать клетку робот решает, глядя на клетки расположенные в предыдущей строке: прямо над ним, слева и справа от него. Эти клетки будем называть «окрестностью» робота.
Меняя окрестность, правила закраски и состояние начальной строки, можно научить роботов создавать разные рисунки.
Возьмем простейших роботов, у которых окрестность состоит всего из трех клеток: одна -прямо над роботом, вторая - сверху слева, третья - сверху справа.
Пусть правила закраски определяются следующей таблицей:
■п щ щ ■п т ГИЛ ггя мм
■ и и ■ ■ и и и
Дальше черные (закрашенные) клетки будем обозначать единицей, белые (незакрашенные) -нулем. Тогда управляющая таблица робота приобретет такой вид:
Клетки 1 1 1 1 0 0 0 0
окрестности в 1 1 0 0 1 1 0 0
предыдущей 1 0 1 0 1 0 1 0
строке
Клетка в 1 0 1 1 1 0 1 0
следующей
строке
Пусть ширина страницы - 15 клеток.
Пусть в верхней строке изначально закрашена только одна клетка - центральная.
Будем считать, что слева от самого левого робота (№1) и справа от самого правого (№15) всегда находится пустая клетка.
№ строки 1 1
2
3
4
№ робота 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Перейдя на 2-ю строку, все роботы, кроме 5, 6, и 7 увидят над собой только белые клетки (комбинация 000). Поэтому они оставят свою клетку второй строки незакрашенной.
Робот №5 увидит над собой комбинацию 001,
робот №6 - комбинацию 010,
№7
комбинацию 100. В соответствии с управляющей таблицей роботы №5 и №7 закрасят клеточки второй строки, а робот №6 оставит свою клеточку пустой.
Страница приобретет вид:
№ строки 1 1
2 1 1
3
4
№ робота 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
При переходе на 3-ю строку окрестности из одних нулей увидят роботы №№1, 2, 3, 9, 10, 11,
010, №6 - 101, №7
- 010, №8 - 100. Поэтому роботы №№4, 6 и 8 свои клеточки закрасят, остальные оставят белыми.
№ строки 1 1
2 1 1
3 1 1 1
4
№ робота 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Еще через шаг будут закрашены уже 4
№ строки 1 1
2 1 1
3 1 1 1
4 1 1 1 1
5
№ робота 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Через некоторое число шагов на странице будет нарисована ступенчатая треугольная башенка.
Действия робота на каждом шаге определяются тем, что на предыдущем шаге делал он сам и два его ближайших соседа.
Вопросы:
1) Пусть изначально в верхней строке закрашена правая половина строки, начиная с клетки №8. Как будут выглядеть первые 8 строк страницы?
2) Пусть робот действует по следующему правилу.
■п щ щ ■ мм
■ и Ш и и и ■
Клетки окрестно сти в 11 1 11 0 10 1 10 0 01 1 01 0 00 1 00 0
предыду щей строке
Клетка в 1 0 1 0 0 0 0 1
следующ ей
строке
Изначально закрашена одна средняя клетка.
Как будут выглядеть верхние 10 строк страницы?
3) Пусть страница представляет собой квадрат 15х15 клеток. Запрограммируйте роботов таким образом, чтобы страница была обведена в черную рамку, внутри которой чередуются белые и черные горизонтальные полосы.
4) Что будет, если этих же роботов разместить на странице, у которой верхняя строка не черная, а белая?
Данная задача демонстрирует деятельность стаи роботов, влияющих друг на друга через изменение окружающей среды.
Балансировка нагрузки в вычислительной сети с помощью многоагентной системы
Пусть у нас есть вычислительная сеть, состоящая из отдельных вычислительных узлов. Каждый узел связан с какими-то другими узлами сети (но не со всеми!).
Через сеть идет поток заданий, которые должны быть выполнены.
Для минимизации времени выполнения заданий имеет смысл распределять задания по вычислительным узлам как можно равномернее. (Понятно, что если на один узел придет 100 заданий, а на другой - 10, то задания на первом узле будут выполняться дольше, а второй узел, может быть, вообще будет простаивать.)
Равномерное распределение заданий по узлам называется балансировкой.
Будем говорить, что вычислительные узлы сбалансированы по нагрузке, если количество заданий на них отличается не больше, чем на единицу.
Балансировку сети можно поручить одному большому планировщику. А можно - целому рою специальных «агентов» (специальных программ). Агенты работают каждый на своем узле, следят за балансировкой и могут перераспределять задания с одного узла на другой.
Балансировка нагрузки проводится тактами.
В конце каждого такта все агенты балансировки записывают в специальную «карточку» информацию о том, сколько заданий в данный момент находится на их узле. Эта карточка доступна для просмотра всем агентам.
На каждом такте агент просматривает карточку и может перераспределить часть заданий со своего узла на другие узлы, с которыми связан его узел. В результате такого перераспределения ранее несбалансированные узлы должны оказаться сбалансированными.
Инициатива по передаче заданий остается за
тем узлом, на котором заданий больше. Узлы с меньшим количеством задач не отбирают заданий у узлов с большим количеством задач.
Задания передаются в первую очередь узлу с меньшей загрузкой. При равной нагрузке задания передаются узлу с меньшим номером.
При необходимости распределяющий узел оставляет себе большую часть заданий. Например, если на узле находятся 10 заданий, а он связан с двумя пустыми узлами, то распределяющий узел оставит себе 4 задания, а двум пустым узлам передаст по 3 задания каждому. Если в распределяющем узле 7 заданий, а в принимающих 4 и 3, то в распределяющем останется 5, а в принимающих станет 5 и 4.
Пусть у нас есть сеть из десяти узлов, схема
Опишите процесс балансировки в случае, если в начальный момент в сеть поступило 43 задания: 16 на второй узел, 9 на четвертый, 7 на седьмой и 11 на девятый.
В данной задаче каждый из агентов имеет полную информацию о сложившейся ситуации. Можно было бы решать задачу глобальной оптимизации. Но это слишком сложно. Вместо этого каждый агент решает задачу локальной оптимизации. Глобальный оптимум будет достигнут через несколько шагов.
Шоу квадрокоптеров
Дано: 10 дронов квадрокоптеров (четырехвинтовых беспилотных летательных аппаратов), оснащенных прожекторами. Прожектора направлены вниз. Система команд дрона позволяет подняться/опуститься на заданное число метров, зависнуть на месте, сдвинуться на заданное число метров в заданном направлении (направление задается по сторонам света),
включить/выключить прожектор. СКИ имеет вид:
Полное наименование Краткое обозначение
1. Вверх N Вверх N
2. Вниз N Вниз N
3. На месте На месте
4. На север N С N
5. На юг N Ю N
6. На запад N З N
7. На восток N В N
8. Включить прожектор Вкл.
9. Выключить прожектор Выкл.
N - число метров.
Изначально все дроны располагаются подряд друг за другом на земле вдоль линии с севера на юг на расстоянии двух метров друг от друга.
Опишите зрелище, которые увидят с земли зрители вечернего представления, если дроны будут действовать по следующей программе.
Далее дается таблица, содержащая 25 строк, в каждой из которых располагается линейка из
десяти команд для десяти дронов.
Заметим, что в данном случае речь идет о стае роботов, которые между собой никак не взаимодействуют. Вопрос о том, управляются ли они централизованно (по радио) или каждый из квадрокоптеров автономно выполняет собственную программу, для решения данной задачи роли не играет. Здесь требуется только отследить синхронные действия десяти исполнителей.
Заключение
Доклад посвящен обсуждению серии компьютерных игр и задач, предназначенных для пропедевтики в школьном курсе информатики темы «Параллельные
вычисления», а в ней - раздела «Рой роботов». Материалы прошли апробацию в конкурсах «ТРИЗформашка-2017». Планируется, что они найдут отражение в следующем издании «пермской версии» учебников информатики для начальной и средней школы.
Литература
Плаксин М.А. «Суперкомпьютеры» vs «параллельное программирование». «Параллельное программирование» vs «совместная деятельность». Как изучать тему «параллельные вычисления» в средней школе? // Современные информационные технологии и ИТ-образование. Научный журнал. Том 1 (№11), 2015. С.302-309.
Плаксин М.А. О некоторых методических средствах пропедевтики параллельных вычислений в школьной информатике. // Современные информационные технологии и ИТ-образование. Научный журнал. Том 12 (№3), часть 1, 2016. С.219-227. Плаксин М.А. Информатика: учебник для 3 класса: в 2 ч. /М.А.Плаксин, Н.Г.Иванова, О.Л.Русакова. - М.: БИНОМ. Лаборатория знаний, 2013.
Плаксин М.А. Информатика: учебник для 4 класса: в 2 ч. /М.А.Плаксин, Н.Г.Иванова, О.Л.Русакова. - М.: БИНОМ. Лаборатория знаний, 2013.
Иванов Д.Я. Использование принципов роевого интеллекта для управления целенаправленным поведением массово применяемых микророботов в экстремальных условиях. //Известия высших учебных заведений. 2011, №9, с.70-78. Каляев И.А, Гайдук А.Р., Капустян С.Г. Модели и алгоритмы коллективного управления в группах роботов. - М.: ФИЗМАТЛИТ, 2009.
Рассел С. Норвиг П. Искусственный интеллект. Современный подход. 2-е изд. - М.: Издательсктй дом «Вильямс», 2006. Иванова Н.Г., Плаксин М.А., Русакова О.Л. ТРИЗформашка. //Информатика. N05 (606), 1-15.03.2010. С.3-19.
References
1. Plaksin M.A. «Superkomp'yutery» vs «parallel'noe programmirovanie». «Parallel'noe programmirovanie» vs «sovmestnaya deyatel'nost'». Kak izuchat' temu «parallel'nye vychisleniya» v sredney shkole? // Sovremennye informatsionnye tekhnologii i IT-obrazovanie. Nauchnyy zhurnal. Tom 1 (№11), 2015. S.302-309.
2. Plaksin M.A. O nekotoryh metodicheskih sredstvah propedevtiki parallel'nyh vychislenij v shkol'noj informatike. // Sovremennye informatsionnye tekhnologii i IT-obrazovanie. Nauchnyy zhurnal. Tom 12 (№3), chast' 1, 2016. S.219-27.
3. Plaksin M.A. Informatika: uchebnik dlja 3 klassa: v 2 ch. [Informatics: the textbook for grade 3: 2 parts]. /M.A.Plaksin, N.G.Ivanova, O.L.Rusakova. - M.: BINOM. Laboratorija znanij, 2013.
4. Plaksin M.A. Informatika: uchebnik dlja 4 klassa: v 2 ch. [Informatics: the textbook for grade 4: 2 parts]. /M.A.Plaksin, N.G.Ivanova, O.L.Rusakova. - M.: BINOM. Laboratorija znanij, 2013.
5. Ivanov D.Ja. Ispol'zovanie principov roevogo intellekta dlja upravlenija celenapravlennym povedeniem massovo primenjaemyh mikrorobotov v jekstremal'nyh uslovijah. //Izvestija vysshih uchebnyh zavedenij. 2011, №9, s.70-78.
6. Kaljaev I.A, Gajduk A.R., Kapustjan S.G. Modeli i algoritmy kollektivnogo upravlenija v gruppah robotov. - M. : FIZMATLIT, 2009.
7. Rassel S. Norvig P. Iskusstvennyj intellekt. Sovremennyj podhod. 2-e izd. - M.: Izdatel'sktj dom «Vil'jams», 2006.
8. Ivanova N.G., Plaksin M.A., Rusakova O.L. TRIZformashka [The contest TRIZformashka] //Informatika [Informatics] N05 (606), 115.03.2010. P.3-19.
Поступила 11.09.2017
Об авторах:
Плаксин Михаил Александрович, кандидат физико-математических наук, доцент кафедры информационных технологий в бизнесе, Пермский филиал Национального исследовательского университета «Высшая школа экономики»; доцент кафедры математического обеспечения вычислительных систем, Пермский государственный национальный исследовательский
университет, [email protected]
Цаплин Сергей Витальевич, студент механико-математического факультета, Пермский государственный национальный исследовательский университет, [email protected]
Note on the authors:
Plaksin Mikhail А., Ph.D. in computer science, Associate Professor of the Department of Information Technologies in Business, Perm Branch of the National Research University "Higher School of Economics"; Associate Professor of the Department of software of computing systems, Perm State National Research University, [email protected]
Tsaplin Sergey V., student of the Faculty of Mechanics and Mathematics, Perm State National Research University, [email protected]