Skip to main content

Timeline for General question related to BFGS

Current License: CC BY-SA 4.0

12 events
when toggle format what by license comment
Feb 5, 2021 at 21:21 comment added Abdullah Ali Sivas Non-smoothness should be trivial, set $Y_i=Y$ for all $i$ and set $Z_i=Z$ for all $i$. Also let $X_i = X$ for all $i\neq n+1$. Then the function you are interested in reduces to $\sqrt{(X_{n+1}-X)^2} = | X_{n+1}-X |$, which is continuous but not continuously differentiable, hence, nonsmooth.
Feb 4, 2021 at 19:18 comment added Habib I have two questions regarding this matter: 1- How can I prove that this is a non-smooth function? I need a bulletproof claim for this. 2- Can gradient-based algorithms be used to solve non-smooth functions?
Feb 4, 2021 at 18:39 comment added Brian Borchers That's nonsmooth. I would suggest that you create a new questions including this information and ask for suggestions on how to solve the optimization problem.
Feb 4, 2021 at 16:58 comment added Habib That's the original issue. Based on my objective function, I am not so sure if I can use BFGS or any other gradient-based algorithm. Thus, I was trying to see if using BFGS might work. My objective function is the following for a specified n: $$\sum_{i=1}^n \sqrt{(X_{i+1}-X_i)^2+(Y_{i+1}-Y_i)^2+(Z_{i+1}-Z_i)^2}$$
Feb 4, 2021 at 16:48 review Close votes
Feb 23, 2021 at 3:04
Feb 4, 2021 at 16:35 comment added Brian Borchers Actually, it's quite likely that you're not at a minimum- the error message shows a clear failure. Rather, there could be an error in your implementation of the gradient, or you could be dealing with an objective function that doesn't satisfy the smoothness requirements of the method. You should check your gradient routine for errors. If you could provide more information about your objective function we might be able to provide more help.
Feb 4, 2021 at 16:32 comment added Brian Borchers Does this answer your question? scipy.optimize.fmin_bfgs: "Desired error not necessarily achieved due to precision loss"
Feb 4, 2021 at 16:10 history edited Habib CC BY-SA 4.0
added 89 characters in body
Feb 4, 2021 at 16:07 comment added Habib I would also like to add that I received this message when the optimization was terminated: "Desired error not necessarily achieved due to precision loss."
Feb 4, 2021 at 16:04 comment added Habib I am not sure how to check using python but I am assuming that yes the tolerance criteria was satisfied. However, I cannot comprehend how the algorithm evaluated the objective function 76 times in two iterations. Shouldn't both occur almost equally? Since the main loop of the BFGS algorithm is to iterate from k=0 to k=n until the tolerance is satisfied.
Feb 4, 2021 at 15:51 comment added Brian Borchers If the algorithm was started very close to a local minimum, then it could very easily have converged in two iterations. Have you checked whether the norm of the gradient satisfies the tolerance at the point returned by the routine?
Feb 4, 2021 at 12:59 history asked Habib CC BY-SA 4.0