# surrogateopt multi-objective function output

7 views (last 30 days)
Max Fawcett on 13 Mar 2023
Answered: Alan Weiss on 13 Mar 2023
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 CommentsShow 1 older commentHide 1 older comment
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]

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