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

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

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

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

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

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

В Prolog’е фрейм может быть определен как структура, содержащая список слотов. Каждый слот имеет имя и значение, разделенные двоеточием. Обращаются к паре Name:Value как единому аргументу, но разные части аргумента могут быть доступны по необходимости.

fa_frame([interest:Interest,

revenues:Revenues,

expenses:Expenses,

risk:Risk,

term:Term,

investment:Investment]).

(Имя предиката fa_frame образовано из начальных букв finansial advisor.)

Фреймы могут хранить не только фактографическую информацию, как fa_frame, но и информацию о внутренних процедурах–демонах. Демоны могут, например, формулировать вопрос или определять список допустимых значений, которые возможны в слоте. Система использует эту дополнительную информацию, чтобы задать соответствующий вопрос об обновлении информации в слоте или проверке необходимости передачи пользователем информации в конкретный слот. Одна из процедурных связей позволяет задать вопрос в момент ожидания нового значения для слота. Например, когда системе необходимо заполнить значением слот interest, будет задан вопрос: «Какова ожидаемая ставка прибыли в следующем году?» При вводе ответа система проверит на допустимость введенных значений из заданного списка (+, -, unchanged).

Следующие структуры valdef содержат продукционную связь определения допустимых значений для конкретного слота. Например, определение expenses устанавливает два состоятельных значения для этого слота. Знак плюс означает, что расходы превысят бюджет на 10%; знак минус – расходы не превысят бюджет на 10%.

valdef(expenses, 'Exceed budget (by more than 10%)',+).

valdef(expenses, 'Ниже уровня бюджета на 10%',–).

valdef(expenses, 'Не изменится', =).

valdef(revenues, 'Превысят ожидания (более 10%)', +).

valdef(revenues, 'Небольшое снижение (более 10%)', –).

valdef(revenues, 'Ia eciaiyony', =).

valdef(interest, 'Рanoao',up).

valdef(interest, 'Не изменится',unchanged).

valdef(interest, 'Снизится',down).

valdef(risk,'Низкий',low).

valdef(risk,'средне-низкий',medium-low).

valdef(risk,'средне-высокий',medium-high).

valdef(risk,'высокий',high).

valdef(investment,'Правительственные', gov).

valdef(investment, 'Банков свободной зоны или евродоллары',offshore).

valdef(investment,'Беспроцентные залоговые ценные бумаги',unrated).

valdef(investment,'Облигации банков или корпораций',obligs).

valdef(term,'Короткий (1–3 мес)',short).

valdef(term,'Nредний (3–6 мес)',medium).

valdef(term,'Aeeiiue (6–12 мес)',long).

Структура question содержит вопросы, которые ассоциированы с каждым слотом в фрейме.

question(interest,'Какую ставку дохода ожидаете в следующем году?').

question(expenses,'Насколько могут реальные расходы отличаться (отклоняться) от ожидаемых?').

question(revenues,'Насколько могут отличаться (отклоняться) реальные доходы от ожидаемых?')

question(interest,'Каков допустимый риск?').

Сроки капитальных вложений (investment) определяются из значений interest, revenues и expenses. Каждое из следующих правил определяет сроки вложений, которые соответствуют конкретной комбинации вклада, годового дохода и расходов. Правила записаны для фреймов, которые в целом их содержат. Например, рекомендуемый срок вклада – short, если interest down (низкий), если revenue (годовой доход) «–» (минус) и expenses (расходы) “+” или “=”.

rule(term:short, [interest:[down], revenues:[–], expenses:[+,=]]).

rule(term:medium, [interest:[down], revenues:[–], expenses:[–]]).

rule(term:medium, [interest:[down], revenues:[=], expenses:[+]]).

rule(term:long, [interest:[down], revenues:[=], expenses:[–,=]]).

rule(term:long, [interest:[down], revenues:[+], expenses:[+,=,–]]).

rule(term:short, [interest:[up], revenues:[+,=,–], expenses:[+,=,–]]).

rule(term:medium, [interest:[unchanged], revenues:[=], expenses:[=,–]]).

rule(term:short, [interest:[unchanged], revenues:[=], expenses:[+]]).

rule(term:long, [interest:[unchanged], revenues:[+], expenses:[=,–]]).

rule(term:medium, [interest:[unchanged], revenues:[+], expenses:[+]]).

Слот investment определяется значениями слотов risk и term. Таким образом, если risk – low и term – medium or long, то рекомендуемое вложение –gov. Это правило имеет вид:

rule(investment: gov, [risk:[low], term:[medium,long]]).

rule(investment:obligs, [risk:[low], term:[short]]).

rule(investment:obligs, [risk:[low-medium],term:[medium,long]]).

rule(investment:offshore, [risk:[low-medium],term:[short]]).

rule(investment:offshore, [risk:[medium-high],term:[short,medium,long]]).

rule(investment:unrated, [risk:[high],term:[short,medium,long]]).

В системе fa_frame определяется текущее множество условий, которые должны анализироваться.

Структуры valdef и question определяют связанные процедуры для фрейма. Наконец, правила для определения рекомендуемых вложений также представляются фреймами.

Пользовательские консультации

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

Фрейм-ориентированные системы различают прототип фрейма и его экземпляр. Все экземпляры имеют одинаковое число и тип слотов. Все процедурные связи и эвристики применяются ко всем экземплярам. Очевидно, каждый экземпляр содержит разные значения слотов.

Когда экземпляр вызывается впервые, система должна возвращать копию fa_frame из базы:

fa_frame([Interest,Revenues,Expenses,Risk,Term,Investment])

Когда фрейм загружен, система задает вопросы, ассоциированные со слотами investment, revenues, risk, expenses и проверяет ответ пользователя на допустимость значений для этих слотов. Эти шаги являются частью рекурсивного цикла (bind_all), выполняемого над списком слотов, которые требуют ввода пользователем информации.

bind_all([],_).

bind_all([S:V|Slots],I):-

first_unbound_slot([S:V|Slots],I,Index),

user_choose_value([S:V|Slots],Index),

bind_all(Slots,Index).

Предикат first_unbound_slot рекурсивно ищет список для тех элементов, которые еще не заполнены. Предикат успешен, если аргумент Val является переменной, иначе пропускает конкретизированные переменные и проверяет, является ли следующий аргумент переменной.

first_unbound_slot([Slot:Val|Slots]):-

var(Val),!.

first_unbound_slot)[_|Slots]):-

first_unbound_slot(Slots).

Когда будет найден несвязанный элемент, предикат bind_all ia?aaaco nienie i?aaeeaoo user_choose_value. Этот предикат задает вопрос, ассоциированный с несвязанным слотом, и вызывает предикат get_ans, чтобы заполнить слот ответом пользователя.

user_choose_value([Slot:Val|Slots]):-

question(Slot,Q),

write(Q),

get_ans(Slot,Val,Q),!.

Предикат get_ans считывает ответ пользователя и проверяет его значимость. Если ответ незначим, get_ans выводит сообщение, содержащее допустимые значения для слота. Поэтому запрос будет повторен для нового ввода ответа пользователем .

get_ans(Slot, Ans, Q):-

read(Ans),get_ans(Ans),

valdef(Slot,_,Ans),!

get_ans(Slot, Ans, Q):-

write('Допустимое значение слота':Slot),nl,

get_ans_aux(Slot,Q),

get_ans(Slot,Ans,Q).

get_ans_aux(Slot,Q):-

valdef(Slot,Prompt,Def),

tab(4),write(Prompt:Def),nl,fail.

get_ans_aux(Slot,Q):-

nl,wtite(Q).

Сокращение пространства решений

В некоторых относительно несложных проблемах возникает необходимость сокращения пространства решений. Поскольку число переменных и число допустимых значений, которые эти переменные могут принимать возрастает, число возможных комбинаций растет настолько быстро, что вскоре мы имеем неуправляемое пространство решений. Этот феномен известен как «комбинаторный взрыв». Этот рост нелинеен. Все возможные значения всех переменных комбинируют. В рассматриваемом примере мы имеем три возможных значения для interest, expenses, term и revenues, четыре для risk и investment. Размер пространства решений принимает значение

333344=1296.

Из этих 1296 комбинаций лишь 108 значимы. Для логического вывода удаляются все лишние правила. Таким образом 108 возможных решений могут быль выведены только семнадцатью правилами. Они определяют допустимые комбинации значений, которые фрейм может содержать. Получение решения, таким образом, требует только ту текущую конкретизацию фрейма, которая соответствует одному из определенных в правиле образцов фрейма.

Выбор текущего правила процессором логического вывода осуществляется в соответствии с обратным либо прямым методом вывода. Применение правил к экземпляру фрейма связано с унификацией. Поскольку правило может определить список значений слота, и какое-то одно значение является значимым, то процессор логического вывода не может полностью полагаться на схему унификации Prolog’а. Он активизирует предикат unify для проверки принадлежности значения слота списку значений в правиле.

apply_rules(Trole:Tval, Froles):-

rule(Trole:Tval,Frole_list),

unify(Froles,Frole_list).

unify([],[]).

unify([H:Val|T],[H1:Val1|T1]):-

member(Val,Val1),

unify(T,T1).

Система в начале применяет правила для определения значения term. Затем использует правила для определения investment. Это достигается добавлением двух подцелей apply_rules в запускающем предикате fa:

fa:-

fa_frame([Interest,Revenues,Expenses,Risk,Term,Investment]),

bind_all([Interest,Revenues,Expenses,Risk],1),

apply_rules(Term,[Interest,Revenues,Expenses]),

apply_rules(Investment,[Risk,Term]).

Объяснения результатов консультаций

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

Текст объяснения является некоторой процедурной связью в слоте. Если части текста объяснения построены аккуратно, в совокупности они должны соответствовать состоянию системы.

explain(interest:down, 'Поскольку вы ожидаете снижение ставки прибыли, то было бы естественным сделать долговременные инвестиции, чтобы сохранить высокую текущую прибыль').

explain(interest:up,'Поскольку вы ожидаете повышение ставки прибыли, было бы естественным сделать короткие инвестиции, что позволит вам позднее реинвестировать высокие прибыли').

explain(interest:unchanged,'Поскольку вы ожидаете неизменной ставку прибыли, окажутся неизменными и сроки выплаты ваших инвестиций').

explain(revenues: –,'Так как годовой доход может быть меньше ожидаемого').

explain(revenues: +,'Так как годовой доход должен быть больше ожидаемого').

explain(revenues:=,'Отклонение годового дохода от бюджета маловероятно').

explain(expenses: –,'и расходы могут быть ниже ожидаемых').

explain(expenses: +,'и расходы должны быть выше ожидаемых').

explain(expenses: =,'и расходы вряд ли сильно отклонятся от бюджета').

explain(term: short,'целесообразны краткосрочные инвестиции. Поскольку рекомендованный срок короткий').

explain(term:medium,'действуйте осторожно и инвестируйте на средний срок. Так как рекомендуемый срок средний').

explain(term:long,'долгосрочные инвестиции наиболее целесообразны. Так ка рекомендуемый срок длинный').

explain(risk:low,'и вы предпочитаете небольшой риск, и хорошим инвестиционным средством для вас').

explain(risk:low–medium,'и вы предпочитаете риск от низкого до среднего, и хорошим инвестиционным средством для вас').

explain(risk:medium–high,'и вы предпочитаете риск от среднего до высокого, хорошим инвестиционным средством для вас').

explain(risk:high,'и вы предпочитаете высокий риск, и хорошим инвестиционным средством для вас').

explain(investment:usgov,'являются (фактически без риска) правительственные инвестиции').

explain(investment:obligs,'является невысокий риск по облигациям крупных банков и корпораций').

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