1classCollaborativeRobot: 2def__init__(self,robot_id,communication_module): 3self.id=robot_id 4self.comm=communication_module 5self.position=Position(0,0) 6self.task_queue=[] 7self.partners=[] 8 9defsend_status(self):10status={11"id":self.id,12"position":self.position,13"battery":self.get_battery_level(),14"available":len(self.task_queue)==015}16self.comm.broadcast("status",status)1718defreceive_message(self,message):19ifmessage["type"]=="task_assignment":20self.assign_task(message["task"])21elifmessage["type"]=="coordination_request":22self.handle_coordination_request(message)23elifmessage["type"]=="emergency":24self.handle_emergency(message)2526defcollaborate_with(self,partner_id,task):27# Установление партнерства28self.partners.append(partner_id)2930# Планирование совместной работы31joint_plan=self.plan_collaboration(task)3233# Отправка плана партнеру34self.comm.send_to(partner_id,"joint_plan",joint_plan)3536# Выполнение своей части37self.execute_plan_part(joint_plan.my_part)
⏱️ План работы (60 минут)
1Этап 1: Выбор задачи и планирование (10 мин)
2• Выбор проектной задачи
3• Определение ролей роботов
4• Планирование алгоритма взаимодействия
5 6Этап 2: Разработка протоколов (15 мин)
7• Создание схемы коммуникации
8• Определение типов сообщений
9• Проектирование алгоритмов синхронизации
1011Этап 3: Программирование (25 мин)
12• Написание кода для каждого робота
13• Реализация протоколов связи
14• Программирование логики координации
1516Этап 4: Тестирование и отладка (15 мин)
17• Проверка взаимодействия роботов
18• Отладка синхронизации
19• Оптимизация производительности
2021Этап 5: Демонстрация (10 мин)
22• Презентация решения
23• Демонстрация работы команды роботов
🎯 Алгоритмы для задач
🚚 Транспортная команда
1classTransportTeam: 2def__init__(self): 3self.leader=Robot("transport_leader") 4self.follower=Robot("transport_follower") 5self.cargo_length=50# см 6 7defsynchronized_movement(self,target): 8# Лидер планирует маршрут 9path=self.leader.plan_path_to(target)1011# Отправка плана ведомому12self.leader.send_to_follower("path_plan",path)1314# Синхронное движение15forwaypointinpath:16# Лидер движется к точке17self.leader.move_to(waypoint)1819# Ведомый следует с учетом длины груза20follower_target=self.calculate_follower_position(waypoint)21self.follower.move_to(follower_target)2223# Ожидание завершения движения24self.wait_for_synchronization()2526defcoordinated_turn(self,angle):27# Специальный алгоритм для поворота с грузом28turn_center=self.calculate_turn_center()2930# Лидер поворачивает по внешнему радиусу31leader_radius=self.cargo_length/2+self.leader.width/23233# Ведомый - по внутреннему радиусу34follower_radius=self.cargo_length/2-self.follower.width/23536# Синхронное выполнение поворота37self.execute_synchronized_turn(leader_radius,follower_radius,angle)
🗺️ Исследователи территории
1classExplorationTeam: 2def__init__(self,territory_bounds): 3self.robots=[Robot(f"explorer_{i}")foriinrange(3)] 4self.territory=territory_bounds 5self.shared_map=SharedMap() 6 7defdivide_territory(self): 8# Разделение территории на зоны 9zones=self.territory.split_into_zones(len(self.robots))1011# Назначение зон роботам12forrobot,zoneinzip(self.robots,zones):13robot.assign_exploration_zone(zone)1415defexplore_collaboratively(self):16whilenotself.territory_fully_explored():17forrobotinself.robots:18# Исследование своей зоны19new_discoveries=robot.explore_step()2021# Обновление общей карты22self.shared_map.update(new_discoveries)2324# Обмен информацией с командой25robot.share_discoveries(new_discoveries)2627# Проверка на необходимость помощи28ifrobot.needs_help():29self.request_assistance(robot.id)3031defrequest_assistance(self,requesting_robot_id):32# Поиск свободного робота для помощи33available_robots=[rforrinself.robots34ifr.id!=requesting_robot_idandr.is_available()]3536ifavailable_robots:37helper=min(available_robots,38key=lambdar:r.distance_to(requesting_robot_id))39helper.assist_robot(requesting_robot_id)
🔧 Сборочная линия
1classAssemblyLine: 2def__init__(self): 3self.stations=[ 4AssemblyStation("preparation",0), 5AssemblyStation("assembly",1), 6AssemblyStation("quality_check",2) 7] 8self.conveyor=Conveyor() 910defprocess_item(self,item):11current_station=01213whilecurrent_station<len(self.stations):14station=self.stations[current_station]1516# Обработка на текущей станции17processed_item=station.process(item)1819# Уведомление следующей станции20ifcurrent_station<len(self.stations)-1:21next_station=self.stations[current_station+1]22next_station.prepare_for_item(processed_item)2324# Передача на следующую станцию25ifcurrent_station<len(self.stations)-1:26self.conveyor.transfer_item(processed_item,current_station+1)2728current_station+=12930classAssemblyStation:31defprocess(self,item):32# Ожидание готовности станции33whilenotself.is_ready():34time.sleep(0.1)3536# Выполнение операции37result=self.perform_operation(item)3839# Сигнал о завершении40self.signal_completion()4142returnresult
🎤 Демонстрация и защита
📊 Презентация решений
План выступления (4 минуты на команду):
Задача - что должна решать команда роботов?
Архитектура - как организовано взаимодействие?
Протоколы - как роботы общаются друг с другом?
Демонстрация - показ работы в действии
Анализ - что получилось, что можно улучшить?
❓ Вопросы для обсуждения:
Как система адаптируется к отказу одного робота?
Можно ли масштабировать решение на больше роботов?
Какие узкие места есть в алгоритме?
Как оптимизировать время выполнения задачи?
🏆 Критерии оценки
📊 Матрица оценивания (20 баллов):
Критерий
Максимум
Описание
Алгоритмы
5
Эффективность, оптимальность, обработка ошибок
Техническая реализация
5
Код, коммуникация, надежность
Выполнение задачи
5
Успешность, время, устойчивость
Презентация
5
Демонстрация, понимание, анализ
🎯 Шкала оценок:
18-20: “5” (отлично)
14-17: “4” (хорошо)
10-13: “3” (удовлетворительно)
🔧 Отладка распределенных систем
🐛 Типичные проблемы
Проблема синхронизации:
1# ❌ Плохо - роботы не ждут друг друга 2defbad_synchronization(): 3robot1.start_task() 4robot2.start_task()# Может начать раньше robot1 5 6# ✅ Хорошо - явная синхронизация 7defgood_synchronization(): 8barrier=SynchronizationBarrier(2) 910robot1.prepare_task()11robot2.prepare_task()1213barrier.wait()# Ждем готовности всех1415robot1.start_task()16robot2.start_task()
Проблема deadlock (взаимная блокировка):
1# ❌ Deadlock - роботы ждут друг друга вечно 2defpotential_deadlock(): 3robot1.request_resource(resource_A) 4robot1.request_resource(resource_B)# Может зависнуть 5 6robot2.request_resource(resource_B) 7robot2.request_resource(resource_A)# Может зависнуть 8 9# ✅ Избежание deadlock - упорядоченный захват ресурсов10defavoid_deadlock():11# Всегда захватываем ресурсы в одинаковом порядке12resources=sorted([resource_A,resource_B])1314forrobotin[robot1,robot2]:15forresourceinresources:16robot.request_resource(resource)
📊 Мониторинг системы
1classSystemMonitor: 2def__init__(self,robots): 3self.robots=robots 4self.performance_log=[] 5 6defmonitor_performance(self): 7whileTrue: 8metrics={ 9"timestamp":time.now(),10"active_robots":len([rforrinself.robotsifr.is_active()]),11"task_completion_rate":self.calculate_completion_rate(),12"communication_latency":self.measure_latency(),13"system_efficiency":self.calculate_efficiency()14}1516self.performance_log.append(metrics)1718# Предупреждения о проблемах19ifmetrics["communication_latency"]>1000:# мс20self.alert("High communication latency detected")2122ifmetrics["system_efficiency"]<0.7:23self.alert("System efficiency below threshold")2425time.sleep(5)# Мониторинг каждые 5 секунд
🤔 Рефлексия “Светофор+”
📝 Анализ работы
🟢 ЗЕЛЕНЫЙ (что получилось хорошо):
🟡 ЖЕЛТЫЙ (что можно улучшить):
🔴 КРАСНЫЙ (что вызвало затруднения):
➕ ПЛЮС (что взять на заметку):
Оценка работы команды (1-5): ___
🏠 Домашнее задание
🎯 Отчет по практической работе
📋 Структура отчета:
Название проекта многоагентной системы
Цель и задачи системы
Состав команды роботов и их роли
Алгоритмы координации с блок-схемами
Система коммуникации и протоколы
Результаты тестирования и проблемы
Перспективы развития системы
Выводы и полученный опыт
🌟 Творческое задание
Предложить улучшения для системы:
Добавить машинное обучение для оптимизации
Интегрировать с системами IoT
Создать веб-интерфейс для мониторинга
Разработать алгоритмы самовосстановления
🎉 Итоги урока
🏆 Что освоили
✅ Научились:
Программировать синхронизацию действий роботов
Создавать протоколы межроботной коммуникации
Распределять задачи между агентами системы
Отлаживать сложные распределенные системы
🧠 Поняли:
Координация роботов требует специальных алгоритмов
Коммуникация критически важна для совместной работы
Отказоустойчивость обеспечивает надежность системы
Мониторинг необходим для поддержания производительности
🌟 Главный принцип
“Эффективная команда роботов = Правильные алгоритмы + Надежная связь + Умная координация”
🚀 Следующий шаг: Создание автономных адаптивных систем с машинным обучением
💡 Теперь ваши роботы умеют работать в команде как настоящие профессионалы!