Understanding Matlab multiobjec​tiveoptimi​zation functions

1 view (last 30 days)
I have questions concerning the optimization function "fgoalattain". I use this formulation to find the paretooptimum in a multiobjective optimization problem with 2-3 objectives. The objectives and their weights and goals have following form:
f(1) = ...; weight(1) = 10; goal(1) = 0;
f(2) = ...; weight(2) = 1; goal(2) = 0;
f(3) = ...; weight(3) = 1; goal(3) = 0;
The documentation explains that if a goal for a specific objective is "0", I need to use the option "GoalsExactAchieve". I do not really understand this option. Which value do I need to choose for "GoalsExactAchieve", 1 or 3? Considering it is most important, that f(1) is minimized, I applied a weight of "10" to this objective. But are the weights even active if I use the option "GoalsExactAchieve"?
Alternatively i use the function gamultiobjectiveoptimization. There it is not possible to define weights or goals, why not?
In general, do the objectives need to have the same order in a multiobjectiveoptimization, or does the toolbox normalize the values by itself?
Thanks in advance!

Answers (1)

Alan Weiss
Alan Weiss on 18 Dec 2014
Edited: Alan Weiss on 18 Dec 2014
I think that you have a misunderstanding about what GoalsExactAchieve does. But it is also possible that you have a misunderstanding about what weights do, or what fgoalattain does. So let's start there.
fgoalattain tries to bring all components of your objective function vector F(x) below goals you set. The larger the distance below the goal, the better, if it can get below the goal at all. And the larger a weight is, the more fgoalattain tries to reduce the component with that weight. There is nothing special about a zero goal.
However, you might want to have a component of your objective function be exactly at the goal. In other words, it might be just as bad to be below the goal as it is to be above the goal. In that case, you set the GoalsExactAchieve option. Suppose that you have two components of F(x) that you want to exactly achieve a goal, not be higher or lower. Then arrange your objective function to have those two goals as the first two components of F(x), and set the GoalsExactAchieve option to 2 (2 components).
I know it is a confusing function. But I believe that the documentation explains it fully, so it is worth pondering what exactly the formulation means, to minimize the multiplier gamma. If F(x) can be below the goal, then gamma can be negative. If F(x) cannot be below the goal, the gamma must be positive.
Here is an example showing the effect of the GoalsExactAchieve option.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation

Products

Community Treasure Hunt

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

Start Hunting!