- •Глава 1
- •Глава 2 системы, основанные на знаниях
- •Глава 3
- •Глава 4 представление знаний
- •Глава 5 инженерия знаний
- •Глава 6
- •Часть 2
- •Variable имя_переменной
- •60 11 /Mod swap drop
- •16 Base ! ,
- •If a then или if a else в then
- •1 Of a endof
- •2 Of в endof 3 of с endof drop endcase
- •Слова literal (в), слова ; (с). Переменная ip переводится словом периода выполнения в положение сброшенного указателя
- •Глава 7 обработка списков
- •И ыный
- •Глава 8 методы программирования
- •Рекурсии)
- •Глава 9
- •Правило: имеет-волос-покров1
- •Правило: имеет-волос-покров2 (имеет-волос-покров )
- •Предложения нуль установить предложения чтсп
- •Р ис. 9.3. След поиска
- •If добавить-цели then ;
- •4 Begin (поиск)
- •10 Else
- •Глава 10
- •Глава 11
- •Begin dup ноль not
- •While r@ связь
- •If 2drop
- •If получить-цель @ найти-предложение?
- •If добавить-цели false
- •If false else false true then
- •Имёет-рыже-корич-окрас имеет-темиые-пятна ) 14
- •Глоссарий
- •Часть I. Экспертные системы - системы, основанные на знаниях
- •Часть 2. Построение систем,
(ЭТО-ГЕПАРД Э ГО-МЛЕКОПИТАЮЩЕЕ ЭТО-11ЛОТОЯДНОЕ
Имёет-рыже-корич-окрас имеет-темиые-пятна ) 14
290
291
# 82 CrPROLOG.BLK
\ ПРИМЕР КЛАССИФИКАЦИИ ЖИВОТНЫХ
ПРАВИЛО: ЭТО-ЗЕБРА? (ЭТО-ЗЕБРА ЭТО-КОПЫТНОЕ
ИМЕЁТ-МЕРНЫЕ-ПОЛОСЫ ) ПРАВИЛО: ЭТО-СТРАУС?
(ЭТО-СТРАУС ЭТО-ПТИЦА НЕ-ЛЕТАЕТ ИМЕЕТ-ДЛИННУЮ-ШЕЮ
ИМЕЕТ-ДЛИННЫЕ-НОГИ ) ПРАВИЛО: ЭТО-ПИНГВИН?
(ЭТО ПИНГВИН ЭТО-ПТИЦА HE-ЛЕТАЕТ ПЛАВАЕТ
ИМЕЕТ-ЧЕРНО-БЕЯ-ОКРАС ) ПРАВИЛО: ЭТО-АЛЬБАТРОС? 1 (ЭТО-АЛЬБАТРОС ЭТО-ПТИЦА ЛЕТАЕТ-ХОРОШО )
8 ПРАВИЛО: ЭТО-ТИГР? (ЭТО-ТИГР ЭТО-МЛЕКОПИТАЮЩЕЕ ЭТО-ПЛОТОЯДНОЕ
ИМЕЕТ-РЫЖЕ-КОРИЧ-ОКРАС ИМЕЕТ-ЧЕРНЫЕ-ПОЛОСЫ ) ПРАВИЛО: ЭТО-ЖИРАФ? (ЭТО-ЖИРАФ ИМЕЕТ-ДЛИННУЮ-ШЕЮ ИМЕЕТ-ДЛИННЫЕ-НОГИ ИМЕЕТ-ТВМНЫЕ-ПЯТНА )
15 ПРЕДЛОЖЕНИЯ НУЛЬ УСТАНОВИТЬ
Экр # 83 CrPROLOG.BLK •
\ ПРИМЕР КЛАССИФИКАЦИИ ЖИВОТНЫХ
ПРЕДЛОЖЕНИЯ ЧТСП
(ЭТО-ЖИВОТНОЕ1? @ ЭТО-ЖИВОТНОЕ2? @ ЭТО-ПТИЦА1? @
ЭТО-ПТИЦА2? <ф ЭТО-ПЛОТОЙДНОЕ1? @ ЭТО-ПЛОТОЯДНО122? @
ЭТО-КОПЫТНОЕ1? @ ЭТ0-К0ПЫТН0Е2? @ ЭТО-ГЕПАРД? @
ЭТО-ТЙГР? @ ЭТО-ЖИРАФ? @ ЭТО-ЗЕВРА? @
ЭТО-СТРАУС? @ ЭТО-ПИНГВИН? @ ЭТО-АЛЬБАТРОС? @ ) 7
8 ■
9
10-1112
РЕШЕНИЯ НУЛЬ УСТАНОВИТЬ
ЦЕЛИ НУЛЬ УСТАНОВИТЬ ■
НУЛЬ ЭТО-АЛЬБАТРОС ЦЕЛИ СПИСОК
Приложение 1 СЛОВАРЬ ФОРТА
! ( n a -> )
( -> cfa )
( -> )
* ( nl n2 -> n3)
*/ (nl n2 n3 -> n4)
*/MOD ( nl n2 n3 -> r q)
+ ( nl n2 -> n3)
+! ( n a -> )
+LOOP ( n -> )
- ( n -> )
( nl n2 -> n3),
( n -> ) ( ->)
Занесение n по адресу а. Занесение в вершину стека cfa следующего слова из входного потока. Пропуск символов из входного потока до правой круглой скобки. Используется для записи комментария. Умножение nl на n2 с получением произведения nЗ. Умножение nl на n2 с получением результата двойной длины, который затем делится на nЗ. Используется при масштабировании чисел с фиксированной точкой. То же, что и */, но в качестве результата в вершину стека заносит частное q и остаток r. Сложение nl и n2, результатом является nЗ.
Добавление n к содержимому по адресу а.
Добавление n к счетчику цикла. Если в результате полученное значение счетчика выходит за границу, цикл принудительно завершается, в противном случае управление передается на фрагмент, расположенный за DO. Компиляция n в словарь путем выделения памяти и занесения. Вычитание n2 из n1 с получением разности nЗ. Вывод числа n.
Используется во время компиляции. Компилирует строковый литерал, начинающийся с символа, следующего за пробелом после .", и завершающийся символом " . Скомпилированный текст выводится при исполнении слова ." .
292
/ ( n1 n2 -> nЗ)
/MOD ( nl n2 -> r q)
0< ( n -> f)
0= ( n -> f)
0> ( n -> f)
1+ ( n1 -> n2)
1- ( n1 ->n2)
2+ ( nl -> n2)
2-- ( n1 -> n2)
2/ ( n1 -> n2)
2* ( nl -> n2)
; (-> )
< ( n1 n2 -> f)
d= ( nl n2 -> f)
> ( nl n2 -> f)
>BODY ( cfa _> pfa)
>R ?DUP ( n1 - >[n1] n2)
@ ( a -> n)
ABS ( n1 ->n2)
ALLOT ( nl -> )
AND ( nl n2 -> n3)
BASE ( >pfa)
Деление nl на n2 с получением
частного nЗ.
То же, что и / , но в качестве
результата в вершину стеке заносится
частное q и остаток r.
Флат истинен, если n < 0.
Флаг истинен, если n = 0.
Флаг истиней, если n > 0.
n2 = nl + 1
n2 = nl - 1
n2 = n1 + 2.
n2=nl - 2 .
n2 = nl/2 . Выполняется
арифметическим сдвигом
вправо на один бит.
n2 = 2 * nl , Выполняется сдвигом
влево на один бит.
Определение слона форта путем
создания заголовка словарной статьи
и компиляции текста из входного потока
до символа ; .
Завершение определения через
двоеточие и перевод Форта в режим
интерпретации.
Флаг истинен, если nl < n2 .
Флаг истинен, если nl = n2.
Флаг истинен, если nl > n2 >.
Переход от cfa к pfa, т.е. к телу
словарной статьи.
Занесение n в стек возвратов
Если nl не ноль, выполненить
операцию DUP.
Занесение в вершину стека
содержимого по адресу а.
Занесение .в вершину стека
абсолютного значения nl.
Выделение n байт памяти в
словаре.
Выполнение поразрядной
конъюнкции над nl и п2 с
с получением nЗ.
Системная переменная,
содержащая текущее
основание системы счисления
для вводимых чисел.
BEGIN ( -> )
С! ( n a -> )
C@ ( a -> n)
CONSTANT период-компиляции:
(n -> )
период-выполнения:
( -> n) COUNT (a -> a+1 u)
CR ( -> )
CREATE ( ->)
DECIMAL ( -> )
DEFINITIONS ( -> ) DO ( граница счетчик ->)
DOES> период-компиляции:
( -> )
период-выпилнения: ( -> pfa )
DROP ( n -> )
DUP ( n n -> )
Начало цикла как со счетчиком (UNTIL), так и с условием (WHILE-REPEAT) . Занесение, младших разрядов (байта) n по адресу а. Выборка младших разрядов (байта) содержимого по адресу а. Старшие разряды результата обнуляются. Определяющее слово, которое в период компиляции создает слово, заносящее при своем исполнении (в период выполнения) число n в вершину стека. Преобразование указателя строки со счетчиком в адрес первой литеры и число литер строки. Вывод символа возврата каретки (ASCII 13).
Определяющее слово, создающее заголовок словарной статьи Форта. Выбирает из входного потока имя и строит поля: имени, связи и кода. В cfa помещается ссылка на программу периода выполнения для VARIABLE. Установка основания системы счисления путем занесения числа 10 в переменную BASE равным десяти. Установка контекстного словаря v
компиляции (CURRENT) на текущий словарь поиска (CONTEXT). Компилирующее слово. Служит началом цикла DO. Исходным значением счетчика цикла является счетчик. Цикл завершается при переходе значения счетчика через границу (в обоих направлениях). Цикл всегда исполняется по крайней мере один раз. Путем использования определяющего слова DOES> в словах Форта задаются действия периода выполнения. Во время выполнения на стек заносится pfa слова, подлежащего исполнению.
Удаление верхнего элемента стека. Занесение копии верхнего элемента стека в вершину последнего.
293
ELSE
EMIT ( n -> )
EXECUTE ( сfа -> )
FLUSH ( -> )
FORGET ( -> )
FOR TH ( -> )
HERE (->a)
I ( -> n)
IF (f -> )
IMMEDIATE ( -> )
J ( -> n)
Компилирующее cлово. Используется в конструкциях IF-ELSE-TНEN. Слова,расположенные между ELSE и THEN, выполняются в том случае, если флаг для IF ложен.
Вывод n в выходной поток в символьном виде. Выполнение слова, pfa которого находится на стеке. Запись обновленных дисковых буферов во внешнюю память и их освобождение. Выбор очередного слова из входного потока. Забываются все слова, определенные перед этим словом. Если слово зашищено, выдастся аварийное сообщение Контекстный словарь, содержащий стандартные слова Форта.
Занесение в вершину стека очередного доступного адреса (первого свободного адреса в словаре).
Используется в конструкциях DO ... LOOP или DO ... +LOOP для занесения в вершину стека текущего значения счетчика цикла. Компилирующее слово, которое в случае истинности фляга f у
заставит в период-выполнения исполняться слова, следующие непосредственно за IF. В противном случае будут исполняться слова, следующие за ELSE или THEN (если конструкция ELSE отсутствует).
Отмечает последнее определенное слово как компилирующее, которое при режиме компиляции будет не компилироваться, а исполняться.
Применяется во вложенных циклах типа DO. Заносит в вершину стека значение счетчика внешнего цикла ( см. I ).
KEY ( -> n)
LATEST ( -> nfa)
LITERAL ( n -> )
LOAD ( n -> ) LOOP
MAX ( nl n2 -> nЗ)
MIN ( nl n2 -> n3)
NEGATE ( n -> -n)
NOT ( nl -> n2)
OR ( n 1 n2 -> n3)
OVER ( nl n2 -> nl n2 nl)
R> ( -> n)
R@ ( -> n)
REPEAT ( -> )
ROT ( nl n2 nЗ -> n2 nЗ nl) SAVE-BUFFERS ( -> )
SPACE ( -> )
Занесение на стек символа из входного потока. Занесение на стек nfa последней созданной статьи. Компилирующее слово, которое в период выполнения вызывает занесение на стек n. Слово для работы с диском. Вызывает интерпретацию блока n. Компилирующее слово, которое в период выполнения увеличивает значение счетчика DO-цикла на единицу. Если полученное значение счетчика выходит за границу, выполнение цикла завершается и начинают исполняться слова, следующие за словом LOOP. В противном случае исполняются слова, следующие за DO. Занесение на стек большего из чисел nl и n2.
Занесение на стек меньшего из чисел nl и n2.
Занесение на стек дополнения до двух от n или отрицательной величины n.
Поразрядное инвертирование nl. Выполнение поразрядной дизъюнкции над nl и n2 с получением nЗ.
Занесение на стек копии второго элемента стека. Перенесение верхнего элемента стека возвратов на стек данных. Копирование верхнего элемента стека возвратов на стек данных. Компилирующее слово. Применяется в циклах типа
BEGIN ... WH1LE ... REPEAT для передачи управления на слово, следующее за BEGIN.
Перемещение третьего элемента стека в его вершину. Запись на,диск всех обновленных дисковых буферов. Вывод символа пробела (ASCII 32).
STATE
SWAP THEN
TYPE UNTIL
VARIABLE
VOCABULARY WHILE
XOR
( -> pfa)
! nl n2 -> n2 nl)
( a u -> )
( n -> )
nl п2 -> пЗ)
( ->)'
Период-компиляции:
( -> )
период-выполнения:
( -> cfa)
Системная переменная, содержа- щая текущее состояние Форта. Ноль - компиляция, в противном случае - интерпретация. Поменять местами два верхних элемента стека.
Компилирующее слово.применяе- мое в конструкциях IF-THEN или IF-ELSE THEN (см. IF и ELSE). Вывод строки, заданной двумя верхними элементами стека. Компилирующее слово, применяе- мое в конструкциях BEGIN-UNTIL. Если в период выполнения флаг f истинен, исполнение цикла завершается и начинают выполняться слова, следующие за UNTIL. В противном случае выполняются слова, следующие за BEGIN. Определяющее слово для созда- ния переменных. В период выполнения на стек помещает- ся pfa значения этой переменной. Определяющее слово для соз- дания контекстных словарей. Компилирующее слово, применяемое в конструкциях BEgIn-WHILE-REPEA Г Если в период выполнения флаг f истинен, исполняются слова, следующие за WHILE. В противном случае вьшолняются слова, следующие за REPEAT.
Выполнение поразрядного "исключающего или" над п! и п2 с получением пЗ, Компилирующее слово. Переход к состоянию интерпретации. Компилирующее слоро, применяемое внутри определения через двоеточие для компиляции cfa очередного слова из входного потока. В период выполнения этот cfa заносится на стек. Данное слово при интерпретации выполняется как слоао ' . Переход к состоянию компиляции.
Приложение Г
ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА ПОСТРОЕНИЯ ЭКСПЕРТНЫХ СИСТЕМ
И нструментальные средства (ИС) представляют собой пакеты программ, облегчающие процесс построения экспертных систем. Они включают в себя блок логического вывода, пользовательский интерфейс и про "рамму приобретения знаний, позволяющую пользователю пополнять систему знания!
Каждое инструментальное средство имеет свои особенности,
что позволяет наиболее эффективно его применять только в какой-то одной прикладной области. К выбору инструментального средства для построения конкретной экспертной системы нужно подходить очень внимательно.
В настоящем приложении перечислены наиболее распространенные инструментальные средства построения экспертных систем.
|
Название ЭС (разработчик)
|
Модель представ- ления знаний |
Язык реализации (тип компьютера) |
Область приложений
|
Цена (дол.)
|
|
1 |
2 |
3 |
4 |
5 |
|
Advisor (Ultimate Media Inc:) |
Правила
|
Ассемблер (Apple, Commodore 64)
|
Обучение |
99.50
|
|
Advice Language/X (Univ. of Edinburgh, Scofl |
Правила
|
Паскаль (Apple)
|
Распределение аудиторий |
99.50
|
|
Duck (Smart System Technology)
|
Правила немоно- тонный ВЫ90Д
|
(Apoiio, Symbolics, VAX)
|
Организационное управление |
99.50
|
|
ESP/Advisq> (Expert Systems Intern.) |
Правила |
Пролог (IBM PC)
|
Разработка небольших ЭС |
100 |
|
EXPERT (Rutgers University)
|
Правила |
Фортран
|
Фармакологи*, диагности- ка ревматич. заболеваний |
6000
|
|
EXPERT-2 (Mountain View Press)
|
Правила |
Форт (IBM PC, Apple) |
Разработка небольших ЭС |
895 |
|
Expert-Ease (Jeffrey Perrone & Asscc.) |
Примеры решений |
(!ВМ PC, DEC, Victor 9000) |
Разработка небольших ЭС |
695 |
|
ExperOPS V (ЕхрегТеШделсе) |
Правила |
ExpertLlSP (Macintosh) |
Разработка небольших ЭС |
325 |
> |
EXSYS (Exsys Inc.) |
Правила |
(ISM PC) |
Разработка небольших ЭС |
295 |
|
INS1GHT-1 (Leve)5 Research) |
Правила |
Паскаяь (IBM PC, DEC, Victor 9000) |
Обучение |
95 |
|
INSJGHT-2 (Levei 5 Research) |
Правила |
Паскаль (!BM PC, DEC, Victor 9000) |
Обучение |
485 |
|
KDS Development System (KDS) |
Правила |
Ассемблер (iBM PC) |
эоттка небольших ЭС |
795 |
т . ч |
Knowledge Craft (Carnegie Group Inc. 5 |
ФрейК"-- правила |
Common LISP (DEC VAX' |
Управл-. родством |
50000 |
О |
|
|
|
|
|
Know'eage Engineering Environment - KEE (intelliCorpi
Knowledge Engineering System - kES (Software А Я P)
LOOPS *■
(Xerox Palo Alto Research)
M.I
(Teknowledge Inc.)
MicroExpert
(McGraw Hill Book Co.)
Nexpert
(Neuron Data Inc.)
OPS5 (Carnegie-Mellon Univ.)
OPSSe
(Veres Inc., San Diego)
1 |
2 |
3 |
4 |
5 |
0PS5+ (Arteiligenee inc.) |
Правила |
(IBM PC) |
Разработка больших ЭС |
3000 |
Persona! Consultant (Texas Instruments) |
Правила |
IQLISP (Tl Professional & MS-DOS) |
Разработка больших ЭС |
950 |
Personal Consultant Pius (Texas instruments) |
Фреймы и правила |
iQLISP (Tl Professional) |
Разработка небольших ЭС |
3000 |
Rule-Master (Radian Corporation) |
Правила |
Си (IBM XT/AT, VAX, ЭВМ С ОС UNIX) |
Диагностика и управление, военное дело, страхование |
5000- 25000 |
SeRlES-PC (SRI Internationa!) |
Правила |
IQLISP (IBM PC) |
|
5000 |
S.1 {Teknowledge Inc.) |
Правила |
Лисп (DEC VAX,Xerox) |
|
70000 |
TIMM (General Research Corp.) |
Правила |
Фортран (IBM, DEC VAX, IBM PC) |
Помощь пилоту вертолета во время боя |
39500 |
Правила
Фреймы Правила Правила Правила Правила Правила
Лисп
(Symbolics 3600, Xerox П00)
IQLISP (IBM PC, DEC VAX)
INTERLISP "!X 1100)
Пролог (IBM PC)
Паскаль
(IBM PC, Apple)
(Macintosh)
Лисп
(VAX 11/780)
ZetaUSP (Symbplics 3600)
Vkr.aan ик>;.ен.::рия и f, ; 60000
4000
300
Демонстрационный прототип
'азработка больших ЭС 5000
Разработка небольших ЭС, 49.50 обучение
5000
Определение конфигурации ЭВМ
3000
MACSYMA (MIT) |
|
Лисп (KL-1O) |
PROSPECTOR (SRI International) |
KAS (Семантическая сеть с правилами) |
Лисп |
PUFF (Stanford University) |
EMYCIN (Правила) |
Лисп (PDP-11) |
MYCIN (Stanford University) |
EMYCIN ■ (Правила) |
Лисп (PDP-11) |
XCON, XSEL (Carnegie-Mellon Univ. & DEC) |
OPS5 (Правила) |
(DEC VAX) |
(Rutgers University «..Helena |
EXPERT |
Фортран |
Laboratories) (правила)
Символьные преобразова- 1980 ния математических выра- жений
Геология 1978
Легочные заболевания 1981
Лечение менингита; 1975
диагностика инфекци- онных заболеваний
Определение конфигу- 1978
рации компьютерных систем типа VAX
Анализ результатов 1980
электрофореза
Алгоритм. Эффективная конечная процедура.
Альфа бета алгоритм. Стратегия поис-т решения с сокраще нием перебора за счет отбрасывания заведомо бесперспективных ветвей.
Ассоциативный список. Представление списковой структуры, при которой в ячейках связи хранятся пары атрибут-значение (А-3 - пары), называемые также А-списками.
Атом. Основной элемент данных в Лиспе. Используется для представления объектов. Как атом, так и списки являются символьными выражениями.
Атрибут. Некоторое свойство объекта. Например, в факте "Цвет слона - серый" понятие слон - это объект, цвет - атрибут, а се-рый - значение.
Атрибут-значение (А-3). Способ представления факту ал ьного знания, при котором атрибутам могут присваиваться значения. Например, в факте "Животное имеет волосяной покров" атрибутом служит животное, а его значением является имеет_ волосяной_покров.
База данных. В системе, основанной на знаниях, этот термин, как правило, означает рабочую память (см. рабочая память).
База знаний. Часть системы, основанной на знаниях, которая состоит из фактов и правил. В продукционной системе она состоит из базы правил и рабочей памяти.
Булевские операторы. Операторы исчисления предикатов. К ним относятся операторы И, ИЛИ, НЕ.
Висячие ссылки. Ситуация в Лиспе при распределении памяти, когда некоторая ячейка считается свободной, а на самом деле занята. При таком положении возможны "висячие" указатели из активных ячеек (см. сборка мусора).
Внешний интерпритатор. Интерпретатор Форта, взаимодействующий с пользователем.
Внутренний интерпретатор. Часть виртуальной Форт- машины, интерпретирующая шитый код.