{"id":17113102,"url":"https://github.com/emmt/algorithms","last_synced_at":"2025-04-13T02:32:51.893Z","repository":{"id":30917215,"uuid":"34475083","full_name":"emmt/Algorithms","owner":"emmt","description":"Various useful numerical algorithms which can be used almost standalone.","archived":false,"fork":false,"pushed_at":"2022-03-15T07:39:08.000Z","size":604,"stargazers_count":43,"open_issues_count":0,"forks_count":15,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-26T20:55:38.517Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emmt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-04-23T18:48:39.000Z","updated_at":"2025-03-23T15:52:27.000Z","dependencies_parsed_at":"2022-09-03T22:11:28.172Z","dependency_job_id":null,"html_url":"https://github.com/emmt/Algorithms","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FAlgorithms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FAlgorithms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FAlgorithms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FAlgorithms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emmt","download_url":"https://codeload.github.com/emmt/Algorithms/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248657824,"owners_count":21140842,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T17:03:08.474Z","updated_at":"2025-04-13T02:32:50.888Z","avatar_url":"https://github.com/emmt.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Algorithms\n\nThis repository is for various useful numerical algorithms which can be\nused almost standalone.\n\n\n## COBYLA\n\nDirectory [`cobyla`](cobyla) contains a C version of Mike Powell's COBYLA\n(for **C**onstrained **O**ptimization **BY** **L**inear **A**pproximations)\nalgorithm for minimizing a function of many variables.  The method is\n*derivatives free* (only the function values are needed) and accounts for\nconstraints on the variables.  The algorithm is described in:\n\n\u003e M.J.D. Powell, \"A direct search optimization method that models the\n\u003e objective and constraint functions by linear interpolation,\" in Advances\n\u003e in Optimization and Numerical Analysis Mathematics and Its Applications,\n\u003e vol. 275 (eds. Susana Gomez and Jean-Pierre Hennart), Kluwer Academic\n\u003e Publishers, pp. 51-67 (1994).\n\nA [Yorick](http://github.com/LLNL/yorick/) interface is also provided in\ndirectory [`cobyla/yorick`](./cobyla/yorick).\n\n\n## NEWUOA\n\nDirectory [`newuoa`](newuoa) provides a C implementation of Mike Powell's\nNEWUOA algorithm for minimizing a function of many variables.  The method\nis *derivatives free* (only the function values are needed) and accounts\nfor bound constraints on the variables.  The algorithm is described in:\n\n\u003e M.J.D. Powell, \"The NEWUOA software for unconstrained minimization\n\u003e without derivatives\", in Large-Scale Nonlinear Optimization, editors\n\u003e G. Di Pillo and M. Roma, Springer (2006), pages 255-297.\n\nNEWUOA builds a quadratic model of the objective function from much less\nthan `(N+1)(N+2)/2` values of the function (with `N` the number of\nvariables).  The recommended number of points for building the quadratic\nmodel is `2*N+1`.  For smooth objective functions, NEWUOA is expected to be\nmore efficient than COBYLA (which exploits a more simple linear model but\nimplements arbitrary inequality constraints while NEWUOA is unconstrained).\nIf you have bound constraints, you may consider using BOBYQA instead.\n\nA [Yorick](http://github.com/LLNL/yorick/) interface is also provided in\ndirectory [`newuoa/yorick`](./newuoa/yorick).\n\n\n## BOBYQA\n\nDirectory [`bobyqa`](bobyqa) provides a C implementation of Mike Powell's\nBOBYQA (for **B**ound constrained **O**ptimization **BY** **Q**uadratic\n**A**pproximations) algorithm for minimizing a function of many variables.\nThe method is *derivatives free* (only the function values are needed) and\naccounts for bound constraints on the variables.  The algorithm is\ndescribed in:\n\n\u003e M.J.D. Powell, \"The BOBYQA Algorithm for Bound Constrained Optimization\n\u003e Without Derivatives.\"  Technical report, Department of Applied\n\u003e Mathematics and Theoretical Physics, University of Cambridge (2009).\n\nBOBYQA builds a quadratic model of the objective function from much less\nthan `(N+1)(N+2)/2` values of the function (with `N` the number of\nvariables).  The recommended number of points for building the quadratic\nmodel is `2*N+1`.  For smooth objective functions, BOBYQA is expected to be\nmore efficient than COBYLA (which exploits a more simple linear model but\nimplements arbitrary inequality constraints).\n\n\n## TOLMIN\n\nDirectory [`tolmin/src`](tolmin/src) provides a C implementation of Mike\nPowell's TOLMIN algorithm for minimizing a function of many variables subject\nto linear and bound constraints.  The algorithm is described in:\n\n\u003e M.J.D. Powell, \"A tolerant algorithm for linearly constrained optimization\n\u003e calculations\", Math. Programming B, Vol. 45, pp. 547-566 (1989).\n\nThe present code is based on the original FORTRAN version written by Mike\nPowell who released his code under the GNU Lesser General Public License.  His\noriginal code is available at\n[CCPForge](https://ccpforge.cse.rl.ac.uk/gf/project/powell/).\n\n\n## LINCOA\n\nDirectory [`lincoa/src`](lincoa/src) provides a C implementation of Mike\nPowell's LINCOA algorithm for minimizing a function of many variables subject\nto linear constraints.  The algorithm is described in:\n\n\u003e M.J.D. Powell, \"On fast trust region methods for quadratic models with linear\n\u003e constraints\", Report of the Department of Applied Mathematics and Theoretical\n\u003e Physics, Cambridge University, DAMTP 2014/NA02 (2014).\n\nThe present code is based on the original FORTRAN version written by Mike\nPowell who released his code under the GNU Lesser General Public License.  His\noriginal code is available at\n[CCPForge](https://ccpforge.cse.rl.ac.uk/gf/project/powell/).\n\n\n## L-BFGS-B\n\nL-BFGS-B (for *Limited memory BFGS method with Bounds*) is an algorithm by\nR.H. Byrd, P. Lu, J. Nocedal and C. Zhu (see references below) to minimize\na smooth function of many variables with simple bound constraints.  The\nmethod requires the computation of the function and its gradient.  It exploits\na limited memory approximation of the function Hessian with BFGS updates.\nIt may be used to solve large scale problems.\n\nDirectory [`lbfgsb`](./lbfgsb) contains original code of L-BFGS-B with\nsimple C and Yorick wrapper code to use L-BFGS-B in these languages.\n\nThe L-BFGS-B algorithm is described in:\n\n1. R.H. Byrd, P. Lu, J. Nocedal and C. Zhu, *A limited memory algorithm for\n   bound constrained optimization*, SIAM J. Scientific Computing 16 (1995),\n   no. 5, pp. 1190--1208.\n\n2. C. Zhu, R.H. Byrd, P. Lu, J. Nocedal, *L-BFGS-B: a limited memory\n   FORTRAN code for solving bound constrained optimization problems*,\n   Tech. Report, NAM-11, EECS Department, Northwestern University, 1994.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femmt%2Falgorithms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femmt%2Falgorithms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femmt%2Falgorithms/lists"}