Нечёткие множества можно задавать различными способами. Одним из таких способов является построение двумерного графика по аналитическому представлению функции принадлежности.
Одна из возможностей вопросно-ответной системы Wolfram|Alpha для теории нечётких множеств заключается в построении различных функций принадлежности для нечётких множеств.
Стоит отметить недостаток вопросно-ответной системы Wolfram|Alpha, заключающийся в том, что командное окно имеет небольшой размер, что несколько ограничивает в возможностях ввода сложных аналитических зависимостей.
Приведём несколько примеров.
Кусочно-линейные функции принадлежности
Для того, чтобы задать треугольную функцию принадлежности необходимо зайти на главную форму Wolfram|Alpha по ссылке: https://www.wolframalpha.com/
и в командную строку внести команду с формулой, которая используется для задания треугольной функции принадлежности нечёткого множества с параметрами a, b и c:
Plot[Piecewise[{{0, x <= а}, {(x-a)/(b-a), a<=x <=b}, {(c-x)/(c-b), b<=x <=c }, {0, c<=x}}], {x, 0, 10}]
Заметим, что эта функция (как и все остальные в этой лекции) будет задаваться на универсальном множестве [0; 10].
Рассмотрим на примере, когда a = 2, b = 4, с = 7.
Для задания в Wolframalpha трапециевидной функции принадлежности необходимо в командную строку внести формулу в виде:
Plot[Piecewise[{{0, x <= а}, {(x-a)/(b-a), a<=x <=b}, {1, b<=x <=c}, {(d-x)/(d-c), c<=x<=d}, {0, d<=x}}], {x, 0, 10}]
(a, b, c, d - соответствующие параметры трапециевидной функции принадлежности).
Рассмотрим на примере следующей совокупности параметров: a = 1, b = 3, с = 5, d = 8:
внесём в Wolframalpha следующую команду:
Plot[Piecewise[{{0, x<= 1}, {(x-1)/(3-1), 1<=x <=3}, {1, 3<=x<=5}, {(8-x)/(8-5), 5<=x<=8}, {0, 8<=x}}], {x, 0, 10}]
Z-образные и S-образные функции принадлежности
Для того, чтобы задать Z-образную функцию принадлежности необходимо в командную строку внести команду с формулой, которая используется для задания Z-образной функции принадлежности нечёткого множества с параметрами a и b:
Plot[Piecewise[{{1, x <= а}, {(1/2)+(1/2)*cos(((x-a)/(b-a))*pi), a<=x <=b}, {0, x > b}}], {x, 0, 10}]
(a, b - соответствующие параметры Z-образной функции принадлежности).
Рассмотрим на примере следующей совокупности параметров: a = 3, b = 6.
Внесём в Wolframalpha следующую команду:
Plot[Piecewise[{{1, x <= 3}, {(1/2)+(1/2)*cos(((x-3)/(6-3))*pi), 3<=x <=6}, {0, x > b}}], {x, 0, 10}]
получим соответствующий результат:
Z-образная функция принадлежности может задаваться и другой аналитической формулой:
Plot[Piecewise[{{1, x <= а}, {1-2*((x-a)/(b-a))^2, a<x <=(a+b)/2}, {2*((b-x)/(b-a))^2, (a+b)/2 <x< b},{0, b <=x}}], {x, 0, 10}].
Рассмотрим на примере следующей совокупности параметров: a = 3, b = 6.
Внесём в Wolframalpha следующую команду:
Plot[Piecewise[{{1, x <= 3}, {1-2*(((x-3)/(6-3))^2), 3<x <=(a+6)/2}, {2*(((6-x)/(6-3))^2), (3+6)/2 <x< 6},{0, 6 <=x}}], {x, 0, 10}].
Для того, чтобы задать S-образную функцию принадлежности необходимо в командную строку внести команду с формулой, которая используется для задания S-образной функции принадлежности нечёткого множества с параметрами a и b:
Plot[Piecewise[{{0, x < а}, {1/2+1/2*cos*(((x-b)/(b-a))*pi), a<=x<=b}, {1, x >b}}], {x, 0, 10}]
(a, b - соответствующие параметры S-образной функции принадлежности).
Рассмотрим на примере следующей совокупности параметров: a = 3, b = 6.
Внесём в Wolframalpha следующую команду:
Plot[Piecewise[{{0, x < 3}, {1/2+1/2*cos(((x-6)/(6-3))*pi), 3<=x<=6}, {1, x >6}}], {x, 0, 10}].
S-образная функция принадлежности, также как и Z-образная, может задаваться и другой аналитической формулой:
Plot[Piecewise[{{0, x <= а}, {2*((x-a)/(b-a))^2, a <x<=(a+b)/2},{1-2*((b-x)/(b-a))^2, (a+b)/2<x <b}, {1, b <=x}}], {x, 0, 10}].
Рассмотрим на примере следующей совокупности параметров: a = 3, b = 6.
Внесём в Wolframalpha следующую команду:
Plot[Piecewise[{{0, x <= 3}, {2*((x-3)/(6-3))^2, 3 <x<=(3+6)/2},{1-2*((6-x)/(6-3))^2, (3+6)/2<x <6}, {1, 6 <=x}}], {x, 0, 10}].
Получим результат:
Cигмоидальные функции принадлежности
К типу S-образных и одновременно Z-образных функций принадлежности может быть отнесена так называемая сигмоидальная функция (сигмоида), которая в общем случае задается аналитически одним из следующих выражений
(вариант а) Plot [1/(1+ E^(-a(x-b)))], {x, 0, 10}
(вариант б) Plot [1/(1+ E^(a(x-b)))], {x, 0, 10}
В зависимости от параметров сигмоида приобретает вид или S-образной, или Z-образной функции принадлежности.
Рассмотрим на примере следующих совокупностей параметров:
(вариант а) a = 3, b = 6;
(вариант б) a = -3, b = 6.
Внесём в Wolframalpha следующие варианты команд:
(вариант а) Plot [1/(1+ E^(-3(x-6)))], {x, 0, 10}
(вариант б) Plot [1/(1+ E^(3(x-6)))], {x, 0, 10}
Получим следующие варианты функций принадлежности:
Более того, произведение двух сигмоид
Plot [1/(1+ E^(-a(x-b)))* 1/(1+ E^(c(x-d)))], {x, 0, 10}
например, при параметрах a = 3, b = 6, c = 7, d = 8
Plot [1/(1+ E^(-3(x-6)))* 1/(1+ E^(7(x-8)))], {x, 0, 10}
Даёт в результате колоколообразную функцию принадлежности:
Линейные Z-образные и S-образные функции принадлежности
В качестве частных случаев Z- и S-образных функций принадлежности удобно рассматривать так называемую линейную Z-образную функцию и линейную S-образную функцию.
Используя команду
Plot[Piecewise[{{1, x <=a}, {(b-x)/(b-a), a<x<b}, {0, b<=x}}], {x, 0, 10}]
получаем линейную Z-образную функцию принадлежности, а, используя
Plot[Piecewise[{{0, x <=a}, {(x-a)/(b-a), a<x<b}, {1, x>=b}}], {x, 0, 10}]
получаем линейную S-образную функцию принадлежности соответственно.
Рассмотрим на примерах с использованием параметров a = 3, b = 6.
Внесём в Wolframalpha следующую команду:
Plot[Piecewise[{{1, x <=3}, {(6-x)/(6-3), 3<x<6}, {0, 6<=x}}], {x, 0, 10}]
Получим график линейной Z-образной функции принадлежности:
Внесём в Wolframalpha следующую команду:
Plot[Piecewise[{{0, x <=3}, {(x-3)/(6-3), 3<x<6}, {1, x>=6}}], {x, 0, 10}]
Получим график линейной S-образной функции принадлежности.
П-образные функции принадлежности
К этому типу функций принадлежности можно отнести целый класс функций принадлежности, которые по своей форме напоминают колокол, сглаженную трапецию или букву "П".
Один из вариантов был показан выше, когда рассматривались сигмоидные функции принадлежности.
Ещё один пример П-образной функции принадлежности представляет собой так называемую колоколообразную (bell-shaped) функцию,
Для её задания используем команду:
Plot [1/(1+ abs[(x-c)/a]^(2*b))], {x, 0, 10}
Рассмотрим пример, когда параметры a = 2, b = 3, c = 6.
Для этого в Wolframalpha внесём команду:
Plot [1/(1+ abs[(x-6)/2]^(2*3))], {x, 0, 10}
Получим результат:
Наконец, последней из рассматриваемых функций П-образного типа является функция плотности нормального распределения, которая в Wolframalpha задается аналитически следующим выражением:
Plot E^[(-(x-c)^2)/(2*σ^2)], {x, 0, 10}
Рассмотрим пример, когда параметры σ = 2, c = 4:
Для этого в Wolframalpha внесём команду:
Plot E^[(-(x-4)^2)/(2*2^2)], {x, 0, 10}
Получим результат:
Рассмотрим ещё пример, когда параметры σ = 2, c = 8, а также изменим универсальное множество (с [0, 10] на [0, 15]).
Для этого в Wolframalpha внесём команду:
Plot E^[(-(x-8)^2)/(2*2^2)], {x, 0, 15}
Получим результат:
В качестве Упражнения 1 задайте собственные варианты универсальных множеств и параметров вышеуказанных функций принадлежности.
Также обращаем внимание, что П-образные функции принадлежности можно получить из других функций принадлежности (путём умножения S-образной функции принадлежности на Z-образную, в том числе линейные варианты). В качестве Упражнения 2 попробуйте получить новые варианты П-образных функций принадлежности, результаты приложите в виде комментария под лекцией.