
Лаб_практикум_ОВИ_03_06_13
.pdf
Рис. 10.3. Окно редактора правил
Открыть через пункт меню View/View rules окно просмотра правил и установить значения переменных level и rate. Результат для выхода valve
должен быть показан так же, как на рис. 10.4.
Рис. 10.4. Окна просмотра правил в задаче при level = 0 и rate = 0 181
Открыть через пункт меню View/View surface окно просмотра графической зависимости выходной переменной от входных.
При необходимости можно выполнить экспорт и импорт результатов. При использовании пунктов меню File/Save to disk на диске создается текстовый (ASCII) файл с расширением fis. Его можно просматривать, при необходимости редактировать вне системы MATLAB,
а также использовать повторно при последующих сеансах работы с системой.
10.1.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.Завершение определения функции подтверждается нажатием кнопки <ok> (рис. 10.5).
182

Рис. 10.5. Окно задания функции принадлежности пользователя
10.1.3. Модель системы управления уровнем воды в баке
Модель системы управления уровнем воды в баке с нечетким регулятором изображена на рис. 10.6.
Рис. 10.6. Блок-диаграмма модели системы управления уровнем воды в баке с нечетким регулятором
При этом настраиваемые параметры основных блоков системы управления уровнем воды в баке с нечетким регулятором (рис. 10.6) имеют значения, приведенные на рис. 10.7.
Запуск анимации осуществляется командой Start меню Simulation.
После этого появится анимационное окно (окно Tank Demo на рис. 10.1).
183

Текущий уровень воды показан черным цветом. Необходимый уровень воды отмечен черной линией. Анимация запускается автоматически по открытию окна.
Рис. 10.7. Настраиваемые параметры основных блоков системы управления уровнем воды в баке
184

Нечеткий контроллер реализован системой нечеткого вывода с двумя входами: разница между требуемым и текущим уровнями воды и скорость изменения этой разницы. Временные диаграммы требуемого и текущего уровней воды показаны в окне Scope1 (рис. 10.8) светлой и темной линиями соответственно. В окне change scope (рис. 10.9) приведена временная диаграмма скорости изменения разности требуемого и текущего уровней воды. Эти окна открываются по нажатию кнопки мыши по пиктограммам Scope1 и change scope в Simulink-модели системы "Водяной бак с нечетким контроллером". Пользователь может аналогичным образом вывести на экран временные диаграммы расхода воды (Scope4) и сигнала переполнения бака (Scope2).
Рис. 10.8. Диаграмма требуемого и текущего уровней воды
Как видно из рисунка, переходный процесс в системе имеет апериодическую форму и заканчивается достаточно быстро, т.е. качество регулирования следует признать хорошим.
Нечеткий контроллер использует пять правил для расчета управляющего воздействия (рис. 10.10).
185

Рис. 10.9. Временная диаграмма скорости изменения разности требуемого и текущего уровней воды
Рис. 10.10. Нечеткие правила для расчета управляющего воздействия
Для лингвистической оценки входной переменной level (разница между требуемым и текущим уровнями воды) используются три терма с гауссовыми функциями принадлежности, для оценки входной переменной rate (скорость изменения разницы между требуемым и текущим уровнями воды) – два терма с гауссовыми функциями принадлежности и для выходной переменной valve (изменение положения вентиля) – пять термов
186

с треугольными функциями принадлежности. Для просмотра нечеткого контроллера в 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-формате
Рис. 10.12. Структура блока Fuzzy Logic Controller with Ruleviewer
187
Можно попытаться изменить характер функционирования системы,
внося, например, с помощью рассмотренных программ с графическим интерфейсом (типа FIS редактора и т.п.) определенные изменения в систему, задаваемую файлом tank.fis (изменяя правила, функции принадлежности, метод приведения к четкости и т. д.). Разумеется, все это лучше делать, остановив процесс моделирования.
Выполнив (в режиме командной строки) команду sltankrule, можно перейти к блок-диаграмме той же системы управления, но с нечетким регулятором и просмотрщиком правил (Fuzzy Logic Controller with Ruleviewer).
10.2. Индивидуальные задания
1. Необходимо изучить методы построения нечетких контроллеров средствами инструментария нечеткой логики и блоков моделирования
Simulink.
2.Промоделировать нечеткий контроллер, управляющий уровнем воды в баке, в Simulink.
3.Получить и привести в отчете словесное описание и графическое отображение правил нечеткого вывода построенного регулятора.
4.Описать принцип работы схемы и пояснить полученные результаты.
5.Внести изменения в правила нечеткого вывода и объяснить, как внесенные изменения повлияют на работу всего устройства.
Следующие параметры являются общими для всех вариантов
(табл. 10.2).
Индивидуальные варианты заданий для функций принадлежности
переменной level приводятся в табл. 10.3. В ней используются следующие
обозначения:
polymf (x, A) |
|
exp(a |
0 |
... a |
n |
xn ) |
; |
A a0,a1,...,an . |
|||
|
|
|
|
|
|
|
|||||
|
exp(a |
|
... a |
|
xn ) |
||||||
1 |
0 |
n |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
188 |
|
|
|
|
|
|
Таблица 10.2 – Параметры функций принадлежности для
переменных valve и ratre
Название |
|
Название |
|
|
|
|
||
входных |
|
функции |
|
Тип функции принадлежности |
|
|||
переменных |
|
принадлежности |
|
|
|
|||
|
|
|
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] |
|
||
|
rate |
|
Negative |
|
Gaussmf [0,03; –0,1] |
|
||
|
|
|
None |
|
Gaussmf [0,03; 0] |
|
||
|
|
|
Positive |
|
Gaussmf [0,03; 0,1] |
|
||
|
Таблица 10.3 – Параметры функции принадлежности для |
|
||||||
переменной level |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
№ |
|
High |
|
|
Okay |
Low |
|
|
|
polymf (x,A) |
|
|
polymf (x,A) |
polymf (x,A) |
|
||
|
|
|
|
|
|
|
|
|
1 |
|
2 |
|
|
3 |
4 |
|
|
1 |
[–3,535; –2,925; 4,293] |
|
[1,604; –1,723; -9,023] |
[–2,908; 2,732; 3,256] |
|
|||
2 |
[–2,591; –2,978; 3,049] |
|
[2,284; 0,697; –8,499] |
[–3,724; 3,836; 4,227] |
|
|||
3 |
[–3,252; –3,353; 3,829] |
|
[2,104; 0,967; –9,367] |
[–3,238; 1,977; 3,823] |
|
|||
4 |
[–4,149; –2,777; 5,561] |
|
[1,638; 0,4058; –8,782] |
[–2,559; 2,687; 2,4026] |
|
|||
5 |
[–3,553; –3,939; 5,266] |
|
[1,443; –0,218; –6,373] |
[–3,323; 3,4241; 2,833] |
|
|||
6 |
[–2,916; –2,883; 2,781] |
|
[1,736; –0,234; –6,048] |
[–2,696; 3,001; 2,9796] |
|
|||
7 |
[–2,241; –2,435; 2,177] |
|
[2,094; 0,2477; –9,948] |
[–1,733; 2,522; 2,3055] |
|
|||
8 |
[–3,9789; –2,825; 4,47] |
|
[1,941; –0,189; –8,253] |
[–2,441; 2,131; 2,3544] |
|
|||
9 |
[–2,503; –2,979; 2,271] |
|
[1,968; 1,24; –10,8512] |
[–2,441; 2,131; 2,3543] |
|
|||
10 |
[–2,526; –2,787; 2,974] |
|
[2,444; 0,9028; –15,06] |
[–3,326; 3,185; 4,0171] |
|
|||
11 |
[–3,691; –3,016; 3,816] |
|
[1,038; 0,8638; –8,122] |
[–2,742; 2,483; 3,4183] |
|
|||
12 |
[–2,952; –3,167; 3,316] |
|
[1,706; –1,023; –6,489] |
[–2,764; 2,392; 2,5585] |
|
|||
13 |
[–3,124; –3,482; 3,972] |
|
[0,941; –0,3953; –5,63] |
[–3,134; 2,372; 3,4613] |
|
|||
14 |
[–3,662; –3,621; 5,183] |
|
[1,869; –0,291; –8,634] |
[–2,95; 3,132; 3,24231] |
|
|||
15 |
[–3,113; –2,659; 2,983] |
|
[2,038; –2,138; –11,24] |
[–3,407; 2,763; 3,8331] |
|
6. Оформите отчет по лабораторной работе.
189
Лабораторная работа 11
СИМВОЛИЧЕСКИЕ ВЫЧИСЛЕНИЯ В ПАКЕТЕ MATLAB
Цель лабораторной работы: получение и закрепление знаний,
формирование практических навыков работы с пакетом MATLAB при вычислениях в символическом виде.
11.1.Краткие сведения из теории
11.1.1.Символические переменные и функции
В состав MATLAB входит ToolBox Symbolic Math, предназначенный для вычислений в символическом виде. Преобразование выражений,
определение аналитических решений задач линейной алгебры,
дифференциального и интегрального исчисления, получение численных результатов с любой точностью далеко не полный перечень возможностей, предоставляемых ToolBox.
Символические переменные и функции являются объектами класса sym object, в отличие от числовых переменных, которые содержатся в массивах double array. Символический объект создается при помощи функции syms. Команда
» syms x a b
создает три символические переменные x, a, b. Конструирование символических функций от переменных класса sym object производится с помощью обычных арифметических операций и обозначений для встроенных математических функций, например:
» f=(sin(x)+a)^2*(cos(x)+b)^2/sqrt(abs(a+b))
190