jump-dev / jump-dev/DiffOpt.jl

Differentiation of conic programs with nonlinear parametric expressions

Aperta
#331 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Julia
Stelle
145
Fork
21
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

DiffOpt does not support differentiating a conic program if the problem's data depends nonlinearly from the parameters (e.g. if `A(theta) x <= b(theta)` with `A(.)` and `b(.)` given by nonlinear expressions).

Here is a simple MWE:
```julia
using JuMP
using Clarabel
using DiffOpt

model = DiffOpt.diff_model(Clarabel.Optimizer)
@variable(model, x >= 0)
@variable(model, θ ∈ MOI.Parameter(1.0))
@objective(model, Min, x)
@constraint(model, sin(θ) * x >= 1.0)
JuMP.optimize!(model)

```

If we replace Clarabel by Ipopt, the code works like a charm. But Clarabel works much better than Ipopt if the problem is conic.

We can use the chain-rule to differentiate the problem w.r.t. `A` instead of `theta`. However, I think it would be more intuitive to support nonlinear expressions depending on the parameters in DiffOpt. What do you think?

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.