How to setup gamultiobj to "explore farther" along a specific objective?
Show older comments
Overview: This question deals with a scenario where one of the objectives is "more important" than another, and we want the Pareto front to "mostly minimize" the important objective and have a large variability along the unimportant one.
Background: I am dealing with an optimization problem that consists of one "important" objective, and another "unimportant" one. Initially, it started out as single-objective optimization, but it produced results that "didn't make sense". In response, I've introduced a second objective, so as to keep the first one in check. However, I'm mainly interested in solutions that minimize the original objective. To put this graphically, let's say that this is the current output:

where Objective 1 is the important objective and Objective 2 is the unimportant one. I'm more interested in the vertical region (where Obj1 is minimized) at the expense of the horizontal region. In other words, I'm interested in what is happening for Obj2 < 16.6, but instead I'm seeing Obj2>17, which I don't really care about.
I have a feeling that the optimization options can somehow help in getting the desired result, though playing around with various settings of optimopts(@gamultiobj, ...) (such as ParetoFraction and DistanceMeasureFcn), I couldn't get it to work.
My question is: How to set up the multi-objective GA optimization problem, such that more of the pareto is explored in a specific direction (while sacrificing the resolution and/or the distance along the other direction)? Alternatively, how to have more of the pareto explored in both directions (while sacrificing the resolution).
P.S.
I am aware of the possibility of defining a single objective that is a weighted sum of the present objectives, which would turn this into a question of choosing an appropriate weighting. However, this would be a last resort for me, so I would rather keep it as a multiple-objective problem.
P.S. 2
I am sure that solutions exist in the desired (unexplored) region.
Accepted Answer
More Answers (1)
Maybe redefine Obj2 so that it jumps from 16.6 to infinity,
Obj2 = Obj2-1+1/(Obj2<16.6)
5 Comments
Dev-iL
on 11 Aug 2019
Matt J
on 11 Aug 2019
This is making me wonder, then, why you said you don't like the approach of scalarizing the objectives with different weights and varying the weights so as to sweep across the Pareto front. It seems like exactly the kind of thing that would give control over the Pareto front sampling that you want.
Dev-iL
on 11 Aug 2019
Categories
Find more on Signal Processing Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!