Сеть связанных систем нечеткого вывода
Использование fistree объект для представления дерева взаимосвязанных систем нечеткого вывода.
создает сеть взаимосвязанных системных объектов нечеткого вывода, задавая ее fisTree = fistree(fis,connections)FIS и Connections свойства.
устанавливает fisTree = fistree(___,'DisableStructuralChecks',disableChecks)DisableStructuralChecks свойство.
FIS - Системы нечеткого выводаЭто свойство доступно только для чтения.
Системы нечеткого вывода, заданные как объекты FIS массива. Можно задать любую комбинацию mamfis, sugfis, mamfistype2, и sugfistype2 объекты. Каждая система нечеткого вывода в FIS массив должен иметь по крайней мере один вход и один выход для fistree конструкция. Чтобы вычислить fistreeкаждая система нечеткого вывода должна иметь по крайней мере одно правило.
Connections - Связи между системами нечеткого выводаСвязи между системами нечеткого вывода, заданные как двумерные строковые массивы. Каждая строка представляет соединение между двумя объектами FIS. Задайте соединения следующим образом:
Выходные и входные связи, ["fromFISName/fromFISOutputName" "toFISName/toFISInputName"]. В этом случае выход "fromFISName" используется как вход "toFISName". "fromFISName" и "toFISName" должно быть другим.
Входные и входные связи, ["fromFISName/fromFISInputName" "toFISName/toFISInputName"]. В этом случае входы "fromFISName" и "toFISName" используйте те же входные значения для оценки. "fromFISName" и "toFISName" могут быть одинаковыми или различными.
Следующая схема описывает различные типы соединений, используя два FIS, fis1, и fis2.

Соединительные ["fis1/x" "fis2/c"] задается между выходными x от fis1 и входные c от fis2. Соединительные ["fis1/a" "fis1/b"] задается между входами «a» и «b» «fis1». На этой схеме fistree входы fis1/a и fis2/d и выход следующий fis2/y.
Соединения должны удовлетворять следующим условиям:
A fistree объект должен иметь по крайней мере один вход FIS без какого-либо входящего соединения и один выход FIS без какого-либо исходящего соединения.
Вход FIS не может иметь более одного входящего соединения.
Выходные выходы FIS могут иметь несколько исходящих соединений.
Вход и выход того же FIS не могут быть подключены. Другими словами, вы не можете создать циклов между связанными объектами FIS.
Симметричные соединения не могут быть заданы между двумя входами, ["fis1/a" "fis1/b";"fis1/b" "fis1/a"] не разрешено. Либо ["fis1/a" "fis1/b"] или ["fis1/b" "fis1/a"] может быть задан.
Самовходы циклов не разрешены, ["fis1/a" "fis1/a"] не может быть задан.
Inputs - Входы в дерево FISВходы в дерево FIS, заданные как массив строк. Inputs автоматически определяются с помощью указанных соединений fistree объект. Входы FIS без входных соединений включены в Inputs. Обновите это свойство путем обновления подключений fistree объект.
Outputs - Выходы дерева FISВыходы дерева FIS, заданные как строка. Outputs автоматически определяются с помощью указанных соединений fistree объект. Выходы FIS без выходных соединений включены в Outputs. Вы можете обновить это свойство после первоначальной конструкции fistree объект. Существующие выходы можно удалить или добавить новые выходы. Outputs не может быть пустым.
DisableStructuralChecks - Флаг для отключения структурных проверокФлаг для отключения структурных проверок, входов и выходов, заданный как false или true. Задайте DisableStructuralChecks на true отключение автоматического обновления соединений, входов и выходов при обновлении FIS после конструкции fistree объект. Отключение структурных проверок может привести к неожиданному отказу в evalfis функция.
evalfis | Вычислите систему нечеткого вывода |
getTunableSettings | Получите настраиваемые настройки от системы нечеткого вывода |
getTunableValues | Получите значения настраиваемых параметров из системы нечеткого вывода |
setTunableValues | Задайте настраиваемый параметр значения системы нечеткого вывода |
Создайте систему нечеткого вывода Mamdani и систему нечеткого вывода Sugeno.
fis1 = mamfis('Name','fis1','NumInputs',2,'NumOutputs',1); fis2 = sugfis('Name','fis2','NumInputs',2,'NumOutputs',1);
Задайте желаемые связи между двумя системами нечеткого вывода.
con1 = ["fis1/output1" "fis2/input1"]; con2 = ["fis1/input1" "fis1/input2"];
Создайте дерево систем нечеткого вывода.
tree = fistree([fis1 fis2],[con1; con2])
tree =
fistree with properties:
FIS: [1x2 FuzzyInferenceSystem]
Connections: [2x2 string]
Inputs: [2x1 string]
Outputs: "fis2/output1"
DisableStructuralChecks: 0
See 'getTunableSettings' method for parameter optimization.
Создайте дерево FIS.
fis1 = mamfis('Name','fis1','NumInputs',2,'NumOutputs',1); fis2 = mamfis('Name','fis2','NumInputs',2,'NumOutputs',1); fisT = fistree([fis1 fis2],[]);
Отображение строения дерева FIS.
plotfis(fisT)
FIS Names: fis1 fis2 Connections: [] Inputs: fis1/input1 fis1/input2 fis2/input1 fis2/input2 Outputs: fis1/output1 fis2/output1
Добавление FIS
Добавить fis3 на fisT.
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 Names: fis1 fis2 fis3 Connections: From To ------------ ----------- fis1/output1 fis3/input1 fis2/output1 fis3/input2 Inputs: fis1/input1 fis1/input2 fis2/input1 fis2/input2 Outputs: fis3/output1
Удаление FIS
Удаление fis1 от fisT.
fisT.FIS(1) = [];
Отображение обновлённого строения дерева FIS.
plotfis(fisT)
FIS Names: fis2 fis3 Connections: From To ------------ ----------- fis2/output1 fis3/input2 Inputs: fis2/input1 fis2/input2 fis3/input1 Outputs: fis3/output1
Создание 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]);
Отображение входов дерева FIS.
fuzzTree.Inputs
ans = 3x1 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, 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"];
Создайте дерево FIS.
fuzzTree = fistree([fis1 fis2 fis3],[con1;con2]);
Отображаемые выводы дерева FIS. По умолчанию единственный открытый выход FIS (от fis3) - выход дерева FIS.
fuzzTree.Outputs
ans = "fis3/output1"
Добавьте выход fis2 выходы в древовидный выходной список.
fuzzTree.Outputs(end+1) = "fis2/output1";Отображение обновленного выходного списка дерева FIS.
fuzzTree.Outputs
ans = 2x1 string
"fis3/output1"
"fis2/output1"
Оцените дерево FIS. Результат содержит выходы fis3 и fis2.
evalfis(fuzzTree,[0.5 0.2 0.8 0.45])
ans = 1×2
0.1507 0.1579
Удаление выходов
Удалите первый выход из списка.
fuzzTree.Outputs(1) = [];
Отображение обновленного выходного списка дерева FIS.
fuzzTree.Outputs
ans = "fis2/output1"
Еще раз оцените дерево FIS. Теперь результат содержит выход только fis2.
evalfis(fuzzTree,[0.5 0.2 0.8 0.45])
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 = "predition";
Создайте связь между выходом 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]);
Отображение входов дерева FIS.
incTree.Inputs
ans = 4x1 string
"fis1/color"
"fis1/doors"
"fis2/power"
"fis3/autopilot"
Отображаемые выводы дерева FIS.
incTree.Outputs
ans = "fis3/predition"
Этот пример показывает конструкция каскадного дерева 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]);
Отображение входов дерева FIS.
casTree.Inputs
ans = 5x1 string
"fis1/dist_obs"
"fis1/angle_obs"
"fis2/dist_tar"
"fis2/angle_tar"
"fis4/preheading_robot"
Отображение выходов дерева FIS.
casTree.Outputs
ans = "fis4/heading_robot"
Этот пример показывает конструкция агрегированного дерева 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]);
Отображение входов дерева FIS.
aggTree.Inputs
ans = 4x1 string
"fis1/dist_obs"
"fis1/angle_obs"
"fis2/dist_tar"
"fis2/angle_tar"
Отображение выходов дерева FIS.
aggTree.Outputs
ans = "fis3/heading_robot"
Этот пример показывает конструкция параллельного дерева 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],[]);
Отображение входов дерева FIS.
parTree.Inputs
ans = 4x1 string
"fis1/input1"
"fis1/input2"
"fis2/input1"
"fis2/input2"
Отображение выходов дерева FIS.
parTree.Outputs
ans = 2x1 string
"fis1/output1"
"fis2/output1"
Оцените дерево FIS.
output = evalfis(parTree,[0.1 0.3 0.8 0.4]);
Сгенерируйте окончательный вывод путем суммирования выходов дерева FIS.
finalOutput = sum(output);
mamfis | mamfistype2 | sugfis | sugfistype2 | tunefis
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.