• Stars
    star
    122
  • Rank 292,127 (Top 6 %)
  • Language
    Julia
  • License
    MIT License
  • Created over 4 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Differentiating convex optimization programs w.r.t. program parameters

DiffOpt.jl

stable docs development docs Build Status Coverage

DiffOpt.jl is a package for differentiating convex optimization programs with respect to the program parameters. DiffOpt currently supports linear, quadratic, and conic programs.

License

DiffOpt.jl is licensed under the MIT License.

Installation

Install DiffOpt using Pkg.add:

import Pkg
Pkg.add("DiffOpt")

Documentation

The documentation for DiffOpt.jl includes a detailed description of the theory behind the package, along with examples, tutorials, and an API reference.

Use with JuMP

Use DiffOpt with JuMP by following this brief example:

using JuMP, DiffOpt, HiGHS
# Create a model using the wrapper
model = Model(() -> DiffOpt.diff_optimizer(HiGHS.Optimizer))
# Define your model and solve it
@variable(model, x)
@constraint(model, cons, x >= 3)
@objective(model, Min, 2x)
optimize!(model)
# Choose the problem parameters to differentiate with respect to, and set their
# perturbations.
MOI.set(model, DiffOpt.ReverseVariablePrimal(), x, 1.0)
# Differentiate the model
DiffOpt.reverse_differentiate!(model)
# fetch the gradients
grad_exp = MOI.get(model, DiffOpt.ReverseConstraintFunction(), cons)  # -3 x - 1
constant(grad_exp)        # -1
coefficient(grad_exp, x)  # -3

GSOC2020

DiffOpt began as a NumFOCUS sponsored Google Summer of Code (2020) project

More Repositories

1

JuMP.jl

Modeling language for Mathematical Optimization (linear, mixed-integer, conic, semidefinite, nonlinear)
Julia
2,221
star
2

Convex.jl

A Julia package for disciplined convex programming
Julia
567
star
3

MathOptInterface.jl

A data structure for mathematical optimization problems
Julia
392
star
4

NLopt.jl

A Julia interface to the NLopt nonlinear-optimization library
Julia
262
star
5

Gurobi.jl

A Julia interface to the Gurobi Optimizer
Julia
220
star
6

Ipopt.jl

A Julia interface to the Ipopt nonlinear solver
Julia
152
star
7

JuMPTutorials.jl

Tutorials on using JuMP for mathematical optimization in Julia
Jupyter Notebook
142
star
8

Hypatia.jl

interior point solver for general convex conic optimization problems
Julia
140
star
9

CPLEX.jl

A Julia interface to the CPLEX solver
Julia
134
star
10

Pajarito.jl

A solver for mixed-integer convex optimization
Julia
130
star
11

SumOfSquares.jl

Sum of Squares Programming for Julia
Julia
116
star
12

HiGHS.jl

A Julia interface to the HiGHS solver
Julia
108
star
13

GLPK.jl

A Julia interface to the GNU Linear Programming Kit
Julia
101
star
14

Dualization.jl

Automatic dualization feature for MathOptInterface.jl
Julia
95
star
15

SCS.jl

A Julia interface for the SCS conic programming solver
Julia
81
star
16

Cbc.jl

A Julia interface to the Coin-OR Branch and Cut solver (CBC)
Julia
81
star
17

KNITRO.jl

A Julia interface to the Artelys Knitro solver
Julia
77
star
18

Xpress.jl

A Julia interface to the FICO Xpress Optimization suite
Julia
65
star
19

AmplNLWriter.jl

A Julia interface to AMPL-enabled solvers
Julia
65
star
20

MultiObjectiveAlgorithms.jl

A Julia package for solving multi-objective optimization problems
Julia
62
star
21

Pavito.jl

A gradient-based outer approximation solver for convex mixed-integer nonlinear programming (MINLP)
Julia
60
star
22

Clp.jl

A Julia interface to the Coin-OR Linear Programming solver (CLP)
Julia
54
star
23

PiecewiseLinearOpt.jl

Solve optimization problems containing piecewise linear functions
Julia
53
star
24

MutableArithmetics.jl

Interface for arithmetics on mutable types in Julia
TeX
49
star
25

ECOS.jl

A Julia interface to the ECOS conic optimization solver
Julia
41
star
26

PolyJuMP.jl

A JuMP extension for Polynomial Optimization
Julia
41
star
27

ParametricOptInterface.jl

Extension for dealing with parameters
Julia
36
star
28

NEOSServer.jl

A Julia interface for the NEOS Optimisation Server
Julia
31
star
29

MosekTools.jl

A MathOptInterface.jl interface to the MOSEK solver
Julia
29
star
30

CSDP.jl

A Julia interface to the Coin-OR solver CSDP
Julia
21
star
31

benchmarks

A repository for long-term benchmarking of JuMP performance
Julia
19
star
32

MathOptFormat

Specification and description of the MathOptFormat file format
Python
18
star
33

MiniZinc.jl

A Julia interface to the MiniZinc constraint modeling language
Julia
18
star
34

BARON.jl

A Julia interface to the BARON mixed-integer nonlinear programming solver
Julia
18
star
35

jump-dev.github.io

Source for jump.dev
Jupyter Notebook
14
star
36

open-energy-modeling-benchmarks

Julia
13
star
37

MINLPTests.jl

Unit and Integration Tests for JuMP NLP and MINLP solvers
Julia
12
star
38

SDPA.jl

A Julia interface to the SDPA semidefinite programming solver
Julia
11
star
39

MatrixOptInterface.jl

An interface to pass matrix form problems
Julia
11
star
40

SDPNAL.jl

A Julia interface to the SDPNAL+ solver
Julia
11
star
41

ComplexOptInterface.jl

Extension of MathOptInterface to complex sets
Julia
8
star
42

SDPLR.jl

Julia wrapper for SDPLR
Julia
7
star
43

Penopt.jl

A Julia interface to the Penopt SDP solver
Julia
7
star
44

SolverTests

Test that all solvers pass the tests before a new MOI release
7
star
45

SeDuMi.jl

A Julia interface to the SeDuMi SDP solver
Julia
6
star
46

SDPT3.jl

A Julia interface to the SDPT3 solver
Julia
5
star
47

DSDP.jl

A Julia interface to the DSDP semidefinite programming solver
Julia
4
star
48

GSOC2021

GSOC2021 information for JuMP
3
star
49

JuMPPaperBenchmarks

Benchmarks for a paper on JuMP 1.0
Julia
2
star
50

Gurobi_jll.jl

A Julia package for installing the Gurobi Optimizer
Julia
2
star
51

MOIPaperBenchmarks

Benchmarks for a paper on MathOptInterface
Julia
1
star
52

GSOC2022

GSOC2022 information for JuMP
1
star
53

HiGHSBuilder

Julia
1
star
54

GSOC2020

GSOC2020 information for JuMP
1
star
55

GSOC

1
star