{"id":17113012,"url":"https://github.com/emmt/optimpack","last_synced_at":"2025-04-13T02:33:03.841Z","repository":{"id":23051752,"uuid":"26404933","full_name":"emmt/OptimPack","owner":"emmt","description":"OptimPack is a library for large optimization problems.","archived":false,"fork":false,"pushed_at":"2025-03-20T16:04:02.000Z","size":1412,"stargazers_count":37,"open_issues_count":0,"forks_count":5,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-20T16:42:02.591Z","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":"2014-11-09T18:36:32.000Z","updated_at":"2025-03-20T15:50:17.000Z","dependencies_parsed_at":"2022-08-21T18:30:49.259Z","dependency_job_id":null,"html_url":"https://github.com/emmt/OptimPack","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FOptimPack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FOptimPack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FOptimPack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emmt%2FOptimPack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emmt","download_url":"https://codeload.github.com/emmt/OptimPack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248657830,"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:02:18.618Z","updated_at":"2025-04-13T02:33:03.834Z","avatar_url":"https://github.com/emmt.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/emmt/OptimPack.svg?branch=master)](https://travis-ci.org/emmt/OptimPack)\n\n# OptimPack (version 3.3.1)\n\nThis is `OptimPack`, a C library for solving optimization problems. The library is mostly\ntargeted at very large problems (*e.g.* as the ones encountered in image restoration) but\nalso provide routines for problems of smaller size.\n\nThis document provides a general overview of `OptimPack`, for more specific information,\nsee:\n\n- [Software installation.](./doc/INSTALL.md)\n- [Developer notes.](./doc/NOTES.md)\n- [Software changes and history.](./doc/CHANGES.md)\n- [Solving large scale smooth problems.](./doc/LARGE_SCALE.md)\n\nMost of the documentation is in the header files, *e.g.*\n[src/optimpack.h](src/optimpack.h), in Doxygen format.\n\n\n## Large scale problems\n\nFor large scale problems involving millions of variables (or even more), `OptimPack`\nprovides:\n\n- several non-linear conjugate gradient (NLCG) methods (see refs. [1-3]);\n\n- limited memory variable metric (LBFGS, see Ref. [4]) possibly with bound constraints\n  and/or preconditioning (VMLMB, see Ref. [5], or BLMVM, see Ref. [6]);\n\n- inexact monotone and nonmonotone line searches (see Ref. [7,8]);\n\n- linear conjugate gradients [1].\n\nThe large scale optimizers of the `OptimPack` library can work with the unknowns stored in\nalmost any form (provided a minimal set of functions to manipulate them are implemented).\nThis feature may be used to exploit hardware acceleration, multi-threading or to\ndistribute the storage and computation across multiple machines.\n\nSee [Solving large scale smooth problems](./doc/LARGE_SCALE.md) for examples\nand more information about using Optimpack to solve large scale problems.\n\n\n## Problems of small to moderate size\n\nFor problems of small to moderate size, `OptimPack` provides:\n\n- Moré \u0026 Sorensen method to compute a trust region step (see Ref. [13]);\n\n- Mike Powell's **COBYLA** (see Ref. [10]), **NEWUOA** (see Ref. [11]), and **BOBYQA**\n  (see Ref. [12]) algorithms for minimizing a function of many variables. These methods\n  are *derivatives free* (only the function values are needed). **NEWUOA** is for\n  unconstrained optimization. **COBYLA** accounts for general inequality constraints.\n  **BOBYQA** accounts for bound constraints on the variables.\n\n- Brent's method for the minimization of an univariate function (see Ref. [14]).\n\n\n## OptimPack bindings\n\n`OptimPack` library is written in C but, in order to make embedding OptimPack into another\nlanguage as easy as possible, most routines use **reverse communication**: all local\nvariables needed by the optimizers get saved into workspaces created by the library and\nthe optimizers never directly call the function to optimize.\n\nThe following language bindings allow `OptimPack` to be used in other programming languages:\n\n* Directory [yorick](./yorick) contains an implementation of `OptimPack` support in\n  [Yorick](https://github.com/LLNL/yorick).\n\n* The [OptimPack.jl](https://github.com/emmt/OptimPack.jl) project implements `OptimPack`\n  support for [Julia](http://julialang.org/).\n\n* [OptimPackNextGen.jl](https://github.com/emmt/OptimPackNextGen.jl) is a new project to\n  provide the same features as `OptimPack` for [Julia](http://julialang.org/) but with\n  most code written in pure Julia. For now, pure Julia version of the methods devoted to\n  large scale problems are available. To use Powell algorithms (devoted to moderate size\n  problems) the dynamic libraries of `OptimPack` are still needed.\n\n* The [TiPi](https://github.com/emmt/TiPi) project provides a framework for solving\n  inverse image reconstruction problems in **Java**. The optimization package of `TiPi` is\n  a Java version of the `OptimPack` library.\n\n\n## References\n\n1. M.R. Hestenes \u0026 E. Stiefel, \"*Methods of Conjugate Gradients for Solving Linear\n   Systems*,\" Journal of Research of the National Bureau of Standards 49, pp. 409-436\n   (1952).\n\n2. W.W. Hager \u0026 H. Zhang, \"*A survey of nonlinear conjugate gradient methods*,\" Pacific\n   Journal of Optimization, Vol. 2, pp. 35-58 (2006).\n\n3. W.W. Hager \u0026 H. Zhang, \"*A New Conjugate Gradient Method with Guaranteed Descent and an\n   Efficient Line Search*,\" SIAM J. Optim., Vol. 16, pp. 170-192 (2005).\n\n4. D. Liu and J. Nocedal, \"*On the limited memory BFGS method for large scale\n   optimization*\", Mathematical Programming B **45**, 503-528 (1989).\n\n5. É. Thiébaut, \"*Optimization issues in blind deconvolution algorithms*,\" in Astronomical\n   Data Analysis II, SPIE Proc. **4847**, 174-183 (2002).\n\n6. S.J. Benson \u0026 J.J. Moré, \"*A limited memory variable metric method in subspaces and\n   bound constrained optimization problems*\", in Subspaces and Bound Constrained\n   Optimization Problems, (2001).\n\n7. E.G. Birgin, J.M. Martínez \u0026 M. Raydan, \"*Nonmonotone Spectral Projected Gradient\n   Methods on Convex Sets*,\" SIAM J. Optim. **10**, 1196-1211 (2000).\n\n8. Jorge J. Moré and David J. Thuente, \"*Line search algorithms with guaranteed sufficient\n   decrease*\" in ACM Transactions on Mathematical Software (TOMS) Volume 20, Issue 3,\n   Pages 286-307 (1994).\n\n9. T. Steihaug, \"*The conjugate gradient method and trust regions in large scale\n   optimization*\", SIAM Journal on Numerical Analysis, vol. **20**, pp. 626-637 (1983).\n\n10. M.J.D. Powell, \"*A direct search optimization method that models the objective and\n    constraint functions by linear interpolation*,\" in Advances in Optimization and\n    Numerical Analysis Mathematics and Its Applications, vol. **275** (eds. Susana Gomez\n    and Jean-Pierre Hennart), Kluwer Academic Publishers, pp. 51-67 (1994).\n\n11. M.J.D. Powell, \"*The NEWUOA software for unconstrained minimization without\n    derivatives*\", in Large-Scale Nonlinear Optimization, editors G. Di Pillo and M. Roma,\n    Springer, pp. 255-297 (2006).\n\n12. M.J.D. Powell, \"*The BOBYQA Algorithm for Bound Constrained Optimization Without\n    Derivatives*.\" Technical report, Department of Applied Mathematics and Theoretical\n    Physics, University of Cambridge (2009).\n\n13. J.J. Moré \u0026 D.C. Sorensen, \"*Computing A Trust Region Step*,\" SIAM J. Sci. Stat. Comp.\n    **4**, 553-572 (1983).\n\n14. R.P. Brent, \"*Algorithms for Minimization without Derivatives*,\" Prentice-Hall, Inc.\n    (1973).\n\n\n## Authors\n\n* Éric Thiébaut (https://github.com/emmt)\n\n\n## Credits\n\nFrom 2009 to 2014, the development of `OptimPack` was supported by the\n[MiTiV](http://mitiv-univ-lyon1.fr) project funded by the French [*Agence Nationale pour\nla Recherche*](http://www.agence-nationale-recherche.fr) (Ref. ANR-09-EMER-008).\n\nA simpler version of `OptimPack` is provided by\n[OptimPackLegacy](https://github.com/emmt/OptimPackLegacy) project.\n\n\n## License\n\nThe `OptimPack` library is released under the [MIT \"Expat\" License](./LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femmt%2Foptimpack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femmt%2Foptimpack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femmt%2Foptimpack/lists"}