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 объект — Тип 2 Mamdani нечеткая система вывода

  • sugfistype2 объект — Тип 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 ключевое слово, и отдельный эти условия, с использованием запятых. 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 свойство правила.

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

свернуть все

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

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

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

  • mamfistype2 объект — Тип 2 Mamdani нечеткая система вывода

  • sugfistype2 объект — Тип 2 Sugeno нечеткая система вывода

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

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

развернуть все

Поведение изменяется в R2018b

Предупреждает запуск в R2019b

Введенный в R2018b