Skip to content

Commit eff1e4d

Browse files
committed
save before f40->f41 update
1 parent 021acea commit eff1e4d

File tree

248 files changed

+1072
-150
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

248 files changed

+1072
-150
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
,nf,laptop,05.06.2025 00:18,file:///home/nf/.var/app/org.libreoffice.LibreOffice/config/libreoffice/4;

discrete/sem2/Course Work/1.odt

82.4 KB
Binary file not shown.

discrete/sem2/Course Work/1.pdf

125 KB
Binary file not shown.

discrete/sem2/Course Work/T.typ

Lines changed: 294 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,294 @@
1+
#import "@preview/lilaq:0.3.0" as lq
2+
3+
4+
#set page(
5+
width: 210mm,
6+
height: 297mm,
7+
margin: 2.5cm,
8+
footer: [
9+
#align(center)[
10+
Санкт-Петербург 2025
11+
]
12+
]
13+
)
14+
15+
#set text(
16+
font: "Liberation Serif",
17+
size: 12pt,
18+
)
19+
20+
#align(center)[
21+
Федеральное государственное автономное образовательное учреждение высшего образования «Национальный исследовательский университет ИТМО»
22+
23+
#v(0.1em)
24+
25+
Факультет Программной Инженерии и Компьютерной Техники
26+
27+
#v(20em)
28+
29+
Курсовая работа\
30+
Нечёткий вывод по схеме Мамдани
31+
32+
33+
#v(19em)
34+
35+
#align(right)[
36+
Выполнил:\
37+
Решетников Сергей Евгеньевич\
38+
Группа Р3108\
39+
Проверил:\
40+
Поляков Владимир Иванович
41+
]
42+
]
43+
44+
#pagebreak()
45+
46+
#set page(footer: "", margin: (top: 2cm, right: 2.5cm, bottom: 1cm, left: 2.5cm) )
47+
#set par(first-line-indent: 1.25cm, leading: 7pt)
48+
= 1. Содержательная постановка задачи
49+
50+
= 1.1 Задача
51+
Разработать алгоритм нечеткого вывода по схеме «Мамдани», по которому определяется, сколько баллов набрал студент за тест, исходя из количества и усреднённого качества шпаргалок.
52+
53+
= 1.2 Входные данные
54+
1. Количество шпаргалок $a in [0; 8], a in ZZ$\
55+
2. Усредненное качество шпаргалок $ b in [0; 1]$
56+
57+
= 1.3 Выходные данные
58+
Оценка за тест в баллах БаРС $x in [0; 20]$
59+
60+
= 2 Фазификация
61+
Во входных данных заданы две переменные:
62+
1. a - Количество шпаргалок (0 ≤ h ≤ 8).
63+
2. b - усредненная оценка за тесты (0 ≤ b ≤ 1).
64+
65+
Необходимо разбить каждую из этих переменных на лингвистические термы иопределить для них функции принадлежности.
66+
67+
= 2.1 Лингвистические термы для количества шпаргалок a
68+
69+
1. SA (Small Amount) – малое количество шпаргалок
70+
2. MA (Medium Amount) – среднее количество шпаргалок
71+
3. HA (High Amount) – большое количество шпаргалок
72+
73+
Функции принадлежности:
74+
75+
$ A_"SA" (a)=1-a/3 , quad 0 lt.eq a lt.eq 3 $
76+
$ A_"SA" (a)=cases(
77+
a/2-1 quad 2 lt.eq a lt.eq 4,
78+
-a/2+3 quad 4 lt.eq a lt.eq 6
79+
) $
80+
$ A_"HA" (a)=a/4-1 , quad 4 lt.eq a lt.eq 8 $
81+
82+
#align(center)[
83+
#lq.diagram(
84+
title: [Функции принадлежности для количества шпаргалок],
85+
xlabel: $a$,
86+
ylabel: $A(a)$,
87+
88+
width: 350pt,
89+
height: 150pt,
90+
91+
lq.line(
92+
(0, 1), (3, 0),
93+
stroke: (paint: red, thickness: 1.3pt),
94+
label: [LA]
95+
),
96+
97+
lq.line(
98+
(2, 0), (4, 1),
99+
stroke: (paint: blue, thickness: 1.3pt),
100+
label: [MA]
101+
),
102+
lq.line(
103+
(4, 1), (6, 0),
104+
stroke: (paint: blue, thickness: 1.3pt),
105+
),
106+
107+
lq.line(
108+
(4, 0), (8, 1),
109+
stroke: (paint: green, thickness: 1.3pt),
110+
label: [HA]
111+
)
112+
)
113+
]
114+
115+
116+
= 2.2 Лингвистические термы для качества шпаргалок b
117+
1. LQ (Low Quality) – плохое качество шпаргалок
118+
2. MQ (Medium Quality) – среднее качество шпаргалок
119+
3. HQ (High Quality) – высокое качество шпаргалок
120+
121+
Функции принадлежности:
122+
123+
$ Q_"LQ" (b)=-b dot 2.5+1 quad 0 lt.eq b lt.eq 0.4 $
124+
$ Q_"MQ" (b)=cases(
125+
(b dot 10)/3-2/3 quad 0.2 lt.eq b lt.eq 0.5,
126+
-5 dot b + 3.5 quad 0.5 lt.eq b lt.eq 0.7
127+
) $
128+
$ Q_"HQ" (b)=-b dot 2.5+1.5 quad 0.6 lt.eq b lt.eq 1 $
129+
130+
#align(center)[
131+
#lq.diagram(
132+
title: [Функции принадлежности для качества шпаргалок],
133+
xlabel: $b$,
134+
ylabel: $Q(b)$,
135+
136+
width: 350pt,
137+
height: 150pt,
138+
139+
lq.line(
140+
(0, 1), (.4, 0),
141+
stroke: (paint: red, thickness: 1.3pt),
142+
label: [LQ]
143+
),
144+
145+
lq.line(
146+
(.2, 0), (.5, 1),
147+
stroke: (paint: blue, thickness: 1.3pt),
148+
label: [MQ]
149+
),
150+
lq.line(
151+
(.5, 1), (.7, 0),
152+
stroke: (paint: blue, thickness: 1.3pt),
153+
),
154+
155+
lq.line(
156+
(.6, 0), (1, 1),
157+
stroke: (paint: green, thickness: 1.3pt),
158+
label: [HQ]
159+
)
160+
)
161+
]
162+
163+
= 2.3 Лингвистические термы для выходной переменной z
164+
Выходная переменная x (количество баллов БаРС) лежит в диапазоне [0; 20]. Разобьём её на пять термов:
165+
1. PS (Puny Score) — ничтожное количество баллов.
166+
2. LS (Low Score) — малое количество баллов.
167+
3. MS (Medium Score) — среднее количество баллов.
168+
4. HS (High Score) — высокое количество баллов.
169+
5. OS (Outstanding Score) — очень высокое количество баллов.
170+
Функции принадлежности:
171+
$ alpha_"PS" = -x/3 + 1 quad 0 lt.eq x lt.eq 3 $
172+
$ alpha_"LS" = cases(
173+
x/3-2/3 quad 2 lt.eq x lt.eq 5,
174+
-x/3+8/3 quad 5 lt.eq x lt.eq 8
175+
) $
176+
$ alpha_"MS" = cases(
177+
x/3-7/3 quad 7 lt.eq x lt.eq 10,
178+
-x/3+13/3 quad 10 lt.eq x lt.eq 13
179+
) $
180+
$ alpha_"HS" = cases(
181+
x/3-12/3 quad 12 lt.eq x lt.eq 15,
182+
-x/3+18/3 quad 15 lt.eq x lt.eq 18
183+
) $
184+
$ alpha_"OS" = x/3 + 17/3 quad 17 lt.eq x lt.eq 20 $
185+
186+
#align(center)[
187+
#lq.diagram(
188+
title: [Функции принадлежности для выходного значения],
189+
xlabel: $x$,
190+
ylabel: $alpha(x)$,
191+
192+
width: 450pt,
193+
height: 150pt,
194+
195+
lq.line(
196+
(0, 1), (3, 0),
197+
stroke: (paint: red, thickness: 1.3pt),
198+
label: [PS]
199+
),
200+
201+
lq.line(
202+
(2, 0), (5, 1),
203+
stroke: (paint: blue, thickness: 1.3pt),
204+
label: [LS]
205+
),
206+
lq.line(
207+
(5, 1), (8, 0),
208+
stroke: (paint: blue, thickness: 1.3pt),
209+
),
210+
211+
lq.line(
212+
(7, 0), (10, 1),
213+
stroke: (paint: orange, thickness: 1.3pt),
214+
label: [MS]
215+
),
216+
lq.line(
217+
(10, 1), (13, 0),
218+
stroke: (paint: orange, thickness: 1.3pt),
219+
),
220+
221+
lq.line(
222+
(12, 0), (15, 1),
223+
stroke: (paint: green, thickness: 1.3pt),
224+
label: [HS]
225+
),
226+
lq.line(
227+
(15, 1), (18, 0),
228+
stroke: (paint: green, thickness: 1.3pt),
229+
),
230+
231+
lq.line(
232+
(17, 0), (20, 1),
233+
stroke: (paint: yellow, thickness: 1.3pt),
234+
label: [OS]
235+
)
236+
)
237+
]
238+
239+
240+
= 3 Блок выработки решения
241+
На основе лингвистических термов построим базу правил
242+
243+
#align(center)[
244+
#table(
245+
columns: (auto, auto, auto, auto),
246+
align: (center, center, center, center),
247+
stroke: (bottom: 1pt + black),
248+
[Количество \\ Среднее качество],
249+
[LQ], [MQ], [HQ],
250+
[SA], [PS], [LS], [MS],
251+
[MA], [LS], [MS], [HS],
252+
[HA], [MS], [HS], [OS]
253+
)
254+
]
255+
256+
= 3.1 Процедура вычисления истинности правил
257+
Пусть заданы входные значения\
258+
$ a = 5, quad b = 0.5 $
259+
260+
Вычислим сразу ненулевые степени принадлежности:
261+
$ A_"MA" (5) = 0.5 quad A_"HA" (5) = 0.25 quad Q_"MQ" (0.5) = 1 $
262+
263+
#align(center)[
264+
#table(
265+
columns: (auto, auto, auto, auto),
266+
align: (center, center, center, center),
267+
stroke: (bottom: 1pt + black),
268+
[Количество шпаргалок \\ Среднее качество шпаргалок],
269+
[LQ], [MQ], [HQ],
270+
[SA], [PS], [LS], [MS],
271+
[MA], [LS], table.cell(fill: green.lighten(60%))[MS], [HS],
272+
[HA], [MS], table.cell(fill: green.lighten(60%))[HS], [OS]
273+
)
274+
]
275+
Для каждой из этих двух активированных ячеек вычисляем степень истинности:
276+
Аггрегирование:
277+
$ beta_"MS" = min(A_"MA" (5), Q_"MQ" (0.5)) = min(0.5, 1) = 0.5 $
278+
$ beta_"HS" = min(A_"MA" (5), Q_"MQ" (0.5)) = min(0.25, 1) = 0.25 $
279+
280+
Активация:
281+
$ gamma_"MS" = min(alpha_"MS" (x), 0.5) quad quad gamma_"HS" = min(alpha_"HS" (x), 0.25) $
282+
283+
#pagebreak()
284+
285+
Аккумулирование:
286+
$
287+
delta_"agg" = max(gamma_"MS" (x), gamma_"HS" (x)) quad quad x in [0; 20]
288+
$
289+
290+
= 4 Дефазификация
291+
Для получения единственного числового ответа x\* применяем метод центра тяжести:
292+
$ x\* = (integral_0^20 x dot delta_"agg" (x) quad d x)/(integral_0^20 delta_"agg" (x) quad d x) $
293+
При численной аппроксимации получаем x\* ≈ 12.1,
294+
Таким образом, при $a = 5 " и " b = 0.5$ студент набирает примерно 12.1 балла БаРС.

discrete/sem2/Course Work/main.pdf

2.14 KB
Binary file not shown.

discrete/sem2/Course Work/main.typ

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#import "@preview/lilaq:0.3.0" as lq
2+
3+
4+
#lq.diagram(
5+
title: [Функции принадлежности для количества шпаргалок],
6+
xlabel: $a$,
7+
ylabel: $A(a)$,
8+
9+
width: 350pt,
10+
height: 200pt,
11+
12+
lq.line(
13+
(0, 1), (3, 0),
14+
stroke: (paint: red, thickness: 1.3pt),
15+
label: [LA]
16+
),
17+
18+
lq.line(
19+
(2, 0), (4, 1),
20+
stroke: (paint: blue, thickness: 1.3pt),
21+
label: [MA]
22+
),
23+
lq.line(
24+
(4, 1), (6, 0),
25+
stroke: (paint: blue, thickness: 1.3pt),
26+
),
27+
28+
lq.line(
29+
(4, 0), (8, 1),
30+
stroke: (paint: green, thickness: 1.3pt),
31+
label: [HA]
32+
)
33+
)
34+
35+
36+
#lq.diagram(
37+
title: [Функции принадлежности для качества шпаргалок],
38+
xlabel: $b$,
39+
ylabel: $Q(b)$,
40+
41+
width: 350pt,
42+
height: 200pt,
43+
44+
lq.line(
45+
(0, 1), (.4, 0),
46+
stroke: (paint: red, thickness: 1.3pt),
47+
label: [LQ]
48+
),
49+
50+
lq.line(
51+
(.2, 0), (.5, 1),
52+
stroke: (paint: blue, thickness: 1.3pt),
53+
label: [MQ]
54+
),
55+
lq.line(
56+
(.5, 1), (.7, 0),
57+
stroke: (paint: blue, thickness: 1.3pt),
58+
),
59+
60+
lq.line(
61+
(.6, 0), (1, 1),
62+
stroke: (paint: green, thickness: 1.3pt),
63+
label: [HQ]
64+
)
65+
)
66.2 KB
Binary file not shown.

0 commit comments

Comments
 (0)