GithubHelp home page GithubHelp logo

araujoms / hypatia.jl Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jump-dev/hypatia.jl

0.0 0.0 0.0 4.99 MB

interior point solver for general convex conic optimization problems

License: Other

Julia 100.00%

hypatia.jl's Introduction

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:

and preprints of our papers:

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:

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:

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)
termination_status(model)
objective_value(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:

@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:

@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}
}

hypatia.jl's People

Contributors

chriscoey avatar lkapelevich avatar odow avatar github-actions[bot] avatar araujoms avatar matbesancon avatar blegat avatar ven-k avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.