Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Создание правил продукционной модели

 

Входные данные продукционной модели представим в таблице 3.2 в виде таблицы в которой будет представлен вопрос, переменная которая ему соответствует и варианты ответа.


Таблица 3.2

«Входные данные»

Вопрос Переменная Варианты ответа
18. На каком курсе вы учитесь? KYRS · 1(1 курс) · 2(2 -6 курсы)
19. Проживаете ли вы в общежитии? LP · Yes · No
20. Хорошие ли у Вас отношения с одногрупниками? LIO · Yes · No
21. Хорошие ли у Вас отношения с куратором? LIK · Yes · No
22. Ваши родители одобряют Ваш выбор? LSR · Yes · No
23. Вам нравится Ваша специальность? LSS · Yes · No
24. Сколько часов в день Вы тратите на выполнение лабораторных работ? PSP · 1 · 2 · 3
25. Сколько часов в день Вы тратите на подготовку к лекциям? PSL · 1 · 2 · 3
26. Сколько раз в месяц вы посещаете библиотеку? PSB · 1 · 2 · 3
27. Оцените по 100-балльной системе Ваше посещение лекций? PL · 30 · 60 · 100
28. Оцените по 100-балльной системе Ваше посещение практических занятий? PP · 30 · 60 · 100
29. Какой у Вас средний балл прошлой сессии? YSB · 3 · 4 · 5
30. Вы довольны результатами предыдущей сессии? YSS · Yes · No
31. Ваш средний балл аттестата в школе?   YHB · 3 · 4 · 5
32. Ваша школа имеет высокий уровень по техническим предметам? YHY · Yes · No
33. Ваша текущая успеваемость, примерно в баллах?   YTB · 3 · 4 · 5
34. Вы считаете, что полностью отдаетесь учебе?   YTS · Yes · No

 

На основе этих данных построим базу знаний продукционной модели с помощью простой конструкции:

Если (условие), то (действие),

Набор правил для экспертной системы прогнозирования сдачи сессии студентами на основании текущей успеваемости:

 

3. If LIO=”Yes” and LIK=”Yes” then LI = “Yes”

4. If LIO=”Yes” and LIK=”No” then LI = “Yes”

5. If LIO=”No” and LIK=”Yes” then LI = “No”

6. If LIO=”No” and LIK=”No” then LI = “No”

7. If LSR=”Yes” and LSS=”Yes” then LS= “Yes”

8. If LSR=”Yes” and LSS=”No” then LS= “No”

9. If LSR=”No” and LSS=”Yes” then LS= “Yes”

10. If LSR=”No” and LSS=”No” then LS= “No”

11. If LS=”Yes” and LI=”Yes” and LP = “Yes” then L= “good”

12. If LS=”Yes” and LI=”Yes” and LP = “No” then L= “good”

13. If LS=”Yes” and LI=”No” and LP = “Yes” then L= “good”

14. If LS=”Yes” and LI=”No” and LP = “No” then L= “bed”

15. If LS=”No” and LI=”Yes” and LP = “No” then L= “good”

16. If LS=”No” and LI=”Yes” and LP = “Yes” then L= “good”

17. If LS=”No” and LI=”No” and LP = “Yes” then L= “bed”

18. If LS=”No” and LI=”No” and LP = “No” then L= “bed”

19. If PSL=1 and PSP=1 and PSB=1 then PS= 1

20. If PSL=1 and PSP=1 and PSB=2 then PS= 1

21. If PSL=1 and PSP=1 and PSB=3 then PS= 2

22. If PSL=1 and PSP=2 and PSB=1 then PS= 2

23. If PSL=1 and PSP=2 and PSB=2 then PS= 3

24. If PSL=1 and PSP=2 and PSB=3 then PS= 2

25. If PSL=1 and PSP=3 and PSB=1 then PS= 2

26. If PSL=1 and PSP=3 and PSB=2 then PS= 3

27. If PSL=1 and PSP=3 and PSB=3 then PS= 3

28. If PSL=2 and PSP=1 and PSB=1 then PS= 2

29. If PSL=2 and PSP=1 and PSB=2 then PS= 2

30. If PSL=2 and PSP=1 and PSB=3 then PS= 3

31. If PSL=2 and PSP=2 and PSB=1 then PS= 2

32. If PSL=2 and PSP=2 and PSB=2 then PS= 2

33. If PSL=2 and PSP=2 and PSB=3 then PS= 3

34. If PSL=2 and PSP=3 and PSB=1 then PS= 3

35. If PSL=2 and PSP=3 and PSB=2 then PS= 3

36. If PSL=2 and PSP=3 and PSB=3 then PS= 3

37. If PSL=3 and PSP=1 and PSB=1 then PS= 2

38. If PSL=3 and PSP=1 and PSB=2 then PS= 2

39. If PSL=3 and PSP=1 and PSB=3 then PS= 3

40. If PSL=3 and PSP=2 and PSB=1 then PS= 2

41. If PSL=3 and PSP=2 and PSB=2 then PS= 3

42. If PSL=3 and PSP=2 and PSB=3 then PS= 3

43. If PSL=3 and PSP=3 and PSB=1 then PS= 3

44. If PSL=3 and PSP=3 and PSB=2 then PS= 3

45. If PSL=3 and PSP=3 and PSB=3 then PS= 3

46. If PL<30 and PP<30 and PS=1 then P=1

47. If PL<30 and PP<30 and PS=2 then P=1

48. If PL<30 and PP<30 and PS=3 then P=2

49. If PL<30 and 30<PP<60 and PS=1 then P=1

50. If PL<30 and 30<PP<60 and PS=2 then P=2

51. If PL<30 and 30<PP<60 and PS=3 then P=2

52. If PL<30 and PP>60 and PS=1 then P=2

53. If PL<30 and PP>60 and PS=2 then P=2

54. If PL<30 and PP>60 and PS=3 then P=3

55. If 30<PL<60 and PP<30 and PS=1 then P=1

56. If 30<PL<60 and PP<30 and PS=2 then P=1

57. If 30<PL<60 and PP<30 and PS=3 then P=2

58. If 30<PL<60 and 30<PP<60 and PS=1 then P=1

59. If 30<PL<60 and 30<PP<60 and PS=2 then P=2

60. If 30<PL<60 and 30<PP<60 and PS=3 then P=2

61. If 30<PL<60 and PP>60 and PS=1 then P=2

62. If 30<PL<60 and PP>60 and PS=2 then P=2

63. If 30<PL<60 and PP>60 and PS=3 then P=3

64. If PL>60 and PP<30 and PS=1 then P=1

65. If PL>60 and PP<30 and PS=2 then P=1

66. If PL>60 and PP<30 and PS=3 then P=2

67. If PL>60 and 30<PP<60 and PS=1 then P=1

68. If PL>60 and 30<PP<60 and PS=2 then P=3

69. If PL>60 and 30<PP<60 and PS=3 then P=3

70. If PL>60 and PP>60 and PS=1 then P=2

71. If PL>60 and PP>60 and PS=2 then P=2

72. If PL>60 and PP>60 and PS=3 then P=3

73. If YHB=3 and YHY=”Yes” then YH=3

74. If YHB=3 and YHY=”No” then YH=3

75. If YHB=4 and YHY=”Yes” then YH=5

76. If YHB=4 and YHY=”No” then YH=4

77. If YHB=5 and YHY=”Yes” then YH=5

78. If YHB=5 and YHY=”No” then YH=4

79. If YTB=3 and YTS=”Yes” then YT=3

80. If YTB =3 and YTS =”No” then YT=3

81. If YTB =4 and YTS =”Yes” then YT=3

82. If YTB =4 and YTS =”No” then YT=4

83. If YTB =5 and YTS =”Yes” then YT=5

84. If YTB =5 and YTS =”No” then YT=5

85. If YSB=3 and YSS=”Yes” then YS=3

86. If YSB=3 and YSS=”No” then YS=3

87. If YSB=4 and YSS=”Yes” then YS=4

88. If YSB=4 and YSS=”No” then YS=4

89. If YSB=5 and YSS=”Yes” then YS=5

90. If YSB=5 and YSS=”No” then YS=3

91. If KYRS=1 and YH=3 and YT=3 then Y=3

92. If KYRS=1 and YH=3 and YT=4 then Y=3

93. If KYRS=1 and YH=3 and YT=5 then Y=4

94. If KYRS=1 and YH=4 and YT=3 then Y=3

95. If KYRS=1 and YH=4 and YT=4 then Y=4

96. If KYRS=1 and YH=4 and YT=5 then Y=5

97. If KYRS=1 and YH=5 and YT=3 then Y=4

98. If KYRS=1 and YH=5 and YT=4 then Y=4

99. If KYRS=1 and YH=5 and YT=5 then Y=5

100. If KYRS>1 and YS=3 and YT=3 then Y=3

101. If KYRS>1 and YS=3 and YT=4 then Y=3

102. If KYRS>1 and YS=3 and YT=5 then Y=4

103. If KYRS>1 and YS=4 and YT=3 then Y=4

104. If KYRS>1 and YS=4 and YT=4 then Y=4

105. If KYRS>1 and YS=4 and YT=5 then Y=5

106. If KYRS>1 and YS=5 and YT=3 then Y=4

107. If KYRS>1 and YS=5 and YT=4 then Y=4

108. If KYRS>1 and YS=5 and YT=5 then Y=5

109. If Y=3 and P=1 and L=”bed” then B=3

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.

 

Реализация пользовательского интерфейса в SWI - Prolog

Создание интерфейса

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. «Пример заполнения»

 

Инструкция пользователя

1. Запустить программный продукт. В результате этой операции появиться на экране форма:

 

2. Ввести в колонку «Имя» - ваше имя, в колонке «Возраст ваш возраст», и выбрать ваш пол, а затем нажать кнопку «Create». В результате чего вы увидите еще одну форму:

 

 

3. Отвечаете не все вопросы, вводя в графу «Имя» ответ и нажимая «ок». После ответа не последний вопрос в командном окне вы увидите ваш результат, например в таком виде:

--------------------------------------------------------------------------------

Student female person Kseniya of 25 years old your estimation -5

4. Закрываете программу нажатием на красный крестик в верхнем углу.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...