Differentiation of conic programs with nonlinear parametric expressions
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
Línea de trabajo
Empieza ejecutando el MWE de Julia con Clarabel y compáralo con la versión de Ipopt; después, lee la ruta de diferenciación de parámetros de DiffOpt a la que se llega mediante diff_model y optimize!. Se considera terminado cuando se admitan expresiones de parámetros no lineales como sin(θ) * x para programas cónicos y el ejemplo proporcionado se diferencie correctamente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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?
- Lenguaje dominante
- Julia
- Estrellas
- 146
- Forks
- 21
- Merge medio
- 1 h 25 min
- PR fusionados (30 d)
- 2
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de jump-dev/DiffOpt.jl
-
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
jump-dev/DiffOpt.jl#362 · 1 comentario ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
jump-dev/DiffOpt.jl#358 · 2 comentarios ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
jump-dev/DiffOpt.jl#348 ·
-
good first issue
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
jump-dev/DiffOpt.jl#336 · 4 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
jump-dev/DiffOpt.jl#318 · 1 comentario ·
Todos los issues de jump-dev/DiffOpt.jl
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
EnzymeAD/Reactant.jl#3549 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
bug help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
JuliaGeometry/Meshes.jl#1469 ·
Los mantenedores suelen responder en 1 día
-
distributed 🕸️
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
CliMA/Oceananigans.jl#6295 · 1 comentario ·
Los mantenedores suelen responder en 1 día