function datos=levelDiagram(pf,ps) % levelDiagram(ParetoFront,ParetoSet) numind=size(pf,1); %% normaliza el frente de pareto (de 0 a 1) maxpf=max(pf); minpf=min(pf); maxpf=repmat(maxpf,size(pf,1),1); minpf=repmat(minpf,numind,1); norpf=(pf-minpf)./(maxpf-minpf); maxps=max(ps); minps=min(ps); %% Calcula la distancia de cada punto (normalizado) al cero % Asigna cada individuo a una capa. distancia=zeros(numind,1); norma=inf; for i=1:numind distancia(i)=norm(norpf(i,:),norma); end %% Ordena según el valor de la distancia % slayer contiene el valor de la distancia %[slayer,indices]=sort(distancia); slayer=distancia; %spf=pf(indices,:); %Ordena el pareto front spf=pf; %sps=ps(indices,:); %Ordena el pareto set sps=ps; auxj=slayer; maxauxj=max(slayer); minauxj=min(slayer); %% asigna frente y conjunto en el workspace assignin('base', 'spfsps',[spf sps slayer]); %% pinta frente nobj=size(pf,2); % Calculo para decidir la distribución (subplot) de las graficas en la figura. % gfsf : filas % gfsc : columnas if nobj==3 gfsf=1; gfsc=3; else gfs=sqrt(nobj); gfsf=round(gfs); gfsc=gfsf; if gfsf^2