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