Параллельное и распределенное программирование на С++ (Хьюз, Хьюз) - страница 333

>UniverseOfDiscourse.end(), *this); if(I == UniverseOfDiscourse.end()){

>TruthValue = false;

>return(false);

>}

>TruthValue = true; return(true);


В обоих методах >validTrip () и >directTrip () используется алгоритм find() из стандартной библиотеки С++. UniverseOfDiscourse — это контейнер, который содержит убеждения агента и подготовленные для него утверждения. Вспомните, что одним из первых действий, предпринимаемых агентом, является вызов метода updateBeliefs(), который заполняет контейнер UniverseOfDiscourse. Определение метода updateBeliefs () приведено в листинге 12.8.

>// Листинг 12.8. Обновление убеждений

>void agent::updateBeliefs(void) {

>performance_statement TempP;

>TempP.sales(203.0);

>TempP.perHour(10 0.0);

>TempP.bays(4);

>PerformanceBeliefs.push_back(TempP);

>trip_announcement Temp;

>Temp.origin(«Detroit»);

>Temp.destination(«LA»);

>TripBeliefs.push_back(Temp);

>Temp.origin(«LA»);

>Temp.destination(«NJ»);

>TripBeliefs.push_back(Temp);

>Temp.origin(«NJ»);

>Temp.destination(«Windsor»);

>TripBeliefs.push_back(Temp);

>}

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

>// Листинг 12.9. Метод установки целей агента

>void agent::setGoals(void) {

>Managerl.perHour(15.0);

>Managerl.bays(8);

>Managerl.sales(123.2 3);

>Manager2.perHour(2 5.3 4);

>Manager2.bays(4);

>Manager2.sales(12.33);

>Manager3.perHour(3 4.3 4);

>Manager3.sales(100000.12);

>Manager3.bays(10);

>Trip1.origin(«Detroit»);

>Tripl.destination(«Chicago»);

>Trip2.origin(«Detroit»);

>Trip2.destination(«NY»);

>Trip3.origin(«Detroit»);

>Trip3.destination(«Windsor»);

>}

Эти директивы сообщают агенту о том, что его владелец хотел бы отправиться в отпуск из Детройта в Чикаго, из Детройта в Нью-Йорк или из Детройта в Виндзор. Помимо маршрутов, также устанавливаются финансовые цели. Чтобы отпуск состоялся, необходимо достижение одной или нескольких таких целей. После установки целей агент обновляет свои убеждения, и его следующая задача будет определена в зависимости от целей и убеждений при условии возможности планирования отпуска. И тогда вызывается второй компонент методов рассуждений агента: >determineVacationAppropriate()