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

>stack Route;

>if(Tripl){

> Route = Tripl.candidates();

>}

>if(Trip2){

> Route = Trip2.candidates();

>}

>if(Trip3){

> Route = Trip3.candidates();

>}

>while(!Route.empty()) {

> cout << Route.top().origin() << " TO "« Route.top().destination() « endl; Route.pop();

>}


Обратите внимание на то, что объекты Tripl, Trip2 и Trip3 тестируются так, как будто они имеют тип bool. Метод candidates () просто возвращает путь следования, соответствующий заданному маршруту. Таким образом, разработка стратегий логического вывода и когнитивных структур данных становится проще благодаря использованию перегрузки операторов и С++-шаблонов. Именно стратегии логического вывода и когнитивные структуры данных делают объект рациональным. C++-программист для разработки агентов использует конструкцию класса, а для реализации когнитивных сгруктур данных (CDS) — контейнерные объекты в сочетании со встроенными алгоритмами. Класс, который содержит CDS-структуры, становится рациональным, а рациональный класс — агентом.

Простая автономность

Поскольку наш простой класс агента не требует выполнения традиционного «цикла активизации», нам нужны другие средства, которые бы периодически активизировали агент без вмешательства человека. Возможны ситуации, когда агент нужно запускать на выполнение лишь иногда или только при определенных условиях. Среды UNIX/Linux оснащены утилитой crontab, которая представляет собой пользовательский интерфейс «хрон-систе м ы» (xpon— это де м он ОС UNIX, исполняющий предписанные команды в соответствии со строго определенными значениями даты и времени, указанными в спе циально м файле с именем crontab). Утилита crontab позволяет организовать периодическое выполнение одной или нескольких программ. Задания для утилиты crontab можно назначать с указанием месяца, дня недели, дня (месяца), часов и минут. Для использования утилиты crontab в нашем случае необходимо создать текстовый файл, который будет содержать график активизации агента. Записи этого файла должны иметь следующий формат:

м инуты часы день м есяц день недели ко м анда

Каждый эле м ент записи м ожет прини м ать следую щ ие значения:

минуты 0-59

часы 0-23

день 1-31

месяц 1-12

день недели 1-7 (1 — понедельник, 7 — воскресенье)

команда может быть любой UNIX/Linux-командой, а также именем файла,

который содержит агенты

Созданный в таком формате текстовый файл передается «хрон-системе» с помощью слелующей команды:

$crontab  NameOfCronFile

Например, предположи м, у нас есть файл activate.agent, содержи