This is the internal function that implements the adaptive-network-based
fuzzy inference system (ANFIS). It is used to solve regression tasks.
Users do not need to call it directly,
but just use `frbs.learn`

and `predict`

.

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

data.train

a matrix (\(m \times n\)) of normalized data for the training process, 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 (linguistic terms); \(n\) is the number of variables.

max.iter

the maximal number of iterations.

step.size

a real number between 0 and 1 representing the step size of the gradient descent.

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 the type of implication functions.
For more detail, please have a look at `WM`

.

This method was proposed by J. S. R. Jang. It uses the Takagi Sugeno Kang model on the consequent part of the fuzzy IF-THEN rules. The ANFIS architecture consists of two processes, the forward and the backward stage. The forward stage has five layers as follows:

Layer 1: The fuzzification process which transforms crisp values into linguistic terms using the Gaussian function as the shape of the membership function.

Layer 2: The inference stage using the t-norm operator (the AND operator).

Layer 3: Calculating the ratio of the strengths of the rules.

Layer 4: Calculating the consequent parameters.

Layer 5: Calculating the overall output as the sum of all incoming signals.

The backward stage is a process of parameter learning. In this step, the least squares method is used in order to obtain the parameters, which are coefficients of linear equations on the consequent part, and mean and variance on the antecedent part.

J.S.R. Jang, "ANFIS: Adaptive-network-based fuzzy inference system", IEEE Transactions on Systems, Man, and Cybernetics, vol. 23, no. 3, pp. 665 - 685 (1993).

J.S.R. Jang, C.T. Sun, and E. Mizutani., "Neuro-fuzzy and soft computing: a computational approach to learning and machine intelligence", Prentice-Hall, Inc (1997).

`ANFIS.update`

, `frbs.learn`

, and `predict`