bazyZnanii2003 (Лабораторные работы по Прологу (задания уточнять у преподавателя)), страница 2

2018-01-12СтудИзба

Описание файла

Файл "bazyZnanii2003" внутри архива находится в папке "Лабораторные работы по Прологу (задания уточнять у преподавателя)". Документ из архива "Лабораторные работы по Прологу (задания уточнять у преподавателя)", который расположен в категории "". Всё это находится в предмете "системы искусственного интеллекта" из 7 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "системы искусственного интеллекта" в общих файлах.

Онлайн просмотр документа "bazyZnanii2003"

Текст 2 страницы из документа "bazyZnanii2003"

2. Имя слота также служит уникальным идентификатором, т.е. уникальным именем во фрейме, к которому он принадлежит. Могут вводится специальные идентификаторы, отождествляемые с отношениями ISA, PART OF, причина-следствие и другими. В качестве слота может выступать слот «условие», а его значением может быть продукционное правило. Таким образом реализуется возможность использования продукций для организации вывода.

Основными процессами обработки фреймовых структур являются:

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

2. активизация фрейма,

3. формализация вывода путем последовательного поиска и активизации сети фреймов до нахождения наиболее соответствующего и построения на его основе экземпляра фрейма.

Другой, чрезвычайно перспективный подход создания межфреймовых связей и представления совокупности фреймов в виде сети состоит в представлении перечисленных связей ISA, PART OF, A KIND OF в виде фреймов. Семантика этих связей конкретизирует отношение и может быть детерминирована синтаксисом, а слот конкретизирует адресность связи.

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

mammal

VELUE

DEFAULT

birth

live

skin

fur

legs

4

monkey

VELUE

DEFAULT

rabbit

VELUE

DEFAULT

ako

live

ako

mammel

tail

curly

ears

long

legs

2

moves

jump

tail

short

gorilla

VELUE

DEFAULT

ako

monky

mammel

character

harm

age

8

Рис.2..

Во фрейме mammal стандартные атрибуты животных: наружный покров (skin) - мех (fur) и живородящий (live). Они наследуются фреймами monkey и rabbit и не имеют таких спецификаций в этих фреймах. Слоты могут иметь значения по умолчанию, которые определены в структуре фрейма; эти значения могут быть изменены в подфреймах. Так, все млекопитающие имеют по умолчанию четыре ноги, но у обезьян их только две.

Структура данных, определенная как фрейм, включает в себя имя предиката frame с четырьмя аргументами: первый – имя фрейма, второй – фрейм-родитель, третий – фpейм-pодитель по умолчанию и последний – список слотов. Формат структуры данных фрейма :

frame(name,[ako_val],[ako_def],

[slot_name1,

[facet_val1],

[facet_def1],

slot_name2,

[facet_val2],

[facet_def2],

. . . , ]).

где : slot_name(j) – имя слота,.

facet_val(j) – значение грани VALUE,.

facet_def(j) – значение грани DEFAULT,.

ako_val – имя фpейма-pодителя,.

ako_def – имя фpейма-pодителя по умолчанию.

Напpимеp, фрейм monkey описывается так:

frame(monkey,[mammal],[],[tail,[],[curly],legs,[2],[] ]).

Замечание: все записанные в базу данных предикаты могут быть выведены с помощью предиката

listing(frame).

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

get_frame - получить данные о фрейме.

add_frame – добавить или модифицировать фрейм.

del_frame – удалить фрейм или атрибут фрейма.

Для удобства пользователя, эти операции будут применены к структурам, которые очень похожи на записи в базе данных: фрейм ассоциируется с записью базы данных, а слоты в фрейме – с полями в записи.

Специфика фреймовой системы – наследование, умалчиваемые значения– автоматически доступна для пользователя.

формат предикатов :.

get_frame(Frame,Slot,Value),

где: Frame – имя фрейма,.

Slot – имя слота, .

Value – требуемое значение..

Замечание: каждый из аргументов может быть переменной или термом.

Напpимеp, возможен следующий запрос:

?- get_frame(rabbit, X, Y).

Система выдаст все атрибуты фрейма rabbit, и все, наследуемые им от mammal.

add_frame(...), где:

а) аргументы, такие же как и у предиката frame/4,если вводится новый фрейм,

б) если добавляются или изменяются слоты в уже имеющемся фрейме, то первые три аргумента те же, а в последнем – могут стоять параметры только одного слота.

Важное замечание к пункту б):

Следует точно указывать второй и третий аргументы add_frame/4, так как в данном случае фрейм определяется по первым трем аргументам.

Примеры:

 ввод нового фрейма cat.

?- add(cat,[mammal],[],[painting,[],[gray],skin,[],[fluffy_fur]]).

 изменение слота age существующего фрейма gorilla

?- add(gorilla,[monkey],[mammal],[age,[],[4]]).

/****Удаление фрейма ****/

del_frame(Name, SlotName),

где Name – имя фрейма, .

SlotName – а) имя удаляемого слота, заключенное в скобки: [ ] (удаляется слот).

б) пустой список: [], если удаляется весь фрейм.

Пример:

?- del_frame(rabbit,[]). % удаление фрейма rabbit.

?- del_frame(monkey,[legs]) % удаление слота legs из фрейма monkey.

Создание базы

old:-

assertz(frame(mammal,[],[],[birth,[live],[],skin,[],[fur],

legs,[],[4]])),

assertz(frame(monkey,[mammal],[],[tail,[],[curly],

legs,[2],[]])),

assertz(frame(gorilla,[monkey],[mammal],[character,[],[harm],

age,[8],[]])),

assertz(frame(rabbit,[mammal],[],[ears,[],[long],

moves,[jump],[],tail,[short],[]])).

% new : Удаление из БД предикатов frame/4

new:-

abolish(frame/4).

% add_frame: Добавление нового фрейма в БД с проверкой наличия в базе

add_frame(Name,Val,Def,[SlotName|Rest]):-

not frame(Name,Val,Def,_),

assertz(frame(Name,Val,Def,[SlotName|Rest])),

!.

% add_frame : Добавление нового слота в фрейм

% или изменение старого

add_frame(Name,Val,Def,[SlotName|Rest]):-

frame(Name,Val,Def,Slots),

add_item(SlotName,[],Sl),

ifthen(

member(SlotName,Slots),

del_frame(Name,Sl)

),

add([SlotName|Rest],Slots,SLnew),

retract(frame(Name,_,_,_)),

assertz(frame(Name,Val,Def,SLnew)).

% del_frame : Удаление фрейма из БД

% a) - Такого фрейма в БД нет

del_frame(Name, Slot):-

not frame(Name,_,_,_),

write('Такого фрейма в системе нет'),

!.

% б) - второй аргумент - [] -пустой список =>

% => удаляется весь фрейм

del_frame(Name, Slot):-

Slot == [],

retract(frame(Name,_,_,_)),!.

% в) - Второй аргумент(имя слота) не пуст =>

% => удаляется слот

del_frame(Name, Slot):-

frame(Name,Val,Def,SlotList),

Sl =.. Slot,

del3( [Sl,_,_], SlotList, Lnew),

retract(frame(Name,_,_,_)),

assertz(frame(Name,Val,Def,Lnew)).

% get_frame : Получить значение из фрейма

% a) имя фрейма – переменная

get_frame(Frame,Slot,Value):-

abolish(req/3),

var(Frame),

frame(Frame,_,_,_),

help_frame(Frame,Slot,Value),

req(_,Slot,Value).

% б) имя фрейма – терм

%

get_frame(Frame,Slot,Value):-

help_frame(Frame,Slot,Value),

req(_,Slot,Value).

/*** help_frame : вспомогательный предикат; реализован***/

% отдельно лишь в силу технической

% особенности Пролога

help_frame(Frame,Slot,Value):-

abolish(req/3),

nonvar(Frame),

frame(Frame,_,_,DataList),

prep_req(Frame,DataList),

legacy(Frame).

/************************************/

% legacy : реализация алгоритма наследования.

% legacy(имя_фpейма) возвращает имя фpейма-pодителя

legacy(no).

legacy(Frame):-

prep_frame(Frame,Value),

ifthenelse(

Value \== no,

body(Value),

!

).

% prep_frame: вспомогательный предикат, возвращает имя

% фpейма-pодителя

% prep_frame(+имя_фpейма, -имя_фpейма-pодителя)

%

prep_frame(Frame,Value):-

frame(Frame,Val,Def,_),

ifthenelse(

Val \== [],

Value =.. Val,

ifthenelse(

Def \== [],

Value =.. Def,

Value =.. [no]

)

).

% body : вспомогательный предикат

body(Value):-

frame(Value,_,_,DataList),

prep_req(Value,DataList),

legacy(Value).

% prep_req : Подготовка записей для фрейма:

% вспом.пpедикат, результат действия -

% запись в БД предикатов req/3.

% req(имя_фpейма, имя_слота, значение),

prep_req(F,[]).

prep_req(F,[S1,V1,D1|Rest]):-

ifthen(

not req(_,S1,_),

ifthenelse(

V1 \== [],

assertz(req(F,S1,V1)),

ifthen(

D1 \== [],

assertz(req(F,S1,D1))

)

)

),

prep_req(F,Rest).

% member : проверка принадлежности элемента списку:

% member(элемент, список).

member(X,[X|L]):-!.

member(X,[Y|L]):-member(X,L).

% Конкатенация списков :

% add : add(список1, список2, список1+список2)

add([],L,L).

add([X|L1],L2,[X|L3]):-

add(L1,L2,L3).

% Добавление элемента к списку :

% add_item : add_item(элемент,список,элемент+список)

add_item(X,L,[X|L]).

% del3 : Удаление трехэлементного подсписка из списка

% del3(+тpехэл.подсписок, +исх.список, -получ.список)

%

del3([X1,X2,X3], [X1,X2,X3|Rest], Rest ).

del3( [X1,X2,X3], [Y1,Y2,Y3|Rest], [Y1,Y2,Y3|Rest1] ):-

del3( [X1,X2,X3], Rest, Rest1).

ЗАДАНИЕ. Используя приведенное выше описание написать программу фреймового представления знаний о разных отрядах животных. Создать базу знаний. Предусмотреть возможность удаления фрейма, его модификацию, присвоения значений слотам.

ЛАБОРАТОРНАЯ РАБОТА №3

Экспертная система, основанная на фреймовом представлении знаний

Цель – знакомство с фреймовой системой представления знаний.

Рассмотрим фрейм-ориентированную систему, которая играет роль советчика в финансовых инвестициях. Этот советчик «Advisor» в состоянии «подсказать».

  1. Будет ли расти, убывать или останется неизменной процентная ставка прибыли в течение 12-месячного периода.

  2. Будет ли увеличиваться или уменьшаться годовой доход за тот же период.

  3. Будут ли расходы больше или меньше бюджета.

  4. Насколько велик риск пользователя.

Фрейм содержит слоты interest, revenues, expenses, risk, term и investment (рис. 3.).

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

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5231
Авторов
на СтудИзбе
425
Средний доход
с одного платного файла
Обучение Подробнее