};

Обратите вни м ание на то, что этот класс также обеспечивает шаблонный класс proposition параметром .

class performance_statement :

public proposition<performance__statement> {...}

Благодаря это м у объявлению класс proposition теперь определен д ля объектов типа performance_statement. Класс performance_statement используется для представления убеждений об объе м е продаж, количестве обслуженных клиентов (в час) и загрузке ре м онтных секций в день. Для каждого из перечисленных убеждений о том, что агент имеет в соответствующей области, существует отдельное высказывание. Эта инфор м ация хранится в таких членах данных:

Bays

Sales

PerHour

Такие высказывания, как «По секции 1 объе м продаж составил 300тыс. долл., обслужено 10 клиентов в час, а коэффициент загрузки равен 4», м ожно представить с по м о щ ью объекта класса performance_statement. Итак, наш класс агента и м еет две категории убеждений, реализованных в виде данных, тип которых выведен из класса proposition. На рис. 12.2 представлена UML-диагра мм а классов trip_announcement и performance__statement. Эти классы предназначены для хранения структуры убеждений агента.

Рис. 12.2. UML-диаграмма классов trip_announcement и performance_statement

Класс агента

Классы, представленные на рис. 12.2, образуют фундаментдля когнитивных структур данных агента, которые делают агента рациональным. Именно рационализм класса агента отличает его от других типов объектно-ориентированных классов. Рассмотрим объявление класса агента, приведенное в листинге 12.4.

// Листинг 12.4. Объявление класса agent

class agent{

//.. .

private:

performance_statement Manager1;

performance_statement Manager2;

performance_statement Manager3;

trip_announcement Trip1;

trip_announcement Trip2;

trip_announcement Trip3;

list<trip_announcement> TripBeliefs;

list<performance_statement> PerformanceBeliefs;

public:

agent(void);

bool determineVacationAppropriate(void);

bool scheduleVacation(void);

void updateBeliefs(void);

void setGoals(void);

void displayTravelPlan(void);

//.. .

} .

Как и классы предположений, класс агента представляет собой упрощенную версию. Полный листинг объявления класса, который можно было бы использовать на практике, занял бы три или четыре страницы. Но для описательных целей, которые мы преслелуем в этой книге, приведенного вполне достаточно. Итак, класс agent содержит два контейнера-списка.

li s t<trip_announcement> TripBeliefs;

list<performance_statement> PerformanceBeliefs;

Контейнеры типа list — это стандартные С++-списки. Каждый список используется для хранения коллекции текущих убеждений агента. «Мировоззрение» нашего простого агента ограничено знаниями об автобусных маршрутах и характеристиках успешности его владельца. Содержимое этих двух контейнеров представляет полные знания агента и набор его убеждений. Если в этих списках есть утверждения, в которые агент больше не верит, их следует удалить. Если в процессе рассуждений агент обнаруживает новые утверждения, они добавляются в список уже существующих убеждений. Агент имеет постоянный доступ к информации об автобусных маршрутах и эффективности ведения бизнеса его владельца и при необходимости может обновлять свои убеждения. Помимо убеждений, агент имеет цели, которые иногда представляются как желания в модели убеждений, желаний и намерений (Beliefs, Desires, Intentions — BDI). Цели поддерживают основные директивы, выдаваемые агенту клиентом. В нашем случае цели сохраняются в высказываниях, приведенных ниже.

performance_statement Manager1;

performance_statement Manager2;

performance_statement Manager3;

trip_announcement Trip1;

trip_announcement Trip2;

trip_announcement Trip3;

С л едует иметь в виду, что мы значительно упрощаем представление целей и директив в классе агента. Но все же этого достаточно, чтобы понять, как построены эти структуры. Три Manager -утверждения содержат цели, связанные с эффективностью бизнеса, которые должны быть удовлетворены, прежде чем владелец фирмы сможет хотя бы подумать об отпуске. Три Trip -утверждения содержат автобусные маршруты, по которым владелец фирмы хотел бы прокатиться при условии успешности его бизнеса. Убеждения вместе с директивами образуют базовые когнитивные типы данных, которыми располагает агент. Используемые агентом стратегии логического вывода вместе с этими когнитивными типами данных образуют когнитивную структуру данных агента (Cognitive Data Structure — CDS). На базе CDS <TpyKrypbi формируются рациональный компонент и характерные особенности класса агента. Помимо контейнеров, в которых хранятся убеждения и структуры, которые в свою очередь хранят директивы и цели, большинство классов агентов имеют контейнеры, предназначенные для хранения намерений, обязательств или планов агента. Агент получает директивы от своего клиента, а затем использует свою способность делать выводы и совершать действия,

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату