fmincon in matlab for multi objective

조회 수: 37 (최근 30일)
fatema saba
fatema saba 2014년 7월 19일
댓글: Walter Roberson 2020년 9월 28일
Hello I am a question please
can I use fmincon function for solving multi objective linear programming in Matlab?
I want to create two m files, one of them is as objective function and the other is as constraint function and then I want to use fmincon to solve them.
can I do that? Is it true?

채택된 답변

Dinghuan Zhu
Dinghuan Zhu 2014년 7월 22일
There are several approaches to tackle multi-objective optimization problems. You may refer to the following link for detailed descriptions:
If you are using the first approach "Goal attainment" mentioned in that document, you can definitely use the function "fmincon" to solve the problem as if you are solving any single-objective optimization problems.

추가 답변 (2개)

Mohit  Verma
Mohit Verma 2018년 1월 15일
편집: Mohit Verma 2018년 1월 15일
Hi Dinghuan,
Could you provide sample code that would show how we could do this? How would we do this to incorporate the pareto front, as in this example here:
https://www.mathworks.com/help/optim/ug/generate-and-plot-a-pareto-front.html
Thanks
  댓글 수: 3
Mohit  Verma
Mohit Verma 2018년 1월 15일
편집: Mohit Verma 2018년 1월 15일
Hi Walter,
Thanks for your reply. Can't the pareto front be generated by defining an effective objective function with multiple objectives defined using weights? But the question is how reliable would such a computation be?
In my previous question the example I provided used fgoalattain to generate the pareto front. So I thought we could apply the same approach using fmincon.
Thanks
Walter Roberson
Walter Roberson 2018년 1월 15일
"Can't the pareto front be generated by defining an effective objective function with multiple objectives defined using weights?"
No. Pareto front calculations depend upon the fitness of each objective being available directly. Pareto fronts are not defined by weighted values: they are defined by not making any of the goals larger by changing the locations. A change than makes one goal a million lower but raises another goal by one one-millionth still violates pareto front, but would be treated as an improvement by a weighted system.

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


PkStefan
PkStefan 2020년 8월 21일
This is an old question but up to date for me. So can't you just normalize your objectives to obtain a single objective function and apply fmincon? For Normalization I'd use Min-Max Feature scaling. You could than even add weighing factors:
fun = weight1*norm(obj1)+Weight2*norm(obj2)
min(fun)
However you would need to have the minimum and maximum values of your objectives. Is this a legitimate way for applying fmincon?
Best regards, Stefan
  댓글 수: 3
PkStefan
PkStefan 2020년 9월 28일
Yes I am using this approach for some of my applications. Seems to work just fine for me but calculating the min an max values takes some time, too.
Walter Roberson
Walter Roberson 2020년 9월 28일
In the case of continuous functions defined over bounds, there is the prospect of taking the derivative and solving for zero and substituting those locations into the second derivative to determine whether they are min or max or saddle, and thus hope to establish the range of values that way (remember to evaluate right at the boundaries as well.)
But if you can actually do that for every function and get out numeric locations that are not parameterized by other variables, then you have the full set of locations needed to be examined to find the pareto front, without having to do any further searching.
If you get out solutions that are parameterized by other variables then sometimes you can decide whether you have a max or min (e.g. powers are all even and coefficients are all the same sign. More often you would substitute the parameterized location intothe next equations, work on analyzing the results, do more substitutionss, and so on.
But with nonlinear equations a lot of the time you simply cannot solve the derivative for zero systematically...

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

카테고리

Help CenterFile Exchange에서 Multiobjective Optimization에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by