addrule

Add rule to Fuzzy Inference System

Syntax

a = addrule(a,ruleList) 

Description

addrule has two arguments. The first argument is the MATLAB® workspace variable FIS name. The second argument is a matrix of one or more rows, each of which represents a given rule. The format that the rule list matrix must take is very specific. If there are m inputs to a system and n outputs, there must be exactly m + n + 2 columns to the rule list.

The first m columns refer to the inputs of the system. Each column contains a number that refers to the index of the membership function for that variable.

The next n columns refer to the outputs of the system. Each column contains a number that refers to the index of the membership function for that variable.

The m + n + 1 column contains the weight that is to be applied to the rule. The weight must be a number between zero and one and is generally left as one.

The m + n + 2 column contains a 1 if the fuzzy operator for the rule's antecedent is AND. It contains a 2 if the fuzzy operator is OR.

Examples

expand all

Add Rules to Fuzzy Inference System

Create the fuzzy inference system. For this example, load the tipper FIS and clear the existing rules for the FIS.

a = readfis('tipper');
a.rule=[];

Create the rule list.

rule1 = [1 1 1 1 1];
rule2 = [1 2 2 1 1];
ruleList = [rule1;rule2];

Add the rules list to the FIS.

a = addrule(a,ruleList);

Verify that the rules were added.

showrule(a)
ans =

1. If (service is poor) and (food is rancid) then (tip is cheap) (1)     
2. If (service is poor) and (food is delicious) then (tip is average) (1)

Delete Rule from Fuzzy Inference System

Delete the second rule of a Fuzzy Inference System (FIS).

Load the FIS.

a = readfis('tipper');

View the rules of a.

showrule(a)
ans =

1. If (service is poor) or (food is rancid) then (tip is cheap) (1)           
2. If (service is good) then (tip is average) (1)                             
3. If (service is excellent) or (food is delicious) then (tip is generous) (1)

Delete the second rule.

a.rule(2)=[];

Verify that the second rule is deleted.

showrule(a)
ans =

1. If (service is poor) or (food is rancid) then (tip is cheap) (1)           
2. If (service is excellent) or (food is delicious) then (tip is generous) (1)

See Also

| | | | |

Was this topic helpful?