From: Andrey Orlov on 8 Apr 2010 13:17 Hello, I need to maximize a vector of 1D scalar functions (so to get a vector of variables that maximize corresponding elements of this vector of functions). As far as I know /fminbnd/ can only work with scalar functions. So, what's the possible solution to my problem?
From: Andrey Orlov on 8 Apr 2010 13:49 I mean, I've got a vector-function of one variable: F(x) = (f1(x), ..., fn(x))' where x is a real number. My problem is that I need to attain (x1, ..., xn)' where xj is a maximum of fj(x) over some interval (a,b).
From: Andrey Orlov on 8 Apr 2010 14:26 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....
From: Andrey Orlov on 8 Apr 2010 14:40 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....
From: James Allison on 8 Apr 2010 14:47
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 maximum. 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: http://en.wikipedia.org/wiki/Pareto_efficiency You can then visualize and explore the tradeoffs present in the multiobjective optimization problem, and choose a solution that best meets your needs. -James 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.... |