Интеллектуальные агенты. Конкретные архитектуры интеллектуальных агентов. Языки программирования агентов., страница 4

-  Большинство программных демонов (такие как фоновые процессы  операционной системы UNIX), которые наблюдают за программным окружением и выполняют действия для модификации его, могут рассматриваться как агенты. Примером такого агента является программа для X Windows – xbiff. Эта утилита постоянно следит за входящей электронной почтой пользователя и указывает через иконку в GUI- есть ли непрочитанные сообщения. Тогда как наш агент термостата в предыдущем примере существовал в физическом окружении – физическом мире – программа xbiff существует в программном окружении. Она получает информацию о своем окружении выполняя программные функции (например выполняя программы, такие как ls) и действия, которые она выполняет, являются программными действиями (изменение иконы на экране или выполняя программу). В данном случае компонент принятия решения такой же  прострой как и в случае с термостатом.

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

1.2.2 Интеллектуальные агенты.

Мы не считали термостаты и демоны UNIX агентами, и конечно не интеллектуальными агентами. Так каких же агентов мы считаем интеллектуальными? Это вопрос похож на: что такое интеллектуальность? – сам по себе вопрос не из легких. Но в рамках этой главы интеллектуальный агент – агент имеющий способность к гибким автоматическим действиям для достижения поставленных целей, где под гибкостью подразумевается:

-  реактивность: интеллектуальные агенты способны ощущать свое окружение и адекватно отвечать на изменения, которые в нем происходят, для достижения поставленных задач;

-  про-активность: интеллектуальные агенты способны проявлять целенаправленное поведение и проявлять инициативу для достижения поставленных задач;

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

Эти свойства являются более важными, чем может показаться на первый взгляд.  Чтобы понять это, давайте рассмотрим их по-очереди. Первое, рассмотрим про-активность: целенаправленное движение. Не очень трудно построить систему, которая проявляет целенаправленное поведение – мы делаем это всегда, когда пишем процедуру на Паскале, функцию на C или метод на Java. Когда мы пишем такую процедуру, мы описываем в терминах все предположения, из которых она исходит (формально предусловие), и получаемый результат, если все предположения верны (пост условие). Результат процедуры является ее целью: то что автор данной программы намеревался получить. Если предусловие выполняется когда процедура запущена, тогда мы ожидаем, что она завершится корректно: она завершится и при завершении постусловие будет истинно, т.е. цель будет достигнута. Это целенаправленное движение: процедура является планом или способом  достижения цели. Такая программная модель хорошо подходит для многих типов окружающей среды. Например, она хорошо работает при рассмотрении функциональных систем – таких как получающих x как входную величину и выдающих f(x) как выходную. Компиляторы являются классическим примером функциональных систем.

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