hypatia.jl

interior point solver for general convex conic optimization problems

https://github.com/jump-dev/hypatia.jl

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org, springer.com
  • Committers with academic emails
    1 of 11 committers (9.1%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.9%) to scientific vocabulary

Keywords from Contributors

manifolds manopt julialang fluxes standardization optim optimisation unconstrained-optimisation unconstrained-optimization
Last synced: 6 months ago · JSON representation ·

Repository

interior point solver for general convex conic optimization problems

Basic Info
Statistics
  • Stars: 145
  • Watchers: 15
  • Forks: 17
  • Open Issues: 24
  • Releases: 22
Created over 7 years ago · Last pushed 8 months ago
Metadata Files
Readme License Citation

README.md

Hypatia logo

Build Status codecov

Hypatia is a highly customizable open source interior point solver for generic conic optimization problems, written in Julia.

For more information on Hypatia, please see: - documentation for Hypatia's conic form, predefined cones, and interfaces - cones reference for cone definitions and oracles - examples folder for applied examples and instances - benchmarks folder for scripts used to run and analyze various computational benchmarks

and preprints of our papers: - Solving natural conic formulations with Hypatia.jl for computational arguments for expanding the class of cones recognized by conic solvers - Performance enhancements for a generic conic interior point algorithm for a description of Hypatia's algorithm and our enhanced stepping procedures - Sum of squares generalizations for conic sets for barriers and computational techniques for our generalized polynomial sum of squares cones - Conic optimization with spectral functions on Euclidean Jordan algebras for barriers and computational techniques for many of our epigraph/hypograph cones

and corresponding raw results CSV files generated by our run scripts in the benchmarks folder.

Getting help

If you need help, please ask a question on the JuMP community forum.

If you have a reproducible example of a bug, please open a GitHub issue.

License

Hypatia is licensed under the MIT License (see LICENSE).

Installation

To use Hypatia, install Julia, then at the Julia REPL, type: julia using Hypatia using Pkg Pkg.add("Hypatia") Hypatia is an experimental solver and a work in progress, and may not run with older releases of Julia. Default options/parameters are not well-tuned, so we encourage you to experiment with these.

Usage

Hypatia can be accessed through a low-level native Julia interface or through open-source modeling tools such as JuMP and Convex.jl. The native interface is more expressive, allowing Hypatia to solve conic models expressed with generic real floating point types and structured matrices or linear operators, for example. However, it is typically sufficient and more convenient to use JuMP.

Using JuMP, we can model a simple D-optimal experiment design problem and call Hypatia: ```julia using LinearAlgebra using JuMP using Hypatia

model = Model(() -> Hypatia.Optimizer(verbose = false)) @variable(model, x[1:3] >= 0) @constraint(model, sum(x) == 5) @variable(model, hypo) @objective(model, Max, hypo) V = rand(2, 3) Q = V * diagm(x) * V' aff = vcat(hypo, [Q[i, j] for i in 1:2 for j in 1:i]...) @constraint(model, aff in MOI.RootDetConeTriangle(2))

solve and query solution

optimize!(model) terminationstatus(model) objectivevalue(model) value.(x) ``` See our D-optimal design example for more information and references.

Many more examples using the native interface or JuMP can be found in the examples folder.

Contributing

Comments, questions, suggestions, and improvements/extensions to the code or documentation are welcomed. Please reach out on Discourse, or submit an issue or contribute a PR on our GitHub. If contributing code, try to maintain consistent style and add docstrings or comments for clarity. New examples are welcomed and should be implemented similarly to the existing examples.

Acknowledgements

This work has been partially funded by the National Science Foundation under grant OAC-1835443 and the Office of Naval Research under grant N00014-18-1-2079.

Citing Hypatia

If you find Hypatia solver useful, please cite our solver paper: bibtex @article{coey2022solving, title={Solving natural conic formulations with {H}ypatia.jl}, author={Chris Coey and Lea Kapelevich and Juan Pablo Vielma}, year={2022}, journal={INFORMS Journal on Computing}, publisher={INFORMS}, volume={34}, number={5}, pages={2686--2699}, doi={https://doi.org/10.1287/ijoc.2022.1202} }

If you find aspects of Hypatia's IPM implementation useful, please cite our algorithm paper: bibtex @article{coey2022performance, title={Performance enhancements for a generic conic interior point algorithm}, author={Chris Coey and Lea Kapelevich and Juan Pablo Vielma}, year={2023}, journal={Mathematical Programming Computation}, publisher={Springer}, volume={15}, pages={53--101}, doi={https://doi.org/10.1007/s12532-022-00226-0} }

Owner

  • Name: JuMP-dev
  • Login: jump-dev
  • Kind: organization

An organization for the JuMP modeling language and related repositories.

Citation (CITATION.bib)

@misc{coey2021solving,
    title={Solving natural conic formulations with Hypatia.jl}, 
    author={Chris Coey and Lea Kapelevich and Juan Pablo Vielma},
    year={2021},
    eprint={2005.01136},
    archivePrefix={arXiv},
    primaryClass={math.OC}
}

GitHub Events

Total
  • Create event: 5
  • Commit comment event: 10
  • Release event: 1
  • Watch event: 8
  • Delete event: 7
  • Issue comment event: 34
  • Push event: 39
  • Pull request review comment event: 1
  • Pull request review event: 3
  • Pull request event: 19
  • Fork event: 1
Last Year
  • Create event: 5
  • Commit comment event: 10
  • Release event: 1
  • Watch event: 8
  • Delete event: 7
  • Issue comment event: 34
  • Push event: 39
  • Pull request review comment event: 1
  • Pull request review event: 3
  • Pull request event: 19
  • Fork event: 1

Committers

Last synced: 8 months ago

All Time
  • Total Commits: 2,533
  • Total Committers: 11
  • Avg Commits per committer: 230.273
  • Development Distribution Score (DDS): 0.428
Past Year
  • Commits: 10
  • Committers: 5
  • Avg Commits per committer: 2.0
  • Development Distribution Score (DDS): 0.7
Top Committers
Name Email Commits
Chris Coey c****s@g****m 1,450
lkapelevich l****h@g****m 1,044
Oscar Dowson o****w 14
Mateus Araújo m****n@g****m 7
github-actions[bot] 4****] 5
Mathieu Besançon m****n@g****m 4
Benoît Legat b****t@g****m 4
Venkateshprasad 3****k 2
Benjamin Desef p****r 1
Lea Kapelevich l****e@L****u 1
-v -v 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 6
  • Total pull requests: 24
  • Average time to close issues: about 1 month
  • Average time to close pull requests: about 1 year
  • Total issue authors: 5
  • Total pull request authors: 7
  • Average comments per issue: 5.67
  • Average comments per pull request: 2.67
  • Merged pull requests: 16
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 10
  • Average time to close issues: N/A
  • Average time to close pull requests: 2 days
  • Issue authors: 1
  • Pull request authors: 5
  • Average comments per issue: 5.0
  • Average comments per pull request: 2.8
  • Merged pull requests: 8
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • chriscoey (2)
  • lkapelevich (1)
  • JuliaTagBot (1)
  • araujoms (1)
  • rcywongaa (1)
Pull Request Authors
  • araujoms (13)
  • odow (9)
  • lkapelevich (8)
  • chriscoey (7)
  • rcywongaa (4)
  • blegat (3)
  • projekter (2)
Top Labels
Issue Labels
help wanted (2) speed (2) interface (2) high priority (1) info (1)
Pull Request Labels
speed (10) numerics (6) speculative (4) interface (4) examples (4) benchmarks (3) info (2) cleanup (2) tests (2)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 137 total
  • Total dependent packages: 2
  • Total dependent repositories: 0
  • Total versions: 21
juliahub.com: Hypatia

interior point solver for general convex conic optimization problems

  • Versions: 21
  • Dependent Packages: 2
  • Dependent Repositories: 0
  • Downloads: 137 Total
Rankings
Stargazers count: 7.2%
Dependent repos count: 9.9%
Forks count: 16.2%
Average: 18.1%
Dependent packages count: 38.9%
Last synced: 6 months ago

Dependencies

.github/workflows/CompatHelper.yml actions
.github/workflows/DocCleanup.yml actions
  • actions/checkout v2 composite
.github/workflows/Documentation.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/Examples.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/FormatCheck.yml actions
  • actions/checkout v1 composite
  • julia-actions/setup-julia latest composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/ci.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • codecov/codecov-action v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite