Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методуказания к лабораторным ИИС.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
792.58 Кб
Скачать

6.Значения фу для выражений, содержащих переменные

Пусть даны команды :

FIRSTHAME = "ГЕОРГИЙ" cf 40

LASTNAME = "ГЕОРГИЕВ" cf 60

NAME = FIRSTNAME + LASTNAME

"GURU" должна воспользоваться каким-либо методом., чтобы вычислить общий ФУ для NAME. Метод объединения ФУ выражений зависит от E.CFJO. По умолчанию E.CFJO = М (минимум). В этом случае NAME имеет ФУ, равный 40. Другой примеp: FIRSTNAME = "ГЕОРГИ" cf 40, LASTHAME = "ГЕОРГИЕВ"-cf 60, NAME = FIRSTNAME + LASTNAME cf 80.

Этот пример аналогичен предыдущему, за исключением дополнительного третьего ФУ, который осложняет процесс вычисления общего ФУ. Сначала с помощью E.CFJO объединяются ФУ FIRSTNAME и LASTNAME. Выдается промежуточный ФУ, равный 40. ФУ, равный 40, объединяется. с ФУ переменной NAME, разный 80. Опять берется минимум и выбирается 40.

7.Переменные набора (нечеткие переменные)

Переменная; которая одновременно может иметь несколько значений, каждое из которых характеризуется своим фактором уверенности, называется переменной набора. С помощью этих переменных можно получать наилучшую консультацию: вы можене использовать их для того, чтобы найти наилучший вариант или наиболее вероятное значение для критериев принятия решения. Например, если А имеет 2 значения, В - 3 значения, то Х = А + В может иметь 3 значения. Дублирующие результирующие значения объединяются. Если у вас есть команда "variable = 5", то она может означать либо то, что сейчас переменная .имеет значение 5, либо то что кроме всех предыдущих значений, принимаемых этой переменной, она имеет сейчас значение 5 с ФУ 100. Чтобы различать эти случае. в "GURU" существует синтаксическая структура {…}, которая используется для того, чтобы указать набор значений, принадлежащих одной переменной. X = { } - означает, что X имеет известных значений. X = { 1,2,3 } - переменная X является переменной набора, имеющей три значения 1, 2, 3. Переменные набора могут содержать значения, относящиеся к различным типам. Напри­мер { 1, "яблоко", 2.1). Каждый элемент переменной набора мо­жет иметь свой ФУ, например: { 1 cf 30, 2 cf' 40, 3 cf 100}. Все элементы набора переносятся в присваиваемое значение, напри­мер: X = { 1, 2 cf 50, 3 }, У = X, тогда Y = { 1, 2 cf 50, 3 }. Присвоение можно выполнять и при условии неопределенности, например: X = { 1, 2, 3 }, Y = X cf 50; тогда Y = { 1 cf 50, 2 cf 50, 3 cf 50 }. Используя E.CFCC, ФУ присвоенных значений можно объединить. Допустим E.CFCO - "р". В этом случае такое представление: X = { 1 cf 50. 2 cf 60 }, Y = X cf 50 можно за­менить: У = { 1 cf 25, 2 сf 30 }.

В "GURU" существуют операторы "+ =" и "- =', которые добавляют элементы в набор и удаляет элементы из набора. Например, запись; X = { 1,2,3 } и X + = 4 означает, что Х = { 1, 2, 3, 4}. Используя операторы "+ =" можно объединить , например X = { 1,2,3 }, Y = { 4,5 }, X += Y, тогда-X = { 1,2,3,4,5 }. Еще пример: X = { 1,2,3 }, X -= { 2,3 }, тогда X = { 1 }.

8.Функции поиска ФУ

CFV ( переменная, значение ) – выдает максимальное значение ФУ данной переменной

CFN ( переменная, номер ) – выдает ФУ значения переменной, указанного номером. Порядок следующий: 1 – наивысший ФУ, 2 – второй по величине и т.д.

VALN ( переменная, номер ) – выдает значение переменной по списку

NUMVAL ( переменная ) – выдает количество значений переменной

HIVAL (HIVAL переменная ) – выдает значение переменной с наивысшим ФУ

HICF ( переменная ) – выдает ФУ значения HIVAL

LOVAL ( переменная ) – выдает значение переменной с наименьшим ФУ

LOCF ( переменная ) – выдает значение переменной LOVAL

TAB ( переменная ) – выдает внутренний номер переменной, который может использоваться командой HOW

KNOWN ( переменная ) – выдает true, если у переменной есть значения, ФУ которых превышает минимальный уровень достоверности, устанавливаемый с помощью E.UNKN. Например, геолог уверен в том, что скальный пласт можно скорее обнаружить на глубине 20 футов, чем на глубине 40 футов, а найти его на глубине 60 футов почти невозможно. Тогда BERDOCK = { 60 cf 5, 40 cf 62, 20 cf 89 }. Другой пример. Предположим, цвет (color) имеет значения: красный cf 40, желтый cf 60, голубой cf 50, а дом (house) имеет значение красный cf 70.

Таблица 3.

Примеры вычисления ФУ для различных посылок

Посылка

ФУ посылки

Если цвет = красный

40

Если цвет = красный или

цвет = голубой

40 “или” 50

Если цвет не красный

60 “или” 50

Если дом = красный

70

Если дом не красный

FALSE


9.Пример для закрепления полученных знаний о ФУ

Рассмотрим и объясним подробно пример. Воспользуемся, примером лабораторной работы 1, но внесем в него изменения. Предположим, что мы проводим технический осмотр автомобиля и хотим сделать заключение, поедет он или нет. Мы проверяем ак­кумулятор, стартер и цепь зажигания и на основе результатов осмотра принимаем решение. Вот какие правила в этой экспертной системе.

Правило 1

Если исправны стартер, аккумулятор и цепь зажигания, то двигатель заведется с ФУ, равным минимуму ФУ аккумулятора, стартера и цепи зажигания.

Правило 2

Если ФУ того, что двигатель заведется больше 30, то система

зажигания исправна.

Правило 3

Если ФУ того что двигатель заведется больше 30 к меньше 80, то необходим мелкий ремонт.

Правило 4

Если ФУ того что двигатель заведется меньше 30, то необхо­дим капитальный ремонт.

Вот как выглядит эта ЭС на языке "GURU":

GOAL: RESULT

RULE R1

IF: AKKUM = "ЗАРЯЖЕН" AND START = "ИСПРДВЕН" AND CIR =

"ИСПРАВHA"

THEN: DVIG="ЗАВЕДЕТСЯ"

REASON: ЕСЛИ CTAPТЕP, АККУМУЛЯТОР И ЦЕПЬ ЗАЖИГАНИЯ

В ИСПРАВНОМ СОСТОЯНИИ, ТО ДВИГАТЕЛЬ ЗАВЕДЕТСЯ

RULE: R2

IF: HICF(DVIG) > 80

THEN: RESULT="ИСПРАВЕН"

RSASGH: если ФУ того, что двигатель заведется больше 60,

то автомобиль – ИСПРАВЕН

RULE: R3

IF: HICF(DVIG) >= 30 AND HICF (DVIG) <= 80

ТНEN: RESULT="МЕЛКИЙ РЕМОНТ"

REASON: если ФУ того что двигатель заведется больше 30

и меньше 80, то необходим мелкий ремонт

RULE: R4

IF: HICF(DYIG) < 30

THEN: RESULT="капитальный ремонт"

REASOH: если ФУ того что двигатель заведется меньше 30,

то необходим капитальный ремонт

INITIAL:

E.RIGR = "A"

E.WHH = "F"

E.TRYP = "P"

E.LSTR = 80

E.DECI = 0

E.OFVA = "MM"

E.OFJO = "M"

E.OFCO = "M"

START = UNKNOWN

CIR = UNKNOWN

AKKUM = UNKNOWN

DVIG = UNKNOWN

RESULT = UNKNOWN

PROM = UNKNOWN

CLEAR "*** ТЕХОСМОТР АВТОМОБИЛЯ ***

OUTPUT

OUTPUT "ответьте на все вопросы и получите консультацию"

OUTPUT "по системе зажигания"

OUTPUT

DO:

CLEAR

OUTPUT "КОНСУЛЬТАЦИЯ ПО СИСТЕМЕ ЗАЖИГАНИЯ", RESULT

VAR: AKKUM

FIND: PROM=0

INPUT PROM NUM WITH “на сколько вы уверены, что аккумулятор заряжен?”

AKKUM = “ЗАРЯЖЕН” CF PROM

LABEL ОПРЕДЕЛЯЕТ ЗАРЯЖЕН ЛИ АККУМУЛЯТОР

VAR: CIR

INPUT РROM NUM WITH "насколько вы уверены, что схема зажигания исправна?"

CIR = “ИСПРАВНА” CF PROM

LABEL: ОПРЕДЕЛЯЕТ, ИСПРАВНА ЛИ СХЕМА ЗАЖИГАНИЯ

VAR: START

FIND: PROM = 0

INPUT PROM NUM WITH "насколько вы уверены, что исправен стартер?"

START = "ИСПРАВЕН"

LABEL: ОПРЕДЕЛЯЕТ, ИСПРАВЕН ЛИ СТАРТЕР

VAR: DVIG

LABEL: ОПРЕДЕЛЯЕТ, ЗАВЕДЕТСЯ ЛИ ДВИГАТЕЛЬ

VAR: RESULT

LABEL: результат технического осмотра

VAR: PROM

LABEL: промежуточная переменная для ввода ФУ

END:

Для закрепления знаний рассмотрим подробно эту ЭС. Целью является переменная RESULT. Правило R1 определяет техническое состояние приборов. Правила R2, R3, R4 проверяют граничные значения ФУ. Функция HICF() определяет максимальное значение ФУ. Теперь рассмотрим переменные, которые используются в ЭС. Переменная PROM – это вспомогательная переменная, которая служит для ввода значений ФУ.

Переменные AKKUM, START и CIR определяются одинаковым образом. Т.к. эти переменные должны вводиться в ходе диалога, то они имеют пункт FIND. Здесь сначала переменной PROM присваивается нуль, затем в переменную PROM вводится значение ФУ соответствующей переменной, затем соответствующая переменная специализируется с введенным ФУ. Данные переменные должны запрашиваться при проверке первого правила. При инициализации ЭС определяются системные переменные. E.RIGR = "А" - использование всех необходимых правил. Е.WHN - "F" - для поиска значе­ния неизвестной переменной. Поиск осуществляется еще до попытки вывести значения неизвестных переменных. При этой запрашивается FIND. E.TRYP - "Р" - терпеливо пытаться определить значения всех неизвестных переменных, а затем оценить посылку. E.LSTR - 80 - длина символьной строки, при выводе на экран. E.DECI = 0 - количество десятичных знаков. E.CFVA "ММ", E.CFJO = "М", E.CFCO = "М" определяют алгебру ФУ (см. настоящее описание лабораторной работы, п.3). Далее идет инициализация переменных и команды для определения работы системы.