Производственная система (или система правил продукции ) — это компьютерная программа, обычно используемая для реализации некоторой формы искусственного интеллекта , которая в основном состоит из набора правил поведения, но также включает в себя механизм, необходимый для следования этим правилам, когда система реагирует на состояния окружающего мира. [ требуется ссылка ] Эти правила, называемые продукцией , являются базовым представлением знаний , которое оказывается полезным в автоматизированном планировании и составлении расписаний , экспертных системах и выборе действий .
Продукция состоит из двух частей: сенсорного предварительного условия (или оператора «IF») и действия («THEN»). Если предварительное условие продукции соответствует текущему состоянию мира, то говорят, что продукция запущена . Если действие продукции выполнено , она запущена . Производственная система также содержит базу данных, иногда называемую рабочей памятью , которая хранит данные о текущем состоянии или знаниях, и интерпретатор правил. Интерпретатор правил должен предоставлять механизм для приоритезации продукции, когда запущено более одной. [ необходима цитата ]
Интерпретаторы правил обычно выполняют алгоритм прямой цепочки для выбора продукции для выполнения в соответствии с текущими целями, которые могут включать обновление данных или убеждений системы . Условная часть каждого правила ( левая часть или LHS) проверяется относительно текущего состояния рабочей памяти.
В идеализированных или ориентированных на данные производственных системах предполагается, что любые запущенные условия должны быть выполнены: последующие действия ( правая часть или RHS) обновят знания агента, удаляя или добавляя данные в рабочую память. Система прекращает обработку либо когда пользователь прерывает прямой цикл цепочки; либо когда выполнено заданное количество циклов; либо когда выполняется «остановка» RHS, либо когда ни одно правило не имеет LHS, которые являются истинными.
Системы реального времени и экспертные системы, напротив, часто должны выбирать между взаимоисключающими производствами — поскольку действия требуют времени, может быть выполнено или (в случае экспертной системы) рекомендовано только одно действие. В таких системах интерпретатор правил или механизм вывода циклически проходит два этапа: сопоставление правил производства с базой данных, за которым следует выбор того, какое из сопоставленных правил применить, и выполнение выбранных действий.
Производственные системы могут различаться по выразительной силе условий в правилах производства. Соответственно, алгоритм сопоставления шаблонов , который собирает правила производства с соответствующими условиями, может варьироваться от наивного — пробовать все правила последовательно, останавливаясь на первом совпадении — до оптимизированного, в котором правила «компилируются» в сеть взаимосвязанных условий.
Последнее иллюстрируется алгоритмом Rete , разработанным Чарльзом Л. Форджи в [1] 1974 году, который используется в серии производственных систем, называемых OPS и первоначально разработанных в Университете Карнеги-Меллона, достигших кульминации в OPS5 в начале 1980-х годов. OPS5 можно рассматривать как полноценный язык программирования для программирования производственных систем.
Производственные системы также могут различаться по окончательному выбору правил производства для выполнения или запуска . Набор правил, полученных в результате предыдущего алгоритма сопоставления, называется набором конфликтов , а процесс выбора также называется стратегией разрешения конфликтов .
Здесь снова такие стратегии могут варьироваться от простых — использовать порядок, в котором были написаны правила производства; назначать веса или приоритеты правилам производства и сортировать набор конфликтов соответствующим образом — до сложных — сортировать набор конфликтов в соответствии со временем, в которое правила производства были запущены ранее; или в соответствии со степенью изменений, вызванных их RHS. Какая бы стратегия разрешения конфликтов ни была реализована, метод действительно имеет решающее значение для эффективности и правильности системы производства. Некоторые системы просто запускают все соответствующие производства.
Использование производственных систем варьируется от простых правил перезаписи строк до моделирования человеческих когнитивных процессов, от систем перезаписи и сокращения терминов до экспертных систем .
В этом примере показан набор правил производства для переворачивания строки из алфавита, не содержащего символы «$» и «*» (которые используются в качестве символов-маркеров).
Р1: $$ -> *П2: *$ -> *П3: *х -> х*P4: * -> null и остановкаP5: $xy -> y$xP6: ноль -> $
В этом примере правила производства выбираются для тестирования в соответствии с их порядком в этом списке производства. Для каждого правила входная строка проверяется слева направо с помощью движущегося окна для поиска совпадения с LHS правила производства. Когда совпадение найдено, совпавшая подстрока во входной строке заменяется RHS правила производства. В этой системе производства x и y являются переменными, совпадающими с любым символом алфавита входной строки. Сопоставление возобновляется с P1 после того, как замена была сделана.
Например, строка «ABC» подвергается следующей последовательности преобразований в соответствии с этими правилами продукций:
$ABC (P6)B$AC (P5)BC$A (P5)$BC$A (P6)C$B$A (P5)$C$B$A (P6)$$C$B$A (P6)*C$B$A (P1)С*$Б$А (P3)С*Б$А (P2)CB*$A (P3)ЦБ*А (П2)CBA* (P3)CBA (P4)
В такой простой системе упорядочение правил производства имеет решающее значение. Часто отсутствие структуры управления затрудняет проектирование систем производства. Конечно, можно добавить структуру управления в модель систем производства, а именно в машину вывода или в рабочую память.
В мире игрушечной симуляции, где обезьяна в комнате может хватать разные предметы и забираться на другие, пример производственного правила для захвата предмета, подвешенного к потолку, будет выглядеть так:
(p Holds::Объект-Потолок {(цель ^статус активен ^тип удерживает ^objid <O1>) <цель>} {(физический-объект ^id <O1> ^вес легкий ^в <p> ^на потолке) <объект-1>} {(физический-объект ^id лестница ^at <p> ^on этаж) <object-2>} {(обезьяна ^на лестнице ^держит NIL) <обезьяна>} -(физический-объект ^на <O1>)--> (написать (crlf) Захватить <O1> (crlf)) (измените <object1> ^на NIL) (изменить <monkey> ^holds <O1>) (изменить <цель> ^статус выполнен))
В этом примере данные в рабочей памяти структурированы, а переменные указаны в угловых скобках. Имя структуры данных, например "goal" и "physical-object", является первым литералом в условиях; поля структуры имеют префикс "^". "-" указывает на отрицательное условие.
Правила производства в OPS5 применяются ко всем экземплярам структур данных, которые соответствуют условиям и соответствуют привязкам переменных. В этом примере, если несколько объектов будут подвешены к потолку, каждый с разной лестницей рядом, поддерживающей обезьяну с пустыми руками, набор конфликтов будет содержать столько же экземпляров правил производства, полученных из того же производства "Holds::Object-Ceiling". Шаг разрешения конфликта позже выберет, какие экземпляры производства следует запустить.
Связывание переменных, полученных в результате сопоставления с образцом в LHS, используется в RHS для ссылки на данные, которые должны быть изменены. Рабочая память содержит явные данные структуры управления в форме экземпляров структуры данных «цель». В примере, как только обезьяна удерживает подвешенный объект, статус цели устанавливается на «удовлетворено», и то же самое правило производства больше не может применяться, поскольку его первое условие не выполняется.
И «Искусственный интеллект : современный подход» Рассела и Норвига , и «Представление знаний: логические, философские и вычислительные основы» Джона Совы характеризуют производственные системы как системы логики , которые выполняют рассуждения посредством прямой цепочки. Однако Стюарт Шапиро , рецензируя книгу Совы, утверждает, что это искажение. [2] Аналогично, Ковальски и Садри [3] утверждают, что, поскольку действия в производственных системах понимаются как императивы, производственные системы не имеют логической семантики. Их логика и компьютерный язык Logic Production System [4] (LPS) объединяют логические программы, интерпретируемые как убеждения агента, с реактивными правилами, интерпретируемыми как цели агента. Они утверждают, что реактивные правила в LPS придают правилам производства логическую семантику, которой у них в противном случае нет. В следующем примере строки 1–3 представляют собой объявления типов, 4 описывает начальное состояние, 5 — реактивное правило, 6–7 — логические пункты программы, а 8 — причинно-следственный закон:
1. свободно владеет огнём.2. действия устраняют, избегают.3. события имеют дело_с_огнем.4. изначально огонь.5. если огонь, то иметь дело_с_огнем.6. справиться_с_огнем, если устранить.7. справиться_с_огнем, если побег.8. ликвидировать прекращает огонь.
Обратите внимание, что в этом примере реактивное правило в строке 5 срабатывает, как и производственное правило, но на этот раз его заключение deal_with_fire становится целью, которая сводится к подцелям с использованием логических программ в строках 6-7. Эти подцели представляют собой действия (строка 2), по крайней мере одно из которых должно быть выполнено для достижения цели.
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь )