{"id":32176378,"url":"https://github.com/numericalalgorithmsgroup/dfols","last_synced_at":"2026-04-02T00:37:39.294Z","repository":{"id":45964249,"uuid":"120285547","full_name":"numericalalgorithmsgroup/dfols","owner":"numericalalgorithmsgroup","description":"Python-based Derivative-Free Optimizer for Least-Squares","archived":false,"fork":false,"pushed_at":"2026-03-23T11:58:24.000Z","size":12927,"stargazers_count":45,"open_issues_count":8,"forks_count":16,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-03-23T23:57:41.337Z","etag":null,"topics":["least-squares","nonlinear-optimization","numerical-analysis","numerical-methods","numerical-optimization","optimization","optimization-algorithms","python","scientific-computing"],"latest_commit_sha":null,"homepage":"https://numericalalgorithmsgroup.github.io/dfols/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/numericalalgorithmsgroup.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-02-05T09:50:25.000Z","updated_at":"2026-03-23T11:55:09.000Z","dependencies_parsed_at":"2024-04-11T06:28:11.519Z","dependency_job_id":"d55d5b6b-d268-4b4f-bf68-c54177a4b7b1","html_url":"https://github.com/numericalalgorithmsgroup/dfols","commit_stats":{"total_commits":87,"total_committers":8,"mean_commits":10.875,"dds":0.4482758620689655,"last_synced_commit":"22738958bf6498ac0850713fd1554130a87693b2"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/numericalalgorithmsgroup/dfols","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/numericalalgorithmsgroup%2Fdfols","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/numericalalgorithmsgroup%2Fdfols/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/numericalalgorithmsgroup%2Fdfols/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/numericalalgorithmsgroup%2Fdfols/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/numericalalgorithmsgroup","download_url":"https://codeload.github.com/numericalalgorithmsgroup/dfols/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/numericalalgorithmsgroup%2Fdfols/sbom","scorecard":{"id":698617,"data":{"date":"2025-08-18","repo":{"name":"github.com/numericalalgorithmsgroup/dfols","commit":"475149e78c1f5c966db426b03dd231854e26bee2"},"scorecard":{"version":"v5.2.1-41-g40576783","commit":"40576783fda6698350fcbbeaea760ff827433034"},"score":3.8,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/16 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python_testing.yml:1","Warn: no topLevel permission defined: .github/workflows/upload_pypi.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#fuzzing"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python_testing.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/numericalalgorithmsgroup/dfols/python_testing.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python_testing.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/numericalalgorithmsgroup/dfols/python_testing.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/upload_pypi.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/numericalalgorithmsgroup/dfols/upload_pypi.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/upload_pypi.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/numericalalgorithmsgroup/dfols/upload_pypi.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/upload_pypi.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/numericalalgorithmsgroup/dfols/upload_pypi.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/upload_pypi.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/numericalalgorithmsgroup/dfols/upload_pypi.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/upload_pypi.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/numericalalgorithmsgroup/dfols/upload_pypi.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python_testing.yml:23","Warn: pipCommand not pinned by hash: .github/workflows/python_testing.yml:24","Warn: pipCommand not pinned by hash: .github/workflows/upload_pypi.yml:24","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   3 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#pinned-dependencies"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#branch-protection"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/upload_pypi.yml:34"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 15 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T04:30:27.961Z","repository_id":45964249,"created_at":"2025-08-22T04:30:27.961Z","updated_at":"2025-08-22T04:30:27.961Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30933052,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-25T17:54:13.764Z","status":"ssl_error","status_checked_at":"2026-03-25T17:54:02.372Z","response_time":80,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["least-squares","nonlinear-optimization","numerical-analysis","numerical-methods","numerical-optimization","optimization","optimization-algorithms","python","scientific-computing"],"created_at":"2025-10-21T19:59:14.644Z","updated_at":"2026-04-02T00:37:39.264Z","avatar_url":"https://github.com/numericalalgorithmsgroup.png","language":"Python","readme":"===================================================\nDFO-LS: Derivative-Free Optimizer for Least-Squares\n===================================================\n\n.. image::  https://github.com/numericalalgorithmsgroup/dfols/actions/workflows/python_testing.yml/badge.svg\n   :target: https://github.com/numericalalgorithmsgroup/dfols/actions\n   :alt: Build Status\n\n.. image::  https://img.shields.io/badge/License-GPL%20v3-blue.svg\n   :target: https://www.gnu.org/licenses/gpl-3.0\n   :alt: GNU GPL v3 License\n\n.. image:: https://img.shields.io/pypi/v/DFO-LS.svg\n   :target: https://pypi.python.org/pypi/DFO-LS\n   :alt: Latest PyPI version\n\n.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.2630426.svg\n   :target: https://doi.org/10.5281/zenodo.2630426\n   :alt: DOI:10.5281/zenodo.2630426\n   \n.. image:: https://static.pepy.tech/personalized-badge/dfo-ls?period=total\u0026units=international_system\u0026left_color=black\u0026right_color=green\u0026left_text=Downloads\n   :target: https://pepy.tech/project/dfo-ls\n   :alt: Total downloads\n\nDFO-LS is a flexible package for solving nonlinear least-squares minimization, without requiring derivatives of the objective. It is particularly useful when evaluations of the objective function are expensive and/or noisy. DFO-LS is more flexible version of `DFO-GN \u003chttps://github.com/numericalalgorithmsgroup/dfogn\u003e`_.\n\nThe main algorithm is described in our paper [1] below. \n\nIf you are interested in solving general optimization problems (without a least-squares structure), you may wish to try `Py-BOBYQA \u003chttps://github.com/numericalalgorithmsgroup/pybobyqa\u003e`_, which has many of the same features as DFO-LS.\n\nDocumentation\n-------------\nSee manual.pdf or `here \u003chttps://numericalalgorithmsgroup.github.io/dfols/\u003e`_.\n\nCitation\n--------\nThe development of DFO-LS is outlined over several publications:\n\n1. C Cartis, J Fiala, B Marteau and L Roberts, `Improving the Flexibility and Robustness of Model-Based Derivative-Free Optimization Solvers \u003chttps://doi.org/10.1145/3338517\u003e`_, *ACM Transactions on Mathematical Software*, 45:3 (2019), pp. 32:1-32:41 [`preprint arXiv 1804.00154 \u003chttps://arxiv.org/abs/1804.00154\u003e`_] . \n2. M Hough and L Roberts, `Model-Based Derivative-Free Methods for Convex-Constrained Optimization \u003chttps://doi.org/10.1137/21M1460971\u003e`_, *SIAM Journal on Optimization*, 21:4 (2022), pp. 2552-2579 [`preprint arXiv 2111.05443 \u003chttps://arxiv.org/abs/2111.05443\u003e`_].\n3. Y Liu, K H Lam and L Roberts, `Regularized black-box optimization algorithms for least-squares problems \u003chttps://doi.org/10.1093/imanum/draf093\u003e`_, *IMA Journal of Numerical Analysis*, 2025 [`preprint arXiv 2407.14915 \u003chttps://arxiv.org/abs/2407.14915\u003e`_].\n\nIf you use DFO-LS in a paper, please cite [1]. \nIf your problem has constraints, including bound constraints, please cite [1,2].\nIf your problem includes a regularizer, please cite [1,3].\n\nRequirements\n------------\nDFO-LS requires the following software to be installed:\n\n* Python 3.9 or higher (http://www.python.org/)\n\nAdditionally, the following python packages should be installed (these will be installed automatically if using *pip*, see `Installation using pip`_):\n\n* NumPy (http://www.numpy.org/)\n* SciPy version 1.11 or higher (http://www.scipy.org/)\n* Pandas (http://pandas.pydata.org/)\n\n**Optional package:** DFO-LS versions 1.2 and higher also support the `trustregion \u003chttps://github.com/lindonroberts/trust-region\u003e`_ package for fast trust-region subproblem solutions. To install this, make sure you have a Fortran compiler (e.g. `gfortran \u003chttps://gcc.gnu.org/wiki/GFortran\u003e`_) and NumPy installed, then run :code:`pip install trustregion`. You do not have to have trustregion installed for DFO-LS to work, and it is not installed by default.\n\nInstallation using conda\n------------------------\nDFO-LS can be directly installed in Anaconda environments using `conda-forge \u003chttps://anaconda.org/conda-forge/dfo-ls\u003e`_:\n\n.. code-block:: bash\n\n    $ conda install -c conda-forge dfo-ls\n\nInstallation using pip\n----------------------\nFor easy installation, use `pip \u003chttp://www.pip-installer.org/\u003e`_ as root:\n\n.. code-block:: bash\n\n    $ pip install DFO-LS\n\nNote that if an older install of DFO-LS is present on your system you can use:\n\n.. code-block:: bash\n\n    $ pip install --upgrade DFO-LS\n\nto upgrade DFO-LS to the latest version.\n\nManual installation\n-------------------\nAlternatively, you can download the source code from `Github \u003chttps://github.com/numericalalgorithmsgroup/dfols\u003e`_ and unpack as follows:\n\n .. code-block:: bash\n\n    $ git clone https://github.com/numericalalgorithmsgroup/dfols\n    $ cd dfols\n\nDFO-LS is written in pure Python and requires no compilation. It can be installed using:\n\n .. code-block:: bash\n\n    $ pip install .\n\nTo upgrade DFO-LS to the latest version, navigate to the top-level directory (i.e. the one containing :code:`pyproject.toml`) and rerun the installation using :code:`pip`, as above:\n\n .. code-block:: bash\n\n    $ git pull\n    $ pip install .\n\nTesting\n-------\nIf you installed DFO-LS manually, you can test your installation using the pytest package:\n\n .. code-block:: bash\n\n    $ pip install pytest\n    $ python -m pytest --pyargs dfols\n\nAlternatively, the HTML documentation provides some simple examples of how to run DFO-LS.\n\nExamples\n--------\nExamples of how to run DFO-LS are given in the `documentation \u003chttps://numericalalgorithmsgroup.github.io/dfols/\u003e`_, and the `examples \u003chttps://github.com/numericalalgorithmsgroup/dfols/tree/master/examples\u003e`_ directory in Github.\n\nUninstallation\n--------------\nIf DFO-LS was installed using *pip* you can uninstall as follows:\n\n .. code-block:: bash\n\n    $ pip uninstall DFO-LS\n\nIf DFO-LS was installed manually you have to remove the installed files by hand (located in your python site-packages directory).\n\nBugs\n----\nPlease report any bugs using `GitHub's issue tracker \u003chttps://github.com/numericalalgorithmsgroup/dfols/issues\u003e`_.\n\nLicense\n-------\nThis algorithm is released under the GNU GPL license. Please `contact NAG \u003chttp://www.nag.com/content/worldwide-contact-information\u003e`_ for alternative licensing.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnumericalalgorithmsgroup%2Fdfols","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnumericalalgorithmsgroup%2Fdfols","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnumericalalgorithmsgroup%2Fdfols/lists"}