addRule

Добавьте правило в систему нечеткого вывода

Описание

fisOut = addRule(fisIn) добавляет одно нечеткое правило в систему нечеткого вывода fisIn с описанием по умолчанию "input1==mf1 => output1=mf1" и возвращает полученную нечеткую систему в fisOut.

пример

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)"

Входные параметры

свернуть все

Система нечеткого вывода, заданная как одно из следующего:

  • mamfis объект - система нечеткого вывода Mamdani

  • sugfis объект - система нечеткого вывода Sugeno

  • mamfistype2 объект - Type-2 системы нечеткого вывода Мамдани

  • sugfistype2 объект - Type-2 системы нечеткого вывода Sugeno

Описание правила, заданное с помощью текста или числового определения правила

Описание текстового правила

Для описания текстовых правил задайте 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 свойство правила.

Выходные аргументы

свернуть все

Система нечеткого вывода, заданная как одно из следующего:

  • mamfis объект - система нечеткого вывода Mamdani

  • sugfis объект - система нечеткого вывода Sugeno

  • mamfistype2 объект - Type-2 системы нечеткого вывода Мамдани

  • sugfistype2 объект - Type-2 системы нечеткого вывода Sugeno

fisOut содержит добавленные выходные правила со всеми другими свойствами, соответствующими свойствам fisIn.

Вопросы совместимости

расширить все

Поведение изменено в R2018b

Предупреждает, начиная с R2019b

Введенный в R2018b