5. Copiright
Что такое fuzzy logic?
Возьмем 3 формулировки:
Низкий дом
Средний дома
Высокий дом
Нечеткое множество
х – высота дома
u(x) – принадлежность высоты дома к множеству
6. Copiright
Что такое fuzzy logic?
𝜇1 𝑥 – степень принадлежности высоты дома к
множеству «Низкий дом»
𝜇2 𝑥 – степень принадлежности высоты дома к
множеству «Средний дом»
𝜇3 𝑥 – степень принадлежности высоты дома к
множеству «Высокий дом»
0 ≤ 𝜇 𝑥 ≤ 1
11. Copiright
Критерии для тест-кейсов
- Затрагивает тест-кейс измененный модуль или нет
- Приоритет у тест-кейса высокий или низкий
- Количество багов в этом модуле за все время высокое
или низкое
- Времени на прогон этого тест-кейса нужно много или
мало
> В какую очередь прогонять тест-кейс?
12. Copiright
Супер формально
Задачей нечеткого вывода является определение четкого
значения выходной переменной T – приоритета критерия,
выраженный в лингвистических единицах «очень
высокий», «высокий», «средний» и «низкий», и который
зависит от факторов (лингвистических переменных) 𝐾𝑞:
𝑇 = 𝑇(𝐾1, 𝐾2, … , 𝐾 𝑛)
13. Copiright
Определим понятия
Имя функции – приоритет критерия
Значения функции – очень высокий, высокий, средний и
низкий
Аргумент функции – критерии (затрагивает модуль, какой
приоритет у тест-кейса, сколько багов и т.д.)
Значения аргументов – затрагивает/не затрагивает,
высокий/низкий, много/мало и т.д.
y(x)=x+1
14. Copiright
Шаг 1
Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции
1 Затрагивает измененный модуль Затрагивает
2 Не затрагивает
3 Приоритет сценария Высокий
4 Низкий
5 Количество дефектов в модуле Много
6 Мало
7 Время проведения сценария Быстро
8 Долго
Лингвистическое имя функции Лингвистическое имя значения функции
1 Приоритет критерия Очень высокий
2 Высокий
3 Средний
4 Низкий
15. Copiright
Шаг 1. Комбинации
Лингвистическое имя
аргумента функции
Лингвистическое
значение аргумента
функции
Посылки
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 Затрагивает
измененный модуль
Затрагивает Y Y Y Y Y Y Y Y
2 Не затрагивает Y Y Y Y Y Y Y Y
3 Приоритет сценария Высокий Y Y Y Y Y Y Y Y
4 Низкий Y Y Y Y Y Y Y Y
5 Количество дефектов в
модуле
Много Y Y Y Y Y Y Y Y
6 Мало Y Y Y Y Y Y Y Y
7 Время проведения
сценария
Быстро Y Y Y Y Y Y Y Y
8 Долго Y Y Y Y Y Y Y Y
16. Copiright
Шаг 2. Оценки
Лингвистическое имя аргумента функции Лингвистическое значение аргумента
функции
Посылки
1 Затрагивает измененный модуль Затрагивает Y
2 Не затрагивает
3 Приоритет сценария Высокий Y
4 Низкий
5 Количество дефектов в модуле Много Y
6 Мало
7 Время проведения сценария Быстро Y
8 Долго
Лингвистическое имя функции Лингвистическое имя значения функции Баллы
истинности
правил
1 Приоритет критерия Очень высокий
2 Высокий
3 Средний
4 Низкий
17. Copiright
Шаг 2. А как оценивать?
Баллы Название
значения
Оценка
истинности
правила
Баллы Название
значения
Оценка
истинности
правила
0 Никогда 0 5 И часто и редко 0,5
1 Очень редко 0,01 6 Часто 0,6
2 Не очень редко 0,05 7 Не очень часто 0,7
3 Редко 0,1 8 Очень часто 0,8
4 Время от времени 0,3 9 Почти всегда 0,9
5 Нередко и нечасто 0,5 10 Всегда 1
18. Copiright
Шаг 2. А вот так
Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции
Посылки
1 Затрагивает измененный модуль Затрагивает Y
2 Не затрагивает
3 Приоритет сценария Высокий Y
4 Низкий
5 Количество дефектов в модуле Много Y
6 Мало
7 Время проведения сценария Быстро Y
8 Долго
Лингвистическое имя функции Лингвистическое имя значения функции Баллы истинности
правил
1 Приоритет критерия Очень высокий 10
2 Высокий 2
3 Средний 1
4 Низкий 0
19. Copiright
Шаг 2уаааа! Все оценим!
Лингвистическое имя
аргумента функции
Лингвистическое
значение аргумента
функции
Посылки
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 Затрагивает
измененный модуль
Затрагивает Y Y Y Y Y Y Y Y
2 Не затрагивает Y Y Y Y Y Y Y Y
3 Приоритет сценария Высокий Y Y Y Y Y Y Y Y
4 Низкий Y Y Y Y Y Y Y Y
5 Количество дефектов в
модуле
Много Y Y Y Y Y Y Y Y
6 Мало Y Y Y Y Y Y Y Y
7 Время проведения
сценария
Быстро Y Y Y Y Y Y Y Y
8 Долго Y Y Y Y Y Y Y Y
Лингвистическое имя
функции
Лингвистическое имя
значения функции Баллы истинности правил
1 Приоритет критерия Очень высокий 10 10 8 2 1 1 1 0 10 10 8 4 2 1 1 0
2 Высокий 2 9 8 4 3 3 1 1 2 3 8 6 4 1 1 1
3 Средний 1 5 4 8 8 5 2 1 1 1 4 10 10 2 1 1
4 Низкий 0 1 1 2 7 10 10 10 0 1 1 2 6 9 10 10
20. Copiright
Шаг 3. Функции для аргументов
Затрагивает/не затрагивает измененный модуль
Лингвистическое имя
аргумента функции
Лингвистическое имя
значения функции
Нечеткое множество Функция принадлежности
1 Затрагивает измененный
модуль
Затрагивает 𝑀11 = {< 𝜇11 𝑥1 , 𝑥1 >/𝑥1 ∈ 𝑋1}
m11(x1)=0.01x1
2 Затрагивает измененный
модуль
Не затрагивает 𝑀21 = {< 𝜇21 𝑥1 , 𝑥1 >/𝑥1 ∈ 𝑋1}
m21(x1)=-0.01x1+1
21. Copiright
Шаг 3. Функции для аргументов
Приоритет тест-кейса высокий/низкий
Лингвистическое имя
аргумента функции
Лингвистическое имя
значения функции
Нечеткое множество Функция принадлежности
3 Приоритет сценария Высокий 𝑀12 = {< 𝜇12 𝑥2 , 𝑥2 >/𝑥2 ∈ 𝑋2}
m12(x2)=-0.33x2+1.33
4 Приоритет сценария Низкий 𝑀22 = {< 𝜇22 𝑥2 , 𝑥2 >/𝑥2 ∈ 𝑋2}
m22(x2)=0.33x2-0.33
22. Copiright
Шаг 3. Функции для аргументов
Багов много/мало
Лингвистическое имя
аргумента функции
Лингвистическое имя
значения функции
Нечеткое множество Функция принадлежности
5 Количество дефектов в
модуле
Много 𝑀13 = {< 𝜇13 𝑥3 , 𝑥3 >/𝑥3 ∈ 𝑋3}
m13(x3)=0.05x3
6 Количество дефектов в
модуле
Мало 𝑀23 = {< 𝜇23 𝑥3 , 𝑥3 >/𝑥3 ∈ 𝑋3}
m23(x3)=-0.05x3+1
23. Copiright
Шаг 3. Функции для аргументов
Тест-кейс прогонять долго/недолго
Лингвистическое имя
аргумента функции
Лингвистическое имя
значения функции
Нечеткое множество Функция принадлежности
7 Время проведения сценария Быстро 𝑀14 = {< 𝜇14 𝑥4 , 𝑥4 >/𝑥4 ∈ 𝑋4}
m14(x4)=-0.11x4+1.11
8 Время проведения сценария Долго 𝑀24 = {< 𝜇24 𝑥4 , 𝑥4 >/𝑥4 ∈ 𝑋4}
m24(x4)=0.11x4-0.11
24. Copiright
Фаззификация
Фаззификация – нахождения значения функций
принадлежности
- затрагивает изменённый модуль на полностью, а
частично еще и другой модуль, оценим это по шкале от 0
до 100 на 80;
- имеет приоритет 2;
- количество дефектов в модуле 3;
- время проведения сценария 3 минуты.
25. Copiright
Результат фаззификации
Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции
1 Затрагивает измененный модуль Затрагивает 0.8
2 Не затрагивает 0.2
3 Приоритет сценария Высокий 0.67
4 Низкий 0.33
5 Количество дефектов в модуле Много 0.15
6 Мало 0.85
7 Время проведения сценария Быстро 0.78
8 Долго 0.22
26. Copiright
Агрегирование
Агрегирование позволяет определить степень
истинности посылки.
Лингвистическое имя
аргумента функции
Лингвистическое значение аргумента
функции
Посылки
1 2
1 Затрагивает измененный
модуль
Затрагивает 0.8 Y Y
2 Не затрагивает 0.2
3 Приоритет сценария Высокий 0.67 Y Y
4 Низкий 0.33
5 Количество дефектов в
модуле
Много 0.15 Y Y
6 Мало 0.85
7 Время проведения
сценария
Быстро 0.78 Y
8 Долго 0.22 Y
Способы агрегации
Определение
произведения
0,06 0,02
Определение минимума 0,15 0,15
28. Copiright
Функции принадлежности для правила
Очень высокий приоритет критерия (𝜇10(𝑦))
𝜇10(𝑦) = −0,33𝑦 + 1,33
Где
y – приоритет критерия
u(x) – степень принадлежности к
множеству «Очень высокий
приоритет»
29. Copiright
Функции принадлежности для правила
Высокий приоритет критерия (𝜇20(𝑦))
𝜇20(𝑦) =
𝑦 − 1, если 𝑦 ≤ 2
−0,5𝑦 + 2, если 𝑦 > 2
Где
y – приоритет критерия
u(x) – степень принадлежности к
множеству «Высокий приоритет»
30. Copiright
Функции принадлежности для правила
Средний приоритет критерия (𝜇30(𝑦))
𝜇30(𝑦) =
0,5𝑦 − 0,5, если 𝑦 ≤ 3
−𝑦 + 4, если 𝑦 > 3
Где
y – приоритет критерия
u(x) – степень принадлежности к
множеству «Средний приоритет»
31. Copiright
Функции принадлежности для правила
Низкий приоритет критерия (𝜇40(𝑦))
𝜇40 𝑦 = 0,33𝑦 − 0,33
Где
y – приоритет критерия
u(x) – степень принадлежности к
множеству «Низкий приоритет»
32. Copiright
Степень истинности посылки
Лингвистическое имя
аргумента функции
Лингвистическое значение аргумента функции
Посылки
1
1 Затрагивает измененный
модуль
Затрагивает 0.8 Y
2 Не затрагивает 0.2
3 Приоритет сценария Высокий 0.67 Y
4 Низкий 0.33
5 Количество дефектов в модуле Много 0.15 Y
6 Мало 0.85
7 Время проведения сценария Быстро 0.78 Y
8 Долго 0.22
Определение минимума
0,15
33. Copiright
Степень истинности правила
Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции
Посылки
1 Затрагивает измененный модуль Затрагивает Y
2 Не затрагивает
3 Приоритет сценария Высокий Y
4 Низкий
5 Количество дефектов в модуле Много Y
6 Мало
7 Время проведения сценария Быстро Y
8 Долго
Лингвистическое имя функции Лингвистическое имя значения функции Степени истинности
правил
1 Приоритет критерия Очень высокий 10 => 1
2 Высокий 2 => 0,05
3 Средний 1 => 0,01
4 Низкий 0
34. Copiright
Активизация для первой посылки
Очень высокий приоритет критерия:
Степень истинности посылки
0,15
Степень истинности правила
1
Умножить Умножить
𝜇∗
10(𝑦) = −0,05𝑦 + 0,2
𝜇10(𝑦) = −0,33𝑦 + 1,33
35. Copiright
Активизация для первой посылки
Высокий приоритет критерия:
Степень истинности посылки
0,15
Степень истинности правила
0,05
Умножить Умножить
𝜇∗
20(𝑦) =
0,01𝑦 − 0,01, если 𝑦 ≤ 2
0,02, если 𝑦 > 2
𝜇20(𝑦) =
𝑦 − 1, если 𝑦 ≤ 2
−0,5𝑦 + 2, если 𝑦 > 2
36. Copiright
Активизация для первой посылки
Средний приоритет критерия:
Степень истинности посылки
0,15
Степень истинности правила
0,01
Умножить Умножить
𝜇∗
30(𝑦) =
0, если 𝑦 ≤ 3
0,01, если 𝑦 > 3
𝜇30(𝑦) =
0,5𝑦 − 0,5, если 𝑦 ≤ 3
−𝑦 + 4, если 𝑦 > 3
37. Copiright
Активизация для первой посылки
Низкий приоритет критерия:
Степень истинности посылки
0,15
Степень истинности правила
0
Умножить Умножить
𝜇∗
40 𝑦 = 0
𝜇40 𝑦 = 0,33𝑦 − 0,33
42. Copiright
Выводы
Если тест-кейс
- затрагивает изменённый модуль не полностью, а
частично еще и другой модуль, оценим это по шкале от 0
до 100 на 80;
- имеет приоритет 2;
- количество дефектов в модуле 3;
- время проведения сценария 3 минуты;
То по всему критерию получает оценку 2.
43. Copiright
Дальнейшая работа
Что нужно делать вручную:
- Определить критерии
- Оценить их
- Определить для них функции принадлежности
- Определить функции принадлежности для конечных
множеств