| Algorithm 1: Combine KFs and RBFNNs. | |
| Based on the training data set (): | {Inputs, Targets} → {Model’s Forecast, Observations} |
| for each element in do | |
| Apply the non-linear Kalman filter and obtain | |
| endfor | |
| Create the Input data for the RBF network | |
| Create the training and validation datasets for the RBF | Distinct training and validation datasets for each training. Same for every topology |
| for each Cluster do | |
| for each penalty parameter do | |
| for each Activation function do | |
| Form the RBF structure.% number of clusters, regularization parameter λ, activation function | |
| while train ≤ maxtrain % Conduct multiple trainings for each structure | |
| Determine the centroids from the training dataset using the K-means++ and compute the widths. Train network using LLS based on the training data set. | |
| performance → Network’s performance % SSE based on the validation data set | |
| if performance < Initial Value | |
| Set Initial Value equal to performance | |
| The best results for every combination are stored in a cell array. Number of clusters, performance, penalty parameter, activation function, train time, best centers, widths, and external weights. | |
| endif | |
| train → train+1 | |
| endwhile | |
| train → 1 | |
| endfor | |
| endfor | |
| readjust Initial Value | |
| Endfor | |
| Define the optimal RBF network structure | |
| if several indices in the Total SSE vector display similar results. % Their absolute difference remains smaller than a specified threshold position → the index with minimum train time else position → the minimum SSE index end | |
| Best RBFNN structure → best results{position}. | |