Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

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






Приложение 1. Пример экспертной системы, иллюстрирующий возможности “GURU”





 

Пример экспертной системы, иллюстрирующий возможности “GURU”

 

/* INVESTORS.RSS */

/* */

 

GOAL: advice

 

INITIAL:

e.tryp = “e”

e.lstr = 80 /* Максимальная длина строки 80 */

e.deci = 0 /* Нет цифр после десятичной запятой */

e.lnum = 8 /* Длина числа */

savperdep = 5000 /* Допустимый минимум сбережений */

/* в расчете на одного иждивенца, при котором общие сбе- */

/* жения семьи можно назвать ‘хорошими’ (true) */

incperdep = 4000 /* Минимально допустимый доход на */

/* одного иждивенца */

basincome = 15000 /* Минимально допустимый доход */

/* главы семьи */

/* Общий хороший доход семьи определяется объединением */

/* incperdep и basincome */

advice = unknown

goodsave = unknown

goodincome = unknown

income = unknown

savings = unknown

steady = unknown

needincome = unknown

dependents = unknown

newcash = unknown

clear

output “ КАПИТАЛОВЛОЖЕНИЯ”

input newcash num

 

DO: /* Этот раздел выполняется после того, */

/* как обработаны правила */

 

output “НА ОСНОВЕ ДАННОЙ ИНФОРМАЦИИ:”

test advice

case “АКЦИИ”:

output “ ВАМ СЛЕДУЕТ ВЛОЖИТЬ ВСЮ СУММУ В АКЦИИ.”

break

case “СБЕРЕЖЕНИЯ”:

output “ ВАМ СЛЕДУЕТ ПОМЕСТИТЬ ВСЮ СУММУ В СБЕРЕЖЕНИЯ.”

break

case “КОМПРОМИСС”:

tosave = min (newcash, (savperdep * dependents) – savings)

tostock = max(0, newcash – tosave)

output “ ВАМ СЛЕДУЕТ ПОМЕСТИТЬ В СБЕРЕЖЕНИЯ”

tosave using “$ff,fff,fff”

if tostock > 0 then

output “ И ВЛОЖИТЬ ”, tostock using “$ff,fff,fff”, “ В АКЦИИ.”

endif

break

endtest

e.deci = w

e.lnum = 14

 

RULE: R1

IF: goodincome and goodsave

THEN: advice = “АКЦИИ”

NEEDS: goodincome goodsave

REASON: ВКЛАДЫВАТЬ В АКЦИИ, ЕСЛИ КЛИЕНТ

НАДЕЖНЫЙ В ФИНАНСОВОМ ОТНОШЕНИИ

 

RULE: R2

IF: not goodincome

THEN: advice = “СБЕРЕЖЕНИЯ”

NEEDS: goodincome

REASON: НЕ ВКЛАДЫВАЙТЕ В АКЦИИ, ЕСЛИ ВАШ ДОХОД

В НАСТОЯЩЕЕ ВРЕМЯ НЕУСТОЙЧИВ

 

RULE: R3

IF: not goodsave and goodincome

THEN: advice = “КОМПРОМИСС”

REASON: ЕСЛИ СБЕРЕЖЕНИЯ НЕБОЛЬШИЕ, ТОГДА ОНИ ДОЛЖНЫ

БЫТЬ УВЕЛИЧЕНЫ ДО ТОГО, КАК ИХ ВКЛАДЫВАТЬ

 

RULE: R4

IF: not steady

THEN: goodincome = false

REASON: ДЛЯ ХОРОШЕГО ДОХОДА НЕОБХОДИМА ПОСТОЯННАЯ РАБОТА

 

RULE: R5

IF: not (income > needincome)

THEN: goodincome = false

REASON: ДОХОД НЕ ЗАВИСИТ ОТ ВАС И ОТ ИЖДИВЕНЦЕВ

 

RULE: R6

IF: not (income > needincome)

THEN: goodincome = true

REASON: ЧТОБЫ ДОХОД БЫЛ ХОРОШИЙ, КЛИЕНТ ДОЛЖЕН ИМЕТЬ

ПОСТОЯННУЮ РАБОТУ

 

RULE: R7

IF: known(“income”) and known(“dependents”)

THEN: needincome = baseincome + (dependents * incperdep)

REASON: НЕОБХОДИМЫЙ ДОХОД – ЭТО ДОХОД, КОТОРЫЙ ВАМ

НЕОБХОДИМ ПЛЮС ОБЩИЙ ДОХОД ВСЕХ ВАШИХ ИЖДИВЕНЦЕВ

 

RULE: R8

IF: savings > (saveperdep * dependents)

THEN: goodsave = true

REASON: СБЕРЕЖЕНИЯ КЛИЕНТОВ ДОЛЖНЫ ЗАВИСЕТЬ ОТ НИХ

САМИХ И ОТ ИЖДИВЕНЦЕВ

 

RULE: R9

IF: savings <= (saveperdep * dependents)

THEN: goodsave = false

REASON: СБЕРЕЖЕНИЯ КЛИЕНТОВ ДОЛЖНЫ ЗАВИСЕТЬ ОТ НИХ

САМИХ И ОТ ИЖДИВЕНЦЕВ

 

NEEDS: savings dependents

REASON: СБЕРЕЖЕНИЯ КЛИЕНТОВ НЕ ЗАВИСЯТ ОТ НИХ САМИХ И

ОТ ИЖДИВЕНЦЕВ.

 

 

/* ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ */

 

VAR: NEWCASH

LABEL: СУММА НАЛИЧНЫХ ДЕНЕГ ДЛЯ ВКЛАДА

 

VAR: ADVICE

LABEL: ДАННЫЙ СОВЕТ

 

VAR: GOODINCOME

LABEL: ТЕКУЩИЙ ДОХОД – ХОРОШИЙ

 

VАR: GOODSAVE

LABEL: ТЕКУЩИЕ СБЕРЕЖЕНИЯ – ХОРОШИЕ

 

VAR: NEEDINCOME

LABEL: НЕОБХОДИМАЯ СУММА ДОХОДА

 

VAR: INCOME

FIND: input income num with "КАКОЙ ВАШ ГОДОВОЙ ДОХОД СЕМЬИ?"

LABEL: ТЕКУЩИЙ ДОХОД

 

VAR: SAVINGS

FIND: input savings num with "СКОЛЬКО У ВAC СБЕРЕЖЕНИЙ?"

LABEL: ТЕКУЩИЕ СБЕРЕЖЕНИЯ

VAR: STEADY

FIND:

output "МОЖЕТЕ ЛИ ВЫ ОЖИДАТЬ СТАБИЛЬНЫЙ ДОХОД НА ”

output "СЛЕД. ГОД? (y/n) "

input steady str using "u"

steady = (steady = "Y")

LABEL: НАДЕЖНЫЙ ДОХОД

 

VAR: DEPENDENTS

FIND:

output ” СКОЛЬКО У ВАС ИЖДИВЕНЦЕВ? "

input dependents num using "dd"

LABEL: ЧИСЛО ИЖДИВЕНЦЕВ

END:

 

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

В INITIAL идет инициализация переменных. Рассмотрим ее отдельные строки.

 

e.tryp = 'e' - задает стратегию оценки посылки (части “if” пра­вила), содержащего неизвестные переменные. Истинность посылки оценивается сразу же после того, как очередная неизвестная переменная становится известной. Тестирование посылки прекращается (несмотря на то, что все переменные в ней еще не опре­делены), если только удается определенно установить ее истин­ность или ложность.

 

e.lstr = 80 - максимальная длина символьной строки, которая может выводиться на экран.

 

е.lnum = максимальная длина числа.

 

В VAR описываются пользовательские переменные (см. списа­ние лабораторнойработы 1).

 

Часть DO - окончание работы экспертной системы. Конструк­ция test... case... endtest проверяет переменную advice и в зависимости от ее значения выполняет те или иные действия.

 

Рассмотрим, как может работатьэта система. После запуска происходит инициализация переменных. Консультация с ЭС идет ме­тодом обратной аргументации. Система "GURU" в этом случае начи­нает е конца. Определяется цель ADVICE. Т.к. она неизвестна, то просматриваются те правила, которые определяют ADVICE. В нашем случае первым правилом, где определяется ADVICE будет R1. Здесь неизвестны GQODINCOME и GOODSAVE.

GQODINCOME сначала определяется в R4. GOODSAVE - в R8. В R4 проверяется переменная STEADY. Ее значение запрашивается с помощью оператора FIND в описании переменной. Если R4 не может быть выполнено (посылка ложна),то тестируется R5, если R4 истинно (посылка верна), переменной GOODINCOME присваивается значение "false", "GURU" определяет, что посылка правила R1 не­верна и переходит к оценке посылки правила R2. В R2 посылка вер­на, поэтому из этого правила определяется advice - цель систе­мы. На этой вывод завершается. При тестировании R5 нам придется определить значение переменных INCOME и NEEDINCOME и т.д.

Аналогично находится переменная GOODSAVE ( правила R8 и R9).

На рис.1 показана часть дерева решений.

 

 

В скобках на рис.1 показаны правила, где определяется данная переменная или FIND, если она вводится с клавиатуры.

Первый вопрос, который задаст ЭС: "Какую сумму наличных денег Вы хотели бы вложить?"

Введите: 12000 <Enter>

Следующий вопрос: "Можете ли Вы ожидать стабильный доход на следующий год?"

Введите: “Y”

"Какой Ваш годовой доход семьи?”

Введите: 35000 <Enter>

"Сколько у Вас иждивенцев?"

Введите: 4

"Сколько у Вас сбережений?”

Введите: 10000 <Enter>

Экспертная система выводят сумму, которую следует отложить в сбережения и сумму, которую необходимо вложить в акция.

Разберите подробно работу этой ЭС для того, чтобы создать свою.

 


Date: 2015-12-12; view: 633; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию