Добавьте правило в систему нечеткого вывода
добавляет одно или несколько нечетких правил, используя описания правил в 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
объект - Type-2 системы нечеткого вывода Мамдани
sugfistype2
объект - 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);
Для каждого правила используйте один из следующих текстовых форматов правил:
Подробное - Лингвистическое выражение в следующем формате, с использованием IF
и THEN
ключевые слова:
"IF <antecedent> THEN <consequent> (<weight>)"
В <antecedent>
, задайте функцию принадлежности для каждой входной переменной используя IS
или IS NOT
ключевое слово. Соедините эти условия с помощью AND
или OR
ключевые слова. Если правило не использует заданную входную переменную, опустите его из предшествующего.
В <consequent>
, задайте условие для каждой выходной переменной используя IS
или IS NOT
ключевое слово и разделите эти условия, используя запятые. The IS NOT
ключевое слово не поддерживается для выходов Sugeno. Если правило не использует заданную выходную переменную, опустите ее из последующего.
Задайте вес, используя положительное числовое значение.
Для примера:
"IF A IS a AND B IS NOT b THEN X IS x, Y IS NOT y (1)"
Symbolic - Выражение, которое использует символы в следующей таблице вместо ключевых слов. Нет символа для 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
условие для систем Мамдани, задайте отрицательное значение. NOT
условия не поддерживаются для выходов Sugeno. Если правило не использует заданный вывод, установите соответствующий индекс равным 0
. Для каждого правила, по крайней мере, один индекс выход функции принадлежности должен быть ненулевым.
Столбец M + N + 1 задает вес правила и соответствует Weight
свойство правила.
Итоговый столбец задает предшествующий нечеткий оператор и соответствует Connection
свойство правила.
fisOut
- Система нечеткого выводаmamfis
| объекта sugfis
| объекта mamfistype2
| объекта sugfistype2
объектСистема нечеткого вывода, заданная как одно из следующего:
mamfis
объект - система нечеткого вывода Mamdani
sugfis
объект - система нечеткого вывода Sugeno
mamfistype2
объект - Type-2 системы нечеткого вывода Мамдани
sugfistype2
объект - 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.