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