Сеть связанных нечетких систем вывода
Используйте 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.