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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

P1: $$ -> * P2: * $ -> * P3: * x -> x * P4: * -> null & haltP5: $ xy -> y $ xP6: 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 {(цель ^ статус активен ^ тип содержит ^ objid ) <цель>} {(физический объект ^ id  ^ вес легкий ^ в 

^ на потолке) < объект-1>} {(физический объект ^ идентификатор лестницы ^ в

^ на этаже) <объект-2>} {(обезьяна ^ на лестнице ^ содержит NIL) <обезьяна>} - (физический объект ^ на < O1>) -> (write (crlf) Grab (crlf)) (изменить ^ на NIL) (изменить ^ удерживает ) (изменить <цель> ^ статус удовлетворен))

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

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

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

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

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

1. горит огонь.2. действия устранить, побег 3. события deal_with_fire.4. первоначально огонь 5. если огонь, то deal_with_fire.6. deal_with_fire, если устранить 7. deal_with_fire при побеге 8. ликвидировать тушит пожар.

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

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

  • Правила обработки ограничений: язык программирования на основе правил.
  • КЛИПЫ: общедоступный программный инструмент для построения экспертных систем.
  • JBoss слюни: система управления бизнес-правилами с открытым исходным кодом (BRMS).
  • Правила ILOG: система управления бизнес-правилами.
  • ДЖЕСС: механизм правил для платформы Java - это надмножество КЛИПЫ язык программирования.
  • Лиза: движок правил, написанный на Common Lisp.
  • Планшеты OpenL: бизнес-ориентированные правила и BRMS с открытым исходным кодом.
  • Пролог: язык логического программирования общего назначения.
  • Парить, OpenCog: когнитивные архитектуры, основанные на производственной системе.

Рекомендации

  1. ^ "Документация Drools".
  2. ^ Ковальский, Роберт; Садри, Фариба (12 января 2009 г.). «LPS - Основа производственной системы на основе логики». Цитировать журнал требует | журнал = (помощь)
  3. ^ "LPS | Логические производственные системы".

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