Лаб_практикум_ОВИ_03_06_13
.pdfреализующей его программы можно просмотреть, активизировав мышью гиперссылку View code for juggler в окне демонстрации этого примера.
Программа занимает немного больше 700 строк и просматривается в редакторе программ системы МATLAB.
Рис. 9.8. Окно контроля Rule Viewer
9.2.3. Система управления смесителем воды
Ввод команды shower в окне Command Window пакета MATLAB
приводит к появлению в окне Simulink структурной схемы нечеткой системы управления смесителем холодной и горячей воды.
С работой смесителя холодной и горячей воды мы сталкиваемся практически ежедневно. Если напор воды постоянен, то особой необходимости в управлении этим простым устройством нет – достаточно ручку смешения установить в нужное положение и проконтролировать
171
рукой температуру воды. Но, если напор воды постоянно меняется, то без автоматического регулятора температуры не обойтись. В
демонстрационном примере рассматривается замкнутая система регулирования температуры с использованием нечеткой логики. Simulink-
диаграммы системы приведены на рис. 9.9.
Рис. 9.9. Simulink-диаграммы системы управления смесителем воды
В системе предусмотрен контроль температуры воды, как при ручном управлении, так и в условиях изменения давления горячей и холодной воды после заданной ручной установки. Диаграммы потока и температуры воды выводятся на виртуальные осциллографы.
9.2.4. Система управления перевернутым маятником.
Ввод команды slcp1 в окне Command Window пакета MATLAB
приводит к появлению в окне Simulink структурной схемы нечеткой системы управления перевернутым маятником (рис. 9.10).
172
Рис. 9.10. Структурная схема нечеткой системы управления
"перевернутый маятник"
Запуск моделирования приводит к появлению анимационной картинки (рис. 9.11) иллюстрирующей перемещение в пространстве динамической системы "перевернутый маятник".
9.2.5. Система управления двумя перевернутыми маятниками
Ввод команды slcpp1 в окне Command Window пакета MATLAB
приводит к появлению в окне Simulink структурной схемы нечеткой системы управления двумя перевернутыми маятниками (рис. 9.12).
Запуск моделирования приводит к появлению анимационной картинки (рис. 9.13), иллюстрирующей перемещение в пространстве динамической системы "перевернутые маятники".
173
Рис. 9.11. Динамическая система "перевернутый маятник"
Рис. 9.12. Структурная схема нечеткой системы управления
174
Рис. 9.13. Динамическая система "перевернутые маятники"
9.3. Индивидуальные задания
1.Необходимо изучить методы построения нечетких контроллеров средствами нечеткой логики и блоков моделирования Simulink.
2.Промоделировать в Simulink все пять нечетких контроллеров,
которые управляют различными динамическими процессами.
3.Получить и привести в отчете словесное описание и графическое отображение правил нечеткого вывода рассмотренных нечетких регуляторов.
4.Описать условия и определить параметры системы, при которых происходит "срыв" управления всех пяти нечетких контроллеров, которые управляют различными динамическими процессами.
5.Оформите отчет по лабораторной работе.
175
Лабораторная работа 10
РЕГУЛИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ НЕЧЕТКОГО КОНТРОЛЛЕРА
Цель лабораторной работы: получение и закрепление знаний,
формирование практических навыков работы с методами построения нечетких контроллеров средствами инструментария нечеткой логики
(Fuzzy Logic) и блоков моделирования Simulink пакета MATLAB.
10.1. Краткие сведения из теории
Пакет нечеткой логики для системы MATLAB – это пакет прикладных программ, относящихся к теории нечетких множеств и позволяющих конструировать так называемые нечеткие экспертные и управляющие системы. Основные возможности пакета:
1. Построение систем нечеткого вывода (экспертных систем,
регуляторов, аппроксиматоров зависимостей).
2.Построение адаптивных нечетких систем (гибридных нейронных
сетей).
3.Интерактивное динамическое моделирование в Simulink.
В состав программных средств Fuzzy Logic Toolbox входят следующие основные программы, имеющие графический интерфейс,
редактор нечеткой системы вывода Fuzzy Inference System Editor (FIS-
редактор) вместе со вспомогательными программами: редактором функций принадлежности (Membership Function Editor), редактором правил (Rule editor), просмотрщиком правил (Rule Viewer) и просмотрщиком поверхности отклика (Surface Viewer). FIS-редактор запускается из командной строки командой Fuzzy.
176
Системы нечеткого вывода, созданные тем или иным образом с помощью пакета Fuzzy Logic Toolbox, допускают интеграцию с инструментами пакета Simulink, что позволяет выполнять моделирование систем в рамках последнего.
Рассмотрим пример построения нечеткого контроллера средствами инструментария нечеткой логики (ИНЛ) Fuzzy Logic и блоков моделирования Simulink, который осуществляет контроль уровня воды в баке. На рис. 10.1 изображен объект управления в виде бака с водой, к
которому подходят две трубы: через одну трубу, снабженную краном, вода затекает в бак, через другую – вытекает.
Рис. 10.1. Схематическое представление объекта управления (бак с водой)
Подачу воды в бак можно регулировать, больше или меньше открывая кран. Расход воды является неконтролируемым и зависит от диаметра выходной трубы (он фиксирован) и от текущего уровня воды в баке. Если понимать под выходной (регулируемой) переменной уровень воды, а под регулирующим элементом – кран, то можно отметить, что подобный объект регулирования, с точки зрения его математического описания, является динамическим и нелинейным.
177
Определим цель управления здесь как установление уровня воды в баке на требуемом (изменяющемся) уровне и попробуем решить соответствующую задачу управления средствами нечеткой логики.
Очевидно, в регулятор, обеспечивающий достижение цели управления, должна поступать информация о несоответствии (разности)
требуемого и фактического уровней воды, при этом данный регулятор должен вырабатывать управляющий сигнал на регулирующий элемент
(кран).
Порядок построения нечеткого контроллера:
1.Задать для каждой из входных и выходных переменных функции принадлежности.
2.Разработать базу правил для реализуемой нечёткой системы.
3.Выбрать алгоритм нечёткого логического вывода (Мамдани или Сугено) и выполнить анализ результатов работы созданной системы.
В первом приближении функционирование регулятора можно
описать набором из следующих правил:
1.If (level is okay) then (valve is no_change);
2.If (level is low) then (valve is open_fast);
3.If (level is high) then (valve is close_fast);
4.If (level is okay) and (rate is positive) then (valve is close_slow);
5.If (level is okay and (rate is negative) then (valve is open_slow),
что в переводе означает:
1.ЕСЛИ уровень соответствует заданному, ТО кран без изменения;
2.ЕСЛИ уровень низкий, ТО кран быстро открыть;
3.ЕСЛИ уровень высокий, ТО кран быстро закрыть;
4.ЕСЛИ уровень соответствует заданному И его прирост –
положительный, ТО кран надо медленно закрывать; 5. ЕСЛИ уровень соответствует заданному И его прирост –
отрицательный, ТО кран надо медленно открывать.
178
10.1.1. Формирование функции принадлежности
Командой Fuzzy запустить FIS-редактор. По умолчанию предлагается алгоритм вывода типа Мамдани. Поскольку в системе должно быть два входа, то через пункт меню Edit/Add input надо добавить в систему второй вход (в окне редактора появляется второй желтый блок с именем input2). Делая далее однократный щелчок на блоке input1,
изменить его имя на "level", завершая ввод нового имени нажатием клавиши <Enter>. Аналогичным образом установить имя "rate" блоку input2 и "valve" – выходному блоку (справа вверху) output1. Присвоить имя всей системе, например "LevelControl", выполнив это через пункт меню
File/Save to Workspace. Вид окна редактора после указанных действий приведен на рис. 10.2.
Рис. 10.2. Вид окна FIS-редактора после задания структуры системы
179
Для того чтобы сформировать функции принадлежности для переменных, следует выбрать пункт меню View/Edit membership functions и
задать параметры системы в соответствии с табл. 10.1. Здесь используются следующие функции. Гауссова функция Gaussmf имеет вид
y = Gaussmf(x, [c, σ]) = exp(– (x – c)2 / (2σ)2).
Функция треугольной формы Trimf определяется следующим
образом:
0, x a,
x a , a x b, f ( x,a,b,c ) b a
c x
, b x c,
c b
0, x c.
Таблица |
10.1 – Параметры |
функций |
принадлежности |
для |
|
переменных level, rate, valve |
|
|
|
||
|
|
|
|
|
|
Название |
Название |
|
|
|
|
входных |
функции |
|
Тип функции принадлежности |
|
|
переменных |
принадлежности |
|
|
|
|
|
High |
|
Gaussmf [0,3; –1] |
|
|
level |
Okay |
|
Gaussmf [0,3; 0] |
|
|
|
Low |
|
Gaussmf [0,3; 1] |
|
|
|
Negative |
|
Gaussmf [0,03; –0,1] |
|
|
rate |
None |
|
Gaussmf [0,03; 0] |
|
|
|
Positive |
|
Gaussmf [0,03; 0,1] |
|
|
|
Close_fast |
|
Trimf [–1; –0,9; –0,8] |
|
|
|
Close_low |
|
Trimf [–0,6; –0,5; –0,4] |
|
|
valve |
No_change |
|
Trimf [–0,1; 0; 0,1] |
|
|
|
Open_low |
|
Trimf [0,2; 0,3; 0,4] |
|
|
|
Open_fast |
|
Trimf [0,8; 0,9; 1] |
|
|
Сформировать правила вывода, |
используя |
Rule Editor. Для |
этого |
надо ввести соответствующие правила из подраздела 10.1, как показано на
рис. 10.3.
180