1
- struct AutoModelingToolkit <: AbstractADType end
1
+ struct AutoModelingToolkit <: AbstractADType
2
+ obj_sparse:: Bool
3
+ cons_sparse:: Bool
4
+ end
5
+
6
+ AutoModelingToolkit () = AutoModelingToolkit (false , false )
2
7
3
- function instantiate_function (f, x, :: AutoModelingToolkit , p, num_cons= 0 )
8
+ function instantiate_function (f, x, ad :: AutoModelingToolkit , p, num_cons= 0 )
4
9
p = isnothing (p) ? SciMLBase. NullParameters () : p
5
10
sys = ModelingToolkit. modelingtoolkitize (OptimizationProblem (f, x, p))
6
11
@@ -12,8 +17,8 @@ function instantiate_function(f, x, ::AutoModelingToolkit, p, num_cons=0)
12
17
end
13
18
14
19
if f. hess === nothing
15
- hess_oop, hess_iip = ModelingToolkit. generate_hessian (sys, expression= Val{false })
16
- hess (J , u) = (hess_iip (J , u, p); J )
20
+ hess_oop, hess_iip = ModelingToolkit. generate_hessian (sys, expression= Val{false }, sparse = ad . obj_sparse )
21
+ hess (H , u) = (hess_iip (H , u, p); H )
17
22
else
18
23
hess = f. hess
19
24
end
@@ -36,17 +41,17 @@ function instantiate_function(f, x, ::AutoModelingToolkit, p, num_cons=0)
36
41
end
37
42
38
43
if f. cons != = nothing && f. cons_j === nothing
44
+ jac_oop, jac_iip = ModelingToolkit. generate_jacobian (cons_sys, expression= Val{false }, sparse= ad. cons_sparse)
39
45
cons_j = function (J, θ)
40
- jac_oop, jac_iip = ModelingToolkit. generate_jacobian (cons_sys, expression= Val{false })
41
46
jac_iip (J, θ, p)
42
47
end
43
48
else
44
49
cons_j = f. cons_j
45
50
end
46
51
47
52
if f. cons != = nothing && f. cons_h === nothing
53
+ cons_hess_oop, cons_hess_iip = ModelingToolkit. generate_hessian (cons_sys, expression= Val{false }, sparse= ad. cons_sparse)
48
54
cons_h = function (res, θ)
49
- cons_hess_oop, cons_hess_iip = ModelingToolkit. generate_hessian (cons_sys, expression= Val{false })
50
55
cons_hess_iip (res, θ, p)
51
56
end
52
57
else
0 commit comments