Differentiable Optimization API
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- julia
- Ambito
- backend-api-design
Direzione di ricerca
Inizia con la discussione iniziale in DiffOpt.jl PR #344 e confronta le implementazioni di DiffOpt lpbasis, MadDiff e Moreau a cui si fa riferimento. Esamina come gestiscono gli attributi di sensibilità, le funzioni di differenziazione, i reset, i parametri, le funzioni dei coefficienti, i getter lazy e gli helper a livello JuMP; il lavoro è considerato concluso quando è stata concordata un’API minima, poiché non vengono indicati file obiettivo né test.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What is the minimal API for differentiable optimization?
- Attributes to pass input forward and reverse sensitivities.
- forward inputs sensitivities: are numbers associated with the coefficients of the problem or parameters
- reverse inputs sensitivities: are numbers associated with variables
- functions to perform the diff (analogous to optimize!)
- Attributes to query output forward and reverse sensitivities.
- forward outputs sensitivities: are numbers associated with variables
- reverse outputs sensitivities: are numbers associated with the coefficients of the problem or parameters
Important aspects:
a. A function to reset all input sensitivities is extremely important in practice, as resetting manually is very inefficient.
b. Parameters are extremely useful here. Having used DiffOpt and talking to users it is clear that it is very error-prone to touch coefficients directly (also see: https://arxiv.org/abs/2510.25986). POI is almost essential here.
c. Passing coefficients individually is suboptimal because it does not play well with bridges. Passing coefficient sensitivities as functions is key to making it work smoothly. For getters, Lazy operations are importants as we are usually no interested in absolutely every single coefficient
d. In practice, helper methods for objective sensitivity are a lifesaver.
e. Having a JuMP level API is much more ergonomic than having MOI.set and get all around.
We already have use case for existing solvers:
- https://github.com/jump-dev/DiffOpt.jl/tree/jg/lpbasis (HiGHS, Gurobi, Xpress)
- MadNLP (https://github.com/MadNLP/MadDiff.jl/tree/main/ext/MathOptInterfaceExt)
There is a new solver that proposes to do it as well: - Moreau (https://github.com/jump-dev/DiffOpt.jl/pull/344)
Additional points:
- In DiffOpt, we did not put much effort into sensitivities associated with duals. Attribute-wise, there is nothing special here, but we never have a concrete use case, so we did not venture into it.
Initial discussion in: https://github.com/jump-dev/DiffOpt.jl/pull/344
- Lingua principale
- Julia
- Stelle
- 506
- Fork
- 103
- Merge medio
- 1g 10m
- PR unite (30g)
- 12
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/MathOptInterface.jl
-
[Bridges] MultirowChange in set_map.jl drops zero coefficientsForse già presa @odow l’ha presa 5 giorni fa. Aperta
jump-dev/MathOptInterface.jl#3106 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Precision loss in Hessian computationForse già presa @blegat l’ha presa 5 giorni fa. Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
jump-dev/MathOptInterface.jl#3104 · 11 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Layer instantiatorAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
jump-dev/MathOptInterface.jl#2986 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Add Batched{S} setApertaType: Set Request
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
jump-dev/MathOptInterface.jl#2904 · 15 commenti · 7 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
Performance problem with deeply nested nonlinear expressionsForse già presa @blegat l’ha presa 456 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
jump-dev/MathOptInterface.jl#3065 · 11 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di jump-dev/MathOptInterface.jl
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
bug help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
JuliaGeometry/Meshes.jl#1469 ·
I maintainer di solito rispondono entro 1 giorno
-
distributed 🕸️
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
CliMA/Oceananigans.jl#6295 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
CI: two jobs fail on the new ubuntu-latest (Ubuntu 26.04) runner imageForse già presa @bjarthur l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 63/100
mojaie/MolecularGraph.jl#151 ·