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

4 次查看(过去 30 天)
How to order 'n' no of populations in ascending order based on their fitness for a minimization objective in matlab?
  2 个评论
dhiman banerjee
dhiman banerjee 2019-9-20
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 2022-11-24
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.

请先登录,再进行评论。

采纳的回答

thoughtGarden
thoughtGarden 2019-9-19
编辑:thoughtGarden 2019-9-20
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.

更多回答(0 个)

标签

尚未输入任何标签。

Community Treasure Hunt

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

Start Hunting!

Translated by