Эта модель показывает, как реализовать систему нечеткого вывода (FIS) в модели Simulink ®.
Модель управляет температурой душа, используя систему нечеткого вывода, реализованную с помощью блока Fuzzy Logic Controller. Откройте shower
модель.
open_system('shower')
Для этой системы вы контролируете скорость потока жидкости и температуру душа, регулируя клапаны горячей и холодной воды.
Поскольку для нечеткой системы существуют два входов, модель конкатенирует входные сигналы с помощью блока Mux. Выход блока Mux соединяется с входом блока Fuzzy Logic Controller. Точно так же два выходных сигнала получаются с использованием блока Demux, соединенного с контроллером.
Нечеткая система определяется в объекте FIS, fisMatrix
, в рабочей области MATLAB ®. Для получения дополнительной информации о том, как задать FIS в блоке Fuzzy Logic Controller, см. «Нечеткий логический контроллер».
Два входа в нечеткую систему являются ошибкой температуры, temp
, и ошибка скорости потока жидкости, flow
. Каждый вход имеет три функции членства.
figure plotmf(fisMatrix,'input',1) figure plotmf(fisMatrix,'input',2)
Два выхода нечеткой системы являются скоростью, с которой клапаны холодной и горячей воды открываются или закрываются, cold
и hot
соответственно. Каждый выход имеет пять функций членства.
figure plotmf(fisMatrix,'output',1) figure plotmf(fisMatrix,'output',2)
Нечеткая система имеет девять правил для регулировки клапанов горячей и холодной воды на основе ошибок потока и температуры. Правила регулируют общую скорость потока жидкости на основе ошибки потока и регулируют относительные горячие и холодные скорости потока жидкости на основе ошибки температуры.
fisMatrix.Rules
ans = 1x9 fisrule array with properties: Description Antecedent Consequent Weight Connection Details: Description ______________________________________________________________ 1 "temp==cold & flow==soft => cold=openSlow, hot=openFast (1)" 2 "temp==cold & flow==good => cold=closeSlow, hot=openSlow (1)" 3 "temp==cold & flow==hard => cold=closeFast, hot=closeSlow (1)" 4 "temp==good & flow==soft => cold=openSlow, hot=openSlow (1)" 5 "temp==good & flow==good => cold=steady, hot=steady (1)" 6 "temp==good & flow==hard => cold=closeSlow, hot=closeSlow (1)" 7 "temp==hot & flow==soft => cold=openFast, hot=openSlow (1)" 8 "temp==hot & flow==good => cold=openSlow, hot=closeSlow (1)" 9 "temp==hot & flow==hard => cold=closeSlow, hot=closeFast (1)"
Модель моделирует контроллер с периодическими изменениями уставок температуры воды и скорости потока жидкости.
set_param('shower/flow scope','Open','on','Ymin','0','Ymax','1') set_param('shower/temp scope','Open','on','Ymin','15','Ymax','30') sim('shower',50)
Скорость потока жидкости отслеживает уставку хорошо. Температура также отслеживает ее уставку, хотя есть отклонения температуры, когда контроллер настраивается, чтобы соответствовать новой уставке потока.
bdclose('shower') % Closing model also clears its workspace variables.