Systems and methods include initializing a trainees population (TP), calculating an objective function (OF) of the TP to identify a trainer. A teaching pool is created using variables of each trainee and the identified trainer, and unique variables are added to obtain an updated teaching pool (UTP), a search is performed in parallel on UTPs to obtain ‘m’ subset of variables and OFs. OFs of ‘m’ subset are compared with OFs of the trainee's and variables of a first trainee in each thread are updated accordingly. In parallel, an updated learning pool (ULP) is created for selected trainee and the trainees, by adding unique variables to obtain ‘n’ subset which are compared with objective functions of selected trainee and the trainees and variables of a second trainee are updated accordingly. These steps are iteratively performed to obtain an optimal subset of variables that is selected for teaching and learning phase.