Разработка интеллектуальных информационных систем с использованием CLIPS. Дякин В.Н. - 9 стр.

UptoLike

Составители: 

rule-6: f-1, f-4
rule-5: f-1, f-2, f-3,
rule-1: f-1, f-2, f-3
rule-2: f-3, f-1
rule-4: f-1, f-2,
rule-3: f-2, f-1
Далее показаны те же активации с индексами фактов в том порядке, в котором они сравниваются стратегией LEX.
rule-6: f-4, f-1
rule-5: f-3, f-2, f-1,
rule-1: f-3, f-2, f-1
rule-2: f-3, f-1
rule-4: f-2, f-1,
rule-3: f-2, f-1
Стратегия MEA. Между правилами с одинаковым приоритетом только что активированные правила размещаются с
использованием одноименной стратегии, впервые использованной в системе OPSS. Основное отличие стратегии MEA от
LEX в том, что в стратегии MEA не производится сортировка образцов, активировавших правило. Сравниваются только
временные теги первых образцов двух активаций. Активация с большим тегом помещается в план решения задачи перед
активацией с меньшим. Если обе активации имеют одинаковые временные теги, ассоциированные с первым образцом, то для
определения размещения активации в плане решения задачи используется стратегия LEX. Как и в стратегии LEX, условный
элемент not имеет псевдовременной тег.
В качестве примера рассмотрим следующие шесть активаций, приведенные в MEA-порядке (запятая на конце актива-
ции означает наличие логического элемента not).
rule-2: f-3, f-1
rule-3: f-2, f-1
rule-6: f-1, f-4
rule-5: f-1, f-2, f-3,
rule-1: f-1, f-2, f-3
rule-4: f-1, f-2,
Случайная стратегия. Каждой активации назначается случайное число, которое используется для определения место-
положения среди активаций с одинаковым приоритетом. Это случайное число сохраняется при смене стратегий, таким обра-
зом, тот же порядок воспроизводится при следующей установке случайной стратегии (среди активаций в плане решения за-
дачи, когда стратегия заменена на исходную).
Для описания функций пользователя служит следующий конструктор.
(deffunction <имя-функции>
[<комментарии>] <обязательные-параметры>
[<групповой-параметр>] <действия>)
<обязательные-параметры> ::= <выражение-простое-поле>
<групповой-параметр> : := <выражение-составное-поле>
Синтаксис конструктора deffunction включает в себя 5 элементов:
имя функции;
необязательные комментарии;
список из нуля или более параметров;
необязательный символ групповых параметров для указания того, что функция может иметь переменное число аргу-
ментов;
последовательность действий или выражений, которые будут выполнены (вычислены) по порядку в момент вызова
функции.
В зависимости от того, задан ли групповой параметр, функция, созданная конструктором, может принимать точное
число параметров или число параметров не меньшее, чем некоторое заданное. Обязательные параметры определяют мини-
мальное число аргументов, которое должно быть передано функции при ее вызове. В действиях функции можно ссылаться
на каждый из этих параметров как на обычные переменные, содержащие простые значения. Если был задан групповой пара-
метр, то функция может принимать любое количество аргументов большее или равное минимальному числу. Если группо-
вой параметр не задан, то функция может принимать число аргументов точно равное числу обязательных параметров. Все
аргументы функции, которые не соответствуют обязательным параметрам, группируются в одно значение составного поля.
Ссылаться на это значение можно, используя символ группового параметра. Для работы с групповым параметром могут ис-
пользоваться стандартные функции CLIPS, предназначенные для работы с составными полями, такие как length и nth. Опре-
деление функции может содержать только один групповой параметр.
CLIPS>
(deffunction print-args (?a ?b $?c)
(printout t ?a " " ?b " and " (length ?c) " extras: " ?c
crlf))
CLIPS> (print-args 1 2)
1 2 and 0 extras: ()