Можно ли прикрутить нечеткий логический вывод к...
TRANSCRIPT
Copiright
В профессии больше 3 лет.Кратко обо мне: студент, препод, работяга, лентяй.
Хей! Меня зовут Алсу.Я из ICL Services, Казань
Copiright
Что такое fuzzy logic?
Возьмем 3 формулировки:Низкий домСредний домаВысокий дом
Нечеткое множествох – высота домаu(x) – принадлежность высоты дома к множеству
Copiright
Что такое fuzzy logic?
– степень принадлежности высоты дома к множеству «Низкий дом»
– степень принадлежности высоты дома к множеству «Средний дом»
– степень принадлежности высоты дома к множеству «Высокий дом»
Copiright
Множество «Низкий дом»
Функция принадлежности множества «Низкий дом»
Где x – высота домаu(x) – степень принадлежности к множеству
Copiright
Множество «Средний дом»
Функция принадлежности множества «Средний дом»
Где x – высота домаu(x) – степень принадлежности к множеству
Copiright
Множество «Высокий дом»
Функция принадлежности множества «Высокий дом»
Где x – высота домаu(x) – степень принадлежности к множеству
Copiright
Критерии для тест-кейсов
- Затрагивает тест-кейс измененный модуль или нет
- Приоритет у тест-кейса высокий или низкий
- Количество багов в этом модуле за все время высокое или низкое
- Времени на прогон этого тест-кейса нужно много или мало
> В какую очередь прогонять тест-кейс?
Copiright
Супер формально
Задачей нечеткого вывода является определение четкого значения выходной переменной T – приоритета критерия, выраженный в лингвистических единицах «очень высокий», «высокий», «средний» и «низкий», и который зависит от факторов (лингвистических переменных) :
Copiright
Определим понятия
Имя функции – приоритет критерияЗначения функции – очень высокий, высокий, средний и низкийАргумент функции – критерии (затрагивает модуль, какой приоритет у тест-кейса, сколько багов и т.д.)Значения аргументов – затрагивает/не затрагивает, высокий/низкий, много/мало и т.д.
y(x)=x+1
Copiright
Шаг 1
Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции1 Затрагивает измененный модуль Затрагивает
2 Не затрагивает3 Приоритет сценария Высокий4 Низкий5 Количество дефектов в модуле Много6 Мало7 Время проведения сценария Быстро8 Долго Лингвистическое имя функции Лингвистическое имя значения функции1 Приоритет критерия Очень высокий2 Высокий3 Средний4 Низкий
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
Copiright
Шаг 2. Оценки
Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции Посылки
1 Затрагивает измененный модуль Затрагивает Y
2 Не затрагивает 3 Приоритет сценария Высокий Y4 Низкий 5 Количество дефектов в модуле Много Y6 Мало 7 Время проведения сценария Быстро Y8 Долго Лингвистическое имя функции Лингвистическое имя значения функции Баллы
истинности правил
1 Приоритет критерия Очень высокий
2 Высокий
3 Средний
4 Низкий
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
Copiright
Шаг 2. А вот так
Лингвистическое имя аргумента функции Лингвистическое значение аргумента функцииПосылки
1 Затрагивает измененный модуль Затрагивает Y
2 Не затрагивает 3 Приоритет сценария Высокий Y4 Низкий 5 Количество дефектов в модуле Много Y6 Мало 7 Время проведения сценария Быстро Y8 Долго Лингвистическое имя функции Лингвистическое имя значения функции Баллы истинности
правил1 Приоритет критерия Очень высокий 102 Высокий 23 Средний 14 Низкий 0
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 Y3 Приоритет сценария Высокий Y Y Y Y Y Y Y Y 4 Низкий Y Y Y Y Y Y Y Y5 Количество дефектов в
модулеМного 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 02 Высокий 2 9 8 4 3 3 1 1 2 3 8 6 4 1 1 13 Средний 1 5 4 8 8 5 2 1 1 1 4 10 10 2 1 14 Низкий 0 1 1 2 7 10 10 10 0 1 1 2 6 9 10 10
Copiright
Шаг 3. Функции для аргументов
Затрагивает/не затрагивает измененный модуль
Лингвистическое имя аргумента функции
Лингвистическое имя значения функции
Нечеткое множество Функция принадлежности
1 Затрагивает измененный
модуль
Затрагивает m11(x1)=0.01x1
2 Затрагивает измененный
модуль
Не затрагивает m21(x1)=-0.01x1+1
Copiright
Шаг 3. Функции для аргументов
Приоритет тест-кейса высокий/низкий
Лингвистическое имя аргумента функции
Лингвистическое имя значения функции
Нечеткое множество Функция принадлежности
3 Приоритет сценария Высокий m12(x2)=-0.33x2+1.334 Приоритет сценария Низкий m22(x2)=0.33x2-0.33
Copiright
Шаг 3. Функции для аргументов
Багов много/мало
Лингвистическое имя аргумента функции
Лингвистическое имя значения функции
Нечеткое множество Функция принадлежности
5 Количество дефектов в
модуле
Много m13(x3)=0.05x3
6 Количество дефектов в
модуле
Мало m23(x3)=-0.05x3+1
Copiright
Шаг 3. Функции для аргументов
Тест-кейс прогонять долго/недолго
Лингвистическое имя аргумента функции
Лингвистическое имя значения функции
Нечеткое множество Функция принадлежности
7 Время проведения сценария Быстро m14(x4)=-0.11x4+1.118 Время проведения сценария Долго m24(x4)=0.11x4-0.11
Copiright
Фаззификация
Фаззификация – нахождения значения функций принадлежности
- затрагивает изменённый модуль на полностью, а частично еще и другой модуль, оценим это по шкале от 0 до 100 на 80;- имеет приоритет 2;- количество дефектов в модуле 3;- время проведения сценария 3 минуты.
Copiright
Результат фаззификации
Лингвистическое имя аргумента функции Лингвистическое значение аргумента функции
1 Затрагивает измененный модуль Затрагивает 0.8
2 Не затрагивает 0.23 Приоритет сценария Высокий 0.674 Низкий 0.335 Количество дефектов в модуле Много 0.156 Мало 0.857 Время проведения сценария Быстро 0.788 Долго 0.22
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
Copiright
Активизация
Активизация – нахождение степени истинности посылкиВходные данные:- Степень истинности посылки- Степень истинности правила- Функция принадлежности правила
Copiright
Функции принадлежности для правила
Очень высокий приоритет критерия ()𝜇10(𝑦 )=−0,33 𝑦+1,33
Где y – приоритет критерияu(x) – степень принадлежности к множеству «Очень высокий приоритет»
Copiright
Функции принадлежности для правила
Высокий приоритет критерия ()
𝜇20(𝑦 )={ 𝑦−1 , если 𝑦 ≤2−0,5 𝑦+2 ,если 𝑦>2
Где y – приоритет критерияu(x) – степень принадлежности к множеству «Высокий приоритет»
Copiright
Функции принадлежности для правила
Средний приоритет критерия ()𝜇30(𝑦 )={0,5 𝑦−0,5 ,если 𝑦 ≤3
− 𝑦+4 , если 𝑦>3
Где y – приоритет критерияu(x) – степень принадлежности к множеству «Средний приоритет»
Copiright
Функции принадлежности для правила
Низкий приоритет критерия ()𝜇40 ( 𝑦 )=0,33 𝑦−0,33
Где y – приоритет критерияu(x) – степень принадлежности к множеству «Низкий приоритет»
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
Copiright
Степень истинности правила
Лингвистическое имя аргумента функции Лингвистическое значение аргумента функцииПосылки
1 Затрагивает измененный модуль Затрагивает Y
2 Не затрагивает 3 Приоритет сценария Высокий Y4 Низкий 5 Количество дефектов в модуле Много Y6 Мало 7 Время проведения сценария Быстро Y8 Долго Лингвистическое имя функции Лингвистическое имя значения функции Степени истинности
правил1 Приоритет критерия Очень высокий 10 => 12 Высокий 2 => 0,053 Средний 1 => 0,014 Низкий 0
Copiright
Активизация для первой посылки
Очень высокий приоритет критерия:
Степень истинности посылки
0,15Степень истинности правила
1
Умножить Умножить
𝜇∗10(𝑦)=−0,05 𝑦+0,2
𝜇10(𝑦 )=−0,33 𝑦+1,33
Copiright
Активизация для первой посылки
Высокий приоритет критерия:
Степень истинности посылки
0,15Степень истинности правила
0,05
Умножить Умножить
𝜇∗20(𝑦 )={0,01 𝑦−0,01, если 𝑦 ≤2
0,02, если 𝑦>2
𝜇20(𝑦 )={ 𝑦−1 , если 𝑦 ≤2−0,5 𝑦+2 ,если 𝑦>2
Copiright
Активизация для первой посылки
Средний приоритет критерия:
Степень истинности посылки
0,15Степень истинности правила
0,01
Умножить Умножить
𝜇∗30(𝑦 )={ 0 ,если 𝑦 ≤3
0,01 , если 𝑦>3
𝜇30(𝑦 )={0,5 𝑦−0,5 ,если 𝑦 ≤3− 𝑦+4 , если 𝑦>3
Copiright
Активизация для первой посылки
Низкий приоритет критерия:
Степень истинности посылки
0,15Степень истинности правила
0
Умножить Умножить
𝜇∗40 (𝑦 )=0
𝜇40 ( 𝑦 )=0,33 𝑦−0,33
Copiright
Аккумуляция
Цель аккумуляции – объединить все степени истинности заключений для получения степени истинности для выходных лингвистических переменных.
Copiright
Дефаззифицация
Цель дефаззификации заключается в том, чтобы, используя результат аккумуляции, получить количественное значение выходной переменной.
Copiright
Выводы
Если тест-кейс- затрагивает изменённый модуль не полностью, а частично еще и другой модуль, оценим это по шкале от 0 до 100 на 80;- имеет приоритет 2;- количество дефектов в модуле 3;- время проведения сценария 3 минуты;
То по всему критерию получает оценку 2.
Copiright
Дальнейшая работа
Что нужно делать вручную:- Определить критерии- Оценить их- Определить для них функции принадлежности- Определить функции принадлежности для конечных
множеств