If (level is okay) then (valve is no change)
If (level is low) then (valve is close fast)
If (level is high) then (valve is open fast)
Получаем следующее: если уровень жидкости «нормальный», то оставляем клапан «без изменений», если уровень «низкий», то клапан «быстро закрывается», если уровень «высокий», то клапан «быстро открывается».
Модель нечеткого регулятора составлена средствами Fuzzy Logic Toolbox. Нечеткие понятия, взятые выше в кавычки, представлены в модели термами лингвистических переменных, с которыми сопоставлены функции принадлежности. Схема системы в Simulink приведена на рисунке 2.8.
Рисунок 2.8. – Схема ОУ с нечетким регулятором (3 правила).
Рисунок 2.9. – Изменение уровня жидкости в емкости в системе с нечетким регулятором.
В данном случае мы получили переходный процесс, по качеству неприемлемый. Подбором функций принадлежности не удается подобрать приемлемый процесс, поскольку не учтена информация о поведении при нормальном уровне жидкости в баке. Приходим к выводу о необходимости подачи на вход регулятора информации о знаке производной. Это будет учтено в регуляторе с пятью нечеткими правилами.
Рисунок 2.10. – Функции принадлежности для термов входной переменной «уровень»-level.
На рисунке 2.10. функция принадлежности low описывает низкий уровень жидкости, okay – нормальный, high – высокий.
Рисунок 2.11. – Функции принадлежности для термов выходной переменной «клапан»-valve.
На рисунке 2.11. функция принадлежности close fast соответствует сигналу быстро закрыть клапан, no change – оставить без изменений, open fast – быстро открыть клапан.
Рисунок 2.12 – Поверхность отклика для нечеткого регулятора (3 правила).
Мы получаем сходную с вышеизложенными зависимость, поскольку закон управления регулятора сходен с пропорциональным.
Теперь построим усовершенствованный нечеткий регулятор уже на основе пяти правил следующего вида:
If (level is okay) then (valve is no change)
If (level is low) then (valve is open fast)
If (level is high) then (valve is close fast)
If (level is okay) and (rate is positive), then (valve is open slow)
If (level is okay) and (rate is negative), then (valve is close slow)
Здесь мы к прошлым трем добавляем еще два правила, которые учитывают знак производной, чтобы на «нормальном» уровне плавно отслеживать тенденции изменения уровня жидкости.
К тому же исследования проведены при модификации первого правила в виде:
If (level is okay) and (rate is null) then (valve is no change)
Такая замена дает небольшой выигрыш во времени моделирования, что можно видеть на нижеследующих графиках.
Теперь нечеткий регулятор имеет две входные переменные, одна остается для уровня жидкости, другая для знака производной. Схема системы представлена на рисунке 2.13.
Рисунок 2.13 – Схема ОУ с нечетким регулятором (5 правил).
В ходе моделирования были получены следующие графики изменения уровня жидкости в баке:
Рисунок 2.14 – Изменение уровня жидкости в емкости в системе с нечетким регулятором (5 правил), начальный уровень – 0.5, при исходных правилах.
Рисунок 2.15 – Изменение уровня жидкости в емкости в системе с нечетким регулятором (5 правил), начальный уровень – 0.5.
Рисунок 2.16 – Изменение уровня жидкости в емкости в системе с нечетким регулятором (5 правил), начальный уровень – 1.5.
Рисунок 2.17 – Функции принадлежности для термов входной переменной level.
Рисунок 2.18 – Функции принадлежности для термов входной переменной rate.
Рисунок 2. 19 – Функции принадлежности для термов выходной переменной «клапан»-valve.
Как мы можем видеть, мы добавляем еще два терма для выходной переменной, соответствующие меньшей скорости открывания (закрывания) клапана. Функции принадлежности для входной переменной уровня жидкости были существенно изменены по сравнению с аналогичными в регуляторе для 3 правил.
Соответствующим подбором типов и форм функций принадлежности удалось добиться как нормального качества процессов без значительного перерегулирования, так и приемлемой точности.
Рисунок 2.20 – Поверхность отклика для нечеткого регулятора (5 правил).
Также была поставлена и решена задача синтеза нечеткого регулятора, копирующего построенный выше ПД-регулятор. Схема с регулятором – копией изображена на рисунке 3.1.
Рисунок 3.1. – схема включения нечеткого регулятора –копии.
База нечетких правил, нечеткие переменные и их термы были заданы в режиме командной строки, текст приводится ниже.
a=newfis('sw_f','sugeno'); a=addvar(a,'input','x1', [-10 10]);
a=addmf(a,'input',1,'mf11','trapmf', [-20 - 20 - 9 - 8]); a=addmf(a,'input',1,'mf12','trimf', [-8 - 7 - 6]);
a=addmf(a,'input',1,'mf13','trimf', [-6 - 5 - 4]); a=addmf(a,'input',1,'mf14','trimf', [-4 - 3 - 2]);
a=addmf(a,'input',1,'mf15','trimf', [-2 - 1 0]); a=addmf(a,'input',1,'mf16','trimf', [0 1 2]);
a=addmf(a,'input',1,'mf17','trimf', [2 3 4]); a=addmf(a,'input',1,'mf18','trimf', [4 5 6]);
a=addmf(a,'input',1,'mf19','trimf', [6 7 8]); a=addmf(a,'input',1,'mf110','trapmf', [8 9 20 20]);
a=addvar(a,'input','x2', [-10 10]);
a=addmf(a,'input',2,'mf21','trapmf', [-20 - 20 - 9 - 8]); a=addmf(a,'input',2,'mf22','trimf', [-8 - 7 - 6]);
a=addmf(a,'input',2,'mf23','trimf', [-6 - 5 - 4]); a=addmf(a,'input',2,'mf24','trimf', [-4 - 3 - 2]);
a=addmf(a,'input',2,'mf25','trimf', [-2 - 1 0]); a=addmf(a,'input',2,'mf26','trimf', [0 1 2]);
a=addmf(a,'input',2,'mf27','trimf', [2 3 4]); a=addmf(a,'input',2,'mf28','trimf', [4 5 6]);
a=addmf(a,'input',2,'mf29','trimf', [6 7 8]); a=addmf(a,'input',2,'mf210','trapmf', [8 9 20 20]);
a=addvar(a,'output','u', [-10 10]);
a=addmf(a,'output',1,'mf1','constant', [-10]); a=addmf(a,'output',1,'mf2','constant', [-9]);
a=addmf(a,'output',1,'mf3','constant', [-8]); a=addmf(a,'output',1,'mf4','constant', [-7]);
a=addmf(a,'output',1,'mf5','constant', [-6]); a=addmf(a,'output',1,'mf6','constant', [-5]);
a=addmf(a,'output',1,'mf7','constant', [-4]); a=addmf(a,'output',1,'mf8','constant', [-3]);
a=addmf(a,'output',1,'mf9','constant', [-2]); a=addmf(a,'output',1,'mf10','constant', [-1]);
a=addmf(a,'output',1,'mf11','constant', [0]); a=addmf(a,'output',1,'mf12','constant', [1]);
a=addmf(a,'output',1,'mf13','constant', [2]); a=addmf(a,'output',1,'mf14','constant', [3]);
a=addmf(a,'output',1,'mf15','constant', [4]); a=addmf(a,'output',1,'mf16','constant', [5]);
a=addmf(a,'output',1,'mf17','constant', [6]); a=addmf(a,'output',1,'mf18','constant', [7]);
a=addmf(a,'output',1,'mf19','constant', [8]); a=addmf(a,'output',1,'mf20','constant', [9]);
a=addmf(a,'output',1,'mf21','constant', [10]);
ruleList= [...
1011111
2031111
3051111
4081111
50101111
60121111
70141111
80161111
90181111
100211111
0111111
0231111
0351111
0471111
0591111
06121111
07141111
08161111
09181111
010211111] ;
a=addrule(a,ruleList);
writefis(a,'sw_f');
Графики процессов для ПД регулятора и его нечеткой копии приведены на рисунке 3.2.
Рисунок 3.2. –– Графики изменения уровня жидкости в баке при
=1 и =1.5. для ПД регулятора и его копии.Итак, путем нормирования и задания базы 20 правил удалось достичь довольно близкого приближения к оригиналу как по качеству, так и по точности. Экспериментальные и сравнительные исследования будут проведены в следующем разделе.
Здесь и далее приняты следующие обозначения
1 - ПД-пегулятор;
2 – Нечеткий регулятор для 5 правил;
3 – Нечеткий регулятор - копия;
Рисунок 4.1. – Графики изменения уровня жидкости в баке при
=1 и =0.5.Рисунок 4.2. – Графики изменения уровня жидкости в баке при
=0.3 и =1.5.Интенсивность шума определяем по правилу трех сигм