Problem (this is not a "homework" problem but a "minimum working example" of the problem that I think I have. My problem can only be solved using least-square-ish approaches):
Using
f(
x) = sin(
x), find the solution for
f(
x) = 0 using the Levenberg-Marquardt (LM) argorithm that is closest to
x = 0.9 * (pi/2) as initial guess. Hence, a local optimum is searched for.
The expected solution is
x = 0. However, the alglib implementation of LM yields -18.85, which numerically represents -6 * pi.
Further, assume that:
- The initial guess cannot be improved, i.e. it cannot be brought closer to the expected solution.
Questions:
- In this problem related with the fact that f is locally concave around the initial guess?
- What (alglib) (optimization) procedure is recommended to obtain the expected solution?
<update>:
The following can help to obtain the correct solution:
- use minlmsetbc(minlmstate state, double[] bndl, double[] bndu) if the bounds of x are known
- use minlmsetstpmax(minlmstate state, double stpmax); to reduce the step size, possibly at the cost of performance
- instead of LM, use a trust-region method (?)
But what if bounds and/or step size information is not available?
====
Many thanks in advance!