surrogateopt multi-objective function output

7 views (last 30 days)
I have a function in a .p file called AuxModel.p. To call the function it it simply @(x) AuxModel(x). I need to implement a surrogate based strategy to find a good approximation of the entrie pareto front. The problem I am having is using surrogateopt, the output of the function must be a scalar value, while AuxModel returns a output as a vector with two elements. Is is possible to create a wrapper function so that surrogateopt can work with the AuxModel function? I did something similiar previously to find the global minimum of each function value. I cannot use gamultiobj, as I used this for a previous question in the assignment and the strategy must be surrogate based.
% Define the wrapper function
function scalar_value = AuxModelWrapper(x)
% Call the original function
vec = AuxModel(x);
% Compute a scalar value from the output
scalar_value = vec(1);
end
  2 Comments
Max Fawcett
Max Fawcett on 13 Mar 2023
I am trying to find the pareto front of the minimum value for both elements of the function output. Both functions take as input a design vector bounded as:
  • Lower bounds LB = [-10, -50, -200, -1000, -5000]
  • Upper bounds UB = [10, 50, 200, 1000, 5000]

Sign in to comment.

Answers (1)

Alan Weiss
Alan Weiss on 13 Mar 2023
I do not understand why you want to use surrogateopt to help solve a multiobjective problem. I think that gamultiobj or paretosearch would be more efficient.
But, if you insist, you can use a single-objective solver to create a Pareto front. See Generate and Plot Pareto Front. You can easily use surrogateopt instead of fgoalattain. Basically, you solve a series of single-objective problems of the form
where α goes from 0 through 1.
Alan Weiss
MATLAB mathematical toolbox documentation

Community Treasure Hunt

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

Start Hunting!