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.