Skip to content

Commit 7951dbb

Browse files
last test is broken
1 parent bc763dc commit 7951dbb

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

src/systems/diffeqs/modelingtoolkitize.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ function modelingtoolkitize(prob::DiffEqBase.OptimizationProblem)
9999
p = prob.p
100100
end
101101

102-
vars = reshape([Variable(:x, i)(t) for i in eachindex(prob.u0)],size(prob.u0))
102+
vars = reshape([Variable(:x, i)() for i in eachindex(prob.u0)],size(prob.u0))
103103
params = p isa DiffEqBase.NullParameters ? [] :
104104
reshape([Variable(,i)() for i in eachindex(p)],size(Array(p)))
105105

src/systems/optimization/optimizationsystem.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0,
134134
_hess = nothing
135135
end
136136

137-
_f = OptimizationFunction{iip,typeof(f),typeof(_grad),typeof(_hess),Nothing,Nothing,Nothing,Nothing}(f,_grad,_hess,nothing,AutoModelingToolkit(),nothing,nothing,nothing,0)
137+
_f = DiffEqBase.OptimizationFunction{iip,AutoModelingToolkit,typeof(f),typeof(_grad),typeof(_hess),Nothing,Nothing,Nothing,Nothing}(f,AutoModelingToolkit(),_grad,_hess,nothing,nothing,nothing,nothing,0)
138138

139139
p = varmap_to_vars(parammap,ps)
140140
lb = varmap_to_vars(lb,dvs)
@@ -205,7 +205,7 @@ function OptimizationProblemExpr{iip}(sys::OptimizationSystem, u0,
205205
end
206206

207207
function OptimizationFunction(f, x, ::AutoModelingToolkit,p = DiffEqBase.NullParameters();
208-
grad=nothing, hess=nothing, cons = nothing, cons_j = nothing, cons_h = nothing,
208+
grad=false, hess=false, cons = nothing, cons_j = nothing, cons_h = nothing,
209209
num_cons = 0, chunksize = 1, hv = nothing)
210210

211211
sys = modelingtoolkitize(OptimizationProblem(f,x,p))
@@ -215,5 +215,5 @@ function OptimizationFunction(f, x, ::AutoModelingToolkit,p = DiffEqBase.NullPar
215215
else
216216
parammap = parameters(sys) .=> p
217217
end
218-
OptimiationProblem(sys,u0map,parammap,grad=grad,hess=hess)
218+
OptimizationProblem(sys,u0map,parammap,grad=grad,hess=hess).f
219219
end

test/modelingtoolkitize.jl

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using OrdinaryDiffEq, ModelingToolkit
1+
using OrdinaryDiffEq, ModelingToolkit, Test
2+
using GalacticOptim, Optim
3+
24
const N = 32
35
const xyd_brusselator = range(0,stop=1,length=N)
46
brusselator_f(x, y, t) = (((x-0.3)^2 + (y-0.6)^2) <= 0.1^2) * (t >= 1.1) * 5.
@@ -38,3 +40,21 @@ prob_ode_brusselator_2d = ODEProblem(brusselator_2d_loop,
3840
u0,(0.,11.5),p)
3941

4042
modelingtoolkitize(prob_ode_brusselator_2d)
43+
44+
## Optimization
45+
46+
rosenbrock(x,p) = (p[1] - x[1])^2 + p[2] * (x[2] - x[1]^2)^2
47+
x0 = zeros(2)
48+
p = [1.0,100.0]
49+
50+
prob = OptimizationProblem(rosenbrock,x0,p)
51+
sys = modelingtoolkitize(prob)
52+
53+
prob = OptimizationProblem(ModelingToolkit.OptimizationFunction(
54+
rosenbrock,x0,ModelingToolkit.AutoModelingToolkit(),p,
55+
grad = true), x0,p)
56+
sol = solve(prob,NelderMead())
57+
@test sol.minimum < 1e-8
58+
59+
sol = solve(prob,BFGS())
60+
@test_broken sol.minimum < 1e-8

0 commit comments

Comments
 (0)