Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Формат представления знаний




Рабочий план по созданию командного интерпретатора, который описывается в этой главе, приведен ниже.

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

2. Продумать детали реализации механизма логического вывода, который соот­ветствует выбранному способу формального представления.

3. Ввести средства взаимодействия с пользователем.

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


Листинг 16.1. Простая база знаний для классификации животных. Адаптировано из [170]. Отношение "askable" определяет, какие вопросы можно задавать пользователю. Операторы ":: ", i f, then, and, or определены, как показано в листинге 16.3

% Небольшая ваза знаний для классификации животных I- ор{ 100, xfx, (has, gives, 'does not', eats, lays, isa]).:- op£ 100, xfr [ swims, flies]).

rulel:: if

Animal has hair

or

Animal gives milk
then

Animal isa mammal.

rule2;: if

Animal has feathers

or Animal flies and Animal lays eggs then

Animal isa bird.

rule3:: if

Animal isa mammal and

(Animal eats meat or Animal has 'pointed teeth' and Animal has claws and Animal has "forward pointing eyes') then

Animal isa carnivore.

rule4:; if

Animal isa carnivore and

Animal has 'tawny color' and

Animal has 'dark spots'

then

Animal isa cheetah.

rules:: if

Animal isa carnivore and Animal has 'tawny color' and Animal has 'black stripes' then

Animal isa tiger.

rule6:: if

Animal isa bird and Animal 'does not' fly and Animal swims then

Animal isa penguin,

Eule7:: if

Animal isa bird and Animal' isa 'good flyer1

then

Animal isa albatross.

358 Часть II. Применение ИЗЫКЭ Prolog в области искусственного интеллекта


fact:: X isa animal:-member{ X, [cheetah, tiger, penguin, albatross]).

askablet _ gives _, 'Animal' gives 'What')-

askablet _ flies, -Animal' flies).

askablet _ lays eggs, 'Animal' lays eggs).

askable; _ eats _, 'Animal' eats 'What").

askable(_ has _, 'Animal' has 'Something').

askablet _ 'does nor.' _, 'Animal' 'does not' fly).

askablet _ swims, 'Animal' swims).

askablet isa 'good flyer1, "Animal' isa 'good flyer')

Правила в этой базе знаний имеют следующую форму: RuleKame:: if Condition then Conclusion.

где Condition (Условие) - множество простых высказываний, объединенных логи­ческими операторами and и or, a Conclusion (Заключение) — простое высказыва­ние, которое не должно содержать логических операторов. Кроме того, в условной части правил разрешается использовать оператор not, хотя и с некоторыми оговор­ками, В результате применения соответствующих определений операторов Prolog (см. листинг 16.1) эти правила становятся синтаксически допустимыми предложе­ниями Prolog. Оператор and связывает сильнее, чем or, что соответствует обычному соглашению.

Обратите внимание на то, что высказывания в правилах могут представлять собой термы, содержащие переменные. Приведенный ниже пример показывает, почему пе­ременные необходимы и в связи с чем их применение намного увеличивает вырази­тельную мощь системы представления знаний. Рассматриваемый здесь пример базы знаний позволяет находить неисправности в простой электрической сети, которая со­стоит из некоторых электрических приборов и плавких предохранителей. Пример такой сети показан на рис. 16.1. В качестве одного из правил может служить сле­дующее: if

light 1 is on and % Если светильник 1 включен и

lightl is not working and % светильник 1 не горит и проверка

fusel is proved intact % показала, что плавкий предохранитель 1 цел,
then

lightl is proved broken. 1 то следует считать, что светильник 1 неисправен

Еще одно правило приведено ниже. i f

heater is working % Если нагреватель работает, то следует

then

fusel is proved intact. % считать, что плавкий предохранитель 1 цел

Эти два правила уже опираются на факты (о данной конкретной сети), что прибор lightl соединен с прибором fusel, а приборы lightl и heater подключены к электрической сети с помощью одного и того же плавкого предохранителя. Для дру­гой схемы потребовался бы иной набор правил. Поэтому лучше задавать правила в более общем виде, с использованием переменных Prolog, чтобы их можно было ис­пользовать для любой электрической схемы, а затем вводить некоторую дополни­тельную информацию о конкретной схеме. В таком случае одним из полезных пра­вил может быть следующее: если прибор включен и не работает, а его плавкий пре-


Глава 16. Командный интерпретатор экспертной системы



т

дохраните ль цел, то неисправен сам прибор. Такую формулировку можно перевести на применяемый здесь язык формального определения правил следующим образом: broken rule:: if Device is on and

not [ Device is working) and

Device is connected to Fuse and

Fuse is proved intact then

Device is proved broken.

База знаний, представленная в этой форме, показана в листинге 16.2.


У-


light!


 


fusel


У-


1ight2


heater


У,


Iighl3


 


fuse2


У.


Iight4


Рис. 16.1. Соединении между плавкими предо­хранителями и приборами в простой электри­ческой сети

Листинг 16.2. База знаний для поиска неисправности в электрической схеме, подобной приведенной на рис. 16.1

"Небольшая Саза знаний для поиска неисправности в"электрической"схеме"

% Если приоор включен и не работает, а его плавкий предохранитель цел, % то прибор неисправен

broken rule:: if _

on(Device) and device! Device) and (not working(Device)) and connected(Device, Fuse) and

proved(intact! Fuse)) then

proved! broken! Device)).


%


Если прибор работает, то его плавкий предохранитель цел


fuse ok rule::

if

connected! Device, Fusel and

working! Device) then

proved! intact(Fuse))



Часть II. Применение языка Prolog в области искусственного интеллекта


% Если к одному плавкому предохранителя) подключены два разных прибора, оба они * включены и не работают, то плавкий предохранитель сгорел. Примечание: при этом хотя бы один из приборов должен Сыть исправным!

fused rule::

if

connected< Devicel, Fuse) and onf Devicel) and [not working! Devicel)) and samefuse [ Device2, Devicelj and pn (Device2) and [not working< Device2)) then

proved! failed(Fuse)).

same_fuse_rule::

if

connected; Devicel, Fuse) and connected; Device2, Fuse) and different! Devicel, Device2) then satnefuset Devicel, Device2).

device on rule::

if

working(Device) then

on(Device).


fact;: different! X, Y)

fact:: device(heater).

fact:: device! lightl).

fact:: device! lightZ).

fact:: device! light3).

fact:: device! lights).


: -


not (X - Y)


 


fact fact fact fact fact


:

::

:

::

:


connected! lightl, fusel). connected! lightZ, fusel). connected! heater, fusel). connected! Iight3, fuse2). connected!' lights fuse2).


askable(on[D), on('Device*))-

askable! working ID), working!'Device'])





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 482 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Не будет большим злом, если студент впадет в заблуждение; если же ошибаются великие умы, мир дорого оплачивает их ошибки. © Никола Тесла
==> читать все изречения...

2599 - | 2276 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.