This is the internal function that implements the fuzzy inference rules by descent method (FIR.DM).
It is used to solve regression tasks. Users do not need to call it directly,
but just use `frbs.learn`

and `predict`

.

```
FIR.DM(data.train, num.labels, max.iter, step.size, type.tnorm = "MIN",
type.snorm = "MAX", type.implication.func = "ZADEH")
```

data.train

a matrix (\(m \times n\)) of normalized data for training, where \(m\) is the number of instances and \(n\) is the number of variables. The last column is the output variable. Note the data must be normalized between 0 and 1.

num.labels

a matrix (\(1 \times n\)) whose elements represent the number of labels (fuzzy terms), where \(n\) is the number of variables.

max.iter

the maximal number of iterations.

step.size

the step size of the descent method, between 0 and 1.

type.tnorm

the type of t-norm. For more detail, please have a look at `inference`

.

type.snorm

the type of s-norm. For more detail, please have a look at `inference`

.

type.implication.func

a value representing type of implication function. For more detail, please have a look at `WM`

This method was proposed by H. Nomura, I. Hayashi, and N. Wakami. FIR.DM uses simplified fuzzy reasoning where the consequent part is a real number (a particular case within the Takagi Sugeno Kang model), while the membership function on the antecedent part is expressed by an isosceles triangle. So, in the learning phase, FIR.DM updates three parameters which are center and width of the triangular and a real number on the consequent part using a descent method.

H. Nomura, I. Hayashi and N. Wakami, "A learning method of fuzzy inference rules by descent method", IEEE International Conference on Fuzzy Systems, pp. 203 - 210 (1992).

`DM.update`

, `frbs.learn`

, and `predict`

.