Эта модель показывает, как реализовать нечеткую систему вывода (FIS) в модели Simulink®.
Модель контролирует температуру душа с помощью реализованного использования системы нечеткого вывода блока Fuzzy Logic Controller. Откройте shower модель.
open_system('shower')

Для этой системы вы управляете скоростью потока жидкости и температурой душа путем корректировки клапанов горячей и холодной воды.
С тех пор существует два входных параметров для нечеткой системы, модель конкатенирует входные сигналы с помощью блока Mux. Выход блока Mux соединяется с входом блока Fuzzy Logic Controller. Точно так же эти два выходных сигнала получены с помощью блока Demux, соединенного с контроллером.
Нечеткая система задана в объекте FIS, fis, который загружается в рабочей области MATLAB®, когда модель открывается. Для получения дополнительной информации о том, как задать FIS в блоке Fuzzy Logic Controller, смотрите Контроллер Нечеткой логики.
Два входных параметров к нечеткой системе являются температурной погрешностью, temp, и ошибка скорости потока жидкости, flow. Каждый вход имеет три функции принадлежности.
figure plotmf(fis,'input',1) figure plotmf(fis,'input',2)


Два выходных параметров нечеткой системы являются уровнем, на котором клапаны холодной и горячей воды открываются или закрываются, cold и hot соответственно. Каждый выход имеет пять функций принадлежности.
figure plotmf(fis,'output',1) figure plotmf(fis,'output',2)


Нечеткая система имеет девять правил для корректировки клапанов горячей и холодной воды на основе потока и температурных погрешностей. Правила настраивают общую скорость потока жидкости на основе ошибки потока и настраивают относительные горячие и холодные скорости потока жидкости на основе температурной погрешности.
fis.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.