- Scaling of Objectives: Normalize the objectives within the fitness function to ensure they are on a similar scale.
- Tolerance Settings: Adjust "TolFun" and "TolCon" options to be more stringent.
- Re-evaluation of Solutions: Ensure your fitness function is consistent and deterministic.
- Post-Processing: Filter out dominated solutions from the final Pareto set using a custom function.
- Solver Options: Review and set options for "gamultiobj":
gamultiobj does not return a truly nondominated pareto set
조회 수: 2 (최근 30일)
이전 댓글 표시
Hello guys,
I would like to ask for your help understanding an observation that i made with the gamulitobj solver.
I am running an optimization with 10 variables and a two dimensional fitness function. Inside the fitness function the two scores of all individuals are plotted. All options for the solver are on its default values. I do not modify any data by a custom output function. The fitness function is reproducible, no rng is involved.
After the solver finishes, i call the fitness function again to plot the variables of the pareto set returned by the solver. But the set of variables is not truly nondominated compared to other points in that plot. The solver sometimes returns a point, which should have been dominated by another point during optimization.
I can't explain this behavior besides having read mostly all of the docs regarding this solver.
I might want to add that the magnitude of the two scores is quite different, see at the axes below. The plot below shows the central part of the pareto set, the black points are plotted during the iterations and the red diamonds with the call to the fitness function after the solver has finished.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1715761/image.png)
I would highly appreciate if you could give my your thoughts or explanations for this behavior or ideas on how tho get only the truly nondominated points.
댓글 수: 0
답변 (1개)
AKennedy
2024년 7월 29일
It looks like you're issue is with the Pareto front returned by the "gamultiobj" solver in MATLAB. You can try the following:
options = optimoptions('gamultiobj', ...
'PopulationSize', 200, ...
'CrossoverFraction', 0.8, ...
'ParetoFraction', 0.35, ...
'TolFun', 1e-6, ...
'TolCon', 1e-6, ...
'Display', 'iter');
[x, fval] = gamultiobj(@yourFitnessFunction, 10, [], [], [], [], [], [], options);
By following these suggestions, you should be able to get a more accurate and truly non-dominated Pareto front.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Multiobjective Optimization에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!