surrogateopt multi-objective function output

조회 수: 5 (최근 30일)
Max Fawcett
Max Fawcett 2023년 3월 13일
답변: Alan Weiss 2023년 3월 13일
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
Mario Malic
Mario Malic 2023년 3월 13일
The question is unclear.
What is the output (those two elements)? Are those the optimization variables?
If not, are you trying to minimize those elements? Are you trying to maximize them? Do you care only about the first one? Is the second element much more important than the first one?
scalar_value = vec(1) + vec(2); % or something appropriate
Max Fawcett
Max Fawcett 2023년 3월 13일
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]

댓글을 달려면 로그인하십시오.

답변 (1개)

Alan Weiss
Alan Weiss 2023년 3월 13일
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

카테고리

Help CenterFile Exchange에서 Solver Outputs and Iterative Display에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by