110. If Y=3 and P=1 and L=”good” then B=3
111. If Y=3 and P=2 and L=”bed” then B=3
112. If Y=3 and P=2 and L=”good” then B=4
113. If Y=3 and P=3 and L=”bed” then B=3
114. If Y=3 and P=3 and L=”good” then B=4
115. If Y=4 and P=1 and L=”bed” then B=3
116. If Y=4 and P=1 and L=”good” then B=4
117. If Y=4 and P=2 and L=”bed” then B=4
118. If Y=4 and P=2 and L=”good” then B=4
119. If Y=4 and P=3 and L=”bed” then B=5
120. If Y=4 and P=3 and L=”good” then B=5
121. If Y=5 and P=1 and L=”bed” then B=4
122. If Y=5 and P=1 and L=”good” then B=5
123. If Y=5 and P=2 and L=”bed” then B=4
124. If Y=5 and P=2 and L=”good” then B=5
125. If Y=5 and P=3 and L=”bed” then B=5
126. If Y=5 and P=3 and L=”good” then B=5
При наличии правил базы знаний и входящих в нее базы данных реализуем этот алгоритм в прологе. Листинг программы представлен в приложении 1.
3.3 Реализация пользовательского интерфейса в SWI-Prolog
3.3.1 Создание интерфейса
XPCE это платформо-независимый GUI тулкит для SWI-Prolog, Lisp и других интерактивный динамически типизированных языков программирования. Хотя XPCE замышлялся, как не привязанный к конкретному языку программирования, наибольшую популярность этот фреймворк получил именно с Prolog. Развитие графической библиотеки XPCE было начато в 1987, совместно с началом работ над SWI-Prolog. Поддерживает кнопки, меню, слайдеры, вкладки и другие базовые GUI виджеты. XPCE доступен на всех платформах, поддерживаемых SWI-Prolog'ом.
Именно с помощью этой графической библиотеки будет реализовано интерфейс пользователя. Ниже представлен листинг программы создания интерфейса.
Make_same_width(Gr1, Gr2) :-
send(Gr1, width, Gr2?width).
create_person_dialog :-
new(D, dialog(‘Enter new person’)),\созданиеформы
send(D, append, new(BG, box(0,30)))\ задаемразмеры
send(D, append, new(BI, box(800,0))),
send(D, append, new(F,label)), \ создание label
send(D, append, new(Name, text_item(name))), \\ считываниеданных
send(D, append, new(Age, text_item(age))),
send(D, append, new(Sex, menu(sex, marked))),
send(F, append, ‘To begin testing enter its name and age and press button “ Create “.’), \ пояснительнаянадписьнаформе
send(Sex, append, female),
send(Sex, append, male),
send(Age, type, int),
send(D, append,
button(create, message(@prolog, create_person,
Name?selection,
Age?selection,
Sex?selection))), \ кнопкадлявыводаданных
send(D, default_button, create),send(D, open).
Create_person(Name, Age, Sex) :-
writeln(‘----------------------------------------------------------------‘),
format(‘Student ~w person ~w of ~d years old your estimation –‘,
[Sex, Name, Age]). \ форматвыводаданных:- create_person_dialog.
В результате запуска данной части программы получим всплывающее окно авторизации перед прохождением теста:
Рис. 3.1. «Форма авторизации»
Рис. 3.2. «Пример ввода данных»
В результате нажатия на кнопку «Create» появиться следующее окно с вопросами, листинг представлен ниже:
make_name_prompter(P) :-
new(P, dialog),
send(P, kind, transient),
send(P, append, new(BI, box(800,0))),
send(P, append, label(prompt)),
send(P, append,
new(TI, text_item(name, ‘’,
message(P?ok_member, execute)))),
send(P, append, button(ok, message(P, return, TI?selection))),
send(P, append, button(cancel, message(P, return, @nil))).
Ask_name(Prompt, Label, Name) :-
send(@name_prompter?prompt_member, selection, Prompt),
send(@name_prompter?name_member, label, Label),
send(@name_prompter?name_member, clear),
get(@name_prompter, confirm_centered, RawName),
send(@name_prompter, show, @off),
RawName \== @nil,
Name = RawName.
:-ask_name.
В результате выполнения данного отрывка программы получим следующую форму:
Рис. 3.3. «Форма получения исходных данных»
Рис/3.4. «Пример заполнения»
3.3.2 Инструкция пользователя
1. Запустить программный продукт. В результате этой операции появиться на экране форма:
2. Ввести в колонку «Имя» - ваше имя, в колонке «Возраст ваш возраст», и выбрать ваш пол, а затем нажать кнопку «Create». В результате чего вы увидите еще одну форму:
3. Отвечаете не все вопросы , вводя в графу «Имя » ответ и нажимая «ок». После ответа не последний вопрос в командном окне вы увидите ваш результат , например в таком виде:
--------------------------------------------------------------------------------
Student female person Kseniya of 25 years old your estimation -5
4. Закрываете программу нажатием на красный крестик в верхнем углу.
3.4 Тестирование продукта и расчет его эффективности
Для расчете эффективности системы применим методы регрессионного анализа для этого нужно реализовать экспертную систему в другом пакете для сравнения был выбран пакет MatLab/ Simulink с помощью Fuzzy Logic Toolbox.
3.4.1 Реализация с помощью нечеткой логики в MatLab/ Simulink
Наиболее значительное свойство человеческого интеллекта – способность принимать решения в обстановке неполной и нечёткой информации. Построение моделей приближённых рассуждений человека и использование их в компьютерных системах будущих поколений представляет собой одну из важнейших проблем науки.
Нечеткую модель можно построить, основываясь на формальном представлении характеристик исследуемой системы в терминах лингвистических переменных. Основные понятия систем управления – входные и выходные переменные, именно их рассматривают как лингвистические переменные при формировании базы правил в системах нечеткого вывода.
Цель управления заключается в анализе текущего состояния объекта управления, чтобы определить значения управляющих переменных, реализация которых позволяет обеспечить желаемое поведение или состояние объекта управления.
Ниже на рисунках мы представим входные в систему переменные
Теперь их нужно вязать между собой и сделем мы это с помощью Simulink-модели которая представлена ниже.
Листинг программы:
a1 = readfis('pr1')
a2 = readfis('pr2')
a3 = readfis('pr3')
a4 = readfis('pr4')
a5 = readfis('pr5')
a6 = readfis('pr6')
a7 = readfis('pr7')
a8 = readfis('pr8')
a9 = readfis('pr9')
a10 = readfis('pr10')
Рис. 3.5. «Представление системы в MatLab/ Simulink»
3.4.2 Тестирование экспертных систем и расчет эффективности с помощью регрессионного анализа
Протестируем систему в прологе со сведущими исходными данными:LIO=1;
LIK=1;
LSR=1;
LSS=1;
LP=1;
PSL=2;
PSP=1;
PSB=3;
PL=80;
PP=80;
YHB=5;
YHY=1;
YTB=5;
YTS=1;
YSB=5;
YSS=1;
KYRS=1;
Результат:
-------------------------------------------------------------------------------
Student female person Kseniya of 22 years old your estimation -5
А теперь введем те же самые данные в систему в MatLab/ Simulink. Ниже представленный результат. А потом сравним их с помьщью регрессионного анализа
Поскольку в MatLab/ Simulink мы применяем нечеткую логику , то выходные параметры являются не целыми числами и мы их округляем в большую сторону. В результате повторного тестирования мы получаем данные в следствии 10 экспериментов и анализируем их с помощью регрессионного анализа.
Ниже преведены данные и реализация регрессионного анализа:P=[5 5 5 4 5 3 3 4 4 5];
Z=[5 5 5 4 5 3 3 4 4 5];
[m,b,r]=postreg(Z,P)
m = 1.0000
b =9.5844e-016
r =1
Как видно из представленных выше графиков система в разных пакетах немного по разному работает ,это следствие того что в прологе мы не применяем нечеткую логику в отличии от MatLab, но в результате округления можно точно сказать что результаты получаются идентичные , а этьо значит что обе системы работают правильно.
Выводы по разделу 3
В результате проведения исследования можно сказать, что продукционная модель построения знаний в экспертной системе прогнозирования результатов сессии на анализе текущей успеваемости она, являются наиболее наглядным средствами представления знаний и наиболее аффективными для данной модели. Также эта модель легко реализуется в языке MatLat/ Simulink с помощью Fuzzy Logic Toolbox , поскольку логический вывод уже реализован в этом пакете. В результате мы провели сравнения программ с помощью регрессионного анализа.
РАЗДЕЛ 4. РАЗРАБОТКА МЕРОПРИЯТИЙ ПО ОБЕСПЕЧЕНИЮ БЕЗОПАСНОСТИ ЖИЗНЕДЕЯТЕЛЬНОСТИ
4.1 Предмет исследования
Предметом исследования в данной дипломной работе является разрабатываемый программный продукт для прогнозирования результатов сессии на основе анализа текущей успеваемости. Так как полностью безопасных и безвредных производственных процессов не существует, и при различных неисправностях в работе с системой могут возникнуть вредные производственные факторы, то вследствие этого в разделе будут рассмотрены основные требования по безопасности жизнедеятельности для помещений вычислительных центров (ВЦ).
4.1.1 Анализ опасных и вредных производственных факторов, действующих в рабочей зоне проектируемого объекта