Differentiation of problems with Almost Locally Solved termination status
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Ejecuta primero el ejemplo mínimo de trabajo de Julia y, después, sigue DiffOpt.forward_differentiate! y el manejo del estado de terminación Almost Locally Solved. Se considera terminado cuando el ejemplo completa correctamente la diferenciación hacia adelante para ese estado.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
DiffOpt seems to not suppoer problems with the termination status Almost Locally Solved. Below is a minimum working example.
using JuMP
using Ipopt
using DiffOpt
# Create differentiable model with loose tolerances
diff_optimizer = optimizer_with_attributes(
Ipopt.Optimizer,
"print_level" => 3,
"tol" => 1e-2,
"acceptable_tol" => 1e-1,
"max_iter" => 5,
"acceptable_iter" => 2
)
model = Model(() -> DiffOpt.diff_optimizer(diff_optimizer))
# Decision variables
@variable(model, x >= 0)
@variable(model, y >= 0)
# Parameters (weights in objective)
w = [0.1, 0.1] # Initial parameter values
weight = w
weight = JuMP.@variable(
model,
[j in keys(w)] in MOI.Parameter(w[j]),
base_name = "weight")
@constraint(model, x + y >= 10)
@constraint(model, 2x + y >= 15)
@objective(model, Min, weight[1]*x + weight[2]*y)
optimize!(model)
println("\nStatus: $(termination_status(model))")
for (i, key) in enumerate(keys(weight))
perturbation = i
DiffOpt.set_forward_parameter(model, weight[key], perturbation)
end
# Solve perturbed problem
optimize!(model)
# Compute forward derivatives
DiffOpt.forward_differentiate!(model)
- 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 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
jump-dev/DiffOpt.jl#331 · 1 comentario ·
-
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 1/5 Menos de una hora Aptitud para principiantes 85/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
JuliaPy/pyjuliapkg#102 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
JuliaMath/Polynomials.jl#641 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
JuliaLang/LinearAlgebra.jl#1794 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día