# Pareto frontier plot error

4 views (last 30 days)
Briana Canet on 18 Sep 2023
Commented: Torsten on 18 Sep 2023
I am trying to plot the Pareto frontiers for...
Problem A
Minimize f1(x1,x2)=x2*sin(x1)
Minimize f2(x1,x2)=x1+x2
and
Problem B
Minimize f1(x1,x2)=x1^4+(4*x1*x2)
Minimize f2(x1,x2)=x1+(2*x2^2)
I am not sure when a dot/period is needed in f1 and f2 in Lines 2 and 3 for Problem A and B. I am only getting one point on (0,0) for each problem now.
Problem A:
% Functions
f1 = @(x1, x2) x2.*sin(x1);
f2 = @(x1, x2) x1+x2;
% Grid of values
[x1, x2] = meshgrid(0:0.01:1, 0:0.01:1);
% Calculate the objective functions
F1 = f1(x1, x2);
F2 = f2(x1, x2);
% Weighted average method
weights = 0:0.01:1;
paretoFronts = zeros(length(weights), 2);
for i = 1:length(weights)
l = weights(i);
% Weighted sum
F = l*F1 + (1-l)*F2;
[minF, idx] = min(F(:));
paretoFronts(i, :) = [x1(idx), x2(idx)];
end
figure;
plot(paretoFronts(:,1), paretoFronts(:,2), 'o-');
xlabel('x1');
ylabel('x2');
title('Problem 1ii');
grid on; Problem B:
% Functions
f1 = @(x1, x2) x1.^4+(4*x1.*x2);
f2 = @(x1, x2) x1+(2*x2.^2);
% Grid of values
[x1, x2] = meshgrid(0:0.01:1, 0:0.01:1);
% Calculate the objective functions
F1 = f1(x1, x2);
F2 = f2(x1, x2);
% Weighted average method
weights = -1:0.01:1;
paretoFronts = zeros(length(weights), 2);
for i = 1:length(weights)
l = weights(i);
% Weighted sum
F = l*F1 + (1-l)*F2;
[minF, idx] = min(F(:));
paretoFronts(i, :) = [x1(idx), x2(idx)];
end
figure;
plot(paretoFronts(:,1), paretoFronts(:,2), 'o-');
xlabel('x1');
ylabel('x2');
title('Problem 1ii');
grid on; Torsten on 18 Sep 2023
Moved: Torsten on 18 Sep 2023
In both examples, the two objective functions are not "competitive" since both have (0/0) as optimum combination for x1 and x2 in the range 0 <= x1 <= 1 and 0 <= x2 <= 1. These are bad examples for pareto optimum problems.
##### 2 CommentsShow 1 older commentHide 1 older comment
Torsten on 18 Sep 2023
Yes. As long as x1 and x2 have the same size (which is guaranteed since you generate them using "meshgrid"), the "."'s are appropriately placed.