Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОВИ_ЛР_2012

.pdf
Скачиваний:
102
Добавлен:
02.02.2015
Размер:
4.11 Mб
Скачать

5.Если (уровень соответствует заданному) И (его прирост –

отрицательный), ТО (кран надо медленно открывать);

10.2.1. Формирование функции принадлежности

Командой Fuzzy запустить FIS-редактор. По умолчанию предлагается алгоритм вывода типа Мамдани. Так как в системе должно быть два входа, то через пункт меню Edit/Add input надо добавить в систему второй вход (в окне редактора появляется второй желтый блок с именем input2). Делая далее однократный щелчок на блоке input1,

изменить его имя на "level", завершая ввод нового имени нажатием клавиши Enter. Аналогичным образом установить имя "rate" блоку input2 и

"valve" – выходному блоку (справа вверху) output1. Присвоить имя всей системе, например "LevelControl", выполнив это через пункт меню

File/Save to Workspace. Вид окна редактора после указанных действий приведен на рис. 10.2.

Рис. 10.2. Вид окна FIS-редактора после задания структуры системы

191

Для того чтобы сформировать функции принадлежности для переменных, следует выбрать пункт меню View/Edit membership functions

и задать параметры системы в соответствии с табл. 10.1. Здесь используются следующие функции. Гауссова функция Gaussmf имеет вид

y = Gaussmf(x, [c, σ]) = exp(– (x c)2 / (2σ)2).

Функция треугольной формы Trimf определяется следующим образом:

0, x a,

x a ,a f ( x,a,b,c ) b a

c x ,bc b

0, x c.

x b,

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.3.

192

Рис. 10.3. Окно редактора правил

Открыть через пункт меню View/View rules окно просмотра правил и установить значения переменных level и rate. Результат для выхода valve

должен быть показан так же, как на рис. 10.4.

Рис. 10.4. Окна просмотра правил в задаче при level=0 и rate=0

193

Открыть через пункт меню View/View surface окно просмотра графической вида зависимости выходной переменной от входных.

При необходимости можно выполнить экспорт и импорт результатов. При использовании пунктов меню File/Save to disk на диске создается текстовый (ASCII) файл с расширением fis. Его можно просматривать, при необходимости редактировать вне системы MATLAB,

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

10.2.2. Создание пользовательских функций принадлежности

Если ни одна из встроенных функций принадлежности не подходит для решаемой задачи, то можно определить и использовать собственную функцию. Такая функция должна быть создана как M-файл, возвращать значение в диапазоне от 0 до 1 и иметь число аргументов не более 16.

Объявление функции (например, custmf) выполняется в следующей последовательности:

1.Создать файл с именем cutmf.m.

2.Выбрать пункт меню Edit/Add custm MF в меню редактора функций принадлежности.

3.В поле М-File function появившегося диалогового окна Add customized membership function ввести имя созданного M-файла (custmf).

4.В поле Parameter List данного окна ввести необходимые числовые параметры.

5.В поле MF name ввести какое-либо уникальное имя задаваемой функции, например, polymf.

6.Завершение определения функции подтверждается нажатием кнопки ОК (рис. 10.5).

194

Рис. 10.5 Окно задания функции принадлежности пользователя

10.2.3. Модель системы управления уровнем воды в баке

Модель системы управления уровнем воды в баке с нечетким регулятором изображена на рис. 10.6.

Рис. 10.6. Блок-диаграмма модели системы управления уровнем воды в баке с нечетким регулятором

При этом настраиваемые параметры основных блоков системы управления уровнем воды в баке с нечетким регулятором (рис. 10.6) имеют вид, представленный на рис. 10.7.

195

Рис. 10.7. Настраиваемые параметры основных блоков системы управления уровнем воды в баке

Запуск анимации осуществляется командой Start меню Simulation.

После этого появится анимационное окно (окно Tank Demo на рис. 10.1).

Текущий уровень воды показан синим цветом. Необходимый уровень воды

196

отмечен красной линией. Анимация запускается автоматически по открытию окна.

Нечеткий контроллер реализован системой нечеткого вывода с двумя входами: разница между требуемым и текущим уровнями воды и скорость изменения этой разницы. Временные диаграммы требуемого и текущего уровней воды показаны в окне Scope1 (рис. 10.8) желтой и красной линиями соответственно. В окне change scope (рис. 10.9) приведена временная диаграмма скорости изменения разности требуемого и текущего уровней воды. Эти окна открываются по щелчку мышкой по пиктограммам

Scope1 и change scope в Simulink-модели системы "Водяной бак с нечетким контроллером". Пользователь может аналогичным образом вывести на экран временные диаграммы расхода воды (Scope4) и сигнала переполнения бака (Scope2).

Рис. 10.8. Диаграмма требуемого и текущего уровней воды

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

197

Рис. 10.9. Временная диаграмма скорости изменения разности требуемого и текущего уровней воды

Нечеткий контроллер использует пять правил для расчета управляющего воздействия (рис. 10.10).

Рис. 10.10. Нечеткие правила для расчета управляющего воздействия

198

Для лингвистической оценки входной переменной level (разница между требуемым и текущим уровнями воды) используются три терма с гауссовыми функциями принадлежности, для оценки входной переменной rate (скорость изменения разницы между требуемым и текущим уровнями воды) – два терма с гауссовыми функциями принадлежности и для выходной переменной valve (изменение положения вентиля) - пять термов с треугольными функциями принадлежности. Для просмотра нечеткого контроллера в Simulink-формате (рис. 10.11) необходимо щелкнуть правой кнопкой мыши по блоку Fuzzy Controller (см. рис. 10.6) и в появившемся меню выбрать команду Look under mask. Затем в новом графическом окне

Link: sltankrule/Fuzzy Logic Controller with Ruleviewer* (рис. 10.12)

щелкнуть правой кнопкой мыши по блоку Fuzzy Logic Controller и снова в появившемся меню выбрать команду Look under mask. Затем в новом графическом окне Link: sltankrule/Fuzzy Logic Controller with Ruleviewer/Fuzzy Logic Controller* щелкнуть правой кнопкой мыши по блоку FIS Wizard и снова в появившемся меню выбрать команду Look under mask.

Рис. 10.11. Нечеткий контроллер уровня воды в баке в Simulink-формате

Можно попытаться изменить характер функционирования системы,

внося например, с помощью рассмотренных программ с графическим

199

интерфейсом (типа FIS редактора и т.п.), определенные изменения в систему, задаваемую файлом tank.fis (изменяя правила, функции принадлежности, метод приведения к четкости и т. д.). Разумеется, все это лучше делать, остановив процесс моделирования.

Рис. 10.12. Структура блока Fuzzy Logic Controller with Ruleviewer

Выполнив (в режиме командной строки) команду sltankrule, можно перейти к блок-диаграмме той же системы управления, но с нечетким регулятором и просмотрщиком правил (Fuzzy Logic Controller with

Ruleviewer).

10.3. Индивидуальные задания

1. Необходимо изучить методы построения нечетких контроллеров средствами инструментария нечеткой логики и блоков моделирования

Simulink.

2.Промоделировать нечеткий контроллер, управляющий уровнем воды в баке в Simulink.

3.Получить и привести в отчете словесное описание и графическое отображение правил нечеткого вывода построенного регулятора.

4.Описать принцип работы схемы и пояснить полученные результаты.

200