Docstoc

CLIPS

Document Sample
CLIPS Powered By Docstoc
					                              ОБЩИ СВЕДЕНИЯ ЗА CLIPS


       CLIPS (C Language Integrated Production System) е разработка на NASA’s Johnson
Space Center. Представлява инструментално средство за изграждане на системи, основани на
знания (експертни системи).

       Прототип: 1985 г. (език за работа с продукционни правила, чийто интерпретатор
извършва прав извод на основата на алгоритъма RETE).
       Версия 3.0: 1986 г. (първата версия на CLIPS, достъпна за потребители извън NASA).
       Версия 5.0: 1991 г. (добавени са две нови парадигми: процедурно програмиране и
обектно-ориентирано програмиране).
       Версия 6.0: 1997 г. (интеграция на трите парадигми: декларативни знания,
процедурни знания, ООП).
       Версия 6.1: 1998 г. (коригирани са някои недостатъци в работата на интерпретатора
на правилата и интерфейса на CLIPS).
       Версия 6.2: 2002 г. (усъвършенствани са средствата за разработване на приложения с
използване на CLIPS).

       Сега CLIPS се разпространява като public domain software от основните си автори,
които вече не работят за NASA. Достъпна е компилирана версия, както и source код на
C/C++.

       JESS (Java Expert System Shell) е подмножество на CLIPS, реализирано на Java.

      CLIPS се използва от повече от 4000 потребители според сведения от 1998 г. (от
NASA, федерални бюра, контрактори на правителството, университети, частни компании).
Има реализации за DOS, Win 16, Win 32.



                                         ФАКТИ


       Работната памет на CLIPS съдържа създадените до момента факти (включени в
глобален списък, наречен fact-list) и екземпляри на класове (включени в глобалния списък
instance-list).

       Всеки факт е списък от атомарни стойности, които се цитират или позиционно
(ordered facts, наредени факти), или по име (non-ordered or template facts, ненаредени факти
или образци). Един факт се цитира чрез неговия индекс или неговия адрес. Печатният
формат на адреса на даден факт е:
<Fact-XXX> ,
където XXX е индексът (поредният номер) на факта.

      Фактите са една от формите от високо ниво за представяне на данни в CLIPS. Те се
записват в списъка от факти fact-list. Фактите са основните структури от данни, които се
използват от правилата.
      Добавянето на факти към fact-list се извършва чрез командата assert:
(assert <fact-specifier>+)
     Изтриването на факти от fact-list се извършва чрез командата retract:
(retract <fact-specifier>+)
     С помощта на командата facts може да се визуализират наличните в момента факти
във fact-list заедно с техните идентификатори (индекси). Индексите представляват поредните
номера на фактите (започват от 0). По-точно, индексите имат вида f-XXX (XXX е поредният
номер на факта).

      Пример:
CLIPS> (clear)
CLIPS> (assert    (student ivan))
<Fact-0>
CLIPS> (assert    (student peter))
<Fact-1>
CLIPS> (facts)
f-0    (student   ivan)
f-1    (student   peter)
For a total of    2 facts.
CLIPS>


                                    Наредени факти

       Един нареден факт се състои от символ, следван от поредица от нула или повече
полета, разделени с интервали и ограничени от отваряща скоба отляво и затваряща скоба
отдясно. Първото поле от даден нареден факт специфицира определена релация, която е
валидна за останалите полета от този факт.

      Примери:
(student)
(student ivan)
(grocery-list bread milk eggs)


                                   Ненаредени факти

       Наредените факти кодират данните позиционно. За да осъществи коректен достъп
до определени данни, потребителят трябва да знае не само какво по принцип се съдържа във
всеки факт, но и точно кое поле от факта съдържа въпросните данни.
       Ненаредените факти (или образците) дават възможност на потребителя да
присвои имена на всички техни полета и по такъв начин да придаде по-абстрактна форма на
тяхната структура.

       С помощта на конструкцията deftemplate може да бъде създаден образец, чиито
полета ще могат да бъдат цитирани по име. Образецът е конструкция, аналогична на
записите/структурите в езиците от типа на Паскал/ С.

       Конструкцията deftemplate позволява да се дефинира образец (template) с
определено име и нула или повече именувани полета (слотове). За разлика от наредените
факти, образците могат да имат слотове, за които могат да се задават ограничения по тип,
стойност и числов диапазон. Могат да се специфицират и default стойности за всеки
слот.

      Записът на всеки слот се състои от отваряща скоба, последвана от името на слота, 0
или повече полета и затваряща скоба.

      Синтаксис:
(deftemplate <deftemplate-name> [<comment>] <slot-definition>*)
<slot-definition> ::= <single-slot-definition> | <multislot-definition>
<single-slot-definition> ::= (slot <slot-name> <template-attribute>*)
<multislot-definition> ::= (multislot <slot-name> <template-attribute>*)
<template-attribute> ::= <default-attribute> | <constraint-attribute>
<default-attribute> ::= (default ?DERIVE | ?NONE | <expression>*) |
                        (default-dynamic <expression>*)

      Забележки:
1. Коментарите в CLIPS са низове (“ . . . ”).
2. ?DERIVE означава, че стойността по подразбиране се пресмята от ограниченията за
   стойността. По премълчаване default атрибутът на един слот е (default ?DERIVE).
3. ?NONE означава, че е задължително да се присвои стойност на съответния слот при
   записването на факта (чрез assert) във fact-list.
4. Някои допустими ограничения върху стойността на един слот (constraint-attributes) са
   следните:
   type
   range
   allowed-values
5. В сегашната версия на CLIPS се допуска използване на произволен брой слотове с
   множествена стойност (multislots).

      Примерни дефиниции:
(deftemplate student
     (slot name)
     (slot fac-number)
     (multislot exams))
(deftemplate person
     (slot name
           (type SYMBOL)
           (default ?DERIVE))
     (slot age
           (type INTEGER)
           (range 1 100)
           (default 30))
     (slot weight
           (allowed-values light heavy)
           (default light))
     (multislot hobbies
           (type SYMBOL)))


                                  Конструкция deffacts
       С помощта на конструкцията deffacts може да бъде дефиниран списък от факти,
които автоматично се записват (чрез assert) във fact-list при изпълнение на командата
reset.

       Синтаксис:
(deffacts <deffacts-name> [<comment>] <fact-specifier>*)

       Забележки:
1. При изпълнение на командата reset се изтрива текущото съдържание на fact-list, във
   fact-list се записва нулев факт (f-0) от вида (initial-fact) и след това във fact-list се
   записват автоматично всички факти, дефинирани чрез deffacts конструкции.
2. При изпълнение на командата clear се изчиства (изпразва) съдържанието на fact-list.
�разва) съдържанието на fact-list.

				
DOCUMENT INFO
Shared By:
Categories:
Stats:
views:125
posted:12/29/2010
language:Bulgarian
pages:4
Lingjuan Ma Lingjuan Ma MS
About work for China Compulsory Certification. Some of the documents come from Internet, if you hold the copyright please contact me by huangcaijin@sohu.com