Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Интерпретатор; наберите команду- ddlibrry [filenme] Дополнительные функции будут загружены и созданные

Работа добавлена на сайт samzan.net:


     Глава 8. БИБЛИОТЕКА ДОПОЛНИТЕЛЬНЫХ ФУНКЦИЙ

  Дополнительные функции расширяют возможности системы как в части

языка представления знаний, так и в части дополнительных системных

возможностей. Все функции поставляются в виде исходных кодов на языке

Лисп и образуют секции в файле LOTALIB.LSP.

Для использования функции:

- найдите соответствующую секцию в файле LOTALIB.LSP;

- скопируйте ВЕСЬ текст секции в любой файл <filename>;

- запустите ЛОТА ПЛЮС из интерпретатора muLisp;

- выберите в главном меню режим "Интерпретатор";

- наберите команду:

  (add-library <filename>)

Дополнительные функции будут загружены, и созданные новые версии

файлов LOTA.EXE и LOTA.SYS будут содержать их в ядре системы.

Для включения дополнительных функций в компилируемые с помощью LOCOMP.EXE

прикладные базы знаний необходимо:

- как и в предыдущем случае, скопировать требуемый текст в файл <filename>;

- добавить ПОСЛЕДНЕЙ СТРОКОЙ в файл LOTA.ENV команду загрузки созданного

 файла:

 (load <filename>)

- запустить компилятор LCOMP.EXE для компиляции прикладной базы знаний с

 измененным файлом LOTA.ENV.

Полученная прикладная база знаний будет содержать дополнительные функции.

Если Вы приобрели комплектацию Developer с исходными текстами, мы

рекомендуем другой способ:

- перенесите требуемый исходный текст в файл ADDLIB.LSP;

- выполните LOTGEN.BAT для генерации новых версий LOTA.SYS и LOTA.EXE,

  включающих дополнительные функции;

- выполните COMPGEN.BAT (если необходимо) для генерации новой версии

  компилятора LCOMP.EXE.

Это - единственный способ получения новой версии компилятора баз знаний.

Секции LOTALIB.LSP описываются далее в этой главе.

   8.1. Поддержка значений типа *ANY*

 Значение *ANY* для параметра соответствует отсутствию ограничений на

область возможных значений параметра. Функции этой секции заменяют

стандартные функции ЛОТА ПЛЮС с этими же именами ддля поддержания

верного выполнения теоретико-множественных и других операций.

++  Объединение. Если хотя бы один из операндов имеет значение *ANY*,

    результат - *ANY*;

**  Пересечение. Если один из операндов *ANY*, результат совпадает со

    вторым операндом;

now-includes   AD-HOC включение. *ANY* включает любоу значение, и

               входит только в *ANY*;

now-out-of     AD-HOC разделение. Если хотя бы один из операндов -  *ANY*,

               результат - NIL.

       8.2. Дополнительные строковые функции

 rtoupper (ch) - переводит символ CH в верхний регистр с учетом

                 кириллических символов (альтернативная кодировка);

 rtolower (ch) - то же для нижнего регистра;

 string-tail (str n) - возвращат строку, состоящую из N последних

                 символов строки STR;

 replace-string (str old new) - заменяет вхождения подстроки OLD в строке

                 STR на подстроку NEW;

 parse-string (str) - разбивает строку STR на список слов и возвращает этот

                 список;

 

 whitespace (ch) - возвращает T, если CH - "белый пробел".

             8.3. Неструктурированный (текстовый) редактор

Этот простой редактор предназначен для редактирования текстовых файлов и

используется в том случае, если Вы работает с встроенным редактором баз

знаний, и в то же время хотите редактировать файлы программ. Размер

редактируемого файла ограничен величиной MAX-EDIT байтов. По умолчанию

MAX-EDIT равно 50000.

 Synopsis: (edit-text-file <filename> [<w-descr>])

<w-descr> описывает окно (см. 6.2.3). Если описание не задано, используется

  *USER-WINDOW*.

Фунции редактора - такие же, как и у структурного (см.гл.5), за

исключением специальных. Добавлена функция "SAVE AS" (<F5>).

             8.4. Поддержка мыши

Мышь может использована для управления меню следующим образом:

- для подсветки пункта меню, поставьте курсор мыши на этот пункт и

 нажмите ЛЕВУЮ кнопку;

- для выбора пункта меню, поставьте на него курсор мыши и нажмите ЛЕВУЮ

 кнопку ДВАЖДЫ;

- ПРАВАЯ кнопка мыши заменяет клавишу ESC.

             8.5. Интенсионал

  Так называемый интенсионал создает множество, состоящее из элементов,

удовлетворяющих указанным условиям.

Synopsis: ((<var> from <S-exp>) such-that <L-exp>)

Возвращает подмножество элементов из множества, заданного

выражением <S-exp>, таких, что для них выполняется (истинно) логическoe

выражение <L-exp>. <var> указывает имя переменной, используемое при описании

<L-exp> и "пробегает" все элементы множества <S-exp>.Тип возвращаемого мно-

жества совпадает с типом <S-exp>.

     ВНИМАНИЕ! Имя элементной переменной должно отличаться от всех используе-

мых в программе имен, поэтому лучше всего использовать имена, начинающиеся с

литеры "_". Это гарантирует Вас от пересечений с внутренними переменными Ло-

ты. Допустимо также использовать букву "Х" с ЦИФРОЙ после нее.

Пример:  ((_x из '(1 2 3 4 5)) такие-что (> _x 3)) ==> (4 5)

             8.6. Кванторы

    Квантор существования (модальный)

Synopsis: (There-is (<var> from <S-exp>) <L-exp>)

<var> определяет имя элементной (индивидной) переменной, которая

пробегает все элементы из <S-exp>. Предикат возвращает

T, если (Ex) из I(<S-exp>) такой, что (при его подстановке) <L-exp>=T,

TF, если (Ex) из P(<S-exp>) такой,что <L-exp>=TF,

NIL, если (Ax) из P(<S-exp>) выполняется <L-exp>=NIL.

Пример: (Parameter atest (domain . '(a b c d)))

        (There-is (x from '(a b c d)) (x same-as a)) ==> T

        (Существует (x из atest) (x совпадает-с a)) ==> TF

        (Ther-is (x from atest) (x same-as e))  ==> NIL

       Квантор всеобщности (модальный)

Synopsis: (Any (<var> from <S-exp>) <L-exp>)

Возвращает T, если (Ax) из P(<S-exp>) выполняется <L-exp> = T,

           TF, если (Ax) из I(<S-exp>) выполняется <L-exp> = TF или Т,

           иначе - NIL.

Пример: (Parameter stest (type . seq)(domain . '(1 2 3 4 5)))

        (Any (x from '(1 2 3 4 5)) (> x 2)) ==> NIL

        (Any (x from atest) (> x 2)) ==> TF

        (Any (x from atest) (> x 0))  ==> T

       Квантор существования (ad-hoc предикат)

Synopsis: (Now-there-is (<var> from <S-exp>) <L-exp>)

Пример: (Parameter atest (domain . '(a b c d)))

        (Now-there-is (x from atest) (x same-as e))  ==> NIL

       Квантор всеобщности (ad-hoc предикат)

Synopsis: (Now-any (<var> from <S-exp>) <L-exp>)

Пример: (Parameter atest (type . seq)(domain . '(1 2 3 4 5)))

        (Now-any (x from atest) (> x 2)) ==> NIL

        (Now-any (x from atest) (> x 0))  ==> T

        8.7. BTRIEVE (tm) интерфейс

Для использования BTRIEVE совместно с ЛОТА ПЛЮС необходимо добавить эту

секцию кода к ядру системы.  Затем перед каждым сеансом необходимо:

- запустить BTRIEVE.EXE (резидентно),

- запустить LOTABTRV.EXE (это - также резидентная программа),

- начать работу с ЛОТА ПЛЮС,

- набрать команду SET-BTRV из ЛОТА ПЛЮС.

Функция SET-BTRV:

 Synopsis: (set-btrv)

После этого можно использовать команды BTRIEVE. Вызов BTRIEVE из ЛОТА ПЛЮС

имеет следующий синтаксис:

 Synopsis: (btrv <op> <pos-blk> <buf-len> [<key-num>][<key-buf>][<data-buf>])

op                код операции - Lisp-число

pos-blk           BTRIEVE POS_BLK

buf-len           длина буфера данных - Lisp-число

key-num           номер ключа - Lisp-число

key-buf           буфер ключа (если требуется)

data-buf          буфер данных

Функция BTRV возвращает BTRIEVE статус (целое LISP-число). Если результат

операции содержится в буфере данных или буфере ключа BTRIEVE. Для их

получения используйте функции GET-BT-DATABUF и GET-BT-KEYBUF соответственно.

Некоторые операции BTRIEVE возвращают информацию POS-BLK (FCB). Для ее

получения используется функция GET-BT-FCB.

 Synopsis:  (get-bt-databuf)

            (get-bt-keybuf)

            (get-bt-fcb)

Эти функции возвращают соответствующие значения в виде строк.

Допускается использование всех операций BTRIEVE (v5.0 или старше) со

следующими ограничениями:

- максимальная длина записи 7500 байт;

- максимальная длина ключа 254 байт;

- максимальное число ключей 22.

       8.8. Логический вывод, управляемый целью (двунаправленный)

  Вывод, управляемый целью, заставляет систему проверять те правила,

опрашивать те переменные, вызывать те подцели, котрые, по ее мнению, могут

привести к достижению цели в текущей ситуации. Цель в ситуации - добиться

выполнения операции Success или Fail.  Алгоритм работы можно понять, изучив

исходные тексты функций этой секции, снабженные полными комментариями.

Для использования этого механизма вывода, необходимо описать слот

"INFERENCE" ситуации следующим образом:

 (INFERENCE . (goal-driven))

          8.9. Компрессия прецедентов

 Алгоритм компрессии прецедентов уменьшает количество прецедентов без

потери информации. Это означает, что вывод по аналогии (см. гл.5) будет

давать одни и те же результаты как с исходным, так и с компрессированным

множеством прецедентов при любом текущем состоянии консультации.

  После загрузки функций этой секции в меню "РедОпций" (Редактор БЗ)

появится новый пункт - сжатие прецедентов. В случае, если выполнение этой

процедуры дало реальные результаты, система предложит сохранить "сжатое"

множество в файле на диске. Предупреждаем, что система может образовать

новые прецеденты (и дать им новые имена по своему усмотрению) и/или изменить

содержимое текущих.

Алгоритм разработан к.ф.-м.н. Е.А.Печерским.

        

         8.10. Поиск ближайшего прецедента

  Позволяет выбрать прецедент, наиболее близкий (по некотрой метрике) к

текущему состоянию консультации, и затем проводит с ним аналогию (см. гл.5).

  Synopsis: (find-closest)

Метрика предложена к.ф.-м.н. Е.А.Печерским.

          8.11. Интерфейс с деловой графикой

Вывод на экран гистограммы или круговой диаграммы

  Synopsis: (chart <filename> <S-exp>)

Выводит на экран график, шаблон которого описан в файле <filename>, числовые

данные для построения графика должны содержаться во втором операнде (<S-exp>),

который должен представлять собой последовательность чисел. Если

последовательность длиннее, чем это предусмотрено в шаблоне, последние числа

игнорируются; если  же короче - последовательсноть дополняется нулями до

требуемой в шаблоне длины. Правила построения шаблонов графиков приведены в

пункте 7.4.

        8.12. Использование собственных дополнительных функций

В качестве дополнительных функций также могут быть использованы любые

разработанные пользователем на языке muLISP87(tm) функции. Процесс

подключения их к системе - точно такой же, как и для функций из библиотеки

дополнительных функций._




1. Петербургская медицинская академия им.html
2.  Вавилонянин ИмгурДаму был ограблен неизвестными лицами на территории одной из сельских общин
3. Тема- Функции биологических мембран
4. Выявление причин отсутствия необходимого спроса на услуги кафе Кэт
5. тема технического обслуживания содержания и текущего ремонта жилищного фонда обеспечивает нормальное функ
6. На тему- СИНТЕЗ КОДОВОЙ КОМБИНАЦИИ ЦЫКЛИЧЕСКОГО КОДА Работу выполнил- Студент группы ТС3
7. на тему Расчёт давления жидкости на дно и стенки сосуда 7 класс Расчет давле
8. слово и моление 12 век Даниил Заточник 5слово о полку Игореве
9. Возможности анализа данных медико-биологических экспериментов в программе Sttistic
10. На тему- Конкурентная структура российского рынка
11. по теме- Витамины Первый вопрос- 1
12. Травматизм на виробництві та його соціальні економічні наслідки
13. Саратовская государственная академия права
14. Борис Леонидович Пастернак
15. Хиппи ~ кто они такие Эту книгу я написал специально для того чтобы рассказать о движении хиппи
16. Школа здоровья 384 Человек и выбор жизненного пути
17. Реферат- Методика анализа конкурента
18. Аутсорсинг (общие черты
19. реферату- Сфери регулювання оплати праціРозділ- Трудове право України Сфери регулювання оплати праці Зак
20. КПІ Кафедра електронних приладів та пристроїв Протокол лабораторної роботи 2