1
$\begingroup$

I am currently encounterring a optimization problem. The goal is optimize an objective function A and B at the same time. But the problem is that optmizing A will almost always tradoff with B, such that maximize A will somewhat minimize B and wise-versa. So that both A and B can't be optimize both at the same time.

I have browsed around the web, one good solution to my current situation is to do "weighted optmization", such that introudcing an additional parameter $w$.

The optimization problem now becomes weighted importance of the two. So now, the new objective function is :

$w*A+(1-w)*B$

With this, the goal now is the maximize above.

But I found the above equation is extremely difficult to solve.(Running CAD tool for several hours and it can't give anything, and I try other method , and still nothing works). I am wondering if there is better "weighted optimization" format (for example, above is the sum of the two), so that I can try and see if I can get something?


Update: sorry, I know this is a very general problem. But I am new to this area. If you guys can just give me a keyword to google, or point me to the right direction, that is good enough.


Update:

Below is the image of the problem: as you can see A is parabolic, B is like a staight line. I am plotting the case when the weighting factor $w=0.7$ enter image description here

$\endgroup$
  • 1
    $\begingroup$ Can you provide (or at least sketch) what your $A$ and $B$ are in your question? $\endgroup$ – Semiclassical Jul 22 '14 at 4:14
  • $\begingroup$ ok, posted. please see the update $\endgroup$ – kou Jul 22 '14 at 4:26
  • 1
    $\begingroup$ Can you state your optimization problem explicitly? How many unknowns are there? For the function in the given image, which is a function of a single variable, a maximizer could be found extremely quickly using gradient descent or Newton's method. $\endgroup$ – littleO Jul 22 '14 at 4:29
  • 1
    $\begingroup$ Ah I see. Can you evaluate the derivative or the second derivative of the function you're maximizing? $\endgroup$ – littleO Jul 22 '14 at 4:34
  • 1
    $\begingroup$ You could try either the gradient ascent iteration $x_{n+1} = x_n + t f'(x_n)$ (where $t$ is some fixed step size you choose yourself), or the Newton's method iteration $x_{n+1} = x_n - f'(x_n)/f''(x_n)$. You have to choose a starting point $x_0$ yourself. I think some simple method like that might converge extremely quickly, based on the picture shown. You could probably maximize with respect to all five variables simultaneously if you wanted to. If you can evaluate $f'$ and $f''$, I'd try Newton's method. $\endgroup$ – littleO Jul 22 '14 at 4:45
3
$\begingroup$

Both your objective functions seem convex in the decision variable. So most problems that arise from multiobjective paradigms should be convex quadratic optimization problem, for which efficient solvers exist. If your problem is in 1 dimension with explicit bounds, you can use simple iterations such as gradient descent or Newton's like littleO mentioned.

I think the issue is going to be finding the right way to scalarize your multiobjective problem into a single objective one. You'll have to decide if you want to evaluate the entire Pareto optimal set, or decide on a set of weights and optimize the weighted objective function, or perhaps impose a constraint on one objective function while optimizing the other. This is usually highly context dependent.

Hope that helps.

$\endgroup$
  • $\begingroup$ ps: If you don't want to write your own iterative scheme, you could easily solve this in MATLAB using quadprog from the optimization toolbox. There are also open source options. $\endgroup$ – wonko Jul 22 '14 at 18:48
1
$\begingroup$

Do A and B have the same unit, like monetary unit, manpower or volume ? If it is like this, then you can just optimize $f(\vec x)=A(\vec x)+B( \vec x)$.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.