{"id":28452678,"url":"https://github.com/juliasmoothoptimizers/percival.jl","last_synced_at":"2025-07-02T04:30:43.623Z","repository":{"id":38424848,"uuid":"174742372","full_name":"JuliaSmoothOptimizers/Percival.jl","owner":"JuliaSmoothOptimizers","description":"Implementation of an Augmented Lagrangian method","archived":false,"fork":false,"pushed_at":"2025-06-04T01:40:44.000Z","size":3168,"stargazers_count":58,"open_issues_count":7,"forks_count":17,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-06-04T05:11:47.916Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Julia","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/JuliaSmoothOptimizers.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":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json"}},"created_at":"2019-03-09T20:24:31.000Z","updated_at":"2025-06-04T01:06:21.000Z","dependencies_parsed_at":"2023-11-07T16:37:49.341Z","dependency_job_id":"69674018-d3f4-42cf-929f-2adf5ec2cca5","html_url":"https://github.com/JuliaSmoothOptimizers/Percival.jl","commit_stats":{"total_commits":142,"total_committers":15,"mean_commits":9.466666666666667,"dds":0.704225352112676,"last_synced_commit":"75a85515bd8b2fc376a5f58a85c816ec940e7f3f"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/JuliaSmoothOptimizers/Percival.jl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaSmoothOptimizers%2FPercival.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaSmoothOptimizers%2FPercival.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaSmoothOptimizers%2FPercival.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaSmoothOptimizers%2FPercival.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JuliaSmoothOptimizers","download_url":"https://codeload.github.com/JuliaSmoothOptimizers/Percival.jl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaSmoothOptimizers%2FPercival.jl/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263074242,"owners_count":23409725,"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":"2025-06-06T18:12:22.906Z","updated_at":"2025-07-02T04:30:43.615Z","avatar_url":"https://github.com/JuliaSmoothOptimizers.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Percival.jl - An augmented Lagrangian solver\n\n[![CI](https://github.com/JuliaSmoothOptimizers/Percival.jl/workflows/CI/badge.svg?branch=main)](https://github.com/JuliaSmoothOptimizers/Percival.jl/actions)\n[![codecov.io](https://codecov.io/github/JuliaSmoothOptimizers/Percival.jl/coverage.svg?branch=main)](https://codecov.io/github/JuliaSmoothOptimizers/Percival.jl?branch=main)\n[![docs-stable](https://img.shields.io/badge/docs-stable-3f51b5.svg)](https://JuliaSmoothOptimizers.github.io/Percival.jl/stable)\n[![docs-dev](https://img.shields.io/badge/docs-dev-3f51b5.svg)](https://JuliaSmoothOptimizers.github.io/Percival.jl/dev)\n[![DOI](https://img.shields.io/badge/DOI-10.5281/zenodo.3969045-blue.svg?style=flat)](https://doi.org/10.5281/zenodo.3969045)\n\nPercival is an implementation of the augmented Lagrangian solver described in\n\n    S. Arreckx, A. Lambe, Martins, J. R. R. A., \u0026 Orban, D. (2016).\n    A Matrix-Free Augmented Lagrangian Algorithm with Application to Large-Scale Structural Design Optimization.\n    Optimization And Engineering, 17, 359–384. doi:10.1007/s11081-015-9287-9\n\nwith internal solver `tron` from [JSOSolvers.jl](https://github.com/JuliaSmoothOptimizers/JSOSolvers.jl).\nTo use Percival, you have to pass it an [NLPModel](https://github.com/JuliaSmoothOptimizers/NLPModels.jl).\n\n## How to Cite\n\nIf you use Percival.jl in your work, please cite using the format given in [CITATION.cff](https://github.com/JuliaSmoothOptimizers/Percival.jl/blob/main/CITATION.cff).\n\n## Install\n\nUse `]` to enter `pkg\u003e` mode of Julia, then\n```julia\npkg\u003e add Percival\n```\n\n## Examples\n\nConsider the following 2-dimensional optimization problem with an equality constraint\n\n```math\n\\begin{equation}\n\\min_{(x_1,x_2)} \\quad (x_1 - 1)^2 + 100 (x_2 - x_1^2)^2 \\quad \\text{s.to} \\quad x_1^2 + x_2^2 = 1.\n\\end{equation}\n```\n\nYou can solve an JuMP model `model` by using [NLPModelsJuMP.jl](https://github.com/JuliaSmoothOptimizers/NLPModelsJuMP.jl) to convert it.\n```julia\nusing JuMP, NLPModelsJuMP, Percival\nmodel = Model(NLPModelsJuMP.Optimizer)\nset_attribute(model, \"solver\", Percival.PercivalSolver)\n@variable(model, x[i=1:2], start = [-1.2; 1.0][i])\n@objective(model, Min, (x[1] - 1)^2 + 100 * (x[2] - x[1]^2)^2)\n@constraint(model, x[1]^2 + x[2]^2 == 1)\noptimize!(model)\nsolution_summary(model)\n```\n\n`percival` accept as input any instance of `AbstractNLPModel`, for instance, using automatic differentiation via [ADNLPModels.jl](https://github.com/JuliaSmoothOptimizers/ADNLPModels.jl) to solve the same problem.\n```julia\nusing ADNLPModels, Percival\nnlp = ADNLPModel(\n  x -\u003e (x[1] - 1)^2 + 100 * (x[2] - x[1]^2)^2,\n  [-1.2; 1.0],\n  x -\u003e [x[1]^2 + x[2]^2],\n  [1.0],\n  [1.0],\n)\noutput = percival(nlp, verbose = 1)\n```\n\n# Bug reports and discussions\n\nIf you think you found a bug, feel free to open an [issue](https://github.com/JuliaSmoothOptimizers/Percival.jl/issues).\nFocused suggestions and requests can also be opened as issues. Before opening a pull request, start an issue or a discussion on the topic, please.\n\nIf you want to ask a question not suited for a bug report, feel free to start a discussion [here](https://github.com/JuliaSmoothOptimizers/Organization/discussions). This forum is for general discussion about this repository and the [JuliaSmoothOptimizers](https://github.com/JuliaSmoothOptimizers), so questions about any of our packages are welcome.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliasmoothoptimizers%2Fpercival.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuliasmoothoptimizers%2Fpercival.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliasmoothoptimizers%2Fpercival.jl/lists"}