Программа, представленная ниже, представляет собой системы с обратной цепочкой рассуждений.

Задание 1.

Выбор варианта для выполнения контрольной работы: вариант задания выбирается по двум последним цифрам номера зачетной книжки, взятым по модулю 9. Так как последние две цифры зачетной книжки 20, имеем вариант – 2. Постановка задачи:

Сформировать семантическую сеть запроса для варианта сети № 1 для определения названия фирмы, в которой директор мужчина, а гл. бухгалтер - женщина.

 

 
фирма
персона
директор
 
гл. бухгалтер
мужчина
женщина
 
кристалл
Рога и копыта
ромашка
иванов
петров
бендер
балаганов
сидоров
федорова
 
 
Имеет директора
Имеет гл. бухгалтера
Имеет директора
Имеет гл. бухгалтера  
Имеет директора  
Имеет гл. бухгалтера  
Имеет гл. бухгалтера  
Имеет директора  

 

 


Рис.1

 

 

Семантическая сеть запроса для варианта сети № 1 для определения названия фирмы, в которой директор мужчина, а гл. бухгалтер – женщина будет иметь следующий вид (рис.2):

 

фирма
персона
Имеет директора
Имеет гл. бухгалтера
гл. бухгалтер
директор
сидоров
федорова
мужчина
женщина
ромашка
Имеет  гл. бухгалтера  
Имеет директора  

 


                                           Рис. 2

 

 

Сеть запроса представляет собой подграф основной семантической сети. При построении этого подграфа используется механизм наследования свойств, что позволяет не показывать ряд вершин и дуг. Конкретные объекты, значения которых предстоит определить, помечены знаком вопроса. Извлечение знаний происходит путем наложения сети запроса на основную семантическую сеть. Вначале происходит совмещение обобщенных объектов обоих сетей. Затем рассматривается множество дуг, ведущих к конкретным объектам. Например, пусть наложение происходит в следующем порядке: Ведущая от агрегатного объекта «фирма» дуга сети запроса последовательно совмещается с дугами основной сети, ведущими к объектам «Кристалл», «Рога и копыта» и «Ромашка», пусть первым рассматривается объект «Кристалл».

Путем наложения определяются конкретные сотрудники, входящие в «Кристалл». Очевидно, что попытка совмещения сетей при этом будет неудачной, т.к. конкретный  пол  сотрудников запроса и принадлежащие «Кристалл» будут разные. Следующий вариант наложения пусть соответствует «Ромашка». При этом наложение будет успешным, значения конкретных объектов сети запроса будут найдены.


Задание 2.

Постановка задачи:

Необходимо по заданному конкретному фрейму сформировать фрейм запроса и описать процесс извлечения знаний. Конкретные значения атрибутов фрейма запроса выбираются самостоятельно.

Имеем по условию:

Конкретный фрейм

{<информация>

{<файл>;<name><d124.pas, ghf.pas, ex.pro,  ttt.txt, whj.bmp, cfd.bmp>;

<size><45, 28, 14, 257,1240 , 2105>;

<disk><a, c, d, d, d , c >;

<необходимость_сохранения><да, нет, да, да, да, да>; <возможность сохранения на дискете >}

{<возможность сохранения на дискете>;

< продукция >

< (1) (disk <> а)and (size< = 1440) ;

необходимость_сохранения= да Þ

print(‘’cохранить можно ’’ ). >}}.

Необходимо сформировать фрейм запроса для выбора нужного файла и определения возможности  его сохранения.

Фрейм запроса будет иметь следующий вид:

{<ИНФОРМАЦИЯ>

{<Файл>;

<name><?>;

<size><?>;

<DISK><C>;

<необходимость сохранения> <да>;

<возможность сохранения на дискете >}

{< возможность сохранения на дискете >;< продукция >}.

Процесс извлечения знаний происходит следующим образом:

В начале по имени фрейма запроса ИНФОРМАЦИЯ ищется соответствующий ему конкретный фрейм. Затем идет последовательная обработка слотов и их атрибутов. Обработка слота ФАЙЛ состоит в последовательном выборе значений атрибутов. Сначала выбираются и анализируются все первые по порядку значения, затем – вторые и так далее, пока не будет рассмотрено все множество значений. Наложением слота ФАЙЛ из фрейма запроса на слот конкретного фрейма происходит попытка последовательного согласования значений атрибутов обоих фреймов.

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

NAME=d124.pas

SIZE=45

После этого удачного согласования происходит аналогично описанному выше обращение к продукциям слота ВОЗМОЖНОСТЬ СОХРАНЕНИЯ НА ДИСКЕТЕ. При этом будет выполнятся продукция с меткой (1). Поскольку возможность обмена true, то будет вычисляться возможность сохранения.

Для того чтобы определить возможность сохранения определенного файла необходимо во фрейме запроса изменить строку:

<NAME><?>;на строку:<NAME><наименование файла>;.

Задание 3.

Постановка задачи:

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

Условие задачи:

Имеется шесть автомобилей: Мерседес, Газ, Камаз, Жигули, волга и Таврия. Известно, что Газ и Камаз - грузовые автомобили, т.к. имеют кузов. Мерседес, Жигули, волга и Таврия -легковые автомобили, т.к. имеют пассажирский салон. Мерседес и Камаз имеют дизельные двигатели. Волга и Жигули имеют стереомагнитофоны. Мерседес и Жигули имеют белый цвет.

Организуйте правила в систему с обратной и прямой цепочкой рассуждений.

Решение:

Программа, представленная ниже, представляет собой системы с обратной цепочкой рассуждений.

 

domains

gl,is     =symbol

constant =symbol

avto     =symbol

true         =symbol

predicates 

find_car(). car(avto) . it_is(true)

confirm(gl,is). denied(gl,is). question(gl,is).

fill(gl,is,constant).

database

db_confirm(symbol,symbol).

db_denied(symbol,symbol).

clauses

car(“Мерседес’’) if confirm(“ имеет”,”салон”),

                                      confirm(“дизельный”,”двигатель”),

                                      it_is  (“белый”),

                                      not(it_is(“стереомагнитофон”)),!

car(“Жигули”) if confirm(“имеет”,”салон”),

                                      confirm(“имеет”,”стереомагнитофон”),

                                       it_is (“белый”),

                                      not(it_is( “дизельный”)),!

car ( “Волга”) if confirm(“имеет”,”салон”),

                                      confirm(“имеет”,”стереомагнитофон”),

                                     not(it_is(“дизельный”)),

                                      not(it_is(“белый”)),!

car(“Таврия”) if сonfirm(“имеет”,”салон”),

                                      not(it_is(“стереомагнитофон”)),

                                      not (it_is(“дизельный”)),

                                      not (it_is(“белый”)),!

car(“ГАЗ”)      if сonfirm(“имеет”,”кузов”),

                                      not(it_is(“дизельный”)),

                                      not(it_is(“стереомагнитофона”)),

                                      not(it_is(белый”)),!

car(“КАМАЗ”) if confirm (“имеет”,”кузов”),

                                   confirm(“дизельный”,”двигатель”),

                                   not (it_is(“стереомагнитофона’)),

                                   not (ït_is(“белый”)),!

 It_is (“легковая”) if confirm(“имеет”,”салон”),!

 It_is (“грузовая”) if confirm (“имеет”,”кузов”),!

 find_car if car(X), write (“искомый авто-”,X).

 confirm(X,Y) if db_confirm(X,Y),!

 confirm(X,Y) if not(denied(X,Y)),!,question(X,Y).

 denied (X,Y) if db_denied(X,Y),!

question(X,Y) if write(X,”машина”? “y/n”),nl,readln(R),

        fill(X,Y,R).

fill(X,Y,y) if asserta(db_confirm(X,Y)).

fill(X,Y,n) if asserta(db_denied(X,Y)),fall.

goal

makewindow(1,23,6,”Поиск машины”,3,5,13,30), find_car.

 

Программа основана на обратной цепочке рассуждений, ее основой являются два предиката confirm и denied. Оба эти предиката во время опроса пользователя записывают ответы в динамическую базу данных , а затем по мере надобности их из нее считывают. При этом каждая машина описана высокоуровневым правилом «car», которые, в свою очередь поддерживаются правилами нижнего уровня-it_is. Выполнив все условия правила высокого уровня, программа находит необходимую машину.

 

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

 

 domains

gl,is  =symbol

con   =symbol

animal =symbol

utv   =symbol

x     =symbol

y     =symbol

 predicates

quess_car().  find_car().  test1(x).   test2(x,x).

test3(x,x,x). have_found(y). print(y). it_is(utv).

 confirm(gl,is) . denied(gl,is). question(gl,is).

 fill(gl,is,con).

 database

db_confirm(symbol,symbol).

db_denied (symbol,symbol).

  db_have_found(symbol).

clauses

 

test1(m) if it_is (“машина” ),!

test1(n).

test2(m,c) if it_is (“дизель”),have_found(“КАМАЗ”),!

test2(m,n).

test2(n,w) if it_is (“белый цвет”),!.test2(n,n).

test3 (in,c,s) if confirm(“”,””),asserta(have)

 

 

Задание 4.

Постановка задачи:

Необходимо по заданным исходным данным о проблемной ситуации разработать систему, подобную рассмотренной выше. Дать краткое описание работы системы интерфейса.

Условие задачи:

Заданы сведения об экскурсиях в следующие города:

Москва - цена -450 грн. Срок- 5дней. Можно посетить следующие экскурсионные объекты: Красная площадь, Третьяковская галерея, Исторический музей, Оружейная Палата, Кремль.

Киев - цена -170 грн. Срок- 5дней. Можно посетить следующие экскурсионные объекты: Владимирский собор, Софийский собор, Киево-Печерская Лавра.

Екатеринбург (Свердловск) - цена -550 грн. Срок- 7дней. Можно посетить следующие экскурсионные объекты: Ипатьевский дом, Геологический музей.

Париж - цена -2500 грн. Срок- 5дней. Можно посетить следующие экскурсионные объекты: Лувр, Версаль, Гранд-Опера.

Афины - цена -1700 грн. Срок- 6 дней. Можно посетить следующие экскурсионные объекты: Акрополь, Музей античной скульптуры.

 

 

Необходимо разработать интерфейс на естественном языке для извлечения информации по ключевым словам - названиям городов.

 

 

Решение:

Индексы

key(“МОСКВА” ,”ДНЕЙ-5”,”450грн”, [“Красная площадь”,”Оружейная Палата”,

”Кремль”,”Третьяковская галлерея”,”Исторический музей”]).

key(“КИЕВ”,”дней-5”,”170грн”,[“Владимирский собор”,”Софийский собор”,

”Киево-Печерскую Лавру”]).

key(“ЕКАТЕРИНБУРГ”,”дней-7”,”550грн”,[“Ипатьевский дом”,”Геологический музей”]).

key(“ПАРИЖ”,”дней-5”,”2500грн”,[“Лувр”,”Версаль”,”Гранд-Опера”]).

key(“АФИНЫ”,”дней-6”,”1700грн”,[“Акропль”,”Музей античной скульптуры”,””]).

 

Синонимы

 

double(“ЕКАТЕРИНБУРГ”,”СВЕРДЛОВСК”).

double(Y,X) if cooncat(X,”E”,Y).

 

Возможные варианты запросов

 

“мне нужна информация о”

“где продают”

“где можно купить”

“где можно найти”

 

Не ключевые слова

 

rezerv(“мне”).

rezerv(“нужна”).

rezerv(“информация”).

rezerv(“о”).

rezerv(“где”).

rezerv(“продают”).

rezerv(“можно”).

rezerv(“купить”).

rezerv(“найти”).

 

Стратегия программирования:

search if repeat,nl,getquery(X),division(X,Y), produceans(Y),

fall.

getquery(Y) if write ( “пожалуйста,задавайте Ваш вопрос”),nl,

              readln(Y),upper_lower(Y1,Y),chengeform(Y1,Y).

chengeform(S,[H/T1]) if fronttoken(S,H,S1),!,chengeform(S1,T),

              chengeeform(_,[]).

divvision([S/S1],S2) if not (rezerv(S)),S2=S!;division(S1,S2).

produceans(X) if key (X,X1,Y,Z),putflag,

                     write(X,”(“,X1,”)”,”по цене:”,Y,”грн.”),

                      write(“можно увидеть следующие места:”),

                     nl,print(Z),nl.

produceans(X) if synonim(X,X1),key(X1,Z1,y,z),putflag,

                    write(X1,”(”,Z1,”)”,”по цене:”,Y,”грн.”),

                     write (“можно увидеть:”),

                    print(Z),nl

 

produceans(X) if not (db_flag(“Флаг”)),

   write (“информации об этом нет.”),nl.

produceans( _ ) if remaflag.

putflag if not (db_flag(X)),assert(db_flag(X)),!.

putflag.

remflag if db_flag(X),retract(db)flag(X)),!.

remflag.

synonim(Y,X) if double(Y,X).

synonim(Y,X) if double(X,Y).

print([]).

print([Q?W]) if write(Q,” ”),print(W).

 

Литература.

 

1. Вагин В.Н. дедукция и обобщение в системах принятия решения. - М.: Наука, 1988. -152 с.

2. Нильсон Н. Принципы искусственного интеллекта. - М.: Радио и связь,1985. - 273 с.

3. Экспертные системы. Принципы работы и примеры: пер. С англ./ Под ред. Р. Форсайта/.- М.: Радио и связь,1987. - 252 с.

4. Братко И. Программирование на языке Пролог для искусственного интеллекта: пер. с англ. - М.: Мир, 1990 -560 c.

 

 


Дата добавления: 2018-05-12; просмотров: 205; Мы поможем в написании вашей работы!

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




Мы поможем в написании ваших работ!