Сеть связанных нечетких систем вывода
Используйте fistree объект представлять дерево взаимосвязанных нечетких систем вывода.
создает сеть взаимосвязанных нечетких системных объектов вывода, устанавливая его fisTree = fistree(fis,connections)FIS и Connections свойства
устанавливает fisTree = fistree(___,Name,Value)Name или DisableStructuralChecks свойство дерева FIS с помощью аргументов name-value. Задайте эти аргументы после того, как аргументы описали в предыдущем синтаксисе. Например, fistree(__,'Name',"mytree") определяет имя дерева FIS к "mytree". Можно задать оба свойства с помощью двух аргументов name-value.
Name — Имя дерева FIS"fistreemodel" (значение по умолчанию) | представляет в виде строки | вектор символовИмя дерева FIS в виде строки или вектора символов.
FIS — Нечеткие системы выводаЭто свойство доступно только для чтения.
Нечеткие системы вывода в виде массива объектов FIS. Можно задать любую комбинацию mamfis, sugfis, mamfistype2, и sugfistype2 объекты. Каждая нечеткая система вывода в fis массив должен иметь по крайней мере один вход и один выход для fistree конструкция. Оценивать a fistree, каждая нечеткая система вывода должна иметь по крайней мере одно правило.
Connections — Связи между нечеткими системами выводаСвязи между нечеткими системами вывода в виде массива строк 2D столбца. Каждая строка представляет связь между двумя объектами FIS. Можно задать два типа связей.
Связи выхода к входу — Задают связь от выхода одного FIS к входу различного FIS.
Связи от входа к входу — Задают связь между двумя входными параметрами так, чтобы они использовали то же входное значение.
Чтобы задать связь, задайте имя FIS и имя переменной для обоих источник место назначения связи. Например, ["fisFrom/out1" "fisTo/in1"] задает связь от выхода out1 из fisFrom FIS к входу in1 из fisTo FIS.
Следующая фигура демонстрирует различные типы подключения с помощью трех объектов FIS, fis1, fis2, и fis3.

Это дерево FIS включает следующие связи.
["fis1/output1" "fis3/input1"] — Связь от выхода output1 из fis1 к входу input1 из fis3
["fis2/output1" "fis3/input2"] — Связь от выхода output1 из fis2 к входу input2 из fis3
["fis1/input2" "fis2/input1"] — Связь от входа input2 из fis1 к входу input1 из fis2
Связи должны удовлетворить следующим условиям:
fistree объект должен иметь по крайней мере один вход FIS без любой входящей связи и одного FIS выход без любой исходящей связи.
Вход FIS не может иметь больше чем одной входящей связи.
FIS выход может иметь больше чем одну исходящую связь.
Ввод и вывод того же FIS не может быть соединен. Другими словами, вы не можете создать циклы между связанными объектами FIS.
Симметричные связи между двумя входными параметрами не поддерживаются, Например, ["fis1/a" "fis2/b";"fis2/b" "fis1/a"] не поддерживается. Вместо этого задайте ["fis1/a" "fis2/b"] или ["fis2/b" "fis1/a"].
Самовведите циклы, такие как ["fis1/a" "fis1/a"], не поддерживаются.
Inputs — Входные параметры к дереву FISЭто свойство доступно только для чтения.
Входные параметры к дереву FIS в виде массива строк. Входные параметры автоматически определяются с помощью заданных связей fistree объект. Входные параметры FIS без входящих связей включены в Inputs.
Обновите это свойство путем обновления связей fistree объект.
Outputs — Выходные параметры дерева FISВыходные параметры дерева FIS в виде массива строк. Выходные параметры автоматически определяются с помощью заданных связей fistree объект. FIS выходные параметры без любых исходящих связей включены в Outputs.
Можно обновить это свойство после начальной конструкции fistree объект. Можно удалить существующий вход или добавить дополнительные промежуточные выходные параметры. Outputs должен содержать по крайней мере один выход.
DisableStructuralChecks — Опция для отключения структурных проверокfalse (значение по умолчанию) | trueОпция для отключения структурных проверок, когда дерево FIS обновляется после начального создания FIS в виде одного из следующих значений.
false — Автоматически обновите связи, входные параметры и выходные параметры. Эта опция гарантирует, что дерево FIS всегда допустимо и может быть оценено.
true — Автоматически не обновляйте связи, входные параметры и выходные параметры. В этом случае получившееся дерево FIS может быть в недопустимом состоянии, которое может вызвать ошибку во время оценки.
Позвольте этой опции повысить вычислительную эффективность, когда вы программно создадите дерево FIS.
evalfis | Оцените нечеткую систему вывода |
plotfis | Отобразите нечеткую систему вывода |
getTunableSettings | Получите настраиваемые настройки из нечеткой системы вывода |
getTunableValues | Получите значения настраиваемых параметров от нечеткой системы вывода |
setTunableValues | Задайте значения настраиваемого параметра нечеткой системы вывода |
Создайте Mamdani нечеткая система вывода и Sugeno нечеткая система вывода.
fis1 = mamfis('Name','fis1','NumInputs',2,'NumOutputs',1); fis2 = sugfis('Name','fis2','NumInputs',2,'NumOutputs',1);
Задайте связь от выхода fis1 к первому входу fis2.
con1 = ["fis1/output1" "fis2/input1"];
Создайте дерево FIS с помощью нечетких систем вывода и связи.
tree = fistree([fis1 fis2],con1);
Визуализируйте дерево.
plotfis(tree)

Создайте дерево с двумя ФИССОМ и никакие связи.
fis1 = mamfis('Name','fis1','NumInputs',2,'NumOutputs',1); fis2 = mamfis('Name','fis2','NumInputs',2,'NumOutputs',1); fisT = fistree([fis1 fis2],[]);
Отобразите древовидную настройку FIS.
plotfis(fisT)

Можно добавить FIS в дерево FIS путем добавления объекта FIS к свойству FIS дерева.
Добавьте fis3 к дереву FIS.
fis3 = mamfis('Name','fis3','NumInputs',2,'NumOutputs',1); fisT.FIS(end+1) = fis3;
Соедините выходные параметры fis1 и fis2 к входным параметрам fis3.
fisT.Connections = [
"fis1/output1" "fis3/input1";
"fis2/output1" "fis3/input2"];Отобразите обновленную древовидную настройку FIS.
plotfis(fisT)

Удалите первый FIS (fis1) от дерева FIS.
fisT.FIS(1) = [];
Отобразите обновленную древовидную настройку FIS.
plotfis(fisT)

Соответствующая связь с первым входом fis3 также удален.
Создайте fis1, fis2, и fis3, каждый с двумя входными параметрами и одним выходом.
fis1 = mamfis('Name','fis1','NumInputs',2,'NumOutputs',1); fis2 = mamfis('Name','fis2','NumInputs',2,'NumOutputs',1); fis3 = mamfis('Name','fis3','NumInputs',2,'NumOutputs',1);
Создайте связь между выходом 1 из fis1 и вход 1 из fis3.
con1 = ["fis1/output1" "fis3/input1"];
Создайте связь между выходом 1 из fis2 и вход 2 из fis3.
con2 = ["fis2/output1" "fis3/input2"];
Создайте связь между входом 2 из fis1 и вход 1 из fis2.
con3 = ["fis1/input2" "fis2/input1"];
Создайте и отобразите дерево FIS.
fuzzTree = fistree([fis1 fis2 fis3],[con1;con2;con3]); plotfis(fuzzTree)

Отобразите входные параметры дерева FIS. Эти входные параметры соответствуют всем свободным входным параметрам, которые не имеют входящей связи.
fuzzTree.Inputs
ans = 3×1 string
"fis1/input1"
"fis1/input2"
"fis2/input2"
Оцените нечеткое дерево. Задайте значения для входа 1 из fis1, введите 2 из fis1, и вход 2 из fis2. Значение для входа 2 из fis1 также применяется, чтобы ввести 1 из fis2.
output = evalfis(fuzzTree,[0.8 0.25 0.7]);
Создайте два объекта FIS, каждого с двумя входными параметрами и одним выходом.
fis1 = mamfis('Name','fis1','NumInputs',2,'NumOutputs',1); fis2 = mamfis('Name','fis2','NumInputs',2,'NumOutputs',1);
Соедините выход fis1 к второму входу fis2.
con = ["fis1/output1" "fis2/input2"];
Создайте дерево FIS.
fuzzTree = fistree([fis1 fis2],con);
Отображаемые выводы дерева FIS. По умолчанию, открытый FIS выход от fis2 выход дерева FIS.
fuzzTree.Outputs
ans = "fis2/output1"
Визуализируйте дерево FIS.
plotfis(fuzzTree,Legend="on")
Добавьте выход fis1 к списку выходных параметров.
fuzzTree.Outputs(end+1) = "fis1/output1";Отобразите обновленный список выходов дерева FIS.
fuzzTree.Outputs
ans = 2×1 string
"fis2/output1"
"fis1/output1"
Визуализируйте дерево FIS. Добавленный промежуточный выход подсвечен.
plotfis(fuzzTree,Legend="on")
Оцените дерево FIS. Результат содержит выходные параметры от fis2 и fis1.
evalfis(fuzzTree,[0.5 0.2 0.8])
ans = 1×2
0.1579 0.1579
Удалите первый выход из списка.
fuzzTree.Outputs(1) = [];
Отобразите обновленный список выходов дерева FIS.
fuzzTree.Outputs
ans = "fis1/output1"
Визуализируйте дерево FIS без удаленного выхода. Визуализация указывает что выход fis2 не использовано.
plotfis(fuzzTree,Legend="on")
Оцените дерево FIS снова. Результат теперь содержит выход только fis2.
evalfis(fuzzTree,[0.5 0.2 0.8])
ans = 0.1579
Этот пример показывает конструкцию инкрементного дерева FIS. Для получения дополнительной информации о типах нечетких древовидных структур смотрите Нечеткие Деревья.
Создайте нечеткие системы fis1, fis2, и fis3, каждый с двумя входными параметрами и одним выходом.
fis1 = mamfis('Name','fis1','NumInputs',2,'NumOutputs',1); fis1.Inputs(1).Name = "color"; fis1.Inputs(2).Name = "doors"; fis2 = mamfis('Name','fis2','NumInputs',2,'NumOutputs',1); fis2.Inputs(2).Name = "power"; fis3 = mamfis('Name','fis3','NumInputs',2,'NumOutputs',1); fis3.Inputs(2).Name = "autopilot"; fis3.Outputs(1).Name = "prediction";
Создайте связь между выходом 1 из fis1 и вход 1 из fis2.
con1 = ["fis1/output1" "fis2/input1"];
Создайте связь между выходом 1 из fis2 и вход 1 из fis3.
con2 = ["fis2/output1" "fis3/input1"];
Создайте дерево FIS.
incTree = fistree([fis1 fis2 fis3],[con1;con2]);
Визуализируйте древовидную структуру. На каждом уровне древовидной структуры дополнительный вход объединен с выходом предыдущего уровня.
plotfis(incTree)

Этот пример показывает конструкцию агрегированного дерева FIS. Для получения дополнительной информации о типах нечетких древовидных структур смотрите Нечеткие Деревья.
Создайте нечеткие системы fis1, fis2, и fis3, каждый с двумя входными параметрами и одним выходом.
fis1 = mamfis('Name','fis1','NumInputs',2,'NumOutputs',1); fis1.Inputs(1).Name = "dist_obs"; fis1.Inputs(2).Name = "angle_obs"; fis2 = mamfis('Name','fis2','NumInputs',2,'NumOutputs',1); fis2.Inputs(1).Name = "dist_tar"; fis2.Inputs(2).Name = "angle_tar"; fis3 = mamfis('Name','fis3','NumInputs',2,'NumOutputs',1); fis3.Outputs(1).Name = "heading_robot";
Создайте связь между выходом 1 из fis1 и вход 1 из fis3.
con1 = ["fis1/output1" "fis3/input1"];
Создайте связь между выходом 1 из fis2 и вход 2 из fis3.
con2 = ["fis2/output1" "fis3/input2"];
Создайте дерево FIS.
aggTree = fistree([fis1 fis2 fis3],[con1;con2]);
Визуализируйте древовидную структуру.
plotfis(aggTree)

Этот пример показывает конструкцию каскадного дерева FIS. Для получения дополнительной информации о типах нечетких древовидных структур смотрите Нечеткие Деревья.
Создайте нечеткие системы fis1, fis2, fis3, и fis4, каждый с двумя входными параметрами и одним выходом.
fis1 = mamfis('Name','fis1','NumInputs',2,'NumOutputs',1); fis1.Inputs(1).Name = "dist_obs"; fis1.Inputs(2).Name = "angle_obs"; fis2 = mamfis('Name','fis2','NumInputs',2,'NumOutputs',1); fis2.Inputs(1).Name = "dist_tar"; fis2.Inputs(2).Name = "angle_tar"; fis3 = mamfis('Name','fis3','NumInputs',2,'NumOutputs',1); fis4 = mamfis('Name','fis4','NumInputs',2,'NumOutputs',1); fis4.Inputs(2).Name = "preheading_robot"; fis4.Outputs(1).Name = "heading_robot";
Создайте связь между выходом 1 из fis1 и вход 1 из fis3.
con1 = ["fis1/output1" "fis3/input1"];
Создайте связь между выходом 1 из fis2 и вход 2 из fis3.
con2 = ["fis2/output1" "fis3/input2"];
Создайте связь между выходом 1 из fis3 и вход 1 из fis4.
con3 = ["fis3/output1" "fis4/input1"];
Создайте дерево FIS.
casTree = fistree([fis1 fis2 fis3 fis4],[con1;con2;con3]);
Визуализируйте древовидную структуру.
plotfis(casTree)

Этот пример показывает конструкцию параллельного дерева FIS. Для получения дополнительной информации о типах нечетких древовидных структур смотрите Нечеткие Деревья.
Создайте нечеткие системы fis1, fis2, и fis3, каждый с двумя входными параметрами и одним выходом.
fis1 = mamfis('Name','fis1','NumInputs',2,'NumOutputs',1); fis2 = mamfis('Name','fis2','NumInputs',2,'NumOutputs',1);
Создайте дерево FIS, таким образом, что объекты FIS параллельно; то есть, дерево не содержит соединений и всего FIS, выходными параметрами являются древовидные выходные параметры FIS.
parTree = fistree([fis1 fis2],[]);
Визуализируйте дерево.
plotfis(parTree)

Оцените дерево FIS.
output = evalfis(parTree,[0.1 0.3 0.8 0.4]);
Сгенерируйте окончательный результат путем подведения итогов древовидных выходных параметров FIS.
finalOutput = sum(output);
mamfis | sugfis | mamfistype2 | sugfistype2 | tunefis
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.