Сеть связанных нечетких систем вывода
Используйте объект fistree
представлять дерево взаимосвязанных нечетких систем вывода.
fisTree = fistree(fis,connections)
fisTree = fistree(___,'DisableStructuralChecks',disableChecks)
создает сеть взаимосвязанного fisTree
= fistree(fis
,connections
)mamfis
и объектов sugfis
с помощью заданного connections
между ними.
устанавливает свойство fisTree
= fistree(___,'DisableStructuralChecks',disableChecks
)DisableStructuralChecks
объекта fistree
.
fis
— Нечеткие системы вывода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"]
не может быть задан.
FIS
— Нечеткие системы выводаЭто свойство доступно только для чтения.
Нечеткие системы вывода, заданные как массив mamfis
и объектов sugfis
. Каждая нечеткая система вывода в массиве fis
должна иметь по крайней мере один ввод и вывод для конструкции fistree
. Чтобы оценить fistree
, каждая нечеткая система вывода должна иметь по крайней мере одно правило.
Connections
— Связи между двумя нечеткими системами выводаСвязи между двумя нечеткими системами вывода, заданными как двумерный массив строк. Каждая строка представляет связь между двумя объектами FIS. Связи заданы можно следующим образом:
Связи вывода к входу, ["fromFISName/fromFISOutputName" "toFISName/toFISInputName"]
. В этом случае вывод "fromFISName"
используется в качестве входа "toFISName"
. "fromFISName"
и "toFISName"
должны отличаться.
Связи от входа к входу, ["fromFISName/fromFISInputName" "toFISName/toFISInputName"]
. В этом случае входные параметры "fromFISName"
и "toFISName"
используют те же входные значения для оценки. "fromFISName"
и "toFISName"
могут быть тем же самым или отличающийся.
Inputs
— Входные параметры к дереву FISВходные параметры к дереву FIS, заданному как массив строк. Inputs
автоматически определяется с помощью заданных связей объекта fistree
. Входные параметры FIS без входящих связей включены в Inputs
. Обновите это свойство путем обновления связей объекта fistree
.
Выходные параметры
Выходные параметры дерева 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 ibjects параллельно; то есть, нет никаких соединений и всего 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);
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.