Бинарные операции над нечеткими множествами
В видео рассмотрены бинарные операции над нечёткими множествами: min-пересечение, max- объединение, алгебраическое пересечение, алгебраическое объединение, граничное пересечение, граничное объединение, драстическое пересечение, драстическое объединение, разность, симметрическая разность. Также показано, как реализовать указанные операции над нечёткими множествами в математическом пакете Matlab. Подготовка презентации, озвучивание и монтаж: Андреев К.М. Видео также опубликовано на Яндекс.Дзен канале "Самостоятельная работа": https://dzen.ru/profile/editor/independent_work/publications?state=pending&videoEditorPublicationId=6381f044b51b7d7df9a6900d Приложение: Программа в Matlab для расчета операций над нечёткими множествами function out=fuzoper(x, A, B, n, operator) % FUZOPER Нечёткие операции % С ¬ FUZOPER(x, А, В, OPERATOR) возвращает нечёткое множество С % как результат применения операции OPERATOR для нечётких множеств А % и В на универсуме х. % А, В, и х должны быть векторами одинаковой размерности. %n-число задается пользователем. Необходимо для операций умножения и %возведения в степень на число. Для бинарных операций n=0. % OPERATOR должен быть одной из следующих строк: 'miin', ' maun', % 'alin', 'alun','boin', ' boun' , 'drin', 'raz', 'simraz', 'dop', 'ymnozh', 'step05', 'step2', 'stepn', или 'drun'. % Возвращаемое нечёткое множество С является вектором той же % размерности, что А и В. % Пример работы программы для бинарных операций: %x = 0:0.1:10; %A = trapmf(x, [1 2 3 5]); % трапециевидное нечёткое множество А %B = gaussmf(x, [2 5]); % нечёткое множество с гауссовой функцией принадлежности В %C1 = fuzoper(x, A, B, 'miin'); %subplot(5,2,1); %plot(x, A, 'y--', x, B, 'm:', x, C1, 'c'); %title('min-пересечение нечётких множеств А и В'); %C2 = fuzoper(x, A, B, 'maun'); %subplot(5,2,2); %plot(x, A, 'y--', x, B, 'm:', x, C2, 'c'); %title('mах-объединение нечётких множеств А и В'); %C3 = fuzoper(x, A, B, 'alin'); %subplot(5,2,3); %plot(x, A, 'y--', x, B, 'm:', x, C3, 'c'); %title('алгебраическое пересечение нечётких множеств А и В'); %C4 = fuzoper(x, A, B, 'simraz'); %subplot(5,2,4); %plot(x, A, 'y--', x, B, 'm:', x, C4, 'c'); %title('симметрическая разность нечётких множеств А и В'); %C5 = fuzoper(x, A, B, 'alun'); %subplot(5,2,5); %plot(x, A, 'y--', x, B, 'm:', x, C5, 'c'); %title('алгебраическое объединение нечётких множеств А и В'); %C6 = fuzoper(x, A, B, 'boin'); %subplot(5,2,6); %plot(x, A, 'y--', x, B, 'm:', x, C6, 'c'); %title('граничное пересечение нечётких множеств А и В'); %C7 = fuzoper(x, A, B, 'boun'); %subplot(5,2,7); %plot(x, A, 'y--', x, B, 'm:', x, C7, 'c'); %title('граничное объединение нечётких множеств А и В'); %C8 = fuzoper(x, A, B, 'raz'); %subplot(5,2,8); %plot(x, A, 'y--', x, B, 'm:', x, C8, 'c'); %title('разность нечётких множеств А и В'); %C9 = fuzoper(x, A, B, 'drin'); %subplot(5,2,9); %plot(x, A, 'y--', x, B, 'm:', x, C9, 'c'); %title('драстическое пересечение нечётких множеств А и В'); %C10 = fuzoper(x, A, B, 'drun'); %subplot(5,2,10); %plot(x, A, 'y--', x, B, 'm:', x, C10, 'c'); %title('драстическое объединение нечётких множеств А и В'); % if strcmp(operator, 'miin'), out = min(A,B); elseif strcmp(operator, 'maun'), out = max(A,B); elseif strcmp(operator, 'alin'), out = A.*B; elseif strcmp(operator, 'alun'), out = A+B-A.*B; elseif strcmp(operator, 'boin'), out = max(A+B-1,0); elseif strcmp(operator, 'boun'), out = min(A+B,1); elseif strcmp(operator, 'raz'), out = max(A-B, 0); elseif strcmp(operator, 'simraz'), out = abs(A-B); end end else error('Это неизвестная операция!'); end
В видео рассмотрены бинарные операции над нечёткими множествами: min-пересечение, max- объединение, алгебраическое пересечение, алгебраическое объединение, граничное пересечение, граничное объединение, драстическое пересечение, драстическое объединение, разность, симметрическая разность. Также показано, как реализовать указанные операции над нечёткими множествами в математическом пакете Matlab. Подготовка презентации, озвучивание и монтаж: Андреев К.М. Видео также опубликовано на Яндекс.Дзен канале "Самостоятельная работа": https://dzen.ru/profile/editor/independent_work/publications?state=pending&videoEditorPublicationId=6381f044b51b7d7df9a6900d Приложение: Программа в Matlab для расчета операций над нечёткими множествами function out=fuzoper(x, A, B, n, operator) % FUZOPER Нечёткие операции % С ¬ FUZOPER(x, А, В, OPERATOR) возвращает нечёткое множество С % как результат применения операции OPERATOR для нечётких множеств А % и В на универсуме х. % А, В, и х должны быть векторами одинаковой размерности. %n-число задается пользователем. Необходимо для операций умножения и %возведения в степень на число. Для бинарных операций n=0. % OPERATOR должен быть одной из следующих строк: 'miin', ' maun', % 'alin', 'alun','boin', ' boun' , 'drin', 'raz', 'simraz', 'dop', 'ymnozh', 'step05', 'step2', 'stepn', или 'drun'. % Возвращаемое нечёткое множество С является вектором той же % размерности, что А и В. % Пример работы программы для бинарных операций: %x = 0:0.1:10; %A = trapmf(x, [1 2 3 5]); % трапециевидное нечёткое множество А %B = gaussmf(x, [2 5]); % нечёткое множество с гауссовой функцией принадлежности В %C1 = fuzoper(x, A, B, 'miin'); %subplot(5,2,1); %plot(x, A, 'y--', x, B, 'm:', x, C1, 'c'); %title('min-пересечение нечётких множеств А и В'); %C2 = fuzoper(x, A, B, 'maun'); %subplot(5,2,2); %plot(x, A, 'y--', x, B, 'm:', x, C2, 'c'); %title('mах-объединение нечётких множеств А и В'); %C3 = fuzoper(x, A, B, 'alin'); %subplot(5,2,3); %plot(x, A, 'y--', x, B, 'm:', x, C3, 'c'); %title('алгебраическое пересечение нечётких множеств А и В'); %C4 = fuzoper(x, A, B, 'simraz'); %subplot(5,2,4); %plot(x, A, 'y--', x, B, 'm:', x, C4, 'c'); %title('симметрическая разность нечётких множеств А и В'); %C5 = fuzoper(x, A, B, 'alun'); %subplot(5,2,5); %plot(x, A, 'y--', x, B, 'm:', x, C5, 'c'); %title('алгебраическое объединение нечётких множеств А и В'); %C6 = fuzoper(x, A, B, 'boin'); %subplot(5,2,6); %plot(x, A, 'y--', x, B, 'm:', x, C6, 'c'); %title('граничное пересечение нечётких множеств А и В'); %C7 = fuzoper(x, A, B, 'boun'); %subplot(5,2,7); %plot(x, A, 'y--', x, B, 'm:', x, C7, 'c'); %title('граничное объединение нечётких множеств А и В'); %C8 = fuzoper(x, A, B, 'raz'); %subplot(5,2,8); %plot(x, A, 'y--', x, B, 'm:', x, C8, 'c'); %title('разность нечётких множеств А и В'); %C9 = fuzoper(x, A, B, 'drin'); %subplot(5,2,9); %plot(x, A, 'y--', x, B, 'm:', x, C9, 'c'); %title('драстическое пересечение нечётких множеств А и В'); %C10 = fuzoper(x, A, B, 'drun'); %subplot(5,2,10); %plot(x, A, 'y--', x, B, 'm:', x, C10, 'c'); %title('драстическое объединение нечётких множеств А и В'); % if strcmp(operator, 'miin'), out = min(A,B); elseif strcmp(operator, 'maun'), out = max(A,B); elseif strcmp(operator, 'alin'), out = A.*B; elseif strcmp(operator, 'alun'), out = A+B-A.*B; elseif strcmp(operator, 'boin'), out = max(A+B-1,0); elseif strcmp(operator, 'boun'), out = min(A+B,1); elseif strcmp(operator, 'raz'), out = max(A-B, 0); elseif strcmp(operator, 'simraz'), out = abs(A-B); end end else error('Это неизвестная операция!'); end
