Основы инженерии ЭС. Создание информационных экспертных систем предполагает наличие коллектива, в состав которого входят:
Создание информационных экспертных систем предполагает наличие коллектива, в состав которого входят: - пользователь, являющийся заказчиком ЭС и определяющий основные требования к ней; - эксперт – специалист по предметной области; - программист, осуществляющий программную компоновку всей ЭС; - инженер по знаниям, обеспечивающий получение знаний, его переработку и общее руководство по созданию ЭС. Функции эксперта сводятся к анализу предметной области ЭС, предоставлению сведений по ней, формированию баз фактов и правил под руководством инженера по знаниям. Эксперт принимает участие в отладке L1=[X.1 | L1.1]=[b, c], L=[X | L1]=[a, b, c]. Один вариант ответа найден. Дополнительная унификация литерала append(L1.2, [d, e, f], [d, e, f]) с правилом 20 невозможна, так как приведет к последовательному сокращению третьего списка в этом литерале и, в конце концов, к остановке работы интерпретатора. Первый цикл. Унификация литерала append(L1, L2, [a, b, c, d, e, f]) с фактом 10 дает: [ ]=L1, L=L2, L=[a, b, c, d, e, f], т.е. L2=[a, b, c, d, e, f]. Один вариант ответа найден: L1=[ ], L2=[a, b, c, d, e, f]. Второй цикл. Возврат к стеку append(L1, L2, [a, b, c, d, e, f]). Унификация этого литерала уже с правилом 20 дает: [X | L1.1]=L1, L2.1=L2, [X | L3]=[a, b, c, d, e, f], X=[a], L3=[b, c, d, e, f]. Состояние стека вопросов: append(L1.1, L2.1, [b, c, d, e, f]). Третий цикл. Унификация литерала append(L1.1, L2.1, [b, c, d, e, f]) с фактом 10 дает [ ]=L1.1, L=L2.1, L=[b, c, d, e, f], т.е. L2.1=[b, c, d, e, f]. Возврат по цепочке целей: L2.1=L2=[b, c, d, e, f], L1=[X | L1.1]=[a]. Найден второй вариант ответа: L1=[a], L2=[b, c, d, e, f]. Четвертый цикл. Возврат к стеку append(L1, L2, [a, b, c, d, e, f]). Поскольку все факты и правила просмотрены, увеличиваем длину головы до двух элементов. Унификация литерала append(L1, L2, [a, b, c, d, e, f]) с фактом 10 не дает новых решений. Унификация с правилом дает следующее: [X | L1.1]=L1, L2.1=L2, [X | L3]=[a, b, c, d, e, f]), т.е. X=[a, b], L3=[c, d, e, f]. Новое состояние стека: append(L1.1, L2.1, [c, d, e, f]). Пятый цикл. Унификация литерала append(L1.1, L2.1, [c, d, e, f]) с фактом 10 дает: [ ]=L1.1, L=L2.1, L=[c, d, e, f], т.е. L2.1=[c, d, e, f]. Тогда в предыдущем состоянии стека L1=[X | L1.1]=[a, b], L2=L2.1=[c, d, e, f]. Найден второй вариант ответа и т. д. Последовательно увеличивая длину головы списка, находим все варианты ответов: L1 L2 [ ] [a, b, c, d, e, f] [a] [b, c, d, e, f] [a, b] [c, d, e, f] - - - - - - - - - - - - - - - - - - - - - - - - [a, b, c, d, e, f] [ ]. Выбор наименьшего элемента списка. Можно сказать, что наименьший элемент списка, состоящего из одного элемента, всегда является этим элементом. Если к тому же, сравнивая два первых элемента в списке, убирать из него больший элемент, то, продолжая поиск указанным образом, легко прийти к списку с одним наименьшим элементом: 10 меньший([X], X). 20 меньший([X, Y|Z ], R): - X< =Y, меньший([X | Z], R); X> Y, 7.2. Пилотное сопровождение - включение разработанной ЭС в контур управления без прямого выхода на управляемый объект. Эффективность создания ЭС повышается при использовании инструментальных средств. Различают следующие типы инструментальных средств разработки ЭС: 1. языки программирования; 2. языки представления знаний; 3. средства автоматизации разработки; 4. оболочки ЭС. При использовании инструментальных средств первого типа в задачу разработчика входит программирование всех компонентов ЭС на языке относительно низкого уровня, что требует высокой квалификации, но позволяет проектировать любые ЭС. Использование инструментальных средств второго типа дает значительное повышение уровня языка за счет готовых формальных приемов представления знаний, снижая тем самым поле инициативы разработчика. Третий тип средств позволяет разработчику не программировать значительную часть компонентов ЭС, а выбирать их из заранее составленного набора, что ускоряет процесс создания ЭС при низкой квалификации разработчика. Оболочки ЭС ориентированы на работу с пользователем-непрофессионалом в области программирования. Основным свойством оболочек является то, что они содержат все компоненты ЭС в готовом виде и их использование не предполагает программирования, а сводится лишь к вводу в оболочку знаний о проблемной области. Каждая оболочка характеризуется фиксированным способом представления знаний, организации вывода и функционирования компонентов, которые будут использоваться во всех приложениях, где будет применяться оболочка. Любая законченная программная система для автоматизации ЭС помимо необходимого языка программирования, языка представления знаний (концептуальной модели знаний) и набора компонентов ЭС содержит ряд вспомогательных элементов, таких как графический интерфейс, редактор, модули отладки и др. Примером инструментальных средств разработки ЭС типа оболочки является система CLIPS, реализованная на языке C. Для программирования в CLIPS используется LIPS-подобный язык искусственного интеллекта, ориентированный на ЭС. Кроме того CLIPS поддерживает объектно-ориентированное и процедурное программирование. Использует продукционную модель представления знаний и поэтому содержит три основных элемента: список фактов, базу правил и блок выводов. Другим примером интегрированной оболочки, решение задач в которой основано на сети вывода, является система ЭКО. Сеть вывода в ней образует граф с вершинами двух типов: вершины первого типа соответствуют простым целям (числовым атрибутам и утверждениям), а вершины второго типа – простым правилам. Дуги представляют связи между простыми целями и простыми правилами: если простая цель G (запроса) и факта 10 невозможна, так как требуется замена X=седло (первый аргументв 10) и X =руль (голова списка [X ½ _ ]=[руль, рама, колесо, седло]). После унификации содержимого стека и правила 20 имеем: X=седло, [ _ ½ Z]=[руль, рама, колесо, седло], т.е. “_” =[руль], Z=[рама, колесо, седло]. Содержимое стека обновляется: принадлежит(седло, [рама, колесо, седло]). Третий цикл. Унификация литерала принадлежит(седло, [колесо, седло]) с фактом 10 невозможна, так как седло¹ колесо. Унификация с правилом 20 дает: X=седло, Z=[седло]. Содержимое стека: принадлежит(седло, [седло]). Четвертый цикл. Унификация последнего литерала с фактом 10 дает X=седло, “_” =[ ] и седло=седло. Вариант решения найден.Унификация с правилом 20 ничего нового не дает. Таким образом, других решений нет, работа программы закончена. Выбор общих элементов в двух списках. Выбор общих элементов из двух списков X и Y сводится к поискувсех элементов Z, каждый из которых принадлежит как X, так и Y: общий(X, Y, Z): - принадлежит(Z, X), принадлежит(Z, Y). Выбор n-го элемента списка. Выбор n -го элемента E из какого-либо списка возможен последовательным вычитанием n -1 первых элементов из этого списка с одновременным уменьшением исходного числа N = n в счетчике С. Решение будет найдено, если элемент оставшегося частичного списка L будет первым: 10 n(1, E, [E ½ _ ]). 20 n(N, E, [ _ ½ L]): - С=N-1, n (С, E, L). Пример. Имеем запрос: n(3, E, [a, b, c, d]), где E – неизвестный аргумент. Порядок поиска третьего элемента E всписке [a, b, c, d]) следующий. Первый цикл. Исходное состояние стека вопросов: n(3, E, [a, b, c, d]). Унификация его с фактом 10 программы невозможна, так как 3¹ 1. Унификация с правилом 20 дает N=3, L=[b, c, d]. Новое состояние стека вопросов: n(2, E, [b, c, d]). Второй цикл. Унификация литерала n(2, E, [b, c, d]) с фактом программы невозможна, так как 2¹ 1. Унификация с правилом 20 дает N=2, L=[c, d]. Новое состояние стека: n(1, E, [c, d]). Нечетким подмножеством множества называют множество упорядоченных пар { / }, " Î , где имеет значения из множества принадлежностей . Говорят, = .
|