diff --git a/lib/OptimizationMOI/src/nlp.jl b/lib/OptimizationMOI/src/nlp.jl index 7c285bd81..dbfb80089 100644 --- a/lib/OptimizationMOI/src/nlp.jl +++ b/lib/OptimizationMOI/src/nlp.jl @@ -113,8 +113,16 @@ function MOIOptimizationNLPCache(prob::OptimizationProblem, reinit_cache = OptimizationBase.ReInitCache(prob.u0, prob.p) # everything that can be changed via `reinit` num_cons = prob.ucons === nothing ? 0 : length(prob.ucons) - f = Optimization.instantiate_function(prob.f, reinit_cache, prob.f.adtype, num_cons; - g = true, h = true, cons_j = true, cons_vjp = true, lag_h = true) + if prob.f.adtype isa ADTypes.AutoSymbolics || (prob.f.adtype isa ADTypes.AutoSparse && + prob.f.adtype.dense_ad isa ADTypes.AutoSymbolics) + f = Optimization.instantiate_function( + prob.f, reinit_cache, prob.f.adtype, num_cons; + g = true, h = true, cons_j = true, cons_h = true) + else + f = Optimization.instantiate_function( + prob.f, reinit_cache, prob.f.adtype, num_cons; + g = true, h = true, cons_j = true, cons_vjp = true, lag_h = true) + end T = eltype(prob.u0) n = length(prob.u0) @@ -290,7 +298,8 @@ function MOI.eval_constraint_jacobian(evaluator::MOIOptimizationNLPEvaluator, j, return end -function MOI.eval_constraint_jacobian_product(evaluator::MOIOptimizationNLPEvaluator, y, x, w) +function MOI.eval_constraint_jacobian_product( + evaluator::MOIOptimizationNLPEvaluator, y, x, w) if evaluator.f.cons_jvp !== nothing evaluator.f.cons_jvp(y, x, w) diff --git a/lib/OptimizationMultistartOptimization/test/runtests.jl b/lib/OptimizationMultistartOptimization/test/runtests.jl index 328495de6..a987e243c 100644 --- a/lib/OptimizationMultistartOptimization/test/runtests.jl +++ b/lib/OptimizationMultistartOptimization/test/runtests.jl @@ -1,7 +1,7 @@ using Pkg; Pkg.develop(path = joinpath(@__DIR__, "../../", "OptimizationNLopt")); using OptimizationMultistartOptimization, Optimization, ForwardDiff, OptimizationNLopt -using Test +using Test, ReverseDiff @testset "OptimizationMultistartOptimization.jl" begin rosenbrock(x, p) = (p[1] - x[1])^2 + p[2] * (x[2] - x[1]^2)^2 diff --git a/test/diffeqfluxtests.jl b/test/diffeqfluxtests.jl index 66439ae41..c92463ba0 100644 --- a/test/diffeqfluxtests.jl +++ b/test/diffeqfluxtests.jl @@ -99,12 +99,12 @@ prob = Optimization.OptimizationProblem(optprob, pp) result_neuralode = Optimization.solve(prob, OptimizationOptimisers.ADAM(), callback = callback, maxiters = 300) -@test result_neuralode.objective ≈ loss_neuralode(result_neuralode.u)[1] rtol = 1e-2 +@test result_neuralode.objective≈loss_neuralode(result_neuralode.u)[1] rtol=1e-2 prob2 = remake(prob, u0 = result_neuralode.u) result_neuralode2 = Optimization.solve(prob2, BFGS(initial_stepnorm = 0.0001), callback = callback, maxiters = 100) -@test result_neuralode2.objective ≈ loss_neuralode(result_neuralode2.u)[1] rtol = 1e-2 +@test result_neuralode2.objective≈loss_neuralode(result_neuralode2.u)[1] rtol=1e-2 @test result_neuralode2.objective < 10