I am trying to minimize a non-linear vector-valued function in MATLAB. As a test case for my code, I try to minimize a function whose solution I know apriori.

The problem is that one of the solutions is widely distributed in scale. They are [175,164,854,3.7e5,6000];

As you can see, the 3.7e5 has a wide difference in scale with the rest of the solution vector. As a result, despite changing tolerances, algorithms etc., the best that MATLAB can find for my x(4) solution is 5.2e5

Now, I know that using a diagonal (or close to diagonal) scaling can help in finding the minimizing solution. However, from my understanding, the Hessian matrix is needed to obtain the scaling factor, i.e. Ideally I would like to scale the solutions so that the Hessian of the objective function becomes the identity matrix at/near the solution.

But the problem is, the Hessian of a vector-valued function is a Tensor and not a matrix.

Is there a solution, or any other method for handling this problem ?


closed as unclear what you're asking by Anton Menshov Jun 6 at 20:26

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 2
    $\begingroup$ You haven't told us how you are minimizing your vector valued function. Are you using some sort of scalarization? $\endgroup$ – Brian Borchers Mar 31 '16 at 21:00