exponenta event banner

Моделирование нечетких систем вывода в Simulink

Можно смоделировать систему нечеткого вывода (FIS) в Simulink ® с помощью контроллера нечеткой логики или контроллера нечеткой логики с блоками Ruleviewer. Кроме того, можно вычислить нечеткие системы в командной строке с помощьюevalfis.

С помощью контроллера нечеткой логики можно моделировать традиционные системы нечеткого вывода типа 1 (mamfis и sugfis) и системы нечеткого вывода типа 2 (mamfistype2 и sugfistype2). Контроллер нечеткой логики с блоком Ruleviewer поддерживает только системы типа 1.

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

Моделирование системы нечеткого вывода

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

В этом примере управление уровнем воды в резервуаре осуществляется с помощью системы нечеткого вывода, реализованной с помощью блока контроллера нечеткой логики. Откройте окно sltank модель.

open_system('sltank')

Для этой системы управление водой, поступающей в резервуар, осуществляется с помощью клапана. Расход зависит от диаметра выходной трубы, который является постоянным, и давления в баке, которое изменяется с уровнем воды. Поэтому система имеет нелинейные характеристики.

Двумя входами в нечеткую систему является ошибка уровня воды, levelи скорость изменения уровня воды, rate. Выход нечеткой системы - это скорость, с которой открывается или закрывается регулирующий клапан, valve.

Для реализации системы нечеткого вывода укажите параметр имени FIS блока контроллера нечеткой логики в качестве имени объекта FIS в рабочей области MATLAB ®. В этом примере блок использует mamfis объект tank.

Дополнительные сведения об этой системе см. в разделе Управление уровнем воды в резервуаре.

В качестве первой попытки контроля уровня воды установить в FIS следующие правила. Эти правила регулируют клапан только на основании погрешности уровня воды.

  • Если уровень воды в норме, то не отрегулируйте клапан.

  • Если уровень воды низкий, откройте клапан быстро.

  • Если уровень воды высокий, то быстро закройте клапан.

Укажите правила, создав вектор из fisrule объекты и назначение их Rules имущества tank Объект FIS.

rule1 = "If level is okay then valve is no_change";
rule2 = "If level is low then valve is open_fast";
rule3 = "If level is high then valve is close_fast";
rules = [rule1 rule2 rule3];
tank.Rules = fisrule(rules);

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

open_system('sltank/Comparison')
sim('sltank',100)

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

Чтобы уменьшить колебания, добавьте в систему еще два правила. Эти правила регулируют клапан на основе скорости изменения уровня воды, когда уровень воды находится вблизи уставки.

  • Если уровень воды в норме и увеличивается, закройте клапан медленно.

  • Если уровень воды нормальный и понижается, откройте клапан медленно.

Чтобы добавить эти правила, используйте addRule функция.

rule4 = "If level is okay and rate is positive then valve is close_slow";
rule5 = "If level is okay and rate is negative then valve is open_slow";
newRules = [rule4 rule5];
tank = addRule(tank,newRules);

Моделирование модели.

sim('sltank',100)

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

Можно также моделировать нечеткие системы с помощью контроллера нечеткой логики с блоком Ruleviewer. sltankrule модель совпадает с моделью sltank модель, за исключением того, что в ней используется контроллер нечеткой логики с блоком Ruleviewer.

open_system('sltankrule')

Во время моделирования этот блок отображает средство просмотра правил из приложения Fuzzy Logic Designer.

sim('sltankrule',100)

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

Можно также получить доступ к редакторам конструктора нечеткой логики из средства просмотра правил. Затем с помощью средства просмотра правил можно настроить параметры нечеткой системы с помощью этих редакторов и экспортировать обновленную систему в рабочую область MATLAB. Для моделирования обновленной FIS перезапустите моделирование. Дополнительные сведения об использовании этих редакторов см. в разделе Создание нечетких систем с помощью конструктора нечеткой логики.

Получить доступ к промежуточным результатам нечеткого вывода

Получить доступ к промежуточным результатам нечеткого вывода можно с помощью блока контроллера нечеткой логики. Эти данные можно использовать для визуализации процесса нечеткого вывода или устранения неполадок в работе FIS. Чтобы получить доступ к этим данным, включите соответствующие параметры в блоке и подключите сигналы к соответствующим портам вывода.

Параметр блока ОписаниеВыходной порт
Нечеткие входные данныеНечеткие входные значения, полученные путем оценки входных функций членства каждого правила при текущих входных значениях.fi
Сила стрельбы правилаСила срабатывания правила, полученная путем оценки предшествующего значения каждого правила.rfs
Выходные данные правилаВыходные данные правила, полученные путем оценки результата каждого правила.ro
Агрегированные выходные данныеСовокупный выход для каждой выходной переменной, получаемый объединением соответствующих выходов из всех правил.ao

Дополнительные сведения см. в разделе Контроллер нечеткой логики.

Режимы моделирования

Блок контроллера нечеткой логики имеет следующие два режима моделирования:

  • Interpreted execution - Моделирование нечетких систем с использованием предварительно скомпилированных файлов MEX. Использование этой опции сокращает время начальной компиляции модели.

  • Code generation - Моделирование нечеткой системы без предварительной компиляции файлов MEX. Эта опция используется при моделировании нечетких систем для приложений генерации кода. При этом система моделируется по тому же кодовому пути, что и созданный код.

Чтобы выбрать режим моделирования, задайте параметр «Моделирование с использованием блока». По умолчанию блок использует Interpreted execution режим моделирования.

Сопоставление функциональных возможностей командной строки с блоком контроллера нечеткой логики

Параметры и порты блока контроллера нечеткой логики соответствуют входным и выходным аргументам evalfis или свойства evalfisOptions. В следующей таблице показаны параметры блоков и порты, которые сопоставляются evalfis аргументы.

evalfis АргументОписаниеПараметр блока или порт
fisСистема нечеткого выводаНазвание FIS
input, когда одна строкаВходные значения переменныхin
output, когда одна строкаВыходные значения переменныхout
fuzzifiedInНечеткие входные данныеfi
ruleOutВыходные данные правилаro
aggregateOutАгрегированные выходные данныеao
ruleFiringСила стрельбы правилаrfs

В следующей таблице показаны параметры блока, которые сопоставляются evalfisOptions свойства.

evalfisOptions СобственностьОписаниеПараметр блока или порт
NumSamplePointsКоличество точек в выходных нечетких наборахКоличество выборок для дискретизации выходных данных
OutOfRangeInputValueMessageПоведение диагностического сообщения при выходе за пределы допустимого диапазонаВходное значение вне диапазона
NoRuleFiredMessageПоведение диагностического сообщения при отсутствии запуска правилПравило не запущено
EmptyOutputFuzzySetMessageПоведение диагностического сообщения, когда выходной нечеткий набор пустПустой выходной нечеткий набор

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

См. также

Блоки

Связанные темы