Автор работы: Пользователь скрыл имя, 24 Июля 2014 в 18:53, курсовая работа
При создании своих пользовательских экспертных систем на каком-нибудь языке высокого уровня программист сталкивается с тем, что разработка интерфейса программы, реализация ее системных функций требуют больших затрат времени, чем создание самого набора правил экспертной системы (ЭС). Для того чтобы разгрузить разработчика ЭС от такой работы, существуют специальные инструментальные средства (оболочки) экспертных систем. Такие инструментальные средства есть в ЭС MYCIN, GURU, LEONARDO, DENDRAL, 1stCLASS и др.
Введение……………………………………………………………………………………………2
Техническое задание…………………………………………………………………………2
Характеристики ЭС……………………………………………………………………………..3
Тип инвестиционного портфеля………………………………………………………..4
Диаграммы…………………………………………………………………………………………5
Определение правил оценки типа портфеля………………………………….11
Тестовые примеры……………………………………………………………………………12
Код программы…………………………………………………………………………………20
Заключение………………………………………………………………………………………31
Список литературы…………………………………………………………………………..32
REASON: ВКЛАД
RULE: R2
PRIORITY: 100
COST: 100
IF: BUMAGI = 1
THEN: PORTFELEXIST = TRUE
PORTFEL-= { "ПОРТФЕЛЬ НЕИЗВЕСТЕН" cf 100 }
REASON: ЦЕННЫЕ БУМАГИ
RULE: R3
PRIORITY: 100
COST: 100
IF: BANK = 0
THEN: BUMAGI = 1
REASON: ЦЕННЫЕ БУМАГИ = 100
RULE: R4
PRIORITY: 100
COST: 100
IF: BUMAGI = 0
THEN: MONEY = 100
REASON: MONEY 100
RULE: R5
PRIORITY: 100
COST: 100
IF: MONEY = 100
THEN: PORTFELEXIST = TRUE
REASON: MONEY 100
RULE: R6
PRIORITY: 100
COST: 100
IF: BANK = 0
THEN: MONEY = 0
REASON: CB 100
RULE: R7
PRIORITY: 100
COST: 100
IF: MONEY = 0
THEN: PORTFELEXIST = TRUE
REASON: CB = 100
RULE: R8
PRIORITY: 90
COST: 100
IF: STAVKA = INFL
THEN:
PORTFEL+= { "СБАЛАНСИРОВАННЫЙ" cf 40 }
REASON: ВКЛАД=ИНФЛ1
RULE: R9
PRIORITY: 90
COST: 100
IF: STAVKA > INFL AND MONEY > 50
THEN: PORTFEL+= { "КОНСЕРВАТИВНЫЙ" cf 80 };
PORTFEL-= { "АГРЕССИВНЫЙ" cf 80 }
REASON: ВКЛАД>ИНФЛ1
RULE: R10
PRIORITY: 90
COST: 100
IF: STAVKA < INFL AND MONEY > 50
THEN: PORTFEL-= { "КОНСЕРВАТИВНЫЙ" cf 80 };
PORTFEL+= { "АГРЕССИВНЫЙ" cf 80 };
REASON: ВКЛАД<ИНФЛ1
RULE: R11
PRIORITY: 80
COST: 100
IF: BUMAGI = 1 and (AKC/(100-AKC-MONEY))>1
THEN: PORTFEL+= { "КОНСЕРВАТИВНЫЙ" cf 60};
PORTFEL-= { "АГРЕССИВНЫЙ" cf 60}
REASON:AKC > OBL
RULE: R12
PRIORITY: 80
COST: 100
IF: BUMAGI = 1 and (AKC/(100-AKC-MONEY))=1
THEN: PORTFEL+= { "СБАЛАНСИРОВАННЫЙ" cf 50}
REASON:AKC = OBL
RULE: R13
PRIORITY: 80
COST: 100
IF: BUMAGI = 1 and AKC<(100-AKC-MONEY)
THEN: PORTFEL-= { "КОНСЕРВАТИВНЫЙ" cf 60};
PORTFEL+= { "АГРЕССИВНЫЙ" cf 60}
REASON:AKC < OBL
RULE: R14
PRIORITY: 60
COST: 100
IF: SIT = 0
THEN: PORTFEL+= { "АГРЕССИВНЫЙ" cf 40 };
PORTFEL-= { "КОНСЕРВАТИВНЫЙ" cf 40}
REASON: КРИЗИС
RULE: R15
PRIORITY: 60
COST: 100
IF: SIT = 1
THEN:
PORTFEL+= { "СБАЛАНСИРОВАННЫЙ" cf 40 }
REASON: СИТУАЦИЯ 1
RULE: R16
PRIORITY: 60
COST: 100
IF: SIT = 2
THEN: PORTFEL+= { "КОНСЕРВАТИВНЫЙ" cf 40 };
PORTFEL-= { "АГРЕССИВНЫЙ" cf 40}
REASON: СИТУАЦИЯ 2
RULE: R17
PRIORITY: 60
COST: 100
IF: RISK <20
THEN: PORTFEL+= { "КОНСЕРВАТИВНЫЙ" cf 60 };
PORTFEL-= { "АГРЕССИВНЫЙ" cf 60 }
REASON: Риск портфеля<20
RULE: R18
PRIORITY: 60
COST: 100
IF: RISK >20 and RISK <60
THEN: PORTFEL+= { "СБАЛАНСИРОВАННЫЙ" cf 60 }
REASON: 60>Риск портфеля>20
RULE: R19
PRIORITY: 60
COST: 100
IF: RISK >60
THEN: PORTFEL+= { "АГРЕССИВНЫЙ" cf 60 };
PORTFEL-= { "СБАЛАНСИРОВАННЫЙ" cf 60 }
REASON: Риск портфеля > 60
RULE: R20
PRIORITY: 60
COST: 100
IF: NONFARM < 6
THEN: PORTFEL+= { "КОНСЕРВАТИВНЫЙ" cf 30 };
PORTFEL-= { "АГРЕССИВНЫЙ" cf 30 }
REASON: NONFARM < 6
RULE: R21
PRIORITY: 60
COST: 100
IF: NONFARM > 6 AND NONFARM < 15
THEN: PORTFEL+= { "СБАЛАНСИРОВАННЫЙ" cf 35 }
REASON: NONFARM > 6 AND NONFARM < 15
RULE: R22
PRIORITY: 60
COST: 100
IF: NONFARM > 15
THEN: PORTFEL-= { "КОНСЕРВАТИВНЫЙ" cf 30 };
PORTFEL+= { "АГРЕССИВНЫЙ" cf 30 }
REASON: NONFARM > 15
RULE: R23
PRIORITY: 60
COST: 100
IF: SROK <2 AND PORTFELEXIST = TRUE
THEN: PORTFEL+= { "АГРЕССИВНЫЙ" cf 30 };
PORTFEL-= { "КОНСЕРВАТИВНЫЙ" cf 30 }
REASON: ДЛИТЕЛЬНОСТЬ портфеля<2 ЛЕТ
RULE: R24
PRIORITY: 60
COST: 100
IF: SROK >2 and SROK <5
THEN: P
PORTFEL+= { "СБАЛАНСИРОВАННЫЙ" cf 30 }
REASON: ДЛИТЕЛЬНОСТЬ портфеля ОТ 2 ДО 5 ЛЕТ
RULE: R25
PRIORITY: 60
COST: 100
IF: SROK >5
THEN: PORTFEL-= { "АГРЕССИВНЫЙ" cf 20 };
PORTFEL+= { "КОНСЕРВАТИВНЫЙ" cf 20 }
REASON: ДЛИТЕЛЬНОСТЬ портфеля БОЛЕЕ 5 ЛЕТ
RULE: R26
PRIORITY: 70
COST: 100
IF: NEFT < 40
THEN: PORTFEL-= { "КОНСЕРВАТИВНЫЙ" cf 35 };
PORTFEL+= { "АГРЕССИВНЫЙ" cf 35 }
REASON: NEFT < 40
RULE: R27
PRIORITY: 70
COST: 100
IF: NEFT < 70 AND NEFT > 40
THEN:
PORTFEL+= { "СБАЛАНСИРОВАННЫЙ" cf 40 }
REASON: NEFT < 70 AND NEFT > 40
RULE: R28
PRIORITY: 70
COST: 100
IF: NEFT > 70
THEN: PORTFEL-= { "КОНСЕРВАТИВНЫЙ" cf 40 };
PORTFEL+= { "АГРЕССИВНЫЙ" cf 40 }
REASON: NEFT > 70
/*----------------------------
VAR: PORTFEL
TYPE: pp
LABEL: Сформированный Портфель
VAR: SIT
FIND: clear;
let deci=e.deci;
let lnum=e.lnum;
let e.deci=0;
let e.lnum=1;
IF PORTFELEXIST = TRUE
at 1,5 ?" ******************************
at 2,5 ?"
ЭКСПЕРТНАЯ СИСТЕМА
at 3,5 ?" ******************************
at 4,5 ?" В Данный Момент в
Стране Кризис
at 5,5 ?" Экономическая ситуация в стране средняя - 1 ";
at 6,5 ?" Экономическая ситуация в стране устойчивая - 2 ";
at 7,5 ?" ******************************
at 8,5 input SIT num with "*** Введите цифру,
соответствующую СИТУАЦИИ В
ENDIF
e.lnum = 5
e.deci = 1;
LABEL: Ситуация в стране
VAR: RISK
FIND: clear;
E.ICF = TRUE
let deci=e.deci;
let lnum=e.lnum;
let e.deci=1;
let e.lnum=4;
IF PORTFELEXIST = TRUE
at 7,5 ?" ***** ВВЕДИТЕ ДОПУСТИМЫЙ РИСК ПОРТФЕЛЯ:";
at 8,7 input RISK num with " (ПРОЦЕНТОВ КАПИТАЛА) >>>";
ENDIF
E.ICF = FALSE
e.lnum = 5
LABEL: СТЕПЕНЬ РИСКА ПОРТФЕЛЯ
VAR: NEFT
FIND: clear;
let deci=e.deci;
let lnum=e.lnum;
let e.deci=1;
let e.lnum=4;
IF PORTFELEXIST = TRUE
at 7,5 ?" ***** ВВЕДИТЕ ЦЕНУ ЗА БАРЕЛЬ НЕФТИ:";
at 8,7 input NEFT num with " (У.Е) >>>";
ENDIF
LABEL: ЦЕНА НА НЕФТЬ
VAR: INFL
FIND: clear;
let deci=e.deci;
let lnum=e.lnum;
let e.deci=1;
let e.lnum=4;
IF BANK = 1
at 7,5 ?" ***** ВВЕДИТЕ УРОВЕНЬ ИНФЛЯЦИИ:";
at 8,7 input INFL num with " (ПРОЦЕНТОВ) >>>";
ENDIF
LABEL: УРОВЕНЬ ИФЛЯЦИИ
VAR: BANK
FIND: clear;
let deci=e.deci;
let lnum=e.lnum;
let e.deci=0;
let e.lnum=1;
at 1,5 ?" ******************************
at 2,5 ?" ЭКСПЕРТНАЯ СИСТЕМА ФОРМИРОВАНИЯ ПОРТФЕЛЯ ";
at 3,5 ?" ******************************
at 4,5 ?" ЕСТЬ ЛИ У ВАС ВКЛАД В БАНКЕ ? ";
at 5,5 ?" ******************************
at 6,5 ?" НЕТ
at 7,5 ?" ДА - 1 ";
at 8,5 ?" ******************************
at 9,5 input BANK num with "*** Введите цифру, соответствующую ВКЛАДУ >>>";
e.lnum = 5
e.deci = 1;
LABEL: ДЕНЕЖНЫЕ СРЕДСТВА
VAR: MONEY
FIND: clear;
let deci=e.deci;
let lnum=e.lnum;
let e.deci=1;
let e.lnum=4;
IF BANK = 1 AND BUMAGI = 1
at 7,5 ?" ***** ВВЕДИТЕ ПРОЦЕНТ ДЕНЕЖНЫХ СРЕДСТВ НА ДЕПОЗИТЕ В БАНКЕ:";
at 8,7 input MONEY num with " (ПРОЦЕНТОВ) >>>";
ENDIF
VAR: STAVKA
FIND: clear;
let deci=e.deci;
let lnum=e.lnum;
let e.deci=1;
let e.lnum=4;
IF BANK = 1
at 7,5 ?" ***** ВВЕДИТЕ БАНКОВСКУЮ СТАВКУ ПРОЦЕНТОВ:";
at 8,7 input STAVKA num with " (ПРОЦЕНТОВ) >>>";
ENDIF
LABEL: СТАВКА ПРОЦЕНТОВ
VAR: SROK
FIND: clear;
let deci=e.deci;
let lnum=e.lnum;
let e.deci=1;
let e.lnum=4;
IF PORTFELEXIST = TRUE
at 7,5 ?" ***** ВВЕДИТЕ СРОК ДЕЙСТВИЯ ПОРТФЕЛЯ:";
at 8,7 input SROK num with " (ЛЕТ) >>>";
ENDIF
VAR: BUMAGI
FIND: clear;
let deci=e.deci;
let lnum=e.lnum;
let e.deci=0;
let e.lnum=1;
IF BANK =1
at 1,5 ?" ******************************
at 2,5 ?" ЕСТЬ ЛИ У ВАС ЦЕННЫЕ БУМАГИ ? ";
at 3,5 ?" ******************************
at 4,5 ?" НЕТ
at 5,5 ?" ДА
at 6,5 ?" ******************************
at 7,5 input BUMAGI num with "*** Введите цифру, соответствующую ВКЛАДУ >>>";
ENDIF
e.lnum = 5
e.deci = 1;
LABEL: ЦЕННЫЕ БУМАГИ
VAR: AKC
FIND: clear;
let deci=e.deci;
let lnum=e.lnum;
let e.deci=1;
let e.lnum=4;
IF BUMAGI = 1 OR BANK = 0
at 7,5 ?" ***** ВВЕДИТЕ ПРОЦЕНТ АКЦИЙ:";
at 8,7 input AKC num with " (ПРОЦЕНТОВ) >>>";
ENDIF
IF (MONEY+AKC)>100
THEN : AKC=(100-MONEY)
ENDIF
LABEL: ПРОЦЕТ АКЦИЙ
VAR: NONFARM
FIND: clear;
let deci=e.deci;
let lnum=e.lnum;
let e.deci=1;
let e.lnum=4;
IF PORTFELEXIST = TRUE
at 7,5 ?" ***** ВВЕДИТЕ УРОВЕНЬ БЕЗРАБОТИЦЫ:";
at 8,7 input NONFARM num with " (ПРОЦЕНТОВ) >>>";
ENDIF
e.lnum = 5
LABEL: УРОВЕНЬ БЕЗРАБОТИЦЫ
END:
Заключение
- выводы по работе
Данная ЭС является прототипом автономной ЭС, позволяющей давать субъективную оценку портфеля инвестора. При создании данной ЭС была использована и изучена теория нечетких множеств Заде, также была изучена среда GURU и структура машины логического вывода.
- Достоинства технологии :
-Недостатки и ограничения :
Список литературы.