Differentiation of conic programs with nonlinear parametric expressions
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia eseguendo il MWE Julia con Clarabel e confrontalo con la versione Ipopt, quindi leggi il percorso di differenziazione dei parametri di DiffOpt raggiunto tramite diff_model e optimize!. Il lavoro è completato quando le espressioni parametriche non lineari come sin(θ) * x sono supportate per i programmi conici e l’esempio fornito viene differenziato correttamente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
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:
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?
- Lingua principale
- Julia
- Stelle
- 146
- Fork
- 21
- Merge medio
- 1h 25m
- PR unite (30g)
- 2
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di jump-dev/DiffOpt.jl
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
jump-dev/DiffOpt.jl#362 · 1 commento ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
jump-dev/DiffOpt.jl#358 · 2 commenti ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
jump-dev/DiffOpt.jl#348 ·
-
good first issue
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
jump-dev/DiffOpt.jl#336 · 4 commenti ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
jump-dev/DiffOpt.jl#318 · 1 commento ·
Tutte le issue di jump-dev/DiffOpt.jl
Issue simili
-
View of a view is brokenForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
JuliaPy/pyjuliapkg#102 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
JuliaMath/Polynomials.jl#641 ·