(i) | INPUTS: , the wind speed dataset. |
(ii) | PARAMETERS: |
| Nstd: noise standard deviation in CEEMDAN |
| NR: number of realizations in CEEMDAN |
| MaxIter: maximum number of sifting iterations that are allowed in CEEMDAN |
q: variable that is selected in GSFS |
MaxIterRF: maximum number of iterations in random forest |
NTress: number of trees in random forest |
N: number of whales in WOA |
MaxIterWOA: maximum number of iterations in WOA |
(iii) | OUTPUTS : the forecasting error |
(1) | The original dataset is divided into training dataset and test dataset . |
(2) | Decomposition using CEEMDAN, which results in I IMFs: . |
(3) | Establish a quadratic model of and , which results in and |
(4) | INITIALIZATION: set , . |
(5) | IF DO |
(6) | Calculate the pseudoresponse |
(7) | Perform regression on the data with a pseudoresponse and select the most strongly correlated variable |
(8) | Update the response and . |
(9) | END IF |
(10) | FOR to DO |
(11) | Orthogonalize via the Gram–Schmidt method. |
(12) | Perform regression on the data with a pseudoresponse and select the most strongly correlated variable |
(13) | Update the response and . |
(14) | END FOR |
(15) | Build the solution path and use HDIC to select the optimal solution, including q important variables. |
(16) | Grow a random forest with NTress = 3000 trees using the selected variables with MaxIterRF iterations. |
(17) | Initialize the whale population for weight matrix in which the columns are weights for established RF models. |
(18) | Calculate the fitness function using and RF models |
(19) | Let be the current best weights |
(20) | WHILE DO |
(21) | FOR each weight DO |
(22) | Update and |
(23) | IF THEN |
(24) | IF THEN |
(25) | Update the positions of the current weight via (12) and (13) |
(26) | ELSE IF THEN |
(27) | Randomly select a search agent |
(28) | Update the position of the current search agent via (17) |
(29) | END IF |
(30) | ELSE IF THEN |
(31) | Update the position of the current weight via (16) |
(32) | END FOR |
(33) | Check if any search agent goes beyond the search space |
(34) | Calculate the fitness function of each weight |
(35) | Update if there is a better solution |
(36) | |
(37) | END WHILE |
(38) | Obtain the optimal weights |
(39) | Calculate the forecasting error using the optimal weights and the RF model that is generated by and . |