Skip to content

Commit 6e6e6b2

Browse files
patch OptimizationFunction
1 parent 6c2e890 commit 6e6e6b2

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

Project.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ModelingToolkit"
22
uuid = "961ee093-0014-501f-94e3-6117800e7a78"
33
authors = ["Chris Rackauckas <accounts@chrisrackauckas.com>"]
4-
version = "5.2.0"
4+
version = "5.2.1"
55

66
[deps]
77
ArrayInterface = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"

src/systems/optimization/optimizationsystem.jl

+3-3
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ struct OptimizationProblemExpr{iip} end
185185

186186
OptimizationProblemExpr(sys::OptimizationSystem,args...;kwargs...) =
187187
OptimizationProblemExpr{true}(sys::OptimizationSystem,args...;kwargs...)
188-
188+
189189
function OptimizationProblemExpr{iip}(sys::OptimizationSystem, u0,
190190
parammap=DiffEqBase.NullParameters();
191191
lb=nothing, ub=nothing,
@@ -230,9 +230,9 @@ function OptimizationProblemExpr{iip}(sys::OptimizationSystem, u0,
230230
end
231231
end
232232

233-
function OptimizationFunction(f, x, ::AutoModelingToolkit,p = DiffEqBase.NullParameters();
233+
function DiffEqBase.OptimizationFunction{iip}(f, ::AutoModelingToolkit, x, p = DiffEqBase.NullParameters();
234234
grad=false, hess=false, cons = nothing, cons_j = nothing, cons_h = nothing,
235-
num_cons = 0, chunksize = 1, hv = nothing)
235+
num_cons = 0, chunksize = 1, hv = nothing) where iip
236236

237237
sys = modelingtoolkitize(OptimizationProblem(f,x,p))
238238
u0map = states(sys) .=> x

test/optimizationsystem.jl

+8
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,11 @@ sol = solve(prob,BFGS(initial_stepnorm=0.0001),allow_f_increases=true)
4646
@test sol.minimum < -1e8
4747
sol = solve(prob2,BFGS(initial_stepnorm=0.0001),allow_f_increases=true)
4848
@test sol.minimum < -1e9
49+
50+
rosenbrock(x, p) = (p[1] - x[1])^2 + p[2] * (x[2] - x[1]^2)^2
51+
x0 = zeros(2)
52+
_p = [1.0, 100.0]
53+
54+
f = OptimizationFunction(rosenbrock,ModelingToolkit.AutoModelingToolkit(),x0,_p,grad=true,hess=true)
55+
prob = OptimizationProblem(f,x0,_p)
56+
sol = solve(prob,Optim.Newton()

0 commit comments

Comments
 (0)