

![0_image_0.png](0_image_0.png)

![0_image_1.png](0_image_1.png)

![0_image_2.png](0_image_2.png)

## G. **Adaptive Neuro-Fuzzy Systems**

The Fuzzy Logic Toolbox for Matlab was used to simulate the Adaptive Neuro-Fuzzy System. The training process involves modifying the membership function parameters of the FIS in order emulate the training dataset to within some error criteria [21]. The toolbox implements a Sugeno-type system for the Adaptive Neuro-Fuzzy Inference System. It only supports a single output which is obtained using a weighted average defuzzification process. In the Fuzzy Logic Toolkit, the number of output membership functions must be equal to the number of rules generated, and the output membership functions must be linear or a constant. Therefore, each output for the given dataset was modelled separately, and a linear output function of the form in Equation 27 was used. 

The toolkit allows for a training and validation dataset to be used, in this case the Toolbox selects the model with the minimum validation data error [21]. The idea is that overtraining will be avoided, as it is expected that the validation error will decrease as training takes place until a certain point where the validation error begins to increase, indicating overtraining. The learning process is similar to neural networks except that different parameters are being adjusted. 

The idea is to tailor the membership functions to model the input/output relationship of the dataset [21]. The ANFIS constructs a FIS in which its membership function parameters adjusted by a training algorithm. In this way, the parameters of the membership functions will change through the process of learning. The Toolkit uses either back-propagation or a hybrid method (least squares and back-propagation) to train the ANFIS. 

The Fuzzy Logic Toolbox has 11 different membership functions available, of which 8 can be used with the Adaptive Neuro-Fuzzy System: Triangular function, trapezoidal, 2 different Gaussian functions, bell function, Sigmoidal Difference function (difference of 2 Sigmoidal functions), Sigmoidal product function (product of 2 Sigmoidal functions), and polynomial Pi curves. The Sigmoidal functions have the property of being asymmetrical opposed to the Gaussian which is symmetrical in nature [21]. 

In the Fuzzy Logic Toolkit the number of input membership functions and the type of membership function used could be modified. The number of membership functions was left at the default of 2 per input, giving 8 input membership functions. Firstly, an FIS structure was initialised which could then be adjusted to model the dataset provided. The generated FIS structure contained 16 fuzzy rules, therefore, 16 output membership functions. The ANFIS function keeps track of the Root Mean Square Error (RMSE) of the training dataset at each epoch, as well as the validation error associated with a validation dataset. 

Different input membership functions were tried for each output being modelled. A curve of the training and validation errors vs. the training cycles was observed by plotting the values stored by the ANFIS function in the toolbox. It was then possible to see how many epochs were necessary and the 