Добавьте правило в нечеткую систему вывода
добавляют одно или несколько нечетких правил с помощью описаний правила в fisOut = addRule(fisIn,ruleDescription)ruleDescription.
Загрузите нечеткую систему вывода (FIS) и очистите существующие правила.
fis = readfis('tipper');
fis.Rules = [];Добавьте правило в FIS.
ruleTxt = 'If service is poor then tip is cheap';
fis2 = addRule(fis,ruleTxt);fis2 эквивалентно fis, за исключением того, что заданное правило добавляется к основе правила.
fis2.Rules
ans =
fisrule with properties:
Description: "service==poor => tip=cheap (1)"
Antecedent: [1 0]
Consequent: 1
Weight: 1
Connection: 1
Загрузите нечеткую систему вывода (FIS) и очистите существующие правила.
fis = readfis('tipper');
fis.Rules = [];Задайте следующие правила с помощью символьных выражений:
Если service poor или food rancid затем tip cheap.
Если service excellent и food не rancid затем tip generous.
rule1 = "service==poor | food==rancid => tip=cheap"; rule2 = "service==excellent & food~=rancid => tip=generous"; rules = [rule1 rule2];
Добавьте правила в FIS.
fis2 = addRule(fis,rules);
fis2 эквивалентно fis, за исключением того, что заданные правила добавляются к основе правила.
fis2.Rules
ans =
1x2 fisrule array with properties:
Description
Antecedent
Consequent
Weight
Connection
Details:
Description
_______________________________________________________
1 "service==poor | food==rancid => tip=cheap (1)"
2 "service==excellent & food~=rancid => tip=generous (1)"
Загрузите нечеткую систему вывода (FIS) и очистите существующие правила.
fis = readfis('mam22.fis');
fis.Rules = [];Задайте следующие правила с помощью индексов функции принадлежности:
Если angle small и velocity big, затем force negBig и force2 posBig2.
Если angle не small и velocity small, затем force posSmall и force2 negSmall2.
rule1 = [1 2 1 4 1 1]; rule2 = [-1 1 3 2 1 1]; rules = [rule1; rule2];
Добавьте правила в FIS.
fis2 = addRule(fis,rules);
fis2 эквивалентно fis, за исключением того, что заданные правила добавляются к основе правила.
fis2.Rules
ans =
1x2 fisrule array with properties:
Description
Antecedent
Consequent
Weight
Connection
Details:
Description
________________________________________________________________________
1 "angle==small & velocity==big => force=negBig, force2=posBig2 (1)"
2 "angle~=small & velocity==small => force=posSmall, force2=negSmall2 (1)"
fisIn — Нечеткая система выводаmamfis возразите | sugfis возразите | mamfistype2 возразите | sugfistype2 объектНечеткая система вывода, заданная как одно из следующего:
mamfis объект — Mamdani нечеткая система вывода
sugfis объект — Sugeno нечеткая система вывода
mamfistype2 объект — Тип 2 Mamdani нечеткая система вывода
sugfistype2 объект — Тип 2 Sugeno нечеткая система вывода
ruleDescription — Управляйте описаниемУправляйте описанием, заданное использование или текст или числовое определение правила
Для текстового описания правила задайте ruleDescription как одно из следующего:
Строка или вектор символов, задающий одно правило
rule = "If service is poor or food is rancid then tip is cheap";
Массив строк, где каждый элемент соответствует правилу. Например:
ruleList = ["If service is poor or food is rancid then tip is cheap"; "If service is good then tip is average"; "If service is excellent or food is delicious then tip is generous"];
Символьный массив, где каждая строка соответствует правилу. Например:
rule1 = 'If service is poor or food is rancid then tip is cheap'; rule2 = 'If service is good then tip is average'; rule3 = 'If service is excellent or food is delicious then tip is generous'; ruleList = char(rule1,rule2,rule3);
Для каждого правила используйте один из следующих текстовых форматов правила:
Многословный — Лингвистическое выражение в следующем формате, с помощью IF и THEN ключевые слова:
"IF <antecedent> THEN <consequent> (<weight>)"
В <antecedent>, задайте функцию принадлежности для каждой входной переменной с помощью IS или IS NOT ключевое слово. Соедините эти условия с помощью AND или OR ключевые слова. Если правило не использует данную входную переменную, не используйте его от антецедента.
В <consequent>, задайте условие для каждой выходной переменной с помощью IS или IS NOT ключевое слово, и отдельный эти условия, с использованием запятых. IS NOT ключевое слово не поддержано для Sugeno выходные параметры. Если правило не использует данную выходную переменную, не используйте его от следствия.
Задайте вес с помощью положительного численного значения.
Например:
"IF A IS a AND B IS NOT b THEN X IS x, Y IS NOT y (1)"
Символьный — Выражение, которое использует символы в следующей таблице вместо ключевых слов. Нет никакого символа для IF ключевое слово.
| Символ | Ключевое слово |
|---|---|
== | IS (в антецеденте правила) |
~= | IS NOT |
& | AND |
| | OR |
=> | THEN |
= | IS (в следствии правила) |
Например, следующее символьное правило эквивалентно предыдущему многословному правилу.
"A==a & B~=b => X=x, Y~=y (1)"
Для числового описания правила задайте ruleDescription как одно из следующего:
Вектор-строка, чтобы задать одно нечеткое правило
Массив, где каждая строка ruleValues задает одно правило
Для каждой строки числовое описание правила имеет M +N+2 столбцы, где M является количеством входных переменных, и N является количеством выходных переменных. Каждый столбец содержит следующую информацию:
Первые столбцы M задают входные индексы функции принадлежности и соответствуют Antecedent свойство правила. Указать на NOT условие, задайте отрицательную величину. Если правило не использует данный, вводят, устанавливают соответствующий индекс на 0. Для каждого правила по крайней мере один входной индекс функции принадлежности должен быть ненулевым.
Следующие столбцы N задают выходные индексы функции принадлежности и соответствуют Consequent свойство правила. Указать на NOT условие для систем Mamdani, задайте отрицательную величину. NOT условия не поддержаны для Sugeno выходные параметры. Если правило не использует данный, выводят, устанавливают соответствующий индекс на 0. Для каждого правила по крайней мере один выходной индекс функции принадлежности должен быть ненулевым.
Столбец M +N+1 задает вес правила и соответствует Weight свойство правила.
Последний столбец задает предшествующий нечеткий оператор и соответствует Connection свойство правила.
fisOut — Нечеткая система выводаmamfis возразите | sugfis возразите | mamfistype2 возразите | sugfistype2 объектНечеткая система вывода, заданная как одно из следующего:
mamfis объект — Mamdani нечеткая система вывода
sugfis объект — Sugeno нечеткая система вывода
mamfistype2 объект — Тип 2 Mamdani нечеткая система вывода
sugfistype2 объект — Тип 2 Sugeno нечеткая система вывода
fisOut содержит добавленные выходные правила, со всеми другими свойствами, совпадающими со свойствами fisIn.
Поведение изменяется в R2018b
addrule теперь addRule. Чтобы обновить ваш код, поменяйте имя функции от addrule к addRule. Синтаксисы эквивалентны.
Предупреждает запуск в R2019b
Поддержка представления нечетких систем вывода как структуры будет удалена в будущем релизе. Используйте mamfis и sugfis объекты вместо этого. Существуют различия между этими представлениями, которые требуют обновлений вашего кода. Эти различия включают:
Имена свойства объекта, которые отличаются от соответствующих полей структуры.
Объекты хранят текстовые данные как строки, а не как векторы символов.
Кроме того, все функции Fuzzy Logic Toolbox™, которые приняли или возвратили нечеткие системы вывода как структуры теперь, принимают и возвращают любой mamfis или sugfis объекты.
Чтобы преобразовать существующие нечеткие структуры системы вывода в объекты, используйте convertfis функция.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.