Файл: Лабораторная работа 2 Разработка экспертной системы с нечеткими правилами в системе Visual prolog. Цель работы.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.02.2024
Просмотров: 11
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Лабораторная работа №2
Разработка экспертной системы с нечеткими правилами в системе Visual
PROLOG.
Цель работы: Разработка в среде программирования Visual PROLOG
экспертной системы, которая, на основе алгоритма нечёткого вывода
Мамдани, решает задачу из Лабораторной работы №2.
Visual
PROLOG является одной из реализаций языка программирования высокого уровня PROLOG. Ее отличает большая скорость компиляции и счета. PROLOG – это декларативный язык,
программы на котором содержат объявления логических взаимосвязей,
необходимых для решения задачи. В языке PROLOG рассматриваются отношения между утверждениями и объектами, характерные для логики предикатов.
При программировании на языке PROLOG усилия программиста должны быть направлены на описание логической модели фрагмента предметной области решаемой задачи в терминах объектов предметной области, их свойств и отношений между собой. Фактически язык PROLOG
представляет собой не столько язык для программирования, сколько язык для описания данных и логики их обработки. Программа на языке PROLOG не является таковой в классическом понимании, поскольку не содержит явно управляющих конструкций типа условных операторов, циклических операторов и других.
Факты.
Факты – это истинные высказывания (в естественном языке – это повествовательные предложения) об объектах или явлениях предметной области. Факты констатируют, что между объектами выполнены некоторые отношения. Факт представляет собой безусловное истинное утверждение.
При записи фактов на языке PROLOG важно соблюдать следующие правила:
1. Имена всех отношений и объектов должны начинаться со строчной буквы.
2. Сначала записывается имя отношения, затем, через запятую,
записываются имена объектов, а весь список имен объектов заключается в круглые скобки.
3. Каждый факт заканчивается точкой.
Определяя с помощью фактов отношения между объектами необходимо учитывать в каком порядке перечисляются имена объектов внутри круглых скобок. Этот порядок может быть произвольным, но выбрав
1 раз какой-то определенный порядок необходимо следовать ему и далее.
Переменные
Имя переменной должно начинаться с прописной буквы или знака подчеркивания.
Правила
В языке PROLOG правила используются в том случае, когда необходимо показать, что некоторый факт зависит от группы других фактов.
Правила представляют собой некоторое общее утверждение об объектах и отношениях между ними.
В программах на языке PROLOG существует три типа предложений
(clauses): факт, правило вывода, цель. Каждое предложение должно заканчиваться точкой. Факт - утверждение, истинность которого безусловна.
domains
/*(домены) – раздел объявлений*/;
database
/* описания предикатов динамической базы данных */
predicates
/* описания предикатов */
goal
/* целевое утверждение */
clauses
/* утверждения – факты и правила */
В программе по крайней мере должны быть разделы predicates и clauses. Раздел domains напоминает объявление данных в традиционных
(императивных) языках, например таких, как Паскаль и Си. Существуют следующие типы доменов:
char (символьный),
integer (целый),
real (вещественный),
string (строковый),
symbol (для цепочки из букв, цифр и символов подчеркивания с первой строчной буквой либо цепочки знаков в двойных кавычках),
file (файловый).
Ниже в качестве примера рассматривается построение экспертной системы, которая выполняет определение среднего срока службы труб городской теплосети в зависимости от температуры воды и концентрации агрессивных веществ в воде.
Входными параметрами для этой системы служат аргументы T и N,
задающие температуру воды и концентрацию агрессивных веществ в воде соответственно.
Содержательные правила для разрабатываемой системы можно задать следующим образом:
R1: Если вода горячая и концентрация агрессивных веществ высокая,
то срок службы труб мал.
R2: Если вода теплая и концентрация агрессивных веществ низкая, то срок службы труб большой.
R3: Если вода горячая и концентрация агрессивных веществ низкая, то срок службы средний.
R4: Если вода теплая и концентрация агрессивных веществ высокая, то срок службы средний.
Для формализованного задания указанных правил введем следующие лингвистические переменные: t – температура воды, n – концентрация агрессивных веществ, s – срок службы труб. Кроме того, зададим нечеткие множества (термы): T1, Т4 – "вода горячая", T2, Т3 – "вода теплая", N1, N3 –
"концентрация агрессивных веществ высокая", N2, N4 – "концентрация агрессивных веществ низкая", S1 – "срок службы мал", S2 – "срок службы большой", S3 и S4 – “срок службы средний”.
С учетом введенных обозначений приведенные выше правила можно записать в следующем формализованном виде:
R1: if t = T1 and n = N1 then s = S1
R2: if t = T2 and n = N2 then s = S2
R3: if t = T3 and n = N3 then s = S3
R4: if t = T4 and n = N4 then s = S4
Графически вывод решения с помощью алгоритма нечеткого вывода
Мамдани при заданных нечетких множествах приведен на рис. 1.
Рис. 1. Схема алгоритма нечеткого вывода
В программе вводятся конкретные значения температуры воды – T , и средней концентрации – N. Предикаты F1, F2, F3, F4, F5, F6, F7, F8
вычисляют значения функций принадлежности для соответствующих термов
(T1, N1, T2, N2, T3, N3, T4, N4). Затем с помощью предикатов RULE1,
RULE2, RULE3 и RULE4 находится наименьшее значение функции принадлежности (ФП) для нечетких множеств T1, N1 (для R1) – α1,
наименьшее значение ФП для нечетких множеств T2, N2 (для R2) – α2,
наименьшее значение ФП для нечетких множеств T3, N3 (для R3) – α3 и наименьшее значение ФП для нечетких множеств T4, N4 (для R4) – α4.
Предикаты FB1, FB2, FB3 и FB4 служат для задания значений функций принадлежностей лингвистической переменной “срок службы труб”
для термов “срок службы труб мал”, “срок службы труб средний” и “срок службы труб большой”.
Вычисление срока службы труб производится с помощью предиката
SREZ по формуле центра площади. Каждый из интегралов задается как сумма произведений шага интегрирования (параметр DY) на значение функции принадлежности в правом конце суммируемого отрезка. В
приведенном примере DY вычисляется как отношение интервала интегрирования (20) к числу шагов итерации (12). Номер итерации в процессе вычислений задается с помощью переменных I и IP. Причем, I
используется при определении номера итерации в теле предиката SREZ, а IP
служит в качестве параметра, задающего следующий номер итерации (IP = I
+ 1) при рекурсивном вызове предиката SREZ.
Номер итерации в процессе вычислений задается с помощью переменных I и IP. Переменная I используется при определении номера итерации в теле предиката SREZ, а переменная IP служит в качестве параметра, задающего следующий номер итерации (IP = I + 1) при рекурсивном вызове предиката SREZ.
Начальное и текущее значение суммы, используемой на очередном шаге итерации при приближенном вычислении интеграла в знаменателе формулы центра площади, задается с помощью переменных SR и SR1.
Причем, SR используется в качестве исходного параметра, задающего текущее значение суммы до приращения, а SR1 служит в качестве исходного
параметра, задающего текущее значение суммы после приращения при рекурсивном вызове предиката SREZ.
Переменные SR2 и SR3, используются в качестве результирующих параметров, которые позволяют вернуть значение вычисленной на очередном шаге итерации суммы (интеграла в знаменателе формулы центра площади) в точку вызова предиката SREZ. При этом параметр SR2 используется в теле предиката, а параметр SR3 используется при рекурсивном вызове предиката
SREZ.
Переменные INTG, INTG1 и INTG2, INTG3 (исходные и результирующие параметры соответственно) используются аналогичным образом. Эти переменные служат для приближенного расчета значения интеграла в числителе формулы центра площади. Текст программы приводится ниже.
DOMAINS
ALFA1=REAL
ALFA2=REAL
ALFA3=REAL
ALFA4=REAL
PREDICATES
MAIN(REAL,REAL)
RULE1(REAL,REAL,REAL)
RULE2(REAL,REAL,REAL)
RULE3(REAL,REAL,REAL)
RULE4(REAL,REAL,REAL)
F1(REAL,REAL)
F2(REAL,REAL)
F3(REAL,REAL)
F4(REAL,REAL)
F5(REAL,REAL)
F6(REAL,REAL)
F7(REAL,REAL)
Переменные SR2 и SR3, используются в качестве результирующих параметров, которые позволяют вернуть значение вычисленной на очередном шаге итерации суммы (интеграла в знаменателе формулы центра площади) в точку вызова предиката SREZ. При этом параметр SR2 используется в теле предиката, а параметр SR3 используется при рекурсивном вызове предиката
SREZ.
Переменные INTG, INTG1 и INTG2, INTG3 (исходные и результирующие параметры соответственно) используются аналогичным образом. Эти переменные служат для приближенного расчета значения интеграла в числителе формулы центра площади. Текст программы приводится ниже.
DOMAINS
ALFA1=REAL
ALFA2=REAL
ALFA3=REAL
ALFA4=REAL
PREDICATES
MAIN(REAL,REAL)
RULE1(REAL,REAL,REAL)
RULE2(REAL,REAL,REAL)
RULE3(REAL,REAL,REAL)
RULE4(REAL,REAL,REAL)
F1(REAL,REAL)
F2(REAL,REAL)
F3(REAL,REAL)
F4(REAL,REAL)
F5(REAL,REAL)
F6(REAL,REAL)
F7(REAL,REAL)
F8(REAL,REAL)
FB1(REAL,REAL)
FB2(REAL,REAL)
FB3(REAL,REAL)
FB4(REAL,REAL)
MIN(REAL,REAL,REAL)
MAX(REAL,REAL,REAL)
SREZ(REAL,REAL,REAL,REAL,REAL,REAL,REAL,REAL,REAL,REAL)
CLAUSES
MAIN(T,N):-RULE1(T,N,A1),RULE2(T,N,A2),RULE3(T,N,A3),RULE4(T,N,A4),
ALFA1=A1,ALFA2=A2,ALFA3=A3,ALFA4=A4,SR=0,INTG=0,I=1,DY=20/25,
SREZ(I,SR,DY,ALFA1,ALFA2,ALFA3,ALFA4,SROK,INTG,INTG2),REZ=INT
G2/SROK,
WRITE("\n\n\n\n >>>> DENUMERATOR = ",SROK,"NUMERATOR =",
INTG2,"REZ = ",REZ, " let").
RULE1(T,N,A1):-F1(T,T1),F2(N,N1),MIN(T1,N1,A1).
RULE2(T,N,A2):-F3(T,T2),F4(N,N2),MIN(T2,N2,A2).
RULE3(T,N,A3):-F5(T,T3),F6(N,N3),MIN(T3,N3,A3).
RULE4(T,N,A4):-F7(T,T4),F8(N,N4),MIN(T4,N4,A4).
F1(T,T1):-T<70,T1=0;
T>=70,T<90,T1=(T-70)/20;
T>=90,T1=1.
F2(N,N1):-N<1.5,N1=1;
N>=1.5,N<03,N1=(N-1.5)/1.5;
N>=3,N1=1.
F3(T,T2):-T<40,T2=0;
T>=40,T<60,T2=(T-40)/20;
T>=60,T<80,T2=(80-T)/20;
T2=0.
F4(N,N2):-N<1.5,N2=1;
N>=1.5,N<3,N2=(3-N)/1.5;
N2=0.
F5(T,T3):-T<40,T3=0;
T>=40,T<60,T3=(T-40)/20;
T>=60,T<80,T3=(80-T)/20;
T>=80,T3=0.
F6(N,N3):-N<1.5,N3=0;
N>=1.5,N<3,N3=(N-1.5)/1.5;
N>=3,N3=1.
F7(T,T4):-T<70,T4=0;
T>=70,T<90,T4=(T-70)/20;
T>=90,T4=1.
F8(N,N4):-N<1.5,N4=1;
N>=1.5,N<3,N4=(3-N)/1.5;
N>=3,N4=0.
% FUNCTION OF BILONGING "LIFE DURATION LOW"
FB1(Y,SR1):-Y<2,SR1=0;
Y>=2,Y<4,SR1=(Y-2)/2;
Y>=4,Y<6,SR1=(6-Y)/2;
SR1=0.
% FUNCTION OF BILONGING "LIFE DURATION LONG"
FB2(Y,SR2):-Y<5,SR2=0;
Y>=5,Y<10,SR2=(Y-5)/5;
Y>=10,Y<=20,SR2=1.
% FUNCTION OF BILONGING "LIFE DURATION MID-1"
FB3(Y,SR3):-Y<5,SR3=0;
Y>=5,Y<7,SR3=(Y-5)/2;
Y>=7,Y<9,SR3=(9-Y)/2;
SR3=0.
% FUNCTION OF BELONGING "LIFE DURATION MID-2"
FB4(Y,SR4):-Y<2,SR4=0;
Y>=2,Y<5,SR4=(Y-2)/3;
Y>=5,Y<8,SR4=(8-Y)/3;
SR4=0.
MIN(ARG1,ARG2,ARGM):-ARG1>=ARG2,ARGM=ARG2;
ARGM=ARG1.
MAX(ARG1,ARG2,ARGMAX):-ARG1>=ARG2,ARGMAX=ARG1;
ARGMAX=ARG2.
SREZ(I,SR,DY,ALFA1,ALFA2,ALFA3,ALFA4,SR2,INTG,INTG2):-
I<=12,Y=I*DY,
FB1(Y,FY1),FB2(Y,FY2),FB3(Y,FY3),FB4(Y,FY4),
MIN(ALFA1,FY1,FMIN1),MIN(ALFA2,FY2,FMIN2),MIN(ALFA3,FY3,FMIN3),
MIN(ALFA4,FY4,FMIN4),
MAX(FMIN1,FMIN2,FMAX1),MAX(FMIN3,FMIN4,FMAX2),MAX(FMAX1,F
MAX2,FMAX),
% denominator at formula for center of square
SR1=SR+FMAX*DY,
% numerator at formula for center of square
INTG1=INTG+Y*FMAX*DY,
IP=I+1,
SREZ(IP,SR1,DY,ALFA1,ALFA2,ALFA3,ALFA4,SR3,INTG1,INTG3),
SR2=SR3,INTG2=INTG3;
I>12,
SR2=SR,INTG2=INTG.
GOAL
WRITE("\n\n Input the water temperature (40-100) -->>"),
READREAL(T),
WRITE("\n\n Input the concentration of aggressive substance in water (anything)
-->> "),
READREAL(N),
MAIN(T,N),
READREAL(C).
Порядок выполнения работы.
1. Изучить шаги реализации разработки системы нечеткого вывода в системе Visual PROLOG.
2. Реализовать задание из Лабораторной Работы№2 в системе Visual
PROLOG.
Содержание отчета.
Отчет по лабораторной работе должен содержать схему алгоритма нечеткого вывода и описание разработанной программы.