trying to optimize three functions simultaneously

15 views (last 30 days)
I would like to know how I can optimize three functions simultaneously, time, cost, and quality while each of them is non-linear. I have to minimize cost and time while maximizing quality. Thanks in advance.

Accepted Answer

John D'Errico
John D'Errico on 10 Mar 2018
Edited: John D'Errico on 10 Mar 2018
You cannot do it in general, to get a simultaneous optimum, so a point that is optimum for all three at once.
However, if you are willing to accept tradeoffs between these goals, then you can compose a single function that adds the three pieces, usually as some weighted combination. By allowing tradeoffs between the objectives, then you can arrive at a solution that will probably be truly optimal for any of them individually, but still the best overall solution.
Note that if the various objectives have completely different units, it makes no sense to just add them, since one will probably be much larger than the others, and will dominate the result. Then you need to form a weighted sum, with weights that cancel out the different units, making them all the same relative size. Now each is equally important in the result.
Once you have such a weighted linear combination of the three, then any optimizer will suffice to solve it. Or, you can use the optimization toolbox function fgoalattain, which helps to make this all a bit easier, since it is expressly written to solve multi-objective goal attainment problems.
As always with any optimization, it is important to use good starting values. This would seem especially true in multi-criteria problems, since each sub-objective will probably be maximal in a different location. That may create local optima, that are not the globally best solution.
In general, this area of optimization is called multi-criteria or multi-objective optimization.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!