Методы Defuzzification

В этом примере показано, как отобразить пять defuzzification методов, поддержанных в Fuzzy Logic Toolbox™.

Setup задач

Предположим, что у вас есть следующая область, чтобы быть defuzzified. Что такое некоторые методы, которые вы можете выбрать?

x = -10:0.1:10;

mf1 = trapmf(x,[-10 -8 -2 2]);
mf2 = trapmf(x,[-5 -3 2 4]);
mf3 = trapmf(x,[2 3 8 9]);
mf1 = max(0.5*mf2,max(0.9*mf1,0.1*mf3));

figure('Tag','defuzz');
plot(x,mf1,'LineWidth',3);
h_gca = gca;
h_gca.YTick = [0 .5 1] ;
ylim([-1 1]);

Центроид

Центроид defuzzification возвращает центр области под кривой. Если вы думаете об области как о пластине равной плотности, центроид является точкой вдоль оси X, о которой балансировалась бы эта форма.

x1 = defuzz(x,mf1,'centroid'); % #ok<*NOPTS>

h1 = line([x1 x1],[-0.2 1.2],'Color','k'); 
t1 = text(x1,-0.2,' centroid','FontWeight','bold');

Биссектриса

Биссектриса является вертикальной линией, которая разделит область на две подобласти равной области. Это иногда, но не всегда совпадающее с центроидой.

x2 =  defuzz(x,mf1,'bisector');

gray = 0.7*[1 1 1];
h1.Color = gray;
t1.Color = gray;
h2 = line([x2 x2],[-0.4 1.2],'Color','k'); 
t2 = text(x2,-0.4,' bisector','FontWeight','bold');

Средний, самый маленький, и самый большой из максимума

MOM, SOM и LOM обозначают средний, Самое маленькое, и Самый большой из Максимума, соответственно. Эти три метода выключают максимальное значение, принятое совокупной функцией принадлежности. В этом примере, потому что существует плато в максимальном значении, они отличны. Если совокупная функция принадлежности имеет уникальный максимум, то MOM, SOM и LOM все берут то же значение.

x3 = defuzz(x,mf1,'mom')
x3 = -5
x4 = defuzz(x,mf1,'som')
x4 = -2
x5 = defuzz(x,mf1,'lom')
x5 = -8
h2.Color = gray;
t2.Color = gray;

h3 = line([x3 x3],[-0.7 1.2],'Color','k'); 
t3 = text(x3,-0.7,' MOM','FontWeight','bold');
h4 = line([x4 x4],[-0.8 1.2],'Color','k'); 
t4 = text(x4,-0.8,' SOM','FontWeight','bold');
h5 = line([x5 x5],[-0.6 1.2],'Color','k'); 
t5 = text(x5,-0.6,' LOM','FontWeight','bold');

Выбор метода

Какой из этих методов является правильным? Нет никакого простого ответа. Но если вы хотите начать быстро, обычно центроидный метод достаточно хорош. Позже можно всегда изменять defuzzification метод, чтобы видеть, работает ли другой метод лучше.

h3.Color = gray;
t3.Color = gray;
h4.Color = gray;
t4.Color = gray;
h5.Color = gray;
t5.Color = gray;
h1.Color = 'red';
t1.Color = 'red';

Похожие темы