MATLAB Answers


Scaling a vector-valued non-linear function-numerical optimization

Latest activity Commented on by Torsten
on 1 Apr 2016

I am trying to minimize a non-linear vector-valued objective (cost) function in MATLAB wherein one component of the solution vector is widely separated in scale.

As a test case for my code, I tried to minimize a function whose solution I know apriori.The apriori known solution vector is x_min = [175, 164, 854, 3.7e5, 6000]. As you can see, the 4th solution component (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.

I understand that using a diagonal (or close to diagonal) scaling matrix for the objective function can help in finding the minimizing solution , i.e. ideally one must scale the solutions such that the Hessian of the objective function becomes the identity matrix at/near the solution.

But the problem is that the Hessian of a vector-valued function is a higher-dimensional Tensor and not a 2D-matrix. Is there a solution, or any other method for handling this problem ?

  1 Comment

If you know approximately the orders of magnitude by which the solution component in question differs from the other components, just scale the variable in advance.

In the case you describe above, just insert x(4)*1000 instead of x(4) in the objective function.

Best wishes


Sign in to comment.

0 Answers