Добавить правило в систему нечеткого вывода
добавляет одно или несколько нечетких правил, используя описания правил в 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 объект - система нечеткого вывода Мамдани
sugfis object - система нечеткого вывода Sugeno
mamfistype2 объект - Type-2 система нечеткого вывода Мамдани
sugfistype2 object - Type-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);
Для каждого правила используйте один из следующих форматов текста правила:
Verbose - лингвистическое выражение в следующем формате с использованием 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)"
Symbolic - выражение, использующее символы в следующей таблице вместо ключевых слов. Нет символа для IF ключевое слово.
| Символ | Ключевое слово |
|---|---|
== | IS (в правиле antecedent) |
~= | 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 объект - система нечеткого вывода Мамдани
sugfis object - система нечеткого вывода Sugeno
mamfistype2 объект - Type-2 система нечеткого вывода Мамдани
sugfistype2 object - Type-2 система нечеткого вывода Sugeno
fisOut содержит добавленные правила вывода, при этом все другие свойства соответствуют свойствам fisIn.
addrule сейчас addRuleВ R2018b изменилось поведение
addrule сейчас addRule. Чтобы обновить код, измените имя функции с addrule кому addRule. Синтаксы эквивалентны.
Предупреждает, начиная с R2019b
Поддержка представления нечетких систем вывода как структур будет удалена в будущем выпуске. Использовать mamfis и sugfis вместо этого объекты. Между этими представлениями существуют различия, требующие обновления кода. Эти различия включают в себя:
Имена свойств объекта, отличающиеся от соответствующих полей структуры.
Объекты хранят текстовые данные в виде строк, а не в виде векторов символов.
Кроме того, все функции Fuzzy Logic Toolbox™, которые принимали или возвращали системы нечеткого вывода в качестве структур, теперь принимают и возвращают либо mamfis или sugfis объекты.
Чтобы преобразовать существующие структуры системы нечеткого вывода в объекты, используйте convertfis функция.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.