16 декабря 2011 г. 18:01
Т-Сотт #10-2010
(Технологии информационного общества)
Нечеткое программирование. Нечетские системы в МАТЬАВ
Приведена программная реализация системы нечеткого вывода Мамдани в среде МЛ ТІ.АВ для решения задачи оценки качества обслуживания нагрузки в /Р-сетях.
Соколов Д.П.,
МТУ СИ каф. СУ ПС
Рассмотрев средства нечеткого программирования в [ 1 ] остановимся более подробно на реализации нечетких систем в среде МАТ|_АВ. Рассмотрим задачу реализации нечеткой системы оценки качества обслуживания голосового трафика в 1Р-сстях. Система будет оперировать четырьмя лингвистическими переменными, три входные - задержка, джиттер, потери - и одна выходная - качество обслуживания. Как было указано в [2], лингвистические переменные описываются вектором (14. Т. и, в. М), где
• N - имя переменной;
• Т - терм-множество, элементы которого задаются нечеткими множествами на универсальном множестве
и:
• О - синтаксические правила, порождающие название термов;
• М - семантические правила, определяющие функции принадлежности нечетких термов, порожденных синтаксическими правилами из в.
Для краткости все переменные сведены в табл. 1.
Таблица 1
Определения лингвистических переменных
имя переменной^! > задержка (ТР)
Х| терм-множество (Т) {низкая, средняя, высокая}
пределы значений (Ц) |0. 450]_мс
имя переменной (Ы) джиттер (РУ)
Х-. терм-множество (Т) {низкий, высокий}
пределы шачений (1)» [0. 90] мс
имя переменной (Ы) потери (ЬЮ
терм-множество ^Т) {низкие, высокие)
пределы значений (и) |10 10 ‘1
имя переменной £Ы) качество обслуживания (ОоЯ)
V терм-множество (Т) {низкое, среднее, высокое}
пределы значений ГШ И ;
Правила системы можно записать в символической форме как:
1. (задержка-низкая) & (джиттер-низкий) & (потери-низкие) -> & (качество-высокос)
2. (задержка-средняя) & (джиттер-низкий) & (потсри=низкис) => & (качсство=срсднсс)
3. (задержка-низкая) & (джиттер-высокий) & (потери-низкие) => & (качество“низкое)
4. (задержка-средняя) & (джиттер_высокнй) & (потери-низкие) -> & (качсство-низкое)
5. (задержка-высокая) & (джиттср-высокий) & (потери-низкие) “> & (качество-низкос)
6. (потери-высокис) -> & (качество^низкое)
Семантические правила М зададим функциями принадлежности, определив степени принадлежности определенных элементов множества и к элементам из множества 'Г и интерполировав значения. Степени принадлежности, в свою очередь, определим как соответствующие координаты вектора собственных значений матриц парных сравнений, оценивая для каждой пары
элементов универсального множества И преимущество щ(и,) одного элемента над другим по отношению к свойству нечеткого множества. Уровень преимущества определим по девятибалльной шкале Саати:
1 - если преимущество элемента и, над элементов и, отсутствует;
3 - если преимущество элемента и, над и, слабое; р,|(и,) =
5 - если преимущество элемента и, над и, существенное;
7 - если преимущество элемента и, над и, явное;
9 - если преимущество элемента и, над и, абсолютное.
>
(1)
Согласно табл. 1 всего необходимо задать 7 функций принадлежности (матриц парных сравнений). В среде МАИ. А В матрица парных сравнений задается в виде двумерного массива. Степени принадлежности проще всего вычислить оператором собственных значений мат-
6.1
Т-Comm #10-2010
(Технологии информационного общества)
Используя перечисленные свойства матриц парных сравнений можно существенно упростить составление семантических правил. Из (4) и (3) получаем
U^kj/Ukj ijjc=l.ji (5)
Таким образом, можно восстановить все значения матрицы по известной k-той строке. Степени принадлежности нечеткого множества можно вычислить по формуле:
p(U,)=l/(U,)+U5+U1,+ ...+U|„) (6)
С учетом изложенного вычислим функции принадлежности для переменной «джиттер» на интервале 0-90 мс по опорным точкам с шагом 10 мс в виде:
% DV 1 (низкий джиттер)
А( 1,1 )= I :А< 1.2 )= 1; Л( 1,3 )= I ;Л< 1,4 )= 1: А( 1.5 >=■ 1 :А<! .6 )»3 :Л( 1.7 И 7:Л( 1,8)=9:А( 1.9)=9:А< 1. 10)=9: for i=2:10 for j=1:10 A(i,j)=A(l.j) A(l.i): end end
V = zeros! 1.10):
Гог j= 1:10
V(lj) -
I (A( 1 j)+A(2j)+A(3.j)+A(4j)+A(5j)+A(6,j)+A(7j)+A(8.j)+A(9.j )+A( I0.j»: end
DV_l=V/max(V);
% LR 2 (высокий джиттер)
A( 1.1 )= I :Л( 1.2)= I ;Л( 1.3)= I :A( 1.4)= I :Л( 1.5)= 1 :Л( 1.6)= I /3: A( 1.7 )= I 7:A(l,8)=l /9;A(1.9)= I 9:A(1.10)= I У: fori=2:IO for j=I: 10 A(ij)=A(l j) A(l.i): end end
V - zeros! 1.10): for j=l: 10
V(lj) =
I (A! l.j)+A(2.j)+A(3j)+A(4j)+A(5.j)+A(6.j)+A(7j)+A(8j)+A(9j )+A(l0j)): end
DV2=V max! V):
\={0 10 20 30 40 50 60 70 80 90]: plo«x.DV_l,x.DV_2)
Функции принадлежности нечетких множеств «низкий джиттер» и «высокий джиттер» приведены на рис. 2.
Окончательно рассчитаем функции принадлежности для переменной «потерн» с применением кубической
интерполяции (Piecewise Cubic Hermite Interpolating Polynomial. PCHIP) на интервале от 10"'ло I О'1.
% LR I (низкие потери)
V = zeros! 1.10):
A = zeros(IO.IO):
A( 1,1:10) = [1 МММ 379); for i=2:10 lor j= 1:10 A(i.j)=A(l.j)A(l.i); end end
for j=l:IO d=0: for j—1:10 d=d+A(i,j): end
VO)-I/d: end
LR_l=V7max(V):
% LR 2 (высокие потери)
V = zeros( 1.10):
A = zeros! 10.10):
A(I.I:I0) = [I II II II 13 19 1/9): for i-2:10 for j=l:10 A(ij)=A(lj) A(l.i); end end
forj 1:10 d-0; for i=l:IO d=d+A(i.j): end
VO) = l/d: end
LR 2-V max! V):
x-l-10 -9 -8 -7 -6 -5 -4 -3 -2 -I):
XX—10:0.l:-l;
a=inierpl(x.LR_l.xx.,pchip’): b=inlerpl(x.LR 2,xx,'pehip'): plol(xx.a.\x.b)
Соответствующие функции принадлежности приведены на рис. 3.
После того, как все лингвистические переменные заданы. воспользуемся инструментом MATLAB FIS Editor и сформируем нечеткую систему вывода Мамдани так. как это показано на рис. 4.
Рис. 2. Функции принадлежности множеств: ▼ низкий джиттер. А - высокий джиттер
65