Итак, мы постепенно заканчиваем занятия, на которых мы рассматривали методы и технологии Искусственного Интеллекта. На прошлом занятии мы изучили генетические алгоритмы, а сегодня пришло время многоагентных систем. Поехали.
Я кратко упоминал про эти темы, когда мы рассматривали агентный подход. Вспомнили? Теперь вот настал момент, когда вы готовы узнать про многоагентные системы более полно. Так что будьте внимательны — тема важная, интересная и очень насущная, так как в последнее время ей посвящается очень много усилий исследователей.
Давайте начнём с азов. Многоагентная система — это система, образованная из нескольких взаимодействующих друг с другом автономных интеллектуальных агентов. Тут важно именно то, что агентов должно быть несколько, то есть хотя бы двое, и они должны взаимодействовать друг с другом.
Интеллектуальный или рациональный агент — это некоторая сущность, которая функционирует в среде, получает от неё и от других агентов информацию, воздействует на среду и передаёт другим агентам информацию. Самое главное то, что агенты действуют рационально, то есть пытаются достигнуть свою цель, затратив на это минимально возможное количество ресурсов с учётом всех ограничений, накладываемых средой и самой многоагентной системой.
Агенты должны быть автономными, то есть иметь определённую свободу действий и принятия решений. Конечно, тут опять надо вспомнить про ограничения среды и всей многоагентной системы. Но вопрос именно в децентрализации — если система централизованная, то говорить о многоагентности сложно. Впрочем, на уровне всей системы могут быть поставлены общие цели, но потом каждый агент действует самостоятельно.
Теперь переходим к взаимодействию агентов. Когда какой-либо агент пытается получить то, что ему непосредственно недоступно, то он может начать опрашивать либо близких к нему агентов, либо всей агентов системы о помощи. Это может быть просьба о предоставлении того, что ему нужно, либо просьба выполнить какое-либо действие, либо ещё какая-то просьба.
Что происходит далее? Агенты вокруг спрашивающего оценивают его просьбу на предмет способности её выполнить, а потом те их них, кто готов выполнить просьбу, отправляют агенту стоимость выполнения, выражаемую в тех самых ресурсах, минимизацию затрат которых надо обеспечить. Изначальный агент выбирает исполнителя с учётом стоимости и оценки качества выполнения. Если консенсус достигнут, первый агент передаёт ресурсы, второй выполняет, остальные получают отказ.
Вот здесь можно остановиться и подумать, какие примеры агентов и многоагентных систем могут быть? Ну в животном мире всё просто — социальные насекомые, стадные животные, человек. В мире информационных технологий всё немного сложнее. Разработать программных агентов несложно так, чтобы они взаимодействовали в какой-либо виртуальной среде.
А что если программно-технические агенты действуют в нашей реальности? Тогда люди и всякие объекты инфраструктуры тоже входят в состав среды, в которой они действуют и с которой взаимодействуют. А, быть может, люди сами могут быть включены в состав многоагентной системы. Тут открывается очень много возможностей. В качестве примеров автономных агентов в этом случае можно привести промышленных роботов на производстве, пассажирский транспорт, автономные автомобили, боевые дроны.
Давайте рассмотрим менее умозрительный пример. Вот я упомянул общественный пассажирский транспорт. Где здесь могут быть применены технологии многоагентных систем? Ну, к примеру, в задаче обеспечения приоритетного проезда перекрёстков и светофоров подвижными единицами пассажирского транспорта.
Давайте посмотрим на светофорный объект на перекрёстке. Он управляется контроллером, который может быть рассмотрен в качестве агента одного из типов. Этот агент умеет выполнять важные функции — переключать огни светофоров, менять длительности фаз, включать стрелку на правый поворот с полосы для общественного транспорта и так далее.
Другой тип агента — это подвижная единица пассажирского транспорта, которая по своему маршруту везёт людей. Этот агент всегда знает, сколько людей находится внутри подвижной единицы, а также насколько он отстаёт или опережает график своего маршрута. Кроме того, у этого агента есть ресурсы — то количество денег, которое заплатили воспользовавшиеся его услугами люди.
И вот с конкурирующих направлений к перекрестку подъезжают несколько автобусов. В одном мало людей, и он не опаздывает по своему графику. В другом же людей много, и он чуть-чуть опаздывает. Второй агент при приближении к перекрёстку запрашивает у контроллера текущий график переключения фаз, после чего понимает, что если «протянуть» текущую фазу на 30 секунд, то он успеет проехать перекрёсток и немного сократит отставание по графику.
В этот момент агент отправляет на контроллер запрос о продлении фазы на 30 секунд. Контроллер рассылает всем приближающимся подвижным единицам предложение по изменению графика. Второй агент понимает, что если это предложение будет принято и исполнено, то он отстанет от графика на несколько секунд. И тогда он отправляет на контроллер просьбу не принимать новый график, а также сумму, которую он готов заплатить за это.
Надо отметить, что первый агент также послал сумму, которую он готов потратить за то, чтобы контроллер протянул фазу. Контроллер принимает решение с учётом того, что отступление от установленной программы тоже стоит каких-то ресурсов, поэтому в расчёт идёт не только размер предлагаемой всеми приближающимися агентами платы.
Здесь может быть несколько итераций обмена сообщениями между агентами, и тогда может быть устроено что-то типа аукциона, в том числе и с учётом новых агентов, которые могут приблизиться к перекрёстку, пока первоначальные занимались переговорами. Но контроллер может и самостоятельно и сразу принять решение и сообщить об этом всем окружающим агентам, разослав новый график и тот интервал времени, в течение которого изменение графика больше невозможно.
А что происходит снаружи этой системы? А снаружи этой многоагентной системы водитель автобуса подъезжает к перекрёстку и видит, что светофор, который, казалось бы, уже должен переключиться, продолжает гореть для него. Водитель проезжает и следует дальше по своему маршруту. А пассажиры внутри салона вообще ничего не замечают. Вот примерно так и должны работать современные интеллектуальные системы, делая жизнь человека удобнее и лучше.
Сегодня многоагентные системы являются одним из наиболее интересных направлений исследований в рамках Искусственного Интеллекта и смежных наук. Они применяются для решения задач моделирования, оптимизации и управления в компьютерных играх, на транспорте различной модальности и в логистических системах, в робототехнике разных направлений. Так что всё это очень интересно.