Optimizing function of functions
Mostrar comentarios más antiguos
I am trying to optimize two functions
and
where. The function
is a subfunction of
means the results of
are input to
.
is a subfunction of
means the results of
are input to
.I am curious whether it is better to optimize a sum of the functions e.g.
or I can co-optimize the functions as
additionally depends on w. I am inclined to co-optimization but not sure if optimizing the sum of functions is a better or mandatory approach for this problem. I would appreciate any guidance, comments or helpful literature references.
additionally depends on w. I am inclined to co-optimization but not sure if optimizing the sum of functions is a better or mandatory approach for this problem. I would appreciate any guidance, comments or helpful literature references.5 comentarios
Walter Roberson
el 16 de Mzo. de 2020
What does it mean to you to optimize two functions at the same time?
You talk about max, so it sounds like you want to maximize something.
You propose maximizing the sum, but you are not certain if that is what you want to do.
Maximizing the sum is something that can be done, but maximizing the sum is not the same as maximizing either one of the functions.
For example, you could create f(x,y) and E(x,y,p(w,x,y)) such that E ignored its third parameter and calculated the exact negative of f(x,y) . The sum of the two functions would be 0 for all x, y, but it would not be possible to simultaneously maximize f(x,y) and E(x,y,p(w,x,y)) because they go against each other.
Saifullah Khalid
el 16 de Mzo. de 2020
Walter Roberson
el 16 de Mzo. de 2020
Earlier you talked about maximizing sum f+E but here you talk about maximizing difference f-E . Typically expense would be stated as positive, so f-E would make the most sense. To maxize that you would want to maximize f while minimizing E. With gamultiobj, you maximize by minimizing the negative, so you can
gamultiobj(@(xyw) [-f(xyw(1),xyw(2)), E(xyw(1),xyw(2),p(xyw(1),xyw(2),xyw(3))))], ...)
This would find sets of values xyw such that the gradient of [-f, E] is locally 0
Or you could use a minimzer on
@(xyw) -f(xyw(1),xyw(2)) + E(xyw(1),xyw(2),p(xyw(1),xyw(2),xyw(3))))
gamultiobj can potentially give you multiple results; a minimizer would give you a single result. Minimizers tend to get stuck in local minima, especially if you use fmincon(), less so (but still a problem) with fminsearch(), and less yet with ga() . But ga() is not efficient, and fminsearch() does not permit constraints.
Why would you prefer one over the other? Well, getting the pareto front can tell you about multiple configurations that are each optimal, permitting you to choose the best one for your resources. A minimizer is not going to care about small issues like the optimal demanding more energy per second than the Sun puts out in a year -- not unless you put in constraints. fmincon() is the best organized for being rigourous about constriants.
Saifullah Khalid
el 17 de Mzo. de 2020
Walter Roberson
el 17 de Mzo. de 2020
It doesn't matter. All gamultiobj cares about is that it can place a call through the function handle and get back a vector of results. It does not care how many function calls that uses.
Consider for example that
F = @(X, Y, W) X.^2 + Y.^2 + (X-Y-W).^2
can be rewritten as
P = @(X,Y,W) (X-Y-W).^2
F = @(X,Y,W) X.^2 + Y.^2 + P(X, Y, W)
which can in turn be rewritten as
F = @(X, Y, W, Q) X.^2 + Y.^2 + Q(X, Y, W)
Called with (x, y, w, P)
obviously this is just an implementation detail as far as the mathematics is concerned.
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Get Started with Optimization Toolbox en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

