Программный агент


В компьютерных науках програ́ммный аге́нт — это программа, которая вступает в отношение посредничества с пользователем или другой программой. Слово «агент» происходит от латинского agere (делать) и означает соглашение выполнять действия от имени кого-либо. Такие «действия от имени» подразумевают право решать, какие действия (если они нужны) являются целесообразными[1][2]. Идея состоит в том, что агенты не запускаются непосредственно для решения задачи, а активизируются самостоятельно.

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

Термин «агент» описывает программную абстракцию, идею или концепцию, подобно таким терминам ООП, как метод, функция или объект. Концепция агента обеспечивает удобный и мощный способ описания сложной программной сущности, которая способна действовать с определённой степенью автономности с целью выполнения задач от имени пользователя. Но в отличие от объектов, которые определяются в терминах методов и атрибутов, агент определяется посредством описания его поведения[3].

Разные авторы предлагают разные определения агента, обычно при этом в него включают такие понятия, как:

Нет никакого особого смысла в том, чтобы расписать, что является агентом, а что нет. Тем не менее, сопоставление термина с близкими понятиями может прояснить его значение.

Концепцию агента можно проследить начиная с модели акторов Карла Хьюитта: «автономный, интерактивный и одновременно исполняющий несколько функций объект, обладающий внутренним состоянием и информационным обменом»[5].