В этом примере показано, как отобразить пять defuzzification методов, поддержанных в Fuzzy Logic Toolbox™.
Предположим, что у вас есть следующая область, чтобы быть 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';