How to order 'n' no of populations in ascending order based on their fitness for a minimization objective in matlab

4 views (last 30 days)
How to order 'n' no of populations in ascending order based on their fitness for a minimization objective in matlab?
  2 Comments
dhiman banerjee
dhiman banerjee on 20 Sep 2019
Thank you for the reply. But this code gives fitness value of te each population in acending order. My problem is - that to reorder each population (i.e rows of the population matrix) as per the fitness value of each population in ascending order (Minimization objective)
Kindly help me in this point.
Syed Ahmed
Syed Ahmed on 24 Nov 2022
Try this i had the same issue as you.
fitnessVector = [106; 100; 120; 104]; % fitness value
popu = [12 11 67 89 56; % populationn vector
45 13 77 39 86;
92 54 67 79 76;
62 54 65 9 5];
[X,I] = sort(fitnessVector); % to get indexes of order
popu = [I,popu]; % add index order as first column
popu = sortrows(popu,'descend'); % sorts based on the first column of matrix
fitnessVector = X % fitness values
fitnessVector = 4×1
100 104 106 120
popu(:,1) = []; % remove first column from population.

Sign in to comment.

Accepted Answer

thoughtGarden
thoughtGarden on 19 Sep 2019
Edited: thoughtGarden on 20 Sep 2019
I'm assuming you already have the fitness of each population according to the minimization objective. If this is the case, you will simply obtain the index order from the "sort" function while using the "direction" parameter.
sortedIndex = sort(fitnessVector, [],'ascend');
If you found this answer to be correct, please accept it. Otherwise, please add aditional comments so that it may be improved.

More Answers (0)

Tags

No tags entered yet.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!