Сеть связанных нечетких систем вывода
Используйте 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"
может быть то же самое или отличающийся.
Следующая схема описывает различные типы подключения.
Связь ["fis1/x" "fis2/c"]
задан между выходом "x" "fis1" и введен "c" "fis2". Связь ["fis1/a" "fis1/b"]
задан между входными параметрами "a" и "b" "fis1". В этой схеме, fistree
входные параметры являются "fis1/a" и "fis2/d", и выход является "fis2/y".
Связи должны удовлетворить следующим условиям:
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 array
"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 array
"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 array
"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 array
"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 array
"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 array
"fis1/input1"
"fis1/input2"
"fis2/input1"
"fis2/input2"
Отобразите выводы дерева FIS.
parTree.Outputs
ans = 2x1 string array
"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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.