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