You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Convex.jl can solve linear programs, mixed-integer linear programs, and
DCP-compliant convex programs using a variety of solvers, including
Mosek,
Gurobi,
ECOS,
SCS, and
GLPK, through
MathOptInterface.
Convex.jl also supports optimization with complex variables and coefficients.
Getting help
For usage questions, please contact us via Discourse.
If you have a reproducible example of a bug, please open a GitHub issue.
Installation
Install Convex using the Julia package manager:
import Pkg
Pkg.add("Convex")
Quick Example
# Let us first make the Convex.jl module availableusing Convex, SCS
# Generate random problem data
m =4; n =5
A =randn(m, n); b =randn(m, 1)
# Create a (column vector) variable of size n x 1.
x =Variable(n)
# The problem is to minimize ||Ax - b||^2 subject to 0 <= x <= 1# This can be done by: minimize(objective, constraints)
problem =minimize(sumsquares(A * x - b), [x >=0, x <=1])
# Solve the problem by calling solve!solve!(problem, SCS.Optimizer)
# Check the status of the problem
problem.status
# Get the optimal value
problem.optval
Using with JuMP
Convex.jl contains an experimental JuMP solver. This solver reformulates a
nonlinear JuMP model into a conic program using DCP. Note that it currently
supports only a limited subset of scalar nonlinear programs, such as those
involving log and exp.
julia>using JuMP, Convex, Clarabel
julia> model =Model(() -> Convex.Optimizer(Clarabel.Optimizer));
julia>set_silent(model)
julia>@variable(model, x >=1);
julia>@variable(model, t);
julia>@constraint(model, t >=exp(x))
t -exp(x) ≥0
julia>@objective(model, Min, t);
julia>optimize!(model)
julia>value(x), value(t)
(0.9999999919393833, 2.7182818073461403)
More Examples
A number of examples can be found here.
The basic usage notebook
gives a simple tutorial on problems that can be solved using Convex.jl.
Citing this package
If you use Convex.jl for published work, we encourage you to cite the software
using the following BibTeX citation:
@article{convexjl,
title = {Convex Optimization in {J}ulia},
author = {Udell, Madeleine and Mohan, Karanveer and Zeng, David and Hong, Jenny and Diamond, Steven and Boyd, Stephen},
year = {2014},
journal = {SC14 Workshop on High Performance Technical Computing in Dynamic Languages},
archivePrefix = "arXiv",
eprint = {1410.4821},
primaryClass = "math-oc",
}
About
A Julia package for disciplined convex programming