Function File: fis = addrule (fis, rule_matrix)

Add a list of rules to an existing FIS structure and return the updated FIS.

Each row of the rule_matrix represents one rule and has the form:

[in1_mf ... inM_mf out1_mf ... outN_mf weight connect]

where:

  • in<i>_mf == membership function index for input i
  • out<j>_mf == membership function index for output j
  • weight == relative weight of the rule (0 <= weight <= 1)
  • connect == antecedent connective (1 == and; 2 == or)

To express:

  • "not" – prepend a minus sign to the membership function index
  • "somewhat" – append ".05" to the membership function index
  • "very" – append ".20" to the membership function index
  • "extremely" – append ".30" to the membership function index
  • "very very" – append ".40" to the membership function index
  • custom hedge – append .xy, where x.y is the degree to which the membership value should be raised, to the membership function index

To omit an input or output, use 0 for the membership function index. The consequent connective is always "and".

For example, to express:

"If (input_1 is mf_2) or (input_3 is not mf_1) or (input_4 is very mf_1),
 then (output_1 is mf_2) and (output_2 is mf_1^0.3)."

with weight 1, the corresponding row of rule_matrix would be:

[2   0   -1   4.2   2   1.03   1   2]

For a complete example that uses addrule, see heart_disease_demo_1.m.

See also: heart_disease_demo_1, showrule.

Package: fuzzy-logic-toolkit