Differentiable Optimization API
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Feature
- Klarheit
- Muss geklärt werden
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- julia
- Bereich
- backend-api-design
Rechercherichtung
Beginne mit der anfänglichen Diskussion in DiffOpt.jl PR #344 und vergleiche die referenzierten DiffOpt-lpbasis-, MadDiff- und Moreau-Implementierungen. Prüfe, wie sie Sensitivitätsattribute, Differenzierungsfunktionen, Resets, Parameter, Koeffizientenfunktionen, Lazy-Getter und JuMP-Level-Helfer behandeln; als abgeschlossen gilt die Arbeit, wenn eine vereinbarte minimale API feststeht, da keine Zieldateien oder Tests genannt sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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
- Vorherrschende Sprache
- Julia
- Sterne
- 506
- Forks
- 103
- Ø Merge
- 1 T. 10 Min.
- Gemergte PRs (30 T.)
- 12
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus jump-dev/MathOptInterface.jl
-
[Bridges] MultirowChange in set_map.jl drops zero coefficientsEvtl. vergeben @odow hat das vor 5 Tagen übernommen. Offen
jump-dev/MathOptInterface.jl#3106 · 2 Kommentare · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
Precision loss in Hessian computationEvtl. vergeben @blegat hat das vor 6 Tagen übernommen. Offen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 15/100
jump-dev/MathOptInterface.jl#3104 · 11 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Layer instantiatorOffen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
jump-dev/MathOptInterface.jl#2986 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Add Batched{S} setOffenType: Set Request
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
jump-dev/MathOptInterface.jl#2904 · 15 Kommentare · 7 Reaktionen ·
Maintainer antworten meist innerhalb von 1 Tag
-
Performance problem with deeply nested nonlinear expressionsEvtl. vergeben @blegat hat das vor 457 Tagen übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
jump-dev/MathOptInterface.jl#3065 · 11 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in jump-dev/MathOptInterface.jl
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
OpenSourceAWE/SymbolicAWEModels.jl#431 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
EnzymeAD/Reactant.jl#3549 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
bug help wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
JuliaGeometry/Meshes.jl#1469 ·
Maintainer antworten meist innerhalb von 1 Tag