- •Мурманский государственный технический университет с.И. Плотников интеллектуальные информационные системы
- •Глава 1. Классификация интеллектуальных информационных систем 4
- •Глава 2. Технология создания экспертных систем 25
- •Введение
- •Глава 1. Классификация интеллектуальных информационных систем
- •1.1. Особенности интеллектуальных информационных систем
- •1.2. Системы с интеллектуальным интерфейсом
- •1.3. Экспертные системы
- •Классы экспертных систем
- •1.4. Самообучающиеся системы
- •Индуктивные системы
- •Нейронные сети
- •Глава 2. Технология создания экспертных систем
- •2.1. Этапы создания экспертной системы
- •2.2. Идентификация проблемной области
- •2.3. Построение концептуальной модели
- •2.4. Формализация базы знаний
- •Выбор инструментальных средств реализации экспертной системы
- •2.5. Методика получения экспертных знаний
- •Психологический аспект
- •Инженер по знаниям
- •Лингвистический аспект
- •Гносеологический аспект
- •3. Создание эс в системе guru
- •3.1. Общие характеристики системы guru
- •Функциональные возможности
- •3.2. Построение экспертной системы
- •3.4. Тестирование экспертной системы
- •3.4. Запуск системы и работа в режиме меню Запуск системы
- •Некоторые сведения о работе в режиме меню
- •Использование режима меню
- •Описание команд меню Expert Systems
- •Режим редактирования набора правил (guru Rule Set Manager)
- •Режим редактирования правил
- •Часть if – посылка правила. Может быть любым выражением.
- •Режим редактирования переменных
- •Описание команд меню Information Manager
- •3.5. Пример создания эс в guru
- •Литература
- •Приложение 1 Листинг 1. Эс для оценки надежности поставщика (в среде guru)
- •Листинг 2. Пример работы эс для оценки надежности поставщика
- •Пример объяснений
- •Листинг 3. Подсистема прогнозирования цен Текст программы
- •Пример консультации (результат работы эс)
- •Приложение 2 Листинг исходного кода эс «Выбор банка»
- •Приложение 3 Листинг исходного кода эс «Выбор стратегии развития»
Листинг 2. Пример работы эс для оценки надежности поставщика
********************************
* Экспертная система *
* Оценка надежности поставщика *
******* press any key ********
Введите рентабельность (1 – есть, 2 – нет): 1
Введите задолженность (1 – есть, 2 – нет): 2
Введите рекламации (1 – есть, 2 – нет): 1 с уверенностью 30
Статус предприятия:
1 – государственное,
2 – акционерное,
3 – совместное,
4 – малое,
5 – кооперативное,
6 – индивидуальное
Укажите статус предприятия: 2
Введите удаленность поставщика км: 500
*** Ввод значений завершен ***
*** press any key ***
********************************
* Экспертная система *
* Оценка надежности поставщика *
* Вывод результатов *
******* press any key ********
Надежность поставщика – True
Фактор уверенности = 81
Пример объяснений
Rule R1 (fired)
Если рентабельность высокая и нет задолженности, то финансовое состояние достаточно высокое
(2) Рентабельность true cf 100
(3) Задолженность false cf 100
(4) Финансовое состояние true cf 100
Rule R4 (fired)
Если финансовое состояние хорошее, то надежность поставщика высокая
(4) Финансовое состояние true cf 100
(1) Надежность поставщика true cf 90
Rule R6 (fired)
Если рекламации есть, то надежность поставщика низкая
(5) Рекламации 1 cf 30
(1) Надежность поставщика true cf -18
Rule R9 (fired)
Если предприятие акционерное, то надежность высокая
(6) Статус предприятия akc cf 100
(1) Надежность поставщика true cf 70
Rule R14 (fired)
Если удаленность поставщика небольшая, то надежность высокая
(7) Удаленность поставщика 500 cf 100
(1) Надежность поставщика true cf 70
Листинг 3. Подсистема прогнозирования цен Текст программы
GOAL: PRICES
INITIAL:
e.cfjo = «M» /* факторы уверенности левой и правой частей правил объединяются по формуле Min(a, b) */
e.cfco = «P» /* факторы уверенности результатов для одной переменной объединяются по формуле a + b - (a * b) / 100 */
e.trac = «n» /* отмена трассировки; v – включить */
e.lstr = 75 /* максимальная длина строки */
? «Для начала консультации нажмите любую клавишу»
wait;
/* Исходные данные */
prodvol = {200 cf 90, 100 cf 30};
demvol = {150 cf 80, 50 cf 20};
PRICES = unknown;
DO:
? «Конец консультации»;
RULE: R1
IF: prodvol > demvol
THEN: PRICES = «падают»; cfv(PRICES, prodvol > demvol);
? «с КУ = », hicf(PRICES) , «% можно сказать, что цены»;
? «в будущем году упадут»;
wait;
RULE: R2
IF: prodvol < demvol
THEN: PRICES = «растут»; cfv(PRICES, prodvol < demvol);
? «с КУ = », hicf(PRICES) , «% можно сказать, что цены»;
? «в будущем году поднимутся»;
wait;
RULE: R3
IF: prodvol = demvol
THEN: PRICES = «6eз изменений»; cfv(PRICES, prodvol equal demvol);
? «с КУ = », hicf(PRICES) , «% можно сказать, что в будущем»
? «году цены не изменятся»;
wait;
VAR: PRODVOL
LABEL: Объем производства
VAR: DEMVOL
LABEL: Объем спроса
VAR: PRICES
END:
Пример консультации (результат работы эс)
Для начала консультации нажмите любую клавишу
с КУ = 87.00% можно сказать, что цены в будущем году упадут
Приложение 2 Листинг исходного кода эс «Выбор банка»
GOAL: KBANK
INITIAL:
E.LSTR=80
E.RIGR="A"
KBank=UNKNOWN
NADBANK=UNKNOWN
KASSRD=UNKNOWN
SBITD=UNKNOWN
ZAKD=UNKNOWN
PFORM="наличная"
PSRPLAT=3
PSRVOZ=5
PPROC=10
PPROCVK=20
INPUT TFORM STR WITH "В какой форме вы бы хотели произвести расчёты?"
INPUT TSRPLAT INT WITH "С какой срочностью вам требуется произвести расчёты?"
INPUT TSERVIS STR WITH "Обязателен ли для вас высокий сервис обслуживания?+/-"
INPUT TSRVOZ INT WITH "Требуемая срочность возврата кредита?"
INPUT TPROC INT WITH "Требуемая процентная ставка по кредиту?"
INPUT TPROCVK INT WITH "Требуемый процент по вкладам?"
INPUT REIT STR WITH "Вам обязателен высокий рейтинг банка?+/-"
INPUT EXPER INT WITH "Банк с каким опытом работы вы бы предпочли?"
INPUT GARAN STR WITH "Требуются ли вам гарантии банка?+/-"
DO:
?"Рекомендуем вам воспользоваться услугами банка:",KBank
?"Коэффициент надежности:",cfv(NADBANK,true)
RULE: R1
IF: KASSRD=TRUE AND SBITD=TRUE AND ZAKD=TRUE AND NADBANK=TRUE
THEN: KBank="ЦБРоссии"
RULE: R2
IF: KASSRD=TRUE AND NADBANK=TRUE
THEN: KBank="Мончебанк+ЦБРоссии"
RULE: R3
IF: SBITD=TRUE AND NADBANK=TRUE
THEN: KBank="ЦБанкРоссии+Альфа-Банк"
RULE: R4
IF: ZAKD=TRUE AND NADBANK=TRUE
THEN: KBank="Менатеп+ЦБРоссии"
RULE: R5
IF: KASSRD=TRUE AND SBITD=TRUE AND NADBANK=TRUE
THEN: KBank="ВнешэкономБанк+ЦБРоссии"
RULE: R6
IF: SBITD=TRUE AND ZAKD=TRUE AND NADBANK=TRUE
THEN: KBank="Банк№534+ЦБРоссии"
RULE: R7
IF: KASSRD=TRUE AND ZAKD=TRUE AND NADBANK=TRUE
THEN: KBank="Банк№701+ЦБРоссии"
RULE: R8
IF: PSrPlat<=TSrPlat and PFORM=TFORM
THEN: KASSRD+=TRUE cf 80
RULE: R9
IF: PSrPlat>TSrPlat and PFORM<>TFORM
THEN: KASSRD+=FALSE cf 20
RULE: R10
IF: TSERVIS="+"
THEN: KASSRD+=TRUE cf 40
RULE: R11
IF: TSERVIS="-"
THEN: KASSRD+=FALSE cf 60
RULE: R12
IF: PSRVOZ<=TSRVOZ
THEN: SBITD+=TRUE cf 70
RULE: R13
IF: PSRVOZ>TSRVOZ
THEN: SBITD+=FALSE cf 30
RULE: R14
IF: TPROC<=PPROC
THEN: SBITD+=TRUE cf 50
RULE: R15
IF: TPROC>PPROC
THEN: SBITD+=FALSE cf 50
RULE: R16
IF: PPROCVK>=TPROCVK
THEN: ZAKD+=TRUE CF 70
RULE: R17
IF: PPROCVK<TPROCVK
THEN: ZAKD+=FALSE CF 30
RULE: R18
IF: GARAN="+"
THEN: NADBANK+=TRUE CF 60
RULE: R19
IF: GARAN="-"
THEN: NADBANK+=FALSE CF 50
RULE: R20
IF: REIT="+"
THEN: NADBANK+=TRUE CF 70
RULE: R21
IF: REIT="-"
THEN: NADBANK+=FALSE CF 40
RULE: R22
IF: EXPER<3
THEN: NADBANK+=FALSE CF 30
RULE: R23
IF: EXPER>=3
THEN: NADBANK+=TRUE CF 70
END:
