Производственная система (информатика) - Production system (computer science)

Производственная система (или правило производственной системы ) представляет собой компьютерная программа , как правило , используется , чтобы обеспечить некоторую форму искусственного интеллекта , которая состоит в основном из набора правил о поведении , но он также включает в себя механизм , необходимый для следовать этим правилам , как система реагирует на состояния мира. Эти правила, называемые производством , представляют собой базовое представление, которое можно использовать в автоматизированном планировании , экспертных системах и выборе действий .

Производство состоит из двух частей: сенсорной предусловия (или утверждения «ЕСЛИ») и действия (или «ТОГДА»). Если предпосылка производства совпадает текущее состояние мира, то производство , как говорит, срабатывает . Если производственное действие выполняется , то говорят, что он выстрелил . Производственная система также содержит базу данных, иногда называемую рабочей памятью , в которой хранятся данные о текущем состоянии или знаниях, и интерпретатор правил. Интерпретатор правил должен обеспечивать механизм для определения приоритетов производства, когда запускается более одного.

Основная операция

Интерпретаторы правил обычно выполняют алгоритм прямой цепочки для выбора продукции для выполнения для достижения текущих целей, что может включать обновление данных или убеждений системы . Часть условия каждого правила ( левая часть или LHS) проверяется на соответствие текущему состоянию рабочей памяти.

В идеализированных или ориентированных на данные производственных системах предполагается, что любые инициированные условия должны выполняться: последующие действия ( правая сторона или правая часть ) обновят знания агента, удаляя или добавляя данные в рабочую память. Система прекращает обработку, когда пользователь прерывает цикл прямой цепочки; когда было выполнено заданное количество циклов; когда выполняется "остановка" RHS, или когда нет правил, не имеющих LHS, которые являются истинными.

В отличие от этого, системам реального времени и экспертным системам часто приходится выбирать между взаимоисключающими производственными процессами - поскольку действия требуют времени, может быть выполнено только одно действие или (в случае экспертной системы) рекомендовано. В таких системах интерпретатор правил или механизм вывода циклически проходит через два этапа: сопоставление производственных правил с базой данных, за которым следует выбор, какое из сопоставленных правил применить, и выполнение выбранных действий.

Соответствие производственных правил рабочей памяти

Производственные системы могут различаться по выразительной силе условий в производственных правилах. Соответственно, алгоритм сопоставления с образцом , который собирает производственные правила с совпадающими условиями, может варьироваться от наивного (проверка всех правил последовательно с остановкой на первом совпадении) до оптимизированного, в котором правила «компилируются» в сеть взаимосвязанных условий. .

Последнее иллюстрируется алгоритмом RETE , разработанным Чарльзом Л. Форги в 1974 году, который используется в серии производственных систем, называемых OPS и первоначально разработанных в Университете Карнеги-Меллона, кульминацией которых стал OPS5 в начале восьмидесятых. OPS5 можно рассматривать как полноценный язык программирования для программирования производственных систем.

Выбор правил для оценки

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

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

Использование производственных систем

Использование производственных систем варьируется от простых правил переписывания строк до моделирования когнитивных процессов человека, от систем переписывания и сокращения терминов до экспертных систем .

Пример простой системы переписывания строк

В этом примере показан набор производственных правил для преобразования строки из алфавита, который не содержит символов «$» и «*» (которые используются как символы маркеров).

P1: $$ -> *
P2: *$ -> *
P3: *x -> x*
P4: * -> null & halt
P5: $xy -> y$x
P6: null -> $

В этом примере производственные правила выбираются для тестирования в соответствии с их порядком в этом производственном списке. Для каждого правила входная строка проверяется слева направо с движущимся окном, чтобы найти совпадение с LHS производственного правила. Когда совпадение найдено, соответствующая подстрока во входной строке заменяется правой частью правила продукции. В этой производственной системе 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)
C*$B$A (P3)
C*B$A (P2)
CB*$A (P3)
CB*A (P2)
CBA* (P3)
CBA (P4)

В такой простой системе порядок производственных правил имеет решающее значение. Часто отсутствие структуры управления затрудняет проектирование производственных систем. Конечно, можно добавить управляющую структуру в модель производственной системы, а именно в механизм вывода или в рабочую память.

Пример производственного правила OPS5

В мире симулятора игрушек, где обезьяна в комнате может хватать разные предметы и залезать на другие, пример производственного правила для захвата подвешенного к потолку предмета будет выглядеть так:

(p Holds::Object-Ceiling
  {(goal ^status active ^type holds ^objid <O1>) <goal>}
  {(physical-object
    ^id <O1>
    ^weight light
    ^at <p>
    ^on ceiling) <object-1>}
  {(physical-object ^id ladder ^at <p> ^on floor) <object-2>}
  {(monkey ^on ladder ^holds NIL) <monkey>}
  -(physical-object ^on <O1>)
-->
  (write (crlf) Grab <O1> (crlf))
  (modify <object1> ^on NIL)
  (modify <monkey> ^holds <O1>)
  (modify <goal> ^status satisfied)
)

В этом примере данные в рабочей памяти структурированы, а переменные заключены в угловые скобки. Имя структуры данных, например «цель» и «физический объект», является первым литералом в условиях; поля структуры имеют префикс "^". Знак «-» указывает на отрицательное состояние.

Производственные правила в OPS5 применяются ко всем экземплярам структур данных, которые соответствуют условиям и соответствуют привязкам переменных. В этом примере, если несколько объектов подвешены к потолку, каждый с другой лестницей поблизости, поддерживающей обезьяну с пустыми руками, конфликтующий набор будет содержать столько экземпляров производственных правил, которые получены из одного и того же рабочего "Holds :: Object-Ceiling". На этапе разрешения конфликта позже будет выбрано, какие производственные экземпляры запускать.

Связывание переменных, полученное в результате сопоставления с образцом в LHS, используется в RHS для ссылки на данные, которые необходимо изменить. Рабочая память содержит явные данные структуры управления в виде экземпляров «целевой» структуры данных. В этом примере, когда обезьяна удерживает приостановленный объект, состояние цели устанавливается как «выполнено», и то же правило производства больше не может применяться, поскольку первое условие не выполняется.

Связь с логикой

И Рассел, и Норвиг « Введение в искусственный интеллект» и Джона Сова « Представление знаний: логические, философские и вычислительные основы» характеризуют производственные системы как системы логики, которые выполняют рассуждения посредством прямой цепочки. Однако Стюарт Шапиро, рецензируя книгу Совы, утверждает, что это искажение фактов. Точно так же Ковальски и Садри утверждают, что, поскольку действия в производственных системах понимаются как императивы, производственные системы не имеют логической семантики. Их логика и компьютерный язык Logic Production System (LPS) объединяет логические программы, интерпретируемые как убеждения агента, с реактивными правилами, интерпретируемыми как цели агента. Они утверждают, что реактивные правила в LPS придают производственным правилам логическую семантику, которой им в противном случае не хватает. В следующем примере строки 1-3 являются объявлениями типов, 4 описывает начальное состояние, 5 - реактивное правило, 6-7 - логические предложения программы, а 8 - причинный закон:

1. fluents     fire.
2. actions     eliminate, escape.
3. events      deal_with_fire.
4. initially   fire.
5. if          fire then deal_with_fire.
6.                       deal_with_fire if  eliminate.
7.                       deal_with_fire if  escape.
8. eliminate  terminates fire.

Обратите внимание, что в этом примере правило реагирования в строке 5 запускается, как и правило производства, но на этот раз его заключение deal_with_fire становится целью, которая должна быть сведена к подцелям с использованием логических программ в строках 6-7. Эти подцели представляют собой действия (строка 2), по крайней мере одно из которых необходимо выполнить для достижения цели.

Связанные системы

  • Правила обработки ограничений : язык программирования на основе правил.
  • CLIPS : общедоступный программный инструмент для построения экспертных систем.
  • JBoss Drools : система управления бизнес-правилами с открытым исходным кодом (BRMS).
  • Правила ILOG : система управления бизнес-правилами.
  • JESS : механизм правил для платформы Java - это надмножество языка программирования CLIPS .
  • Лиза : движок правил, написанный на Common Lisp.
  • OpenL Tablets : бизнес-ориентированные правила и BRMS с открытым исходным кодом.
  • Пролог : язык логического программирования общего назначения.
  • Soar , OpenCog : когнитивные архитектуры на основе производственной системы.

Ссылки

Смотрите также