Differentiation of conic programs with nonlinear parametric expressions
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
Piste de recherche
Commencez par exécuter le MWE Julia avec Clarabel et comparez-le à la version Ipopt, puis lisez le chemin de différentiation des paramètres de DiffOpt atteint via diff_model et optimize!. C’est terminé lorsque des expressions paramétriques non linéaires telles que sin(θ) * x sont prises en charge pour les programmes coniques et que l’exemple fourni se différencie correctement.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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?
- Langage dominant
- Julia
- Étoiles
- 146
- Forks
- 21
- Merge moyen
- 1 h 25 min
- PR mergées (30 j)
- 2
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de jump-dev/DiffOpt.jl
-
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
jump-dev/DiffOpt.jl#362 · 1 commentaire ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
jump-dev/DiffOpt.jl#358 · 2 commentaires ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
jump-dev/DiffOpt.jl#348 ·
-
good first issue
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
jump-dev/DiffOpt.jl#336 · 4 commentaires ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
jump-dev/DiffOpt.jl#318 · 1 commentaire ·
Toutes les issues de jump-dev/DiffOpt.jl
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
EnzymeAD/Reactant.jl#3549 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
bug help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
JuliaGeometry/Meshes.jl#1469 ·
Les mainteneurs répondent en général sous 1 jour
-
distributed 🕸️
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
CliMA/Oceananigans.jl#6295 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour