{"action":"created","issue":{"url":"https://api.github.com/repos/scipy/scipy/issues/5318","labels_url":"https://api.github.com/repos/scipy/scipy/issues/5318/labels{/name}","comments_url":"https://api.github.com/repos/scipy/scipy/issues/5318/comments","events_url":"https://api.github.com/repos/scipy/scipy/issues/5318/events","html_url":"https://github.com/scipy/scipy/pull/5318","id":110062213,"number":5318,"title":"Added the BFGS(Hess) Algorithm for minimization independent of target function.","user":{"login":"hherbol","id":6378906,"avatar_url":"https://avatars.githubusercontent.com/u/6378906?v=3","gravatar_id":"","url":"https://api.github.com/users/hherbol","html_url":"https://github.com/hherbol","followers_url":"https://api.github.com/users/hherbol/followers","following_url":"https://api.github.com/users/hherbol/following{/other_user}","gists_url":"https://api.github.com/users/hherbol/gists{/gist_id}","starred_url":"https://api.github.com/users/hherbol/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hherbol/subscriptions","organizations_url":"https://api.github.com/users/hherbol/orgs","repos_url":"https://api.github.com/users/hherbol/repos","events_url":"https://api.github.com/users/hherbol/events{/privacy}","received_events_url":"https://api.github.com/users/hherbol/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":10,"created_at":"2015-10-06T17:45:17Z","updated_at":"2015-10-07T18:17:05Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/scipy/scipy/pulls/5318","html_url":"https://github.com/scipy/scipy/pull/5318","diff_url":"https://github.com/scipy/scipy/pull/5318.diff","patch_url":"https://github.com/scipy/scipy/pull/5318.patch"},"body":"This implements the BFGS(Hess) algorithm for gradient based minimization of a function independent of the target function.  This is an improvement to the existing code which requires a well-defined target function for minimization through using the line-search method.\r\n\r\nBroyden-Fletcher-Goldfarb-Shanno (BFGS) is a popular algorithm for minimization optimization; however, it is typically instituted with a line search for the step size alpha.  This is not always possible (one example being when Nudged Elastic Band simulations are run in which the target function is a not well-defined hybrid of two independent calculations) and thus, the BFGS(Hess) simply assumes a changing alpha that is updated by a beta value whenever optimization oversteps the minimum."},"comment":{"url":"https://api.github.com/repos/scipy/scipy/issues/comments/146282959","html_url":"https://github.com/scipy/scipy/pull/5318#issuecomment-146282959","issue_url":"https://api.github.com/repos/scipy/scipy/issues/5318","id":146282959,"user":{"login":"hherbol","id":6378906,"avatar_url":"https://avatars.githubusercontent.com/u/6378906?v=3","gravatar_id":"","url":"https://api.github.com/users/hherbol","html_url":"https://github.com/hherbol","followers_url":"https://api.github.com/users/hherbol/followers","following_url":"https://api.github.com/users/hherbol/following{/other_user}","gists_url":"https://api.github.com/users/hherbol/gists{/gist_id}","starred_url":"https://api.github.com/users/hherbol/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hherbol/subscriptions","organizations_url":"https://api.github.com/users/hherbol/orgs","repos_url":"https://api.github.com/users/hherbol/repos","events_url":"https://api.github.com/users/hherbol/events{/privacy}","received_events_url":"https://api.github.com/users/hherbol/received_events","type":"User","site_admin":false},"created_at":"2015-10-07T18:17:05Z","updated_at":"2015-10-07T18:17:05Z","body":"@argriffing I don't quite understand what you mean by \"abuse the line-search step of BFGS as the inner stage of a two-stage minimization\".  The normal BFGS method in scipy uses a wolfe line search; however, without a well-defined objective function you cannot use this method.  The implementation of the BFGS(Hess) would normally run the BFGS method with a constant alpha; however, if running with a very small step size then it would take forever and potentially skip the minimum.  The code I committed takes the BFGS and instead of using the wolfe line search, allows the user to either (a) use the BFGS(Hess) if f=None or (b) use the backtracking linesearch in which the step size is adjusted whenever f(x_k+1) > f(x_k).  This has proven applicable to one situation (specifically the NEB I had previously mentioned) and I believe may be applicable to other situations."}}