image thumbnail

Leveldiagrams for multiobjective decision making

by

 

08 May 2009 (Updated )

A tool to draw Leveldiagrams for Pareto Set/Front, allowingsome basics graphics manipulations.

layergraph5.m
function lg=layergraph5(lg)
% Function for Layer Graph representation
%  lg=layergraph5(lg)
%  lg : structure with data for layer graph representation 
%       (see 'buildlgstruct' function)
%
% Beta version 
% (c) 2006 - CPOH  
% Grupo de Control Predictivo y Optimizacin Heurstica.
% Universidad Politcnica de Valencia - Spain.
% http://ctl-predictivo.upv.es

%%
% Vector auxiliar distancia normalizada al cero 
auxj=lg.slayer;
maxauxj=max(lg.slayer);
%auxj=auxj/max(lg.slayer)*100;


%% Trazado Pareto Front

% Calculo para decidir la distribucin (subplot) de las graficas en la figura.
% gfsf : filas 
% gfsc : columnas
if lg.nobj==3
    gfsf=1; 
    gfsc=3;
else
    gfs=sqrt(lg.nobj);
    gfsf=round(gfs);
    gfsc=gfsf;
    if gfsf^2<lg.nobj
        gfsc=gfsc+1;
    end
end
lg.layout=[gfsf gfsc];
%% Trazado
lg.figuras=zeros(1,2);
lg.axis=[];
lg.figuras(1)=figure;

% mapa de color
% color blanco [1 1 1]
% color negro  [0 0 0]
if size(lg.pref,1)==lg.numind
    cm=colormap(hot(40));
    %cm=colormap(gray(25));
    %cm=cm(4:24,:);     %escala de colores
    numcol=size(cm,1); %numero de colores diferentes 
    %sprefmax=max(lg.pref);
    %sprefmin=min(lg.pref);
end

for ii=1:lg.nobj
    eval(['subplot(' num2str(gfsf) ',' num2str(gfsc) ',' num2str(ii) ')'])
    eval(['xlabel(''\bf J' num2str(ii) ' (J' num2str(ii) ' units) '')'])
    hold on;
    for kk=lg.numind:-1:1
        color=lg.pref(kk)/lg.worstpref;
        color=round((numcol-1)*color+1);
        color=cm(color,:);
        plot(lg.spf(kk,ii),auxj(kk),'+','MarkerEdgeColor',color);
    end
    axis([lg.minpf(1,ii) lg.maxpf(1,ii) 0 maxauxj])
    lg.axis=[lg.axis;gca];
end

%% Trazado Pareto Set

% Calculo para decidir la distribucin (subplot) de las graficas en la figura.
% gfsf : filas 
% gfsc : columnas
if lg.npar==3
    gfsc=3;
    gfsf=1;
elseif lg.npar==1
    gfsc=2;
    gfsf=1;    
else    
    gfs=sqrt(lg.npar);
    gfsf=round(gfs);
    gfsc=gfsf;
    if gfsf^2<lg.npar
        gfsc=gfsc+1;
    end
end
%lg.layout=[objfilas objcolumnas parfilas parcolumnas];
lg.layout=[lg.layout gfsf gfsc]; 

% Trazado
lg.figuras(2)=figure;
for ii=1:lg.npar
    eval(['subplot(' num2str(gfsf) ',' num2str(gfsc) ',' num2str(ii) ')'])
    eval(['xlabel(''\bf \theta' num2str(ii) ' (\theta' num2str(ii) ' units) '')'])
    hold on;
    for kk=lg.numind:-1:1
        color=lg.pref(kk)/lg.worstpref;
        color=round((numcol-1)*color+1);
        color=cm(color,:);
        plot(lg.sps(kk,ii),auxj(kk),'+','MarkerEdgeColor',color);
    end
    if lg.minps(1,ii)==lg.maxps(1,ii)
        lg.minps(1,ii)=lg.minps(1,ii)-0.1;
        lg.maxps(1,ii)=lg.maxps(1,ii)+0.1;
    end
    axis([lg.minps(1,ii) lg.maxps(1,ii) 0 maxauxj])
    lg.axis=[lg.axis;gca];
end
lg.selpoint=[];

Contact us