MATLAB Answers

Sotirios
0

Is it possible to generate *surface* pareto front for 3 objective functions and plot it?

Asked by Sotirios
on 26 Dec 2013
Latest activity Commented on by Tarek Salem on 18 Aug 2014
Is it possible to generate surface pareto front for 3 objective functions and plot it? My actual question is that when we have two objectives, the Pareto front is a line in 2D space and when we have three objectives the Pareto front is a surface in 3d space. How we can obtain that surface?

  0 Comments

Sign in to comment.

1 Answer

Answer by Alan Weiss
on 26 Dec 2013
 Accepted Answer

Sure.
function f = simple_multiobj2(x,a,b,c)
x = x(:); a = a(:); b = b(:); c = c(:); % all column vectors
f(1) = sqrt(1+norm(x-a)^2);
f(2) = 0.5*sqrt(1+norm(x-b)^2) + 2;
f(3) = 0.25*sqrt(1+norm(x-c)^2) - 4;
Then run this:
a = zeros(2,1);
b = [2;1];
c = [3;-.5];
fun = @(u)simple_multiobj2(u,a,b,c);
[x,f,ef] = gamultiobj(fun,2)
scatter3(f(:,1),f(:,2),f(:,3),'k.');
If you want to plot an interpolated surface or mesh, use scatteredInterpolant.
Alan Weiss
MATLAB mathematical toolbox documentation

  3 Comments

Thank you very much for your answer. Could you please tell me how to use the scatteredinterpolant in the example you gave to generate a surface plot? My actual question is that when we have two objectives, the Pareto front is a line in 2D space and when we have three objectives the Pareto front is a surface in 3d space. How we can obtain that surface?
F = scatteredInterpolant(f(:,1),f(:,2),f(:,3),'linear','none');
sgr = min(f(:,1)):.01:max(f(:,1));
ygr = min(f(:,2)):.01:max(f(:,2));
[XX,YY] = meshgrid(sgr,ygr);
ZZ = F(XX,YY);
surf(XX,YY,ZZ,'LineStyle','none')
The 'none' argument in scatteredInterpolant removes any extrapolated points, so you just se the true extent of the calculated surface, assuming that linear interpolation shows the truth.
If this sufficiently answers your question, please accept the answer.
Alan Weiss
MATLAB mathematical toolbox documentation
please i i need to plot 4D function, because the algorithm optimize 4 functions at a time

Sign in to comment.