## Hypatia.jl

Interior point solver for general convex conic optimization problems
Author chriscoey
Popularity
51 Stars
Updated Last
2 Years Ago
Started In
July 2018

See Hypatia's documentation for a description of Hypatia's conic form, predefined cones, generic cone interface, and interfaces. See also the applied examples in the examples folder. For more information about Hypatia's algorithms and cones, please see our working paper and cones reference.

### Installation

To use Hypatia, install Julia, then at the Julia REPL, type:

```julia> using Pkg; Pkg.add("Hypatia")

julia> using 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

# setup JuMP model
opt = Hypatia.Optimizer(verbose = false)
model = Model(() -> opt)
@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 experiment design and D-optimal design examples for more information and references for this example.

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 repo. If contributing code, try to maintain consistent style and add docstrings or comments for clarity.

### 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.

### Used By Packages

No packages found.