From: James Allison <>
Newsgroups: comp.soft-sys.matlab
Subject: Re: Optmizaing a vector of 1-D functions
Date: Thu, 08 Apr 2010 14:47:47 -0400
Organization: The MathWorks, Inc.
Lines: 35
Message-ID: <hpl8cj$qs0$>
References: <hpl336$p7k$> <hpl46p$ffa$> <hpl4ui$s0u$> <hpl5t1$efe$> <hpl73t$5u3$>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Trace: 1270752467 27520 (8 Apr 2010 18:47:47 GMT)
NNTP-Posting-Date: Thu, 8 Apr 2010 18:47:47 +0000 (UTC)
User-Agent: Thunderbird (Macintosh/20090302)
In-Reply-To: <hpl73t$5u3$>
Xref: comp.soft-sys.matlab:624776

This is a multiobjective optimization problem, which cannot be solved 
directly by any MATLAB optimization function except gamultiobj. You 
either need to aggregate the components of F into a single objective 
function (such as least squares, a weighted sum, etc.), or you need to 
use a multiobjective optimization technique.

The functions you described are simple enough that you should be able to 
derive an analytical solution (assuming your aggregation function is not 
too complex) by differentiating and setting to zero (help roots) to find 
stationary points. You will probably have more than one zero. Check the 
sign of the second derivative to confirm whether you have a minimum or 

One simpler multiobjective optimization technique is to choose one 
function as the objective, and the other(s) as constraints(s). You then 
vary the limits of the constraint(s) parametrically and solve each 
version of the problem (with something like fmincon, or other 
constrained optimization functions if appropriate such as quad prog) to 
obtain a set of solutions known as the Pareto set or Pareto front:

You can then visualize and explore the tradeoffs present in the 
multiobjective optimization problem, and choose a solution that best 
meets your needs.


Andrey Orlov wrote:
> For example, F(x) = (f1(x), f2(x))', f1(x) = x^4 - x^3 + 4, f2(x) = 
> x^8-x^10+x^5+100, (a,b) = (-30,30). I want to avoid using iterations if 
> it's possible.
> For my real computation number of those functions fj(x) equals 400....