Skip to content

Commit 45ebac7

Browse files
makes cons_h and cons_j optional
1 parent 8203791 commit 45ebac7

File tree

1 file changed

+26
-9
lines changed

1 file changed

+26
-9
lines changed

src/systems/optimization/optimizationsystem.jl

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0map,
207207
lb = nothing, ub = nothing,
208208
grad = false,
209209
hess = false, sparse = false,
210+
cons_j = false, cons_h = false,
210211
checkbounds = false,
211212
linenumbers = true, parallel = SerialForm(),
212213
use_union = false,
@@ -308,9 +309,16 @@ function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0map,
308309
cons, lcons_, ucons_ = generate_function(cons_sys, checkbounds = checkbounds,
309310
linenumbers = linenumbers,
310311
expression = Val{false})
311-
cons_j = generate_jacobian(cons_sys; expression = Val{false}, sparse = sparse)[2]
312-
cons_h = generate_hessian(cons_sys; expression = Val{false}, sparse = sparse)[2]
313-
312+
if cons_j
313+
_cons_j = generate_jacobian(cons_sys; expression = Val{false}, sparse = sparse)[2]
314+
else
315+
_cons_j = nothing
316+
end
317+
if cons_h
318+
_cons_h = generate_hessian(cons_sys; expression = Val{false}, sparse = sparse)[2]
319+
else
320+
_cons_h = nothing
321+
end
314322
cons_expr = toexpr.(subs_constants(constraints(cons_sys)))
315323
rep_pars_vals!.(cons_expr, Ref(pairs_arr))
316324

@@ -344,8 +352,8 @@ function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0map,
344352
syms = Symbol.(states(sys)),
345353
paramsyms = Symbol.(parameters(sys)),
346354
cons = cons[2],
347-
cons_j = cons_j,
348-
cons_h = cons_h,
355+
cons_j = _cons_j,
356+
cons_h = _cons_h,
349357
cons_jac_prototype = cons_jac_prototype,
350358
cons_hess_prototype = cons_hess_prototype,
351359
expr = obj_expr,
@@ -396,6 +404,7 @@ function OptimizationProblemExpr{iip}(sys::OptimizationSystem, u0,
396404
lb = nothing, ub = nothing,
397405
grad = false,
398406
hess = false, sparse = false,
407+
cons_j = false, cons_h = false,
399408
checkbounds = false,
400409
linenumbers = false, parallel = SerialForm(),
401410
use_union = false,
@@ -477,8 +486,16 @@ function OptimizationProblemExpr{iip}(sys::OptimizationSystem, u0,
477486
cons, lcons_, ucons_ = generate_function(cons_sys, checkbounds = checkbounds,
478487
linenumbers = linenumbers,
479488
expression = Val{false})
480-
cons_j = generate_jacobian(cons_sys; expression = Val{false}, sparse = sparse)[2]
481-
cons_h = generate_hessian(cons_sys; expression = Val{false}, sparse = sparse)[2]
489+
if cons_j
490+
_cons_j = generate_jacobian(cons_sys; expression = Val{false}, sparse = sparse)[2]
491+
else
492+
_cons_j = nothing
493+
end
494+
if cons_h
495+
_cons_h = generate_hessian(cons_sys; expression = Val{false}, sparse = sparse)[2]
496+
else
497+
_cons_h = nothing
498+
end
482499

483500
cons_expr = toexpr.(subs_constants(constraints(cons_sys)))
484501
rep_pars_vals!.(cons_expr, Ref(pairs_arr))
@@ -517,8 +534,8 @@ function OptimizationProblemExpr{iip}(sys::OptimizationSystem, u0,
517534
cons = $cons[1]
518535
lcons = $lcons
519536
ucons = $ucons
520-
cons_j = $cons_j
521-
cons_h = $cons_h
537+
cons_j = $_cons_j
538+
cons_h = $_cons_h
522539
syms = $(Symbol.(states(sys)))
523540
paramsyms = $(Symbol.(parameters(sys)))
524541
_f = OptimizationFunction{iip}(f, SciMLBase.NoAD();

0 commit comments

Comments
 (0)