Смекни!
smekni.com

Конструирование алгоритмов управления на основе нечеткой логики и нейронных сетей (стр. 2 из 3)

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 правила).

Мы получаем сходную с вышеизложенными зависимость, поскольку закон управления регулятора сходен с пропорциональным.

2.5. Нечеткий регулятор для 5 правил

Теперь построим усовершенствованный нечеткий регулятор уже на основе пяти правил следующего вида:

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. копирование пд – регулятора

Также была поставлена и решена задача синтеза нечеткого регулятора, копирующего построенный выше ПД-регулятор. Схема с регулятором – копией изображена на рисунке 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 правил удалось достичь довольно близкого приближения к оригиналу как по качеству, так и по точности. Экспериментальные и сравнительные исследования будут проведены в следующем разделе.

4. исследование и сравнительный анализ качества з.с.

4.1. Оценить качество замкнутой системы при различных начальных
и задающих уровнях
жидкости в баке

Здесь и далее приняты следующие обозначения

1 - ПД-пегулятор;

2 – Нечеткий регулятор для 5 правил;

3 – Нечеткий регулятор - копия;

Рисунок 4.1. – Графики изменения уровня жидкости в баке при

=1 и
=0.5.

Рисунок 4.2. – Графики изменения уровня жидкости в баке при

=0.3 и
=1.5.

4.2. Оценить влияние неточности от 1 до 5% при измерении датчиком уровня воды в емкости, введя в систему случайный шум

Интенсивность шума определяем по правилу трех сигм