In below code we have a population 'P' of size 'NP' which has two fields 'Position' and 'Cost'. I need to sort the entire population 'P' with respect to field 'Cost' and select top p elements (say p = 4).
clc; clear all;varMin = -5; varMax = 5; D = 3; % Dimension
VarSize = [1 D]; % Decision Variables Matrix Size
NP = 10; % Population size
empty_individual.Position = []; % Field 1
empty_individual.Cost = []; % Field 2
P = repmat(empty_individual, NP, 1); % Population
CostFunction = @(x) sphere(x);%%Generating random population
for i = 1:NP P(i).Position = unifrnd(varMin, varMax, VarSize); P(i).Cost = CostFunction(P(i).Position);end% add Code here
sphere.m
function ret = sphere(x) ret = sum(x.^2);end
Best Answer