Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по КМ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.81 Mб
Скачать

Поиск в глубину

Вершины в списке OPEN располагаются в порядке убывания. Первая для раскрытия вершина – наиболее глубокая (Рис.24). Возможно задать ограничение по глубине. Эта процедура очень похожа на стратегию с возвращением. В результате работы процедуры мы можем быстро найти решение, о качестве которого ничего сказать нельзя (качество стремиться к нулю).

Рис.24. Поиск в глубину

Поиск в ширину

Вершины в списке OPEN располагаются в порядке возрастания (Рис.25). Это процедура наиболее долгая, но обеспечивает получение оптимальных решений (качество решения стремиться к единице).

Рис.25. Поиск в ширину

Г) Описание точек принятия решений

Точки принятия решений в РДО-языке описывают способы использования образцов для моделирования процесса и принятия решений на уровне событий, их описывают в отдельном объекте (с расширением .dpt). В РДО-модели может быть либо объект операций, либо объект точек принятия решений. Их совместное использование не допускается.

Объект точек принятия решений имеет следующий формат:

<описание_точки_принятия_решений> | <блок активностей>

{ <описание_точки принятия решений> | <блок активностей> }

Описание каждой точки принятия решений имеет следующий формат:

$Decision point <имя точки> : <тип точки> [ <признак трассировки> ]

$Condition <условие активизации точки>

[ $Term_condition <терминальное условие>

$Evaluate by <оценка стоимости оставшегося пути на графе>

$Compare tops = <признак сравнения вершин>

<блок активностей>

Имя точки принятия решений представляет собой простое имя. Имена должны быть различными для всех точек принятия решений и не должны совпадать с ранее определенными именами.

В данной версии РДО-языка имеются два типа точек принятия решений:

  • some - просмотреть все активности данной точки, проверить предусловия, выполнить ту активность, предусловия которой удовлетворяются;

  • search - реализовать поиск на графе состояний.

Признак трассировки может быть одним из следующих:

  • no_trace - не производить трассировку точки;

  • trace_stat - выдавать в объект трассировки только статистическую информацию по процессу поиска на графе;

  • trace_tops - выдавать в объект трассировки статистическую информацию по процессу поиска и информацию обо всех вершинах графа поиска;

  • trace_all - выдавать в объект трассировки статистическую информацию по процессу поиска, информацию обо всех вершинах графа поиска и для каждой вершины новое состояние всех ресурсов, изменивших свое состояние при применении правила, породившего эту вершину.

Значением признака трассировки по умолчанию является значение no_trace. Остальные значения признака трассировки имеют смысл только для точек типа search.

Условие активизации точки есть логическое выражение. Если при некотором событии состояние системы удовлетворяет этому выражению, активизируется алгоритм обработки точки принятия решений

Терминальное условие поиска, эвристическая оценочная функция стоимости оставшегося пути до целевой вершины и признак сравнения вершин записывается только для точек типа search.

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

Эвристическая оценочная функция стоимости оставшегося пути до целевой вершины задается арифметическим выражением целого либо вещественного типа.

Признак сравнения вершин задается зарезервированным словом YES, если необходимо сравнивать каждую вновь порожденную в процессе поиска вершину с вершинами, уже находящимися в графе, и зарезервированным словом NO, если сравнивать не нужно. Необходимость в сравнении вершин зависит от конкретной задачи, решаемой поиском на графе.

Блок активностей имеет следующий формат:

$Activities <описание активности> {<описание активности>}

$End

Описание каждой активности похоже на описание операции и имеет следующий формат:

<имя активности>: <имя образца> [<код клавиши>]

[ <значения_параметров образца> ]

[ (value before | value after) <стоимость применения правила>]

Имя активности - это любое допустимое в языке имя, не совпадающее с ранее определенными именами.

Имя образца - это имя одного из образцов, заданных в объекте образцов.

Код клавиши указывают для образцов типа клавиатурная операция (keyboard).

Значения параметров образца записываются таким же образом, как и для операций.

Стоимость применения правил есть арифметическое выражение целого или вещественного типа, записанное в контексте данного образца, то есть в этом выражении можно использовать параметры образца и параметры релевантных ресурсов образца. Стоимость применения правила вместе с зарезервированными словами value before или value after указывают только для активностей, входящих в точку принятия решений типа search. Зарезервированные слова value before обозначают, что значение выражения должно быть вычислено до применения правила, то есть при состоянии системы перед преобразованием состояния в соответствии с правилом. Зарезервированные слова value after обозначают, что значение выражения должно быть вычислено после применения правила, то есть с измененным состоянием системы.

При написании блока активностей необходимо иметь в виду следующее. Для точки принятия решений типа search допустимо использование только образцов типа rule, при выполнении которых ресурсы не создаются и не уничтожаются, то есть статусы конверторов релевантных ресурсов, которых не содержат Create или Erase. Использование образцов других типов не допускается. Для точки принятия решений типа some допустимо использование только образцов типа rule и operation. В свободных блоках активностей (блоках активностей, не входящих в состав точек принятия решений), допускается использование только образцов типа keyboard и irregular_event.

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

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

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

Для точек типа search запускается алгоритм поиска решения на графе состояний в локальной продукционной системе. Базой данных этой локальной продукционной системы являются все ресурсы, присутствующие в данный момент в моделируемой системе, базой знаний - продукционные правила, записанные в блоке активностей данной точки. Решением, получаемым с помощью поиска на графе, является путь на графе. Путь представляет собой последовательность правил, которые необходимо применить для преобразования начального состояния системы в целевое. Найденная последовательность правил, затем применяется к состоянию системы, изменяя его в соответствии с полученным решением. Это измененное состояние системы и является результатом принятия решения. Процесс имитации продолжается далее от нового состояния, полученного в результате принятия решения. Обработка других точек принятия решений завершается. Если же в процессе поиска решение не найдено, обрабатывается следующая точка принятия решений.

Активности, входящие в свободные блоки активностей, обрабатываются в соответствии с другими алгоритмами, похожими на алгоритмы обработки операций.