Clear Filters
Clear Filters

Pareto frontier plot error

16 views (last 30 days)
Briana Canet
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;

Answers (1)

Torsten
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 Comments
Briana Canet
Briana Canet on 18 Sep 2023
Although it's not the best example, are the functions f1 anf f2 written correctly with appropriate placement of "."?
Torsten
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.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!